Хорошо, когда автотест никогда не падает... или плохо?
Хочется, чтобы падение показывало реальное отклонение от ожидаемого поведения, но порой случаются так называемые flaky, из-за которых сложно оценить состояние функционала.
Наша задача как инженеров уменьшать эту вероятность, добавляя стабильности
Как можно улучшить стабильность автотеста? Вот некоторые советы:
🎯 позапускать локально/удалённо свой автотест несколько раз в несколько потоков, тем самым проверив на работу под небольшой нагрузкой и в параллели
❔ позадавать вопросы "А что произойдёт, если ... ?", проверив на места, где могут быть какие-то моменты, влияющие на стабильность (к примеру, в тесте закрывается какой-то баннер, но он иногда может не появится, сможет ли автотест это корректно обработать или нет)
🔄 делать переповторы запросов/действий там, где это возможно (возьмём асинхронные обработки в API, делаем перезапросы, чтобы дождаться нужного ответа)
📥 проверяем подготовку тестовых данных, что она выполняются стабильно (к примеру, для пользователя перед тестом выставлялся рандомный язык и это могло повлиять на сам тест)
♻️ делать хотя бы минимальное количество перезапусков самого теста, с возможностью перезапустить на другом окружении (если это возможно технически), так можно уберечься от случайных падений из-за сети/инфраструктуры
🖲 делать стабильные локаторы, менее склонных к изменениям, то есть, например, для web'а это будет aria-* атрибуты, а также data-* (test, testid, как угодно тут), на которые можно договариваться с разработкой и опираться на них
🎭 использовать моки там, где нужно подменить какой-то ответ от сервера
✅ Выбирайте также надёжные и стабильные фреймвоки для автотестов, чтобы не было сюрпризов) И, разумеется, тестируемые приложения и инфраструктура должны быть стабильны, это всё напрямую влияет на автотесты)
Тэги: #автотесты #советы
Мой канал в Telegram: