Почему ожидание имеет значение: как сделать автоматизированные тесты надежными
2 ноября 2024 г.Я помню, как работал над проектом, где я реализовывал набор регрессионного анализа для веб-приложения с использованием Cypress. Поначалу все шло гладко, и тесты проходили хорошо. Однако вскоре я столкнулся с неприятной ситуацией: некоторые тесты начали давать сбои, казалось бы, без всякой причины. Не то чтобы я внес какие-то изменения, которые могли бы вызвать это, но сбои продолжались.
Я потратил довольно много времени на отладку проблемы, пытаясь определить, что пошло не так, но не смог найти решение. Через некоторое время я решил сделать перерыв и заняться чем-то другим. Забавно, как иногда, когда что-то, что раньше работало, внезапно перестает работать, вы можете надеяться, что простая перезагрузка — например, выключение ноутбука и повторное рассмотрение проблемы позже — может решить ее. К сожалению, в этот раз все сложилось не так.
Решив решить эту проблему, я сел и понаблюдал, как тест проходит в режиме head. Наблюдая, как веб-приложение раскручивается и выполняет написанные мной команды, я заметил нечто важное: когда тест переходил на определенную страницу, не весь контент загружался должным образом.
Это был мой прорывной момент! Я понял, что сетевые вызовы не были полностью завершены до того, как тест попытался выполнить действия на странице. Чтобы решить эту проблему, я добавил команду wait, чтобы гарантировать, что тест приостановится, пока необходимые элементы не будут полностью загружены.
Угадай, что?Проблема решена! Этот опыт подчеркнул важность понимания времени и поведения загрузки веб-приложений при автоматизированном тестировании.
Почему ожидание имеет значение!
При выпечке рецепты часто требуют, чтобы вы ждали, пока тесто поднимется или определенные ингредиенты достигнут комнатной температуры. Поспешность этого процесса может привести к недопеченному или плохо поднявшемуся хлебу, что приведет к менее приятному конечному продукту. При тестировании, так же как вы ждете, пока тесто поднимется, чтобы получить желаемую текстуру, вы должны ждать, пока элементы загрузятся должным образом, чтобы гарантировать успешное выполнение теста. Автоматизированный тест, который не дает достаточно времени для загрузки страницы, может привести к ошибкам, так же как поспешный процесс выпечки может привести к испорченному блюду.
Существует два типа ожиданий: неявное ожидание и явное ожидание. Думайте о них как о разных способах сказать компьютерупаузав нужное время. Давайте разберем их.
Неявное ожидание
Неявное ожиданиеэто как сказать компьютеру: «Подожди несколько секунд каждый раз, когда ты что-то ищешь на странице». Это общая настройка, которая применяется ко всему тесту.
- Пример:Если вы установите неявное ожидание в 5 секунд, тест будет ждать до 5 секунд всякий раз, когда ему нужно найти что-то на странице, например кнопку или изображение. Если элемент появляется раньше, он переходит вперед, не ожидая все время.
Явное ожидание
Явное ожиданиеточнее. Это как сказать: «Подождите, пока не произойдет что-то определенное, например, появится кнопка или сообщение». Этот тип ожидания используется только в определенных ситуациях, когда вы знаете, что что-то может занять дополнительное время.
- Пример:Если после нажатия на что-либо всплывающее окно появляется через несколько секунд, можно задать явное ожидание, чтобы приостановить его появление до тех пор, пока это всплывающее окно не станет видимым.
Почему оба периода ожидания имеют значение?
Эти два типа ожидания делают автоматизированное тестирование более надежным.неявное ожиданиетесты обрабатывают небольшие задержки, не требуя каждый раз специальных инструкций.Явные ожиданияпомощь в особых случаях, когда загрузка определенных элементов занимает больше времени, гарантируя, что тест не завершится слишком быстро и не даст сбой до того, как все будет готово.
Вместе неявные и явные ожидания создают сбалансированный подход, помогая тестам имитировать настоящее человеческое терпение и делая их более устойчивыми. Добавляя эти «правила ожидания», вы предотвращаете ненужные ошибки, делая свои тесты надежными, чтобы гарантировать, что веб-сайты и приложения работают так, как ожидается.
Оригинал