Unit testing and automation Flashcards
На основе книги Хорикова
Цель unit-тестирования
Обеспечение стабильного роста проекта.
Хорошие юнит-тесты помогают предотвратить стагнацию и сохранить темп разработки со временем.
С такими тестами вы будете уверены в том, что изменения не приведут к багам. В свою очередь, это упростит рефакторингкода или добавления новой функциональности.
Возможность покрытия кода юнит-тестами это какой признак?
Хороший негативный признак качества кода. Т.е. если это невозможно, то код точно плохой.
Но это плохой позитивный признак - возможность покрытия не гарантирует качество кода.
Что создаёт установление конкретного процента покрытия кода как цели?
Создаёт неправильный стимул, противоречащей цели юнит-тестирования.
Вместо тестирования - люди начинают сосредотачиваться на достижении искусственной цели.
Высокий процент обеспечивать хорошо, но это не должно являться целью.
Метрики покрытия кода каким признаком являются?
Хороший негативный признак.
Низкий процент покрытия - хороший признак проблем с тестами.
Высокий процент покрытия - не гарантирует высокое качество тестов.
Юнит тестом называется автоматизированный тест, который
- Проверяет правильность работы небольшого фрагмента кода (так же называемого юнитом)
- делает это быстро
- поддерживая изоляцию другого кода
Какие школы юнит-тестирования бывают?
- Классическая школа
- Кент Бек
- Лондонская школа
- Стив Фримен, Нат Прайс
В чём несогласие двух школ юнит-тестирования?
Вопрос изоляции - корень различий. Все остальные различия школ проистекают из несогласия относительно того, что же именно означает изоляция.
Значение изоляции в лондонской школе?
Изоляция тестируемого кода от его зависимостей (заглушки).
Если класс имеет зависимость от другого класса или несколько классов, все такие зависимости должны быть замененеы на тестовые заглушки (test doubles). Это позволит вам сосредоточиться исключительно на тестируемом классе, изолировав его поведение от внешнего влияния.
Что такое mock?
вид заглушки, которая позволяет проанализировать взаимодействия между тестируемой системой и ее коллаббораторами
Что такое тестовая заглушка? test-double
общий термин, описывающий любые разновидности фиктивных зависимостей, используемых в тестах
Размер юнита в лондонской школе
Юнит должен быть одним классом или методом внутри класса.
Юнит не может быть больше по определению.
Классический подход к изоляции
Можно тестировать несколько классов одновременно, при условии, что все они находятся в памяти и не обращаются к совместному состоянию (shared state), через которое тесты могут влиять не выполнение друг друга.
Примеры: внепроцессные (out-of-process) зависимости:
- база данных
- файловая система