Автор: Рикард Эдгрен (Rikard Edgren) Оригинал Перевод: Ольга Алифанова При дизайне тестов все средства хороши. Пользуйтесь любыми источниками информациями, отклоняйтесь от проторенных дорог, и полагайтесь на инстинкт, подсказывающий, что важно протестировать.
Используйте также эти основные правила, если они применимы.
- Эвристика Всеобщего Анализа может использоваться как эвристика дизайна.
- "Как можно позднее" – детализируйте ваши тесты как можно позднее. Ситуация будет меняться, и у вас будет больше информации.
- "Различные полумеры" – "лучше протестировать побольше на хорошем уровне, чем идеально выполнить один-два типа тестирования".
- Чем быстрее, тем лучше – вы получите больше информации о продукте.
- "Автоматизируйте 100% тестов, которые должны быть автоматизированы" – вы лучше разберетесь в этом вопросе, выполнив тест как минимум один раз.
- Эвристика "Без завитушек" – 1) простые тесты могут очень вам помочь, 2) вам не требуется использовать модные техники тестирования, особенно там, где это не нужно.
- Усложняйте – 1) сложные тесты могут быть очень эффективными, 2) нельзя пренебречь предосторожностями, создавая сложные тесты.
- Бесплатное покрытие – при помощи одного теста можно покрыть множество различных вещей. Используйте непрерывные идеи тестов для характеристик качества. Держите их в уме и замечайте, если этим характеристикам что-то угрожает.
- Подходящая гранулярность – подумайте об уровне детализации ваших тестов, чтобы облегчить их пересмотр.
- Самое репрезентативное – берите за образец самое распространенное, подверженное ошибкам, всеобъемлющее, важное.
- Принцип важности – сфокусируйте большинство тестов на основной задаче, однако не забывайте и про остальные, а также про возможные ошибки.
- Счастливый случай – самые лучшие тесты помогают найти то, о важности чего мы и не подозревали.
- Можно выбросить – не бойтесь отказываться от тестов, в релевантность которых вы больше не верите.
- Я узнаю это, когда увижу – поработайте с ПО, и вы почувствуете, что в нем важно, что подвержено ошибкам, и как это тестировать.
- Интуиция – "Доверяйте вашей интуиции, думая о сложно предсказуемых вещах в условиях недостатка информации".
- Пять примеров из книги "Lessons Learned in Software Testing" – "Тестируйте на границах, тестируйте все сообщения об ошибках, тестируйте отличную от разработчика конфигурацию, прогоните нудные в настройке тесты, избегайте избыточных тестов".
- Соответствие информационным целям – можно ли подстроить тесты под различные информационные задачи?
- Хорошие тесты – мощные, валидные, ценные, достойные доверия, вероятные, не избыточные, мотивирующие, выполнимые, поддерживаемые, повторяемые, важные, легкие в оценке, поддерживают разрешение проблем, подходящей сложности, объяснимые, малозатратные, легкие для понимания, позволяют совершать случайные открытия.
- Изменение стратегии – если ваше тестирование не дает новой интересной информации, настало время менять стратегию.
- Использование где-то еще? – можно ли применить эту отличную идею к другим областям?
- Кто может это сделать? – вы можете включать тест-идеи, которые не можете выполнить самостоятельно.
- Разнообразие ревью – если при ревью нет замечаний и дополнений, попросите того, кто мыслит иначе.
- Непрочтенный тест-дизайн – если разработчики не читают ваши высокоуровневые тесты, спросите их, почему.
- Любимая техника – ваша лучшая техника тест-дизайна может неидеально подходить к ситуации, но она может стать той, которая даст наилучший результат.
- Полезным будет любой навык, связанный с исследовательским тестированием, тестированием на основе опыта, и предположениями об ошибках.
- Мета-вопросы – для сложных проблем тест-дизайна можно использовать вопросы вроде CIA Phoenix Checklist.
Тесты, достойные прогона
В какой-то момент вам нужно решить, какие именно тесты прогонять и оценивать. Это может быть сделано или обдумано в ходе анализа, синтеза или выполнения тестов. Возможно, вы заняты этим постоянно, и я полагаю, что вы выберете тесты, которые считаете наиболее важными. Это не магия – этот выбор включает множество аспектов: риск, скорость, возможность, перспективы, история, обеспечение случайных открытий, ценные свойства.
Не стоит тратить на приоритезацию тестов много времени – кажется естественным провести черту под названием "достойно тестирования".
Тест достоин прогона, если мы считаем, что информация, которую мы можем получить, стоит потраченного времени вне зависимости от рисков, требований, подходов к тестированию, и т. д.
В книге "Adaptive Thinking" Герд Джигерензер описывает свою теорию (исходный автор – Герберт Саймон), что интуиция основана на эвристиках, и что мы используем быстрые и практичные деревья решений, чтобы принимать хорошие решения в сложном мире и при ограниченной информации.
Чтобы объяснить свои резоны и сделать вашу интуицию прозрачнее, можете попробовать использовать дерево решений для сортировки тестов:
Порядок и содержание ваших вопросов могут варьировать. Я, например, сначала оцениваю скорость, а потом важность, потому что я хочу иметь шанс найти то, о важности чего мы и не подозревали. С другой стороны, вопрос о релевантности может привести к удалению отличных тестов, но это нормально. Мы не можем выполнить абсолютно все тесты – есть вопрос баланса и оправданности потраченных на прогон усилий.
Цель этой книги – помочь тестировщикам выбрать из всего богатства возможностей использования ПО наиболее достойные тесты. Обсудить в форуме |