У разработчиков при упоминании покрытия тестами их продукта сразу возникают вопросы:

  • Что именно тестировать?
  • Какое должно быть покрытие?
  • Каких тестов должно быть больше?

И часто пытаются использовать популярную пирамиду тестирования

Я в ней увидел, что основа это Unit тесты на которых все держится. Unit тестов должно быть много, а UI/API мало. Пописав много тестов я пришел к расширению этой диаграммы и добавил в нее оси по которым можно ориентироваться.

Используя этот рисунок мы можем ответить на несколко вопросов и прийти к выводу что-же нам нужно делать.

  • Чтем пользуются ваши конечные пользователи продукта?
  • Пишите продукт с нуля, то на сколько важна скорость доставки?
  • Внедряете тестерование уже в существующий проект, то какая сложность существующего проекта?
  • Какое количество у вас есть ресурсов которое можно потратить на тестирование?

Начнем последовательно отвечать на них используя матрицу из двух крайностей где соблюдается принцип Паррето 80/20.

Чем пользуются ваши конечные пользователи продукта? Link to heading

Если у вас web приложение, то конечный пользователь использует либо api или frontend приложение.

Если вы пишите библиотеку которую потом используют другие программисты, то конечный пользователь использует интерфейсы/методы которые он вызывает у себя в коде.

ВопросUNITUI/API
api или frontend приложениеX
интерфейсы/методы которые он вызывает у себя в кодеX

Если пишите продукт с нуля, то на сколько важна скорость доставки? Link to heading

В стартапах которые еще не нашли как зарабатывать деньги и буюджет ограничен, скорость доставки может влиять на жизнеспособность проекта.

В заказных проектах которые живут за деньги заказчика и заказчик точно знает что хочет получить и за какой срок можно можно определить направление для тестов.

По моиему опыту написание unit тестов занимает минимум половину времени на разработку функционала. При написании UI/API забирает 20% верени.

ВопросUNITUI/API
Скорость доставки важнаX
Качество кода важноXX

Внедряете тестерование уже в существующий проект, то какая сложность существующего проекта? Link to heading

Если у вас большой проект который разрабатывается давно и без тестов, то вам однозначно надо начинать с верху, иначе пользы от тестов вы еще не скоро получите.

Если прокет маленький и цена unit тестов не слишком отличается от api, то можно делать все.

ВопросUNITUI/API
Проект большойX
маленький проектXX

Какое количество у вас есть ресурсов которое можно потратить на тестирование? Link to heading

Когда компания готова уделять много ресурсов на стабильность и понятность проекта для разработчиков то конечно тестов нужно писать много.

ВопросUNITUI/API
Много ресурсовXX
Мало ресурсовX

Сведем наши крестики в одну таблицу Link to heading

Поставив крестики в тех местах где ваш проек соответствует и посчитать сколько пользы вы получите от автотестов.

ВопросUNITUI/APIМой продукт
api или frontend приложениеXX
интерфейсы/методы которые он вызывает у себя в кодеX
Скорость доставки важнаXX
Качество кода важноXXX
Проект большойXX
маленький проектXX
Много ресурсовXX
Мало ресурсовX

По итогу у меня получилось 4 UI/API и 1 Unit тесты. Для моего проекта больше гараздо больше пользы принесет UI/API тесты.