Очень часто мне приходилось сталкиваться с тем, что начинающие тестировщики (да и я сам раньше) путают понятия. Например, исследовательское тестирование — это техника или вид? А функциональное тестирование? Давайте разбираться.
Понятно, что я сам не смогу ответить на этот вопрос, но этого и не нужно. Достаточно обратиться к стандартам и посмотреть, какую же классификацию техник они предлагают. Далеко ходить не стал, посмотрел в сторону ISTQB и вот что получилось.
В первую очередь выделяют три категории методов проектирования тестов:
- Методы черного ящика.
- Методы белого ящика.
- Методы, основанные на опыте.
В чем их различие?
Методы черного ящика основываются на анализе как требований и спецификаций, так и самого продукта.
Можно сказать, что в этом случае мы подходим к тестированию продукта, как к черному ящику. Мы не знаем, что внутри системы, не видим ее код и архитектуру. Чем-то мы похожи на обычных пользователей, которые видят лишь итог работы команды разработки. Мы тестируем ящик, но не знаем, что находится внутри.
Методы белого ящика являются абсолютной противоположностью методам черного ящика и основываются на анализе архитектуры приложения, внутренней структуры и кода системы.
С помощью этого метода мы заглядываем внутрь объекта тестирования и знаем, как он устроен. Особенностью этих методов является то, что для тестирования не обязательно запускать программу, достаточно взглянуть на исходный код.
Методы, основанные на опыте, используют опыт разработчиков, тестировщиков и пользователей для проектирования, реализации и выполнения тестов. Их часто совмещают с методами черного и белого ящиков.
Итак, если это категории методов, значит они должны включать в себя и сами методы тест-дизайна (проектирования тестов). Давайте посмотрим, какие техники предлагает нам ISTQB.
Методы черного ящика (Black-box Test Techniques)
- Эквивалентное разбиение (Equivalence Partitioning). Эта техника говорит нам о том, что тестовые данные необходимо разбивать на некоторые группы, внутри которых результат выполнения тестов идентичен. Группы могут быть как для позитивных, так и для негативных значений.
Подробнее о методе читаем тут https://vk.com/wall-172009645_386 - Анализ граничных значений (Boundary Value Analysis). Является продолжением предыдущего метода и говорит нам о том, что необходимо брать значения, которые лежат на границе классов.
Подробнее о методе читаем тут https://vk.com/wall-172009645_386 - Тестирование с помощью таблицы альтернатив (Decision Table Testing). Это способ компактного представления модели со сложной логикой.
Достаточно понятно метод описан тут http://blog.rocketbrain.ru/decision-table-test-design/ (если данная ссылка не работает, то читаем о методе тут https://training.qatestlab.com/blog/technical-articles/tables-solutions-and-their-usage-in-testing/) - Тестирование с помощью таблицы переходов (State Transition Testing). Интересная техника, которая позволяет составлять высокоуровневые чек-листы.
О ней я рассказывал в двух статьях https://vk.com/wall-172009645_515 и https://vk.com/wall-172009645_583 - Тестирование с помощью сценариев использования (Use Case Testing). Сценарии использования — это перечень действий, сценарий по которому пользователь взаимодействует с приложением, программой для выполнения какого-либо действия для достижения конкретной цели. Тестирование по сценариям проводится для того, чтобы обнаружить дополнительные логические дыры и баги в приложении, которые сложно найти в тестировании индивидуальных модулей, частей приложения отдельно друг от друга.
Почитать можно в статье http://software-testing.ru/library/5-testing/78-2008-09-29-07-33-51 - Техника попарного тестирования (Pairwise Testing). Она не содержится в перечне техник ISTQB, но я тоже решил ее добавить. Используется, когда необходимо не просто протестировать продукт, а продукт с множеством взаимосвязанных входных данных.
Подробнее тут https://vk.com/wall-172009645_468
Методы белого ящика
- Тестирование и покрытие операторов (Statement Testing and Coverage). Тестирование операторов направлено на проверку исполняемых операторов в коде. Покрытие вычисляется как отношение количества операторов, выполненных тестом, к общему числу операторов в тестируемом коде.
- Тестирование и покрытие условий (Decision Testing and Coverage). Тестирование условий направлено на проверку логических условий в коде, а также кода, выполняемого в зависимости от исхода условия. Покрытие вычисляется как отношение числа исходов условий, проверенных тестом, к общему числу исходов тестируемых условий.
Методы, основанные на опыте (Experience-based Test Techniques)
- Предположение об ошибках (Error Guessing). Это способ предотвращения ошибок, дефектов и отказов, основанный на знаниях тестировщика.
Подробнее можно прочитать тут https://vk.com/wall-172009645_640 - Исследовательское тестирование (Exploratory Testing). Это достаточно гибкое тестирование, которое говорит нам о том, что тест-кейсы и чек-листы создаются, выполняются, анализируются и оцениваются динамически во время выполнения тестов.
Исследовательское тестирование лучше всего подходит в ситуациях, когда документация недостаточная, либо вовсе отсутствует, в условиях очень сжатых сроков и как дополнение к другим, более формальным, методам тестирования. - Тестирование на основе чек-листов (Checklist-based Testing). При тестировании по чек-листам тестировщик проектирует, реализует и выполняет тесты, указанные в чек-листе.
Такие списки могут быть построены на опыте, на исторических данных об ошибках, на информации о приоритетах для пользователей и понимании, как и почему происходят отказы в программе.
***
Вот и все. Получается не так много, но познавательно. Думаю, это поможет начинающим тестировщикам немного больше понять тестирование и структуру техник тест-дизайна.