«Опросив в рамках своего подкаста более 500 тестировщиков, я выделил четыре наиболее часто упоминаемые причины проблем в автоматизации. Эти причины релевантны всегда, независимо от языка и фреймворка.
Локаторы
При написании тест-кейсов ключевым компонентом, на котором нужно сосредоточиться, является стратегия локаторов. Зависимость только от поверхностных атрибутов, таких как имена классов, может спровоцировать проблемы, поскольку имена могут меняться в течение жизненного цикла приложения.
Настоятельно рекомендую стандартизировать идентификацию объектов, используя более надежные атрибуты, такие как ID и другие неизменные. Имея надежную стратегию локаторов — повышается надежность и эффективность автотестов, что обеспечивает более надежные и точные результаты.
Geetha Achutuni рассказывала, что успешной стратегией ее команды стало добавление уникальных атрибутов к элементам страницы. Это упрощает поиск элементов и значительно увеличивает надежность.
Помимо использования уникальных атрибутов, она предлагает еще два способа совершенствования стратегии локаторов:
1. Отдавайте предпочтение стандартным локаторам, таким как ID, name, CSS selector. Они как правило более надежны, чем XPath.
2. Воздержитесь от использования link text в качестве локатора. Поскольку текст ссылки может изменяться, что может привести к многочисленным ошибкам. Вместо этого используйте href-атрибут.
Синхронизация
Вторым по важности условием хорошего автотеста является правильная синхронизация.
Алан Ричардсон ака Злой Тестировщик выделил четыре основополагающих действия, которые должны быть в каждом потоке автоматизации:
- Навигация. Процесс перемещения по приложению.
- Опрос. Получение информации со страницы.
- Манипулирование. Действия, такие как щелчок мышью или внедрение JavaScript.
- Синхронизация. Ожидание определенных событий.
Алан подчеркнул, что синхронизация — это аспект, который большинство людей понимают неправильно.
Несколько гостей моей передачи перечислили методы синхронизации, используемые в инструментах автоматизации:
- Проверка наличия элемента.
- Подтверждение отсутствия элемента.
- Ожидание появления элемента.
- Ожидание исчезновения элемента.
Интегрируя эти методы, будет разумно подождать, пока приложение достигнет требуемого состояния, прежде чем продолжать выполнение. Правильное владение синхронизацией позволяет значительно повысить надежность и эффективность автотестов.
Это позволяет обойтись без печально известной команды ‘sleep’, которую следует использовать в исключительно редких случаях.
Тестовые данные
Эффективность тестов зависит от качества тестовых данных. Тестовые данные — это краеугольный камень процесса. Без них ваши тесты будут «висеть в пустоте».
В своей книге «Великолепная автоматизация» [прим.: эту книгу Колантонио можно скачать в нашей Библиотеке QA, на английском] я подчеркиваю важность стратегии работы с тестовыми данными. Тестовые данные, состоящие из входных значений или условий, должны быть разнообразными и исчерпывающими, чтобы гарантировать всестороннее тестовое покрытие.
Уделяя внимание сбору разнообразных и релевантных тестовых данных, вы сможете оценить устойчивость приложения и получить уверенность в его работоспособности в различных сценариях.
В одном из выпусков моего подкаста Хью Прайс (Huw Price) высказался за проактивный подход к тестовым данным, подчеркнув, что они должны быть продуманы еще до начала разработки:
«Если понаблюдать за нашими наиболее успешными клиентами, то их команды начинают работу над данными с самого начала, выясняя у пользователей требования к тестовым данным. Затем вдумчиво формируют динамический набор данных для тестирования и разработки. Такой проактивный подход неоценим. Он вполне достижим с помощью существующих технологий, и требует лишь небольшого изменения подхода». ~Хью Прайс, управляющий директор компании Curiosity Software.
Кроме того, следует понять, что проблема некачественных тестовых данных не является уникальной. QA-команды работают над этой проблемой уже много лет, и сегодня существует огромное количество инструментов.
Освоение этих инструментов может облегчить многие ближайшие и долгосрочные проблемы, сэкономить время и предотвратить стресс.
Кьяра Коломби в нашей беседе на тему «Генерация тестовых данных» подчеркнула, что:
«Не следует возлагать на разработчиков или тестировщиков бремя генерирования или анонимизации данных. Учитывая обширность и комплексность данных, неразумно ожидать от команд гарантированного обеспечения конфиденциальности и безопасности данных в тестовых окружениях. Стоит потратить время и деньги на приобретение специализированного инструмента. ~Кьяра Коломби — Эпизод 405».
Окружения
Тестовое окружение также имеет большое значение. Это не просто платформа для тестируемого приложения; окружение должно в точности повторять условия, в которых будет работать приложение в реальном мире.
Многие гости моих подкастов рекомендуют использовать адаптивные облачные окружения для эмуляции реальных сценариев, что должно повысить качество тестов.
Техлиды должны реалистично подходить к тестовым окружениям. Окружения должны идеально моделировать use-кейсы, изолированные системы, отражающие условия на проде, а также поддерживать мониторинг вызовов функций и взаимодействие с тестовыми данными. Возможным выходом является применение специализированных внешних on-demand тестовых окружений.»
Источник. Это известный в мире QA Джо Колантонио, писатель книг и ведущий местами интересных подкастов, на которые желательно подписаться и слушать в фоне, если с английским ОК. Если не ОК — начать хотя бы с того что есть такой канал English for QA.