Что такое тест-кейс
Описание
Тест-кейсы (test cases, реже тестовые случаи, иногда также тестовые ситуации, в Википедии определяются как варианты тестирования) по своему общему предназначению похожи на чек-листы — контрольные списки поэтапной проверки каких-то аспектов функциональности или представления продукта.
Но тест-кейс четче фокусируется на своей задаче: поиске дефектов в продукте и более узко направлен. Иначе говоря, цель тест-кейса — убедиться, что приложение (сайт) работает, как ожидалось, как прописано в требованиях.
Тест-кейсы могут многократно запускаться с разными комбинациями тестовых данных, чтобы посмотреть что произойдет, как система отреагирует, соответствует ли она ожиданиям создателей и будущих клиентов.
Тест-кейс это как строго определенный и прописанный эксперимент в научной лаборатории, результаты которого фиксируются.
Итак, типичный тест-кейс:
- Содержит условия запуска
- Одно или несколько вводных условий/данных
- Действие, которое должно быть выполнено
- Результаты выполнения — тестовые выводы, или изменения, произошедшие в результате
Тест-кейс работает как бы «на тактическом уровне». Он описывает, что QA-инженеру нужно сделать и в каком порядке, и детализирует ожидаемые результаты.
Когда применяются тест-кейсы
Когда в жизненном цикле разработки ПО наступает нужный момент для написания тест-кейсов? Краткий ответ: это зависит от методологии, но вообще «пораньше» в цикле.
В старые времена, когда все работали только по каскадной модели, тестирование было одной, четко отдельной фазой. Она начиналась только после завершения фазы имплементации, которая в свою очередь начиналась только после того как был готов весь дизайн, и т.п. Но уже наступили времена Agile, и в этой гибкой методологии такие подходы уже не работают. В Agile тестирование — это уже не этап, а одна из активностей. Тестирование уже не ограничивается некими заданными временнЫми рамками, а производится постоянно, непрерывно, начинается как можно раньше, и за него отвечают не только QA-инженеры, а вся команда.
Если коротко, то тест-кейсы пишутся «чем раньше тем лучше». А если в компании практикуют TDD (что это?), или BDD (а это?), то тест-кейсы пишутся даже еще до написания продакшен-кода.
Подробно о тест-кейсах, отдельные технические материалы: Как писать тест-кейсы и Основные методики создания тест-кейсов
Что такое тестовый сценарий
Тестовые сценарии работают на более высоком уровне тестирования. Они менее подробны, как бы более «человечны» и ориентированы на «путь пользователя» по приложению/сайту.
Тестовый сценарий может содержать в себе много тест-кейсов.
Тестовый сценарий работает «на стратегическом уровне», то есть меньше вдается в подробности «как?», а описывает «почему?». Тестовый сценарий ориентирован скорее на бизнес-поведение пользователя, на его мотивацию, чем на «дотошное» выполнение с фиксацией результатов.
Подробно о тестовых сценариях в отдельном материале
Различия между тест-кейсом и тестовым сценарием — детальнее
Уровень
- Тест-кейсы как правило низкоуровневые, конкретные и детальные. В них указываются действия, которые должны быть выполнены, входные данные, и ожидаемые результаты.
- Тестовые сценарии — высокоуровневые средства тестирования. Они ориентированы на «общий вид» приложения, его функциональности (или юзабельности).
Зависимость
- Тест-кейсы могут зависеть от других тест-кейсов. В том плане, что например некий тест-кейс должен быть выполнен до выполнения других тест-кейсов, и условия запуска одного тест-кейса могут зависеть от результатов выполнения другого.
Пример: для выполнения тест-кейса «Логин» сначала должен быть выполнен тест-кейс «Регистрация».
- А тестовые сценарии не обязательно являются «серийными» то есть последовательными в цепочке, то есть могут и не зависеть от других тестовых сценариев, а быть совершенно самостоятельными.
Структура
- Тест-кейсы содержат пошаговые инструкции — что делать, и ожидаемые результаты.
- Тестовые сценарии дают как бы «общий путь», и могут ссылаться на детальные тест-кейсы.
Выполнение
- После выполнения тест-кейс отмечается как завершенный/выполненный с каким-то результатом (pass/fail, прошел/упал).
- Тестовый сценарий считается (успешно) выполненным, когда все включенные в него тест-кейсы успешно выполнены и завершены.
Автоматизация
- Если стратегия тестирования ориентирована больше на автоматизацию, то тест-кейсы легче поддаются автоматизации. В частности, легко построить матрицу трассировки, в которой тест-кейсы связаны с требованиями в наглядном табличном виде.
- Если же в проекте у нас только тестовые сценарии, автоматизация сложнее.
Время
- Создание (написание) тест-кейсов требует как правило затрат времени, и некоторой опытности.
- Тестовые сценарии могут быть написаны быстро, и как бы более интуитивно.
Онбординг
- Если в QA-команду берут нового человека, в период между циклами тестирования, ему должно быть просто вникнуть в особенности продукта на основе представленных ему тест-кейсов.
- С тестовыми сценариями сложнее — скорее всего уйдет больше времени на знакомство с продуктом, чтобы понять тестовые сценарии.
Примеры тест-кейсов и тестовых сценариев
Лучше это рассмотреть на практике.
Пример тест-кейса
Начнем с простого примера тест-кейса. Стажеру-QA дали задание написать простой тест-кейс проверки функциональности Корзины покупок на сайте. Что может быть в таком тест-кейсе?
- Начальные условия: Корзина пуста.
- Входные данные: продукт имеет стоимость 100 рублей.
- Действия: добавление товара в корзину и активация купона скидки на 10%.
- Ожидаемые результаты: в корзине должен быть один товар, а общая стоимость должна составлять 90 рублей.
- Полученные результаты: такие-то и такие-то.
Если речь идет о ручном тестировании, тест-кейс можно рассматривать как инструкцию, которой будет следовать тестировщик при выполнении теста.
Тест-кейс может быть представлен в разных форматах. Чаще всего он имеет табличный формат, как правило с колонкой, в которую вводятся фактические результаты (полученные). Примерно так:
Шаг | Ожидаемый результат | Фактический результат |
---|---|---|
Перейти по URL-адресу и верифицировать Корзину | Корзина пуста | |
Перейти на главную страницу и добавить в Корзину товар TEST_PRODUCT_1 стоимостью 100 руб | В Корзине один товар | |
Перейти на страницу оформления заказа и добавить купон на скидку TEST_COUPON_10 | Общая стоимость заказа в Корзине составляет 90 руб |
Этот пример упрощен, а часто в реальных тест-кейсах будут еще элементы, например:
- Прикрепленные релевантные документы, (имеющие отношение к)
- Диаграммы, схемы, рисунки, скриншоты и другие наглядные вещи, позволяющие тестировщику (и другим членам команды) быстро оценить результаты
- Ссылки на документацию, особые отметки и комментарии, ссылки на Jira/GitHub
Пример тестового сценария
Пример тестового сценария проще и короче, поскольку они представляют собой «высокоуровневое изложение» вещей, которые нужно протестировать (проверить). Например в случае с магазином будет примерно такое:
- Проверить функциональность Корзины
- Проверить аутентификацию/авторизацию
- Убедиться, что главная страница отображается и работает правильно
Тест-кейс и тестовый сценарий — табличное сравнение
Сравнение по: | Тест-кейс | Тестовый сценарий |
---|---|---|
Описание | Простой конкретный тест условия или требования | Более общее, высокоуровневое словесное описание действий |
Область тестирования | Узкая, сосредоточенная на какой-то одной функции/действии | Область широкая, покрывающая много тест-кейсов и функций |
Гранулярность | Детальное описание вводов, действий, и ожидаемых результатов | Высокоуровневое описание общих целей/действий |
Зависимость | Может зависеть от (результатов) других тест-кейсов | Может и зависеть но чаще не зависит от других тестовых сценариев |
Повторяемость | Может повторно запускаться с другим набором тестовых данных | Обычно не повторяем, так как представляет собой высокоуровневое описание одного из типичных пользовательских путей |
Цель | Верифицирует конкретную функцию или выполнение одного требования | Валидирует общее поведение системы или пользовательский путь |
Структурно | Входит в состав тестового сценария | Входит в состав use-кейса, покрывает большую user story или business-flow |
Документация | Содержит пошаговые инструкции и ожидаемые результаты | Представляет собой общее описание и содержит конкретные тест-кейсы |
Выполнение | Может запускаться независимо от других | Результат зависит от результатов выполнения многих тест-кейсов |
Взаимная зависимость | Может взаимно зависеть от других тест-кейсов или тестовых сценариев | Также может иметь взаимные зависимости от других тестовых сценариев |
Покрытие | Маленькое, покрывает один отдельный аспект или функцию или действие | Большое, покрывает широкую функциональность или много пользовательских действий |
Отслеживаемость | Может отслеживаться (сопоставляться, связываться) с требованиями или пользовательскими историями | Может сопоставляться с высокоуровневыми use-кейсами или пользовательскими историями |
Автоматизация | Может и часто автоматизируется для выполнения и верификации | В составе сценария могут автоматизироваться тест-кейсы |
Репорты | Результаты формируются в репорты на уровне отдельного тест-кейса и наборов | Результаты формируются в репорты на уровне сценария или user journey |
Часто задаваемые вопросы по тестовым сценариям — в соответствующем разделе статьи о тестовых сценариях.