1.6 Уровни тестирования. Позитивные и негативные тесты
Классификация по уровням
1. Компонентное тестирование - происходит тестирование отдельных модулей.
Например, если это интернет-магазин, то это тестирование корзины (т.е. отдельного компонента). Или тестирование оплаты заказа.
2. Интеграционное тестирование - тестинг части системы, состоящей из двух или более модулей.
Например, как из корзины интернет-магазина можно произвести оплату товара посредством платежной системы.
Интеграционное тестирование включает в себя:
- Компонентный интеграционный уровень (CIT - Component Integration testing): Проверяется взаимодействие между компонентами одной системы после проведения компонентного тестирования.
- Системное интеграционное тестирование (SIT - System Integration testing) - тестирование взаимодействия между всеми компонентами тестирования; либо взаимодействие разных систем между собой; либо тестирование интерфейсов, с помощью которых взаимодействует система.
Существует 3 вида интерфейсов:
- Интерфейс программирования приложений (API) - набор методов, которые можно использовать для доступа к функциональности другой программы. (Например, используется для внедрения платежного инструмента).
- Интерфейс командной строки (CLI) - инструкции компьютеру даются путем ввода команд через командную строку (текстовые строки).
- Графический пользовательский интерфейс (GUI) - в нем программные функции представлены графическими элементами экрана. (Например, интернет-страница в браузере).
Подходы к интеграционному тестированию:
- Подход Большого взрыва (Big Bang Approach): Все или практически все разработанные модули собираются вместе в виде законченной системы или ее основной части, и затем проводится интеграционное тестирование. Такой подход очень хорош для сохранения времени.
- Инкрементальный подход (Incremental Approach): при таком подходе тестирование выполняется путем объединения двух или более логически связанных модулей. Затем другие связанные модули поэтапно добавляются и тестируются для правильного функционирования. Процесс продолжается до тех пор, пока все модули не будут соединены и успешно протестированы. Осуществляется разными методами:
- Нисходящий подход (Top-Down Approach): Вначале тестируются все высокоуровневые модули, и постепенно один за другим добавляются низкоуровневые. Все модули более низкого уровня симулируются заглушками с аналогичной функциональностью, затем по мере готовности они заменяются реальными активными компонентами.
- Восходящий подход (Bottom-Up Approach): В восходящей стратегии каждый модуль на более низких уровнях последовательно тестируется с более высокоуровневыми модулями, пока не будут протестированы все модули. Для симуляции недостающих модулей используются драйвера для тестирования.
- Гибридный/сэндвич-подход (Sandwich/Hybrid/Bi-Directional Approach): Представляет собой комбинацию восходящего и нисходящего подходов. Здесь целью является средний слой, в то время как драйверы заменяют верхний слой, а заглушки нижний пока компоненты этих слоев не будут разработаны;
3. Системное тестирование - выполняется на полной интегрированной системе с целью проверки системы исходным требованиям.
На примере интернет магазина: проверяем как работают все модули интернет-магазина, то есть в целом все функции интернет-магазина. Зарегистрироваться, войти в магазин под своим аккаунтом, найти товар, выставить фильтры, добавить товар в корзину, оплатить, отслеживать товар.
4. Приемочное тестирование - тестирование, проводимое на этапе сдачи готового продукта либо на этапе сдачи какой-то готовой его части заказчику.
Целью приемочного тестирования является определение готовности продукта и достигается это путем прохода тестовых сценариев, случаев, которые построены на основе спеки (от англ. specification (дословно — спецификация) — документ с подробным описанием требований, условий и технических характеристик, как должен работать разрабатываемый функционал.) к продукту. По сути это финальный этап тестирования продукта до его релиза.
Обычно тестируется основной функционал, который не требует тщательных проверок.
Существует несколько типов приемочного тестирования:
- Пользовательское приемочное тестирование (UAT) - тестирование, которое проводится конечными пользователями продукта.
- Эксплуатационное - выполняется либо пользователями, либо администратором в среде, которая имитирует реальные условия рабочего окружения. На этом этапе проводиться проверка резервного копирования, либо аварийного восстановления системы.
- Тестирование на соответствие контракту - проверка на соответствие спеке либо другому нормативному акту. Это не только проверка по требованиям заказчика, но так же проверка, соответствует ли ГОСТу или иным нормативным документам или GDPR*.
- Альфа-тестирование - это первоначальное тестирование продукта небольшой группой пользователей. Главные задачи этого этапа – проверка функциональности и получение обратной связи. Проводится на стороне разработчиков, но не тестерами или сотрудниками, а потенциальными потребителями.
- Бета-тестирование - проводиться на внешней стороне без участия разработчиков. Проводиться небольшой группой пользователей для того, чтобы получить от них обратную связь до выхода продукта на рынок.
*GDPR — это регламент ЕС, который обновляет и расширяет более раннюю Директиву о защите данных (DPD), впервые принятую в 1995 году. Регламент GDPR посвящен обеспечению конфиденциальности данных физического лица, будь то клиент, сотрудник или деловой партнер. Цель GDPR заключается в обеспечении защиты персональных данных граждан ЕС, независимо от того, проживают они в ЕС или в другом месте.
Классификация по позитивности тестовых сценариев
1. Позитивное тестирование - тестирование, при котором применяются сценарии, которые соответствуют нормальному ожидаемому поведению системы. С его помощью можно определить, что система делает то, для чего и была создана.
2. Негативное тестирование - тестирование, во время которого применяются сценарии, которые соответствуют внештатному поведению системы.
Например, ситуации или какие-то неверные данные. Пример - если это калькулятор, то деление на ноль должно выдать ошибку.
Многие начинающие тестеры думают, что сначала надо делать негативное тестирование, т.е. попытаться сломать систему. Это не так. В первую очередь выполняются позитивные тесты, особенно в режиме ограниченного времени.
Позитивное тестирование (positive testing) - исследование приложения в ситуации, когда все действия выполняются строго по инструкции без каких бы то ни было ошибок, отклонений, ввода неверных данных и т.д.
Пример: ввод валидных значений в поле имя и пароль для успешной регистрации пользователя.
Негативное тестирование (negative testing, invalid testing) — направлено на исследование работы приложения в ситуациях, когда с ним выполняются (некорректные) операции и/или используются данные, потенциально приводящие к ошибкам (классика жанра — деление на ноль).
Пример: ввод невалидных значений в поле имя и пароль, появление сообщения об ошибке, неуспешная регистрация.
Деструктивное тестирование (destructive testing) - одна из форм негативного тестирования с целью нарушить работоспособность приложения и обнаружить точку отказа.
Пример: нагрузка приложения выше его предела, чтобы оно перестало работать
В реальном тестировании следует использовать несколько правил: