Не совсем понятно что имеется в виду под “UI тестами”. Любые тесты, которые работают с UI интерфейсом? Потому что на самом деле я разделяю такие тесты на:
Интеграция Клиента и Фронтэнда. Тесты, где бэкэнды являются Mockам. Соответственно валидация идет с обеех сторон: со стороны бэкэнда, когда Клиент что-то посылает через Фронтэнд и со стороны Клиента, когда имитирую ответы с бэкенда.
Фунциональные тесты Клиента. Тесты, которые не затрагивают бэкэнд вообще (только Клиента или Клиент <-> Фронтэнд), но они больше чем обычные юнит-тесты Клиента.
Энд-то-энд. Тесты, где Фронтэнд связан с бэкэндами, т.е. весь environment полностью связан.
Мне кажется, что нельзя их все месте в кучу связывать, потому что подходы к их реализации очень разные. (Хотя 1 и 2 можно связать вместе).
Точно! Таких end-2-end должно быть настолько мало, насколько это возможно. И автоматизировать такие тесты практически не имеет смысла, т.к. все эти системы наверняка невозможно контролировать из тестов (запускать/останавливать/менять данные).
У нас ~600 end-2-end историй (каждая новая фича вносит еще 3-10), продолжительность запуска каждой примерно 1-3 минуты, т.к. это не просто проверка состояния контрола, а проверка пользовательского сценария. Оптимизация времени запуска имеет у нас в данный момент первый приоритет. Задачу решаем распараллеливанием тестов. Но все начинает усложняться тем что с этого года начинаем саппортить еще 3 браузера и их разные версии таким образом получим все что имели умноженное на X.
подскажите, за счет чего удается достичь такой маленькой продолжительности запуска 424 тестов. Можете привести пример обезличенного среднестатистического теста у вас на проекте?
А как планируется учесть процент уникальных темтов или наоьорот дэйтадривен? По факту нужно понять что хотим узнать опросом? Величину среднего проекта или размер среднего запуска? Например на проекте ожет быть 300 уникальных тестов, но на запуске все они парметризуются и в конечном счете запускается 2500.
Привет!
За счёт мы достигает такой скорости тестов, я рассказывал подробно на SelenimCamp и SQA Days.
Если вкратце - эмуляция медленных внешних систем, in-memory база данных, встраивание хаков в систему, чтобы тесты могли попадать сразу нужным пользователем на нужную страницу без многократного прокликивания всей цепочки.
У нас
Кол-во уникальных тестов 7459
Которые тестируют интеграцию полную.
Проекту, лет 5 вроде бы.
Есть еще отдельные тесты верстки, базовых компонент и тд.
Да, это типичное заблуждение.
Точнее, само по себе утверждение верное, что задача тестов эмулировать поведение пользователя. НО.
Каждый тест должен тестировать только что-то своё. Во всех книжках ведь пишут, что тесты долнжы быть независимые и т.д.
То есть, тест для логина должен эмулировать действия пользователя при логине. Да. Заполнять логин, пароль, вот это всё.
А тест для покупки телевизора должен эмулировать действия пользователя на странице покупки телевизора. А заполнять логин и пароль сто тысяч раз не должен, потому что эта функциональность уже протестирована в пункте 1.
Ну, в целом я Вас понял, тут просто нужно разделять глубину выхода из тест-шагов.
Если касаемо логина, то вход выполняется единожды на сессию. Если навигация по сайту, то для каждого теста своя, И - главное, если она не касается самого теста (проверить товар в корзине, но ведь до корзины нужно дойти) - выносится или в фикстуру, как подготовочные шаги, или как фаст преддикат функция, которая говорит о возможности проведения теста (если я дошла до корзины - выполнить тест)
Опять таки, первым сообщением я не хотел сказать что Вы делаете плохо, просто нужно уточнять что и как Вы упрощаете для ясности.