Техники тест-дизайна является ключевым элементом в процессе различных видов тестирования ПО (программного обеспечения), позволяющим оптимизировать их эффективность и качество. В этой статье мы рассмотрим различные техники тест-дизайна и их особенности.
Динамические техники тест-дизайна
Черный ящик:
- Эквивалентное Разделение (Equivalence Partitioning — EP) — это техника, при которой входные данные разбиваются на классы эквивалентности, которые затем используются для тестирования программного обеспечения. Например, для тестирования формы входа на сайт, классы эквивалентности могут быть созданы на основе типа введенных данных (например, электронная почта или пароль).
- Случаи использования (Use case testing) — это техника, которая используется для тестирования программного обеспечения на основе его функциональности. В этой технике тесты разрабатываются на основе сценариев использования программного обеспечения, чтобы убедиться в его соответствии требованиям заказчика.
- Анализ Граничных Значений (Boundary Value Analysis — BVA) — это техника, при которой тесты разрабатываются на основе значений, находящихся на границах допустимых входных данных. Например, если программа принимает числа от 1 до 100, то тесты должны быть разработаны для проверки значений 1, 100 и значений, находящихся вблизи этих границ.
- Комбинаторные техники (Combinatorial Test Techniques) — это техника, которая используется для создания тестов, покрывающих все возможные комбинации значений входных данных. Такие тесты позволяют выявить множество ошибок, которые могут быть пропущены при других подходах.
- Переходы между состояниями (State transition) — это техника, которая используется для тестирования программного обеспечения, в котором состояние системы меняется в зависимости от входных данных. Тесты разрабатываются на основе переходов между состояниями программы.
- Classification Tree Method — это техника, которая используется для создания иерархических деревьев классификации, которые затем используются для создания тестовых сценариев.
- Domain testing — это техника, при которой тесты разрабатываются на основе области допустимых значений входных данных, выделяя подмножества, которые представляют собой разные домены. Например, при тестировании приложения для продажи автомобилей, один домен может представлять собой список доступных марок автомобилей, а другой — диапазон цен.
- Decision Table Testing — это метод, при котором все возможные комбинации входных параметров и соответствующих им выходных результатов записываются в таблицу. Эта таблица затем используется для определения комбинаций входных значений, которые нужно протестировать, чтобы покрыть все возможные комбинации.
- User Journey Test — это техника, при которой тесты разрабатываются для эмуляции реальных пользовательских сценариев использования приложения. Это помогает выявить потенциальные проблемы, с которыми могут столкнуться пользователи при использовании приложения, и улучшить пользовательский опыт.
- Random Testing — это метод, при котором тесты выбираются случайным образом из всех возможных комбинаций входных параметров. Цель этого метода — проверить приложение на предмет непредвиденных ошибок и ошибок, которые могут произойти в нестандартных ситуациях.
- Scenario Testing — это техника, при которой тесты разрабатываются для проверки различных сценариев использования приложения, которые могут произойти в реальной жизни. Тестирование сценариев помогает выявить проблемы, которые могут возникнуть при выполнении определенных действий пользователем.
- Syntax Testing — это техника, при которой тестирование проводится на корректность синтаксиса входных данных и команд, которые отправляются в приложение. Тестирование на синтаксическую корректность помогает выявить ошибки ввода данных и неправильные команды, которые могут привести к сбоям в работе приложения.
- Check List Based Testing — это техника, при которой тесты создаются на основе чек-листа, который содержит список вопросов и пунктов для проверки. Эта техника может помочь в создании более полных и систематических тестов.
- Risk-Based Testing — это техника, при которой тесты разрабатываются на основе анализа рисков. Она помогает определить наиболее критические области приложения и создать тесты для этих областей с высоким приоритетом.
- Cause-Effect Graphing — это техника, при которой строится график причинно-следственных связей для исходных данных и их комбинаций. Она позволяет определить наиболее важные и рискованные комбинации входных данных и создать тесты для их проверки.
Основанные на опыте:
- Исследовательское тестирование (Exploratory testing) — это техника, при которой тестировщик изучает систему, ее функциональность и потенциальные проблемы в процессе тестирования. Она помогает обнаружить неожиданные ошибки и улучшить качество продукта.
- Предугадывание ошибки (Error Guessing — EG) — это техника, при которой тестировщик использует свой опыт и интуицию для предсказания возможных ошибок и создания тестов для их проверки.
- Ad-hoc testing — это техника, при которой тестировщик тестирует систему без заранее определенного плана или сценария. Она позволяет быстро находить проблемы, которые могут быть пропущены другими техниками.
- Attack Testing — это техника, при которой тестировщик пытается найти уязвимости и нарушить безопасность системы путем проведения специально спроектированных атак.
Белый ящик
- Выражение (Statement), Ветвь (Branch), Условие (Condition), Решение (Decision) — это техники структурного тестирования, при которых тесты создаются на основе анализа кода программы. Они позволяют проверить все возможные ветвления в коде и выявить ошибки, связанные с его логикой.
- Конечный автомат (FSM) — это техника структурного тестирования, при которой тесты создаются на основе модели конечного автомата, описывающей все возможные состояния системы и переходы между ними.
Cтатические техники тест-дизайна
Reviews
- Неформальное ревью (Informal review): это техника, при которой разработчики, тестировщики и другие заинтересованные стороны обсуждают код или документацию в неформальной обстановке, чтобы выявить потенциальные проблемы и улучшения.
- Техническое ревью (Technical Review): это техника, при которой эксперты по технологии проводят формальный процесс обзора программного обеспечения для обнаружения ошибок и улучшения качества.
- Инспекция (Inspection): это формальная техника обзора, которая включает в себя процесс систематического анализа программного кода с целью выявления дефектов и улучшения качества.
- Прохождение (Walkthrough): это техника обзора, при которой автор или исполнитель программного кода демонстрирует свою работу другим участникам команды для получения обратной связи и выявления потенциальных проблем.
Статический анализ
- Стандарты (Standards): это техника, которая использует установленные стандарты и руководства для определения требований к тестированию и оценки соответствия продукта этим требованиям.
- Поток данных (Data Flow): это техника, которая использует модель потоков данных для исследования программного кода и выявления потенциальных проблем.
- Путь (Path): это техника, которая использует модель пути выполнения для исследования программного кода и выявления потенциальных проблем.
- Поток управления (Control Flow): это техника, которая использует модель потока управления для исследования программного кода и выявления потенциальных проблем.
Практические примеры использования техники тест-дизайна
Конкретные примеры применения техники тест-дизайна могут различаться в зависимости от конкретного проекта и тестируемого продукта. Вот несколько практических примеров:
- Equivalence Partitioning (EP): если тестируется веб-форма для регистрации пользователей, можно разделить все возможные варианты ввода данных на эквивалентные группы, например: правильный адрес электронной почты, неправильный адрес электронной почты, пустое поле для электронной почты, длинное поле для электронной почты.
- Boundary Value Analysis (BVA): если тестируется приложение для работы с числами, можно проверить работу приложения на крайних значениях, например, максимальное и минимальное значение, а также на значениях, которые находятся непосредственно перед этими граничными значениями.
- Combinatorial Test Techniques: если тестируется сложное приложение с множеством вариантов настроек и комбинаций, можно использовать техники комбинаторного тестирования для создания тестовых наборов, которые покрывают все возможные комбинации настроек.
- State Transition Testing: если тестируется приложение, которое имеет несколько состояний, можно разработать тест-кейсы для проверки переходов между этими состояниями.
- Domain testing: если тестируется приложение, которое обрабатывает определенный диапазон данных (например, даты, временные интервалы), можно разработать тесты, которые покрывают все возможные варианты входных данных, включая граничные значения.
- Risk-Based Testing: если тестируется приложение, которое имеет много возможных ошибок, можно использовать риск-анализ для определения наиболее вероятных проблем и сосредоточить тестирование на этих областях.
- Exploratory testing: если тестируется новое приложение или функциональность, которая не имеет точного описания или спецификации, можно использовать исследовательское тестирование для поиска ошибок и проблем в интерфейсе и функциональности.
Привет, подскажите, пож-та, почему такие страшные картинки? Рисовал ИИ или стоковые?