Класификация автоматизированного тестирования. Критерии сравнения тестов

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

За критерии сравнения видов тестирования возьмем:

  • скорость - насколько быстро отрабатывают тесты

  • изоляция - насколько независимо происходит тестирование того или иного функционала

  • вероятность побочных ефектов (side-effects) - насколько больша вероятность влияния стороннего фактора на прохождение теста

  • область охватываемого тестом функционала

Рассмотрим системные, интеграционные и юнит-тесты.

Системные тесты - вид тестирования, целью которого является проверка некоторой фичи разрабатываемой системы в целом (например, проверка правильности работы ендпоинта). Системные тесты медленные (так как могут общатся с базой данных и выполнять много других медленных операций), неизолированные (так как полагаются на работу базы данных, сторонних сервисов и т. д.) и очень уязвимы к побочных ефектов (таких как сторонние данные в БД, недоступность БД или стороннего сервиса и т. д.). Но они покрывают работу большого куска функционала и взаимодействие многих компонентов системы, что позволяет говорить о правильности работы фичи в целом, поэтому их наличие очень важно. Но их количество нужно минимизировать, так как они не дают быстрого ответа (не дают short feedback loop) на вопрос работоспособности кода.

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

Юнит-тестирование - вид тестирования, целью которого является проверка работы какого-то отдельно взятого элемента системи/юнита (например, метода класса). Такие тесты являются быстрыми, так как проверяют маленькую часть функционала, изолированными (не полагаются на работу других систем) и практически неуязвимы к побочным ефектам. Но они покрывают лишь маленькую часть функционала и по результатам их прохождения нельзя со 100% уверенностью сказать об правильности работы системы. Таких тестов должно быть наибольшее количество. Но не стоит забывать о других видах тестирования

Last updated