2. О чём
(Зачем нужны модульные unit) тесты
Что они из себя представляют
Подходы к написанию тестов
Анализ существующих тестов
Антипаттерны в проектировании тестов
Как написать нетестопригодный код
Статический анализ кода
2
5. Зачем писать unit-тесты?
Уменьшение количества итераций
> >Разработка Тестирование Разработка
Качество кода
Более лёгкое внесение изменений
Документация
5
23. Зависимый
Зависит от окружения
Операционная система
Расположение файлов
Зависит от других тестов
Один тест подготавливает данные для другого
23
24. Inspector
Использует знание о структуре объектов
(reflection api)
Изменение атрибутов доступа тестируемого класса
Получение приватных значение тестируемого класса
24
25. GodTest
Задействует много посторонних объектов
и подсистем
В случае падения трудно определить причину
По большому счёту является уже больше
интеграционным тестом, нежели unit
25
27. Медленные тесты
27
Unit-test не должны выполнятся больше
секунды
Что замедляет
Ввод/вывод
Обработка сложных структур данных
sleep
28. Заглушки
Эмуляция hardware интерфейсов
Внешние зависимости
Виды
Stub ― заглушка для объекта
Mock ― эмул яция объекта
Dummy – Пустой объект
28
46. Сильно связанный код
(Монолитная кодовая база инициализация
)классов внутри класса
Сложность в разделении на модули
Перегруженные тесты
46
47. “Тяжёлые” конструкторы
Конструкторы содержащие создание или
настройку членов класса
,Не поддаются изоляции от членов класса
для тестирования необходимо подгружать
.другие модули
47
48. “Тяжёлые” методы
Очень большое тело метода
Много аргументов на вход
Передача контекстного объекта в тело
метода
Проблемы в тестировании
Более сложные тесты
Вероятно метод реализует слишком много
,логики необходимо разделение на
.объекты
48
49. Цикломатическая сложность
Количество путей выполнения программы
–Выше цикломатическая сложность
сложнее тестировать
Каждый дополнительный операнд у if
увеличивает количество необходимых
2тестов минимум на
49
50. God Object
« »Класс всё включено
,Обычно содержит в себе тяжёлые методы
и тяжёлый конструктор
Слишком много логики сосредоточено в
,объекте сложность в тестовой
, .декомпозиции сложность дизайна тестов
50
51. Singleton
Паттерн позволяющий создавать
единственный экземпляр объекта
Отравляемый контекст
Минусы:
Применение данного паттерна может
привести к неприятным side- .эффектам
(Конкуренции за доступ в highload
)проектах
51
56. Домашнее задание
Сделать форк проекта server с моего
гитхаба
Обеспечить его тестовое покрытие не
85ниже %
Замеряем покрытие cobertura
Метрика branch coverage
Задание выполняется индивидуально
56