Недавно читал по данному поводу пару статеек, опыта мало, но прикинул себе некую стратегию.
У нас есть разные уровни тестирования. Также у нас есть пирамида тестирования, как выше правильно написали:
- 10-ки UI тестов
- 100-ни API тестов
- 1000-чи Unit тестов
Пример возьмем - покупку в интернет-магазине, выше уже приводили в пример…
По итогу получаем:
- разработчик на бекенде пишет множество юнит тестов, в которых будут корректные и некорректные данные, ввод полей, форм (пример), на уровне бекенда
- фронтенд-разработчик возможно также пишет юнит тесты на валидацию полей, но уже на стороне JS
- затем происходит ручное тестирование, после чего тестировщик пишет кейсы, производит тест-дизайн, и пишет UI автотесты для регрессии, для той функциональности, которая будет постоянно меняться или имеет высокий приоритет (там всякие покупки и т.д.). Скорее всего это и есть тот уровень тестирования, когда проверяется, как все компоненты работают в целом. Тут уже можно не делать 100500 валидаций для автотестов, только проверка, что при валидных данных осуществляется покупка в интернет-магазине, а при не валидных показывается какой-то поп-ап или сообщение пользователя с правильным цветом сообщения
Если же говорить о контексте, когда на бекенде пишут API, с которым потом взаимодействует мобильное приложение или веб, то тогда на уровне API можно проверить бизнес-логику, что отдает сервер при корректных или некорректных введенных данных. Тут уже может быть большое количество тестов, которые были спроектированы после грамотного тест-дизайна и граничные значения и т.д… На этом уровне тестируется не отдельные компоненты написанные разработчиком.
Где, кто и как тестирует, попадают ли данные в БД, тут не совсем пока понимаю… Но на уровне UI тестов, думаю стоит проверить попала ли покупка в кабинет пользователя и кабинет администратора, и правильные ли данные она получила после сценария покупки.
Тоесть, по сути, UI автотесты пишутся не ради UI автотестов, а ради того, чтобы снизить муторные шаги и большое количество регрессии.
Чтобы получить наименьшее количество больших и сложных в поддержке UI тестов - люди пишут API тесты и UNIT тесты. Также еще UI тесты можно использовать для всяких там дропбоксов, загрузки файлов и т.д, что собственно и происходит во время написания автотестов для покупки на стороне пользователя… Но их получается очень незначительно количество, из-за того, что на более низком уровне мы покрыли уже часть сценариев с валидацией и тем, что отдает нам сервер.
Ручное же тестирование проверяет, правильно ли работает фича, но к сожалению не полностью проверяет, корректно ли написаны юнит-тесты и API тесты, собственно поэтому ручное тестирование наверное и проводят полностью, согласно ранее проделанного тест-дизайна…
По итогу получим протестированный продукт на разных уровнях + наименьшее количество UI тестов для наиболее приоритетных вещей и постоянной регрессии + резолюцию тестировщика, что все работает согласно заявленным требованиям… Тоесть, не надо пихать в UI тесты 100500 разных данных на проверку корректности и что же там произойдет дальше.