Разделы портала

Онлайн-тренинги

.
Записная книжка тест-дизайнера, часть 7: Эвристики тест-дизайна
20.04.2020 00:00

Автор: Рикард Эдгрен (Rikard Edgren)
Оригинал
Перевод: Ольга Алифанова

При дизайне тестов все средства хороши. Пользуйтесь любыми источниками информациями, отклоняйтесь от проторенных дорог, и полагайтесь на инстинкт, подсказывающий, что важно протестировать.

Используйте также эти основные правила, если они применимы.

  1. Эвристика Всеобщего Анализа может использоваться как эвристика дизайна.
  2. "Как можно позднее" – детализируйте ваши тесты как можно позднее. Ситуация будет меняться, и у вас будет больше информации.
  3. "Различные полумеры" – "лучше протестировать побольше на хорошем уровне, чем идеально выполнить один-два типа тестирования".
  4. Чем быстрее, тем лучше – вы получите больше информации о продукте.
  5. "Автоматизируйте 100% тестов, которые должны быть автоматизированы" – вы лучше разберетесь в этом вопросе, выполнив тест как минимум один раз.
  6. Эвристика "Без завитушек" – 1) простые тесты могут очень вам помочь, 2) вам не требуется использовать модные техники тестирования, особенно там, где это не нужно.
  7. Усложняйте – 1) сложные тесты могут быть очень эффективными, 2) нельзя пренебречь предосторожностями, создавая сложные тесты.
  8. Бесплатное покрытие – при помощи одного теста можно покрыть множество различных вещей. Используйте непрерывные идеи тестов для характеристик качества. Держите их в уме и замечайте, если этим характеристикам что-то угрожает.
  9. Подходящая гранулярность – подумайте об уровне детализации ваших тестов, чтобы облегчить их пересмотр.
  10. Самое репрезентативное – берите за образец самое распространенное, подверженное ошибкам, всеобъемлющее, важное.
  11. Принцип важности – сфокусируйте большинство тестов на основной задаче, однако не забывайте и про остальные, а также про возможные ошибки.
  12. Счастливый случай – самые лучшие тесты помогают найти то, о важности чего мы и не подозревали.
  13. Можно выбросить – не бойтесь отказываться от тестов, в релевантность которых вы больше не верите.
  14. Я узнаю это, когда увижу – поработайте с ПО, и вы почувствуете, что в нем важно, что подвержено ошибкам, и как это тестировать.
  15. Интуиция – "Доверяйте вашей интуиции, думая о сложно предсказуемых вещах в условиях недостатка информации".
  16. Пять примеров из книги "Lessons Learned in Software Testing" – "Тестируйте на границах, тестируйте все сообщения об ошибках, тестируйте отличную от разработчика конфигурацию, прогоните нудные в настройке тесты, избегайте избыточных тестов".
  17. Соответствие информационным целям – можно ли подстроить тесты под различные информационные задачи?
  18. Хорошие тесты – мощные, валидные, ценные, достойные доверия, вероятные, не избыточные, мотивирующие, выполнимые, поддерживаемые, повторяемые, важные, легкие в оценке, поддерживают разрешение проблем, подходящей сложности, объяснимые, малозатратные, легкие для понимания, позволяют совершать случайные открытия.
  19. Изменение стратегии – если ваше тестирование не дает новой интересной информации, настало время менять стратегию.
  20. Использование где-то еще? – можно ли применить эту отличную идею к другим областям?
  21. Кто может это сделать? – вы можете включать тест-идеи, которые не можете выполнить самостоятельно.
  22. Разнообразие ревью – если при ревью нет замечаний и дополнений, попросите того, кто мыслит иначе.
  23. Непрочтенный тест-дизайн – если разработчики не читают ваши высокоуровневые тесты, спросите их, почему.
  24. Любимая техника – ваша лучшая техника тест-дизайна может неидеально подходить к ситуации, но она может стать той, которая даст наилучший результат.
  25. Полезным будет любой навык, связанный с исследовательским тестированием, тестированием на основе опыта, и предположениями об ошибках.
  26. Мета-вопросы – для сложных проблем тест-дизайна можно использовать вопросы вроде CIA Phoenix Checklist.

Тесты, достойные прогона

В какой-то момент вам нужно решить, какие именно тесты прогонять и оценивать. Это может быть сделано или обдумано в ходе анализа, синтеза или выполнения тестов. Возможно, вы заняты этим постоянно, и я полагаю, что вы выберете тесты, которые считаете наиболее важными. Это не магия – этот выбор включает множество аспектов: риск, скорость, возможность, перспективы, история, обеспечение случайных открытий, ценные свойства.

Не стоит тратить на приоритезацию тестов много времени – кажется естественным провести черту под названием "достойно тестирования".

Тест достоин прогона, если мы считаем, что информация, которую мы можем получить, стоит потраченного времени вне зависимости от рисков, требований, подходов к тестированию, и т. д.

В книге "Adaptive Thinking" Герд Джигерензер описывает свою теорию (исходный автор – Герберт Саймон), что интуиция основана на эвристиках, и что мы используем быстрые и практичные деревья решений, чтобы принимать хорошие решения в сложном мире и при ограниченной информации.

Чтобы объяснить свои резоны и сделать вашу интуицию прозрачнее, можете попробовать использовать дерево решений для сортировки тестов:


Порядок и содержание ваших вопросов могут варьировать. Я, например, сначала оцениваю скорость, а потом важность, потому что я хочу иметь шанс найти то, о важности чего мы и не подозревали. С другой стороны, вопрос о релевантности может привести к удалению отличных тестов, но это нормально. Мы не можем выполнить абсолютно все тесты – есть вопрос баланса и оправданности потраченных на прогон усилий.

Цель этой книги – помочь тестировщикам выбрать из всего богатства возможностей использования ПО наиболее достойные тесты.

Обсудить в форуме