Как известно большинству специалистов в сфере программного обеспечения, между ручным и автоматизированным тестированием есть существенные отличия. Ручное тестирование – процесс трудоемкий и монотонный, требующий больших временных затрат. Автоматизированное тестирование, в свою очередь, помогает сэкономить время при работе со сложным ПО, но требует определенных знаний.
С чего начать освоение автотестов? Чтобы лучше сориентировать вас в этой сфере, мы подготовили путеводитель по основам практичного и достаточно интересного направления – автоматизированного тестирования.
Пирамида тестирования
Автоматизация процессов тестирования тесно связана с именем Майка Кона, автора книги «Scrum. Гибкая разработка ПО». Он представил систему автоматизации тестирования в виде пирамиды.
Основание пирамиды составляет модульное тестирование (unit tests) – процесс проверки отдельных модулей исходного кода. За ним следует интеграционное тестирование (integration tests) – на этом этапе отдельные программные модули тестируются в группах. Далее следует приемочное тестирование (acceptance tests), определяющее пригодность продукта к предстоящей эксплуатации. На вершине пирамиды обосновалось тестирование пользовательского интерфейса (UI tests), которое может проводиться как автоматизировано, так и вручную. Таким образом, автоматизированное тестирование находится на стыке тестирования и программирования.
Над вершиной часто располагают ручное тестирование в форме облака, поскольку оно не считается неотъемлемой частью пирамиды, хоть и взаимосвязано с ней. Данная пирамида считается типичной для автоматизации тестирования, хотя может быть перевернута и модифицирована в зависимости от специфики работ.
Преимущества автоматизированного тестирования
Автоматизация дает тестировщику ряд плюсов:
- Оперативность – автоматизированный скрипт не сверяется с инструкциями и документацией;
- Экономия времени – автоматизация не требует вмешательства тестировщика, в это время он может переключиться на другие задачи;
- Повторное использование – сценарий тестирования может использоваться неоднократно;
- Отсутствие «человеческого фактора» – тестовый сценарий не допустит оплошностей в результатах и не пропустит времени тестирования;
- Автоматическая отчетность – результаты тестирования автоматически сохраняются и рассылаются причастным специалистам.
Ограничения автоматизированного тестирования
Вместе с тем данный подход не является панацеей и не исключает ряд недостатков:
- Затраты – хорошие инструменты автоматизированного тестирования, как и обучение автоматизированному тестированию ПО требует вложений;
- Однообразие – написанные тесты работают всегда одинаково, что не всегда плохо, но иногда позволяет пропустить дефект, который заметил бы живой человек;
- Затраты на поддержку и разработку – чем сложнее приложение и чем чаще оно обновляется, тем более затратна разработка и модификация автоматизированных тестов;
- Пропуск мелких недочетов – тесты пропускают небольшие ошибки, на проверку которых не запрограммированы.
Инструменты
К инструментам автоматизации тестирования относят программное обеспечение, используемое для создания, наладки, выполнения и анализа результатов работы автоматизированных тестов.
Выбор инструмента зависит от объектов тестирования и требований к сценариям тестов. Естественно, что один инструмент не в состоянии поддерживать весь спектр технологий, потому остается только пробовать и искать наиболее подходящий. Достаточно часто QA-инженеры останавливают свой выбор на нескольких инструментах.
Критерии выбора:
- распознавание элементов управления в приложении;
- временные затраты на поддержку скриптов;
- удобство для написания новых скриптов.
Рассмотрим наиболее востребованные средства автоматизации тестирования.
Selenium
Пожалуй, это наиболее популярный и востребованный инструмент для тестирования. Selenium поддерживается мобильными и десктопными браузерами, позволяет разрабатывать скрипты фактически на любом языке программирования и работать в облаке.
У Selenium существует несколько продуктов. Selenium IDE – это дополнение к браузеру Firefox, которое используется для записи, редактирования и отладки тестов. Selenium IDE упрощает автоматизацию тестирования приложений и веб-программ. Selenium WebDriver является набором библиотек для различных языков программирования, которые позволяют управлять браузером из программы, написанной на данном языке программирования. Selenium Server принимает команды удаленно и выполняет их в браузере, несколько серверов Selenium образуют сеть Selenium Grid, масштабирующую процесс автоматизации.
Coded UI
Этот фреймворк является продуктом Microsoft и используется для автоматизации (UI) Web, WPF, XAML и Windows Forms приложений в Visual Studio. Coded UI поддерживает записи тест-кейсов с последующим редактированием. Как правило, используется с языками C#, C++, Visual Basic.
Appium/XCUITest
Appium – весьма известная надстройка, которая позволяет тестировать приложения без ограничений платформы, типа и версии системы. Appium поддерживает большое количество драйверов, поддерживает наиболее популярные языки программирования и использует версию WebDriver, известную по Selenium WebDriver. Данная надстройка очень популярна при тестировании мобильных приложений.
Драйвер XCUITest позволяет работать с Appium в iOS-системах. XCUITest может работать на реальных устройствах и поддерживает функцию рекордера. Его рабочие языки – Objective-C, Swift.
Фото: http://www.qedgetech.com/blog/appium-mobile-application-testing
Быть или не быть
Как сделать выбор между ручным и автоматизированным тестированием? Все определяется вашими личными предпочтениями и сложностью продукта, с которым вы работаете либо собираетесь работать. Однако современный рынок труда диктует свои правила: сегодня компании чаще хотят видеть специалистов, способных и тестировать вручную, и разворачивать сложную автоматизацию.