-
Notifications
You must be signed in to change notification settings - Fork 46
Пирамида тестирования
Контр-пример для тех, кто считает, что тесты ненужны: вынесение диагноза врачом без необходимых анализов.
Тотальное и полное покрытие системы тестами.
На 100% этого достичь невозможно, но нужно к этому стремиться.
Тем не менее, так как работа тесно связана с бизнесом, TST по-настоящему невозможно.
Применяется для тестирования одной логически выделенной и изолированной единицы системы. Чаще всего это метод класса или простая функция.
Изолированность тестируемой единицы достигается при помощи Заглушек (Stubs, Dummies) и Макетов (Mockups).
Применяется для тестирования связки сразу нескольких компонентов. Система - чёрный ящик.
Связка объединена неким фасадом, который предоставляет соответствующий API к ней. Методы этого API — это как раз то, что нам и надо покрыть тестами.
Изолированность связки достигается по средствам Заглушек (Stubs, Dummies) и Макетов (Mockups).
Факт связанности компонентов и формат коммуникации между ними проверяется с помощью так называемых Шпионов (Spies).
Разновидность системного теста. Этот термин употребляют чаще к тестам, покрывающим непосредственно публичный API сервиса. Фокус устремлен на проверку взаимодействия разных систем по принципу “сервис-клиент”. При таком тестировании запросы должны производится также, как будет это делать конечный клиент этого самого сервиса. Это означает, что фактически, для таких тестов необходимо воссоздать почти полноценно работающее окружение. Самое сложное: добиться изолированности тестов и сформировать тестовые данные.
Для формирования такого окружения применяют шаблоны Испытательная Платформа (TestBed) и Фикстура (Fixture).
Тест, который призван полностью эмулировать поведение конечного пользователя системы. Фактически вы должны написать робота, который будет пользоваться вашей системой в тестовом окружении. Чаще этот термин используется применительно к GUI, т.е. взаимодействие пользователя и графического интерфейса системы.
Один из самых популярных шаблонов, который позволяет упростить написание таких тестов это Объект-Страница (Page Object, Screen Object).
Заглушка (Stub, Dummy) — функция или метод класса, которая подменяет реализацию оригинальной функции и не выполняет никакого осмысленного действия, возвращает пустой результат или тестовые данные.
Макет (Mockup) — это может быть экземпляр объекта, который представляет собой конкретную фиктивную реализацию определенного интерфейса. Макет, как правило, предназначен для подмены оригинального объекта системы, исключительно для тестирования взаимодействия и изолированности тестируемого компонента.
Шпион (Spy) — объект-обертка (по типу прокси), которая слушает вызовы и сохраняет информацию об этих вызовах (аргументы, количество вызовов, контекст) оригинального объекта системы. Далее сохраненные шпионом данные используются в тестах.
Испытательная Платформа (TestBed) — это специально воссозданная тестовая среда, платформа для тестирования (может быть комплекс Макетов, Заглушек и Шпионов). Применяется для комплексного тестирования отдельных связок компонентов или всей системы.
Фикстура (Fixture) — это механизм, позволяющий привести объект или всю систему в определенное состояние и зафиксировать это состояние для тестов. Под фикстурой чаще всего понимают тестовые данные необходимые для корректного запуска тестов, а также механизмы загрузки/выгрузки этих данных в хранилище. Т.е. основное назначение фикстур — это привести данные системы к определенному состоянию (фиксированному), которое будет точно известно во время выполнения тестов.
Объект-Страница (Page Object, Screen Object) — это объект, структура которого повторяет элементы страницы. Объект предоставляет методы по работе с соответствующей UI-страницей (нажатие кнопок, ...) и методы доступа к информации на этой странице (заголовок, ...).
https://medium.com/devs-about-tests/%D1%82%D0%B5%D1%81%D1%82%D1%8B-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD-%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA-a04cab35f45b https://medium.com/devs-about-tests/the-testing-pyramid-2fec1c1fef91