Семинар 2 1. 2. 3. 4. Модульное тестирование Интеграционное тестирование Разработка через тестирование Планирование
Unit testing ЧТО ЭТО Оно же Unit-тестирование Тестируют модуль независимо от других Тестируется интерфейс модуля или класса Не тестируются функции реализации
Unit testing ТЕСТЫ Тесты – функции с определенной сигнатурой (обычно void) Тесты объединяются в группы (Suite) Группы тестов в отдельных модулях
Unit testing ЦЕЛИ ТЕСТОВ Тесты одной группы могут логически разделяться по типу тестируемой сущности: Тесты вызова Тесты данных Тесты структуры
Unit testing ПРЕИМУЩЕСТВА Модуль проверен Модуль будет проверять при внесении будущих изменений – их легче вносить Отличная документация к модулю
Unit testing НЕДОСТАТКИ Тесты долго разрабатывать Без ФАНАТИЗМА – не все заслуживает модульных тестов, иногда стоит обходиться интеграционными/функциональными тестами или тестером
Unit testing ВАЖНЫЙ ПРИНЦИП НАШЕЛ БАГ - НАПИШИ ПРОВЕРЯЮЩИЙ ЕГО ТЕСТ
Unit testing ЗАГЛУШКИ Используются заглушки для независимого тестирования модулей Основные типы заглушек это Моки (Mock) и Стабы (Stub)
Unit testing ТИПЫ ЗАГЛУШЕК Стабы – заглушки, которые только возвращают четко заданный результат без реальной обработки входных данных Моки – осуществляют дополнительные данные по проверке данных и возвращают результат в зависимости от этого
Unit testing КАК СДЕЛАТЬ ЗАГЛУШКИ Для использования Заглушек в процедурном подходе используются указатели на функции Для использования Заглушек ООП используются Интерфейсы и Наследование
Модульное тестирование ПРИМЕРЫ Примеры в студию!
TDD ЧТО ЭТО TDD – Test Driving Development – Разработка через тестирование Является одной из практик Экстремального программирования (XP)
TDD ПРИНЦИП В начале добиваемся НЕКОЕГО понимания модуля/модулей (задач, интерфейса, структуры), которые необходимо разработать Пишем тесты и при этом набрасываем интерфейс модуля. Все должно компилироваться, тесты – ПАДАТЬ Реализуем функции модуля – тесты перестают падать.
TDD ПРЕИМУЩЕСТВА Тесты точно будут! Взгляд на модуль со стороны его будущего пользователя – ИНТЕРФЕЙС ЛУЧШЕ Осмысление всех сложностей модуля до его реализации – РЕАЛИЗАЦИЯ ЛУЧШЕ