Сегодня ручного тестирования уже недостаточно, чтобы обеспечить качество сложных программных продуктов, вроде систем IoT (Internet of Things) и решений big data. На тестирование отводится все меньше времени, потому что компании ускоряют разработку, пытаясь адаптироваться к потребностям быстроменяющегося рынка. Автоматизация тестирования позволяет ускорить QA-процессы и в то же время лучше проверить качество сложного, многокомпонентного ПО. Так, в отчете World Quality Report большинство опрошенных компаний отметили, что автоматизация помогает обеспечить более полное тестовое покрытие, а также выявить больше дефектов.
На многих проектах автоматизация уже преобладает над ручным тестированием, например, если используется подход DevOps. А вакансии для тестировщиков все чаще включают хотя бы минимальные навыки автоматизации.
Изучение автоматизированного тестирования позволит не только претендовать на более сложные проекты, но и увеличить доходы. По данным dev.by за апрель 2019 года, тестировщики-автоматизаторы в среднем зарабатывают в два раза больше, чем мануальные тестировщики. Такая разница объясняется тем, что автоматизация требует технической подготовки – изучения языков программирования и фреймворков для тестирования.
Мы расскажем о преимуществах и перспективах автоматизированного тестирования, а также посоветуем, какие знания нужно получить, чтобы начать использовать автотесты в работе.
Содержание:
1. Почему автоматизированное тестирование так востребовано
2. Какие виды тестирования лучше автоматизировать
3. Что нужно знать тестировщику-автоматизатору
4. Как навыки автоматизации повлияют на вашу карьеру
Не стоит воспринимать автоматизацию как полную альтернативу ручному тестированию или какой-то особый вид QA. Навыки автоматизации в сочетании с опытом в традиционном тестировании сделают работу тестировщика более эффективной и менее рутинной.
Готовиться к автоматизации приходится дольше, чем к ручному тестированию – нужно выбрать, какие тестовые сценарии лучше автоматизировать, и написать скрипты для них. Но если проект крупный, то все затраты окупаются. Преимущества автоматизированного тестирования становятся еще более очевидны при разработке сложных решений и необходимости частых релизов.
Ускорение разработки ПО
Ускорение разработки за счет уменьшения фазы тестирования всегда может обернуться пропущенными дефектами. Автоматизация в таком случае позволяет сократить время тестирования, не уменьшая тестовое покрытие. Например, автотесты могут запускаться ночью, а в начале рабочего дня тестировщик уже получит результаты.
Популярность DevOps
Концепция DevOps популярна и в продуктовых, и в сервисных компаниях, так как помогает чаще выпускать релизы, вплоть до нескольких раз в день. Суть DevOps заключается в тесной интеграции всех этапов разработки, включая тестирование и дальнейшую эксплуатацию. При таком темпе тестирование должно проводиться практически параллельно с разработкой. С ручным тестированием такой синхронности нельзя достичь, поэтому при DevOps большая часть тестов автоматизируется. Кстати, многие фреймворки для автоматизированного тестирования (Selenium, TestComplete) поддерживают интеграцию с DevOps-инструментами (например, Jenkins).
Усложнение ПО – актуальность big data, IoT
Сегодня в разработке программного обеспечения преобладает архитектура микросервисов, которая позволяет разрабатывать различные функции независимо друг от друга. Когда в приложении сотни микросервисов, вручную проверить все программные модули становится проблематично, поэтому требуется автоматизация.
Big data решения
При функциональном тестировании приложений, которые собирают и обрабатывают большие наборы данных, нужно проверять как качество самих данных, так и процесс их обработки. В обоих случаях понадобится автоматизированное тестирование, так как ручная проверка больших объемов данных практически невозможна. При тестировании процессов ETL (сбор, трансформация и загрузка информации в хранилища данных), могут использоваться инструменты QuerySurge и Informatica Data Validation, которые проверяют, не искажаются ли данные во время загрузки в базу данных или других преобразований.
Системы IoT
Технологии IoT сегодня используются в различных сферах, от медицины до промышленнсости. IoT – это целая система взаимосвязанных компонентов (датчики, которые собирают данные, сети для передачи информации, облачные сервисы, приложения для пользователей), поэтому необходимо протестировать как каждый из них, так и их взаимодействие. Для комплексной проверки IoT-системы понадобится автоматизация, чтобы, например, протестировать отказоустойчивость и производительность встроенного программного обеспечения в устройствах, снабженных датчиками.
Регрессионное тестирование автоматизируют чаще всего, что избавляет тестировщика от повторения одних и тех же тестов перед каждым релизом. Обычно сценарии автоматических регрессионных тестов разрабатываются на основе ручных тестов, которые уже выявляли дефекты. А в дальнейшем подготовленные сценарии можно использовать повторно. Это особенно актуально для продуктовых компаний, когда нужно регулярно вносить изменения в сервис.
Если тестировщику нужно часто выполнять одинаковые действия, но с разными данными, проще автоматизировать этот процесс. Можно собрать данные в одну базу, а скрипты будут автоматически использовать эту информацию для тестов. Такой подход к тестированию называют DDT (data-driven testing).
Автоматизация делает более эффективным кроссплатформенное и кроссбраузерное тестирование. Одни и те же сценарии автоматизированных тестов могут быть использованы на разных платформах.
Тестирование локализации тоже может быть достаточно трудоемким для ручного исследования. Например, при тестировании сайта с десятками версий на разных языках нужно проверить адаптацию элементов интерфейса, перевод текста, а также удостовериться, что локализация не приводит к появлению других дефектов. Автоматизация позволяет протестировать все эти аспекты, потратив меньше времени.
Сегодня исследование производительности (performance testing), включая нагрузочное и стресс-тестирование, практически всегда автоматизируются. Инструменты для автоматизации тестирования (JMeter, Gatling, Tsung) позволяют воспроизвести различные условия, при которых возможны проблемы с производительностью приложения. Так, c помощью автоматизированных тестов можно смоделировать нехватку оперативной памяти и зафиксировать реакцию приложения.
Автоматизированное тестирование требует более глубоких технических знаний, чем ручное. В первую очередь, необходимо уметь программировать. Для автоматизации подойдут как скриптовые языки (Python, Bash), так и языки общего назначения (Java, С#). Сейчас наиболее популярны Java и Python.
Скриптовые языки легче изучать, благодаря достаточно простому синтаксису. Однако, чтобы стать senior-специалистом (Senior Test Automation Engineer) понадобится понимание принципов объектно-ориентированного программирования (ООП)– тестировщики часто используют тот же язык программирования, на котором разрабатывается тестируемое приложение. К тому же, зная один из ООП языков, например, Java, можно быстро разобраться в синтаксисе другого. В изучении языка программирования делайте упор не на алгоритмы, а на фреймворки и библиотеки, которые помогут при разработке автотестов.
Автоматизированное тестирование лучше осваивать постепенно, начиная с простых инструментов, которые практически не требуют знания программирования. Например, для старта подойдут программы-рекордеры, которые отслеживают и записывают действия пользователя, а затем позволяют воспроизвести их автоматически. Один из таких бесплатных инструментов – Katalon Recorder. Он устанавливается как расширение к браузеру Firefox или Chrome. Katalon Recorder автоматически переводит взаимодействие пользователя с сайтом в сценарии тестов, которые затем можно отредактировать вручную. Katalon Recorder также переводит записанные тесты на язык программирования. Однако сгенерированный код может содержать ошибки, поэтому по мере изучения программирования старайтесь дорабатывать эти скрипты. Со временем писать тесты самостоятельно станет проще, чем использовать рекордер. На этом этапе можно начать изучение других инструментов для автоматизации тестирования.
Технологии для автоматизированного тестирования активно развиваются, и сейчас можно найти фреймворки для разных видов тестирования. Они могут быть реализованы как библиотеки на каком-либо языке программирования или приложения с графическим интерфейсом. Выбор фреймворка зависит от объекта тестирования и требований к тестовым сценариям.
Один из самых популярных фреймворков для тестирования веб-приложений – Selenium Webdriver. Он упоминается практически в каждой вакансии. С помощью Selenium Webdriver можно автоматизировать любые действия пользователя, выполняемые через браузер. Он поддерживается операционными системами Windows, Mac, Linux и многими браузерами, например, Chrome и Firefox.
Для тестирования мобильных приложений часто применяется Appium. Это кроссплатформенный инструмент, который подходит для тестирования и нативных, и гибридных приложений. Он поддерживает различные языки программирования: Java, JavaScript, Python, Ruby, C#. С помощью Appium можно запускать параллельное тестирование на нескольких девайсах, при этом один скрипт можно использовать и для Android, и для iOS. Также для тестирования Android-приложений и мобильных версий веб-приложений можно выбрать Selendroid.
Где можно пройти обучение
И язык программирования, и фреймворки вы можете изучить самостоятельно. Например, на платформе Udemy есть недорогие онлайн-курсы. Обучение будет более результативным, если вы сможете практиковаться на своем рабочем проекте. Если нет возможности тренироваться на работе, то можете закончить курсы по автоматизированному тестированию в каком-либо образовательном центре, где на обучение, в среднем, отводится 2-4 месяца.
В Минске практически все курсы предлагают изучение автоматизированного тестирования на языке Java, а также знакомство с фреймворком Selenium Webdriver. Некоторые центры принимают учеников, которые уже знают Java, хотя бы на базовом уровне. Например, такие курсы есть в QA Академии, в образовательном центре ПВТ, а также в Stormnet. Без опыта в программировании на Java можно записаться на курс в «Компьютерную Академию Шаг» (кроме Минска, учебные центры расположены во всех областных центрах и Бобруйске). Если вас заинтересует обучение автоматизации на Python, то такой курс для новичков в программировании есть в образовательном центре ПВТ (филиалы есть в Гродно и Гомеле).
Популярности автоматизированного тестирования способствуют многие тенденции в современной разработке ПО: частые релизы, сокращение фазы тестирования и усложнение программных продуктов. Автоматизация позволяет не только оперативнее выявлять дефекты, но и помогает проводить более тщательную проверку. Учитывая эти факты, IT-компании усливают свои QA-команды специалистами, которые умеют работать с автотестами. Изучение автоматизированного тестирования потребует не очень много времени, а взамен вы сможете рассчитывать на динамичный карьерный рост.