Тестирование
Если тесты настолько важны, то почему ими покрыто не 100 % кодовой базы проекта?
100 % тестового покрытия говорят скорее о стремлении к красивым цифрам, нежели о стремлении минимизации ошибок и максимизации качества программного продукта.
Причин тому несколько:
- Тестами покрывается каждый метод каждой структуры — далеко не всё требуется проверять, например: методы в структурах после кодогенерации (потому что они проверены при создании самой кодогенерации);
- Тестами покрываются все методы каждого класса, участвующего в общей бизнес-логике — в этом случае повторно проверяется работа методов, которые уже были проверены в рамках других тестов;
- Даже если считать нормой, что одна бизнес-логика проверяется разными тестами, то поддерживать такие тесты в актуальном состоянии при изменениях в проекте относительно дорого (потому что на изменение одного метода придётся поправить несколько тестов).
Важен баланс: минимум усилий на поддержку тестов при максимуме эффективности их проверок.
Тестами имеет смысл покрыть наиболее важные части бизнес-логики, стараясь при этом не проверять один и тот же метод несколько раз.
Поэтому в проекте есть тесты: - На бизнес-логику конкретных модулей; - На поведение сервиса в целом при взаимодействии с ним посредством API-методов.