автоматизированное тестирование

Что такое автоматизированное тестирование?

В этой статье мы изучим что, как, когда и зачем нужна автоматизация тестирования. Мы познакомимся с некоторыми из самых популярных инструментов автоматизации тестирования. Вы можете выбрать любой из этих инструментов для изучения, исходя из ваших навыков и требований проекта.

Содержание:

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Что такое автоматизация?

Прежде чем приступить к автоматизированному тестированию, давайте разберемся с термином “автоматизация”. Автоматизация – это процесс, с помощью которого мы можем автоматизировать ручной процесс с использованием различных технологий. Цель автоматизации состоит в том, чтобы устранить или сократить человеческие/ручные усилия. Теперь давайте посмотрим, как автоматизация помогает в тестировании программного обеспечения.

Тестирование программного обеспечения включает в себя написание тест-кейсов один раз, а затем их повторное выполнение при необходимости.

Выполнение тестов вручную – очень трудоемкая и утомительная задача. Автоматизация тестирования помогает сократить время выполнения тестов, поскольку тестовые сценарии, написанные один раз, могут быть запущены автоматически в любое время без вмешательства человека.

Что такое автоматизированное тестирование?

Автоматизированное тестирование – это вид тестирования программного обеспечения, который предполагает автоматизированное выполнение тест-кейсов с помощью инструмента автоматизации.

По сути, это автоматизация ручного тестирования. Тестировщик пишет тестовые сценарии, а затем запускает их по необходимости или планирует их периодическое выполнение. Это сокращает общее время тестирования, что способствует более быстрому релизу продукта.

Что автоматизировать?

Теперь, когда мы знаем, что такое автоматизированное тестирование, давайте разберемся , какие тест-кейсы следует автоматизировать.

1. Тест-кейсы, проверяющие критически важную функциональность приложения

Например, для приложения электронной коммерции критически важной функциональностью будет поиск товаров, добавление в корзину и последующая покупка. Поэтому эти тест-кейсы должны быть выбраны в первую очередь. Тест-кейсы для добавления товара в список желаний, уведомления и т. д. должны быть менее приоритетными.

2. Тест-кейсы, требующие многократного выполнения с большим набором данных

Существует множество тест-кейсов, которые требуют повторного выполнения определенных действий в приложении. Такие тест-кейсы также нуждаются в автоматизации, так как она значительно сокращает время, затрачиваемое на тестирование приложения.

Возьмем для примера функцию поиска в приложении. Мы можем автоматизировать процесс поиска с помощью поискового запроса, а затем проверить результаты поиска. Тогда мы сможем запускать один и тот же сценарий снова и снова с разными данными для поиска, такими как — одно слово, несколько слов, буквенно-цифровые, со специальными символами, с символами иностранных языков и т. д.

3. Тесты, требующие много времени

Рабочие процессы, требующие много времени на выполнение и настройку, также нуждаются в автоматизации.

Например, в приложении для электронной коммерции есть сценарии, где нужно добавить несколько товаров и выполнить с ними разные действия. Автоматизация таких тестов не только ускоряет их выполнение, но и избавляет тестировщиков от лишней работы.

4. Тест-кейсы, требующие параллельного выполнения

Существуют сценарии, требующие проверки одновременного доступа к приложению, например, в случае тестирования производительности с несколькими пользователями. В таких случаях либо ручное тестирование нецелесообразно, либо для тестирования конкретных сценариев потребуется гораздо больше ресурсов. В этой ситуации помогают автоматизированные скрипты, которые создают одновременные запросы и собирают результаты в одном месте.

Что не стоит автоматизировать?

Также важно понимать, какие тест-кейсы не могут или, скорее, не должны быть автоматизированы.

1. Тест-кейсы пользовательского интерфейса

GUI (Graphical User Interface) тест-кейсы лучше оставить для ручного тестирования. Это связано с тем, что даже при малейшем изменении пользовательского интерфейса тесты упадут. Кроме того, очень сложно создать надежные тест-кейсы пользовательского интерфейса для различных устройств и разрешений экрана.

2. Юзабилити тест-кейсы

Вместо “не следует” речь идет о “невозможности” автоматизировать. Тесты юзабилити, проверяющие удобство использования приложения различными группами пользователей, невозможно автоматизировать.

3. Функционал, который редко используется и требует много времени для написания сценариев

Автоматизация сложных сценариев – это хорошо, но тратить усилия на сценарии, которые будут редко использоваться, не оправдывает затрат.

4. Исследовательское тестирование

Исследовательское тестирование требует изучения приложения в процессе работы и одновременного тестирования. Поэтому автоматизировать такие сценарии невозможно.

Когда следует автоматизировать?

Для повышения эффективности автоматизации написание тестовых сценариев следует начинать, когда приложение стабильно и не ожидается частых изменений.

Зачем нужно автоматизированное тестирование?

Ниже перечислены некоторые преимущества автоматизации тестирования:

  • Автоматизация тестирования сокращает общее время выполнения тестов, поскольку автоматизированное выполнение тестов быстрее, чем ручное.
  • Автоматизация снижает стоимость проекта. Это связано с тем, что скрипт, созданный один раз, можно запускать в любое время при условии отсутствия изменений в приложении.
  • Помогает работать с большим набором входных данных, что невозможно при ручном тестировании.
  • Помогает создать среду непрерывной интеграции, в которой после каждого обновления кода происходит автоматическое выполнение тестового набора.

Когда не стоит автоматизировать?

Давайте рассмотрим некоторые сценарии, в которых не рекомендуется проводить автоматизированное тестирование, а также некоторые недостатки автоматизации:

  • Недостаток опыта в использовании инструмента автоматизации или знаний языков программирования для создания надежных скриптов является одной из основных причин, которая может привести к тому, что инструмент не будет использован в полной мере.
  • Неправильно выбранные тест-кейсы. Успех автоматизированного тестирования в значительной степени зависит от тест-кейсов, выбранных для автоматизации. Неправильно выбранные тесты приводят к пустой трате ресурсов и времени, вложенных в автоматизацию.
  • Приложения с частыми изменениями. Выбор автоматизации тестирования для приложения с частыми изменениями требует постоянного сопровождения тестовых сценариев, что порой может не дать желаемого ROI (Return On Investment, возврат инвестиций).
  • Неэффективно написанные сценарии тестирования могут привести к ложным результатам тестирования. Такие результаты скрывают основные дефекты, которые можно было бы легко выявить, если бы тесты проводились вручную или тестовые сценарии были написаны более качественно.

Процесс автоматизации тестирования

Мы изучим каждый этап автоматизированного тестирования от понимания требований и до создания автоматизированных сценариев и фазы интеграции CI/CD.

процесс автоматизированного тестирования

1. Понимание требований

Прежде чем приступить к автоматизации тестирования, в первую очередь, необходимо понять требования к продукту. Это поможет определить объем автоматизации, а также выбрать подходящий инструмент.

2. Определение области автоматизации

Определение области автоматизации – это поиск подходящих тест-кейсов для автоматизации.

3. Выбор правильного инструмента

Выбор инструмента зависит от различных факторов, таких как – требования проекта, опыт программирования, бюджет проекта (выбрать бесплатный или платный инструмент) и т.д.

4. Создание фреймворка автоматизации

Для создания надежных тестовых сценариев автоматизации нам необходимо создать фреймворк автоматизации. Эти фреймворки помогают сделать тестовые сценарии многократно используемыми, поддерживаемыми и надежными. Исходя из требований проекта, мы можем выбрать один из различных фреймворков автоматизации.

5. Создание тестовых скриптов

После настройки фреймворка автоматизации мы приступаем к написанию тестовых скриптов. Типичный тестовый сценарий для веб-приложения выглядит следующим образом:

  • Откройте браузер
  • Перейдите по URL-адресу приложения
  • Выполните несколько действий над различными веб-элементами
  • Введите некоторые входные данные, взятые из внешних файлов
  • Проверьте результаты

6. Интеграция CI/CD

Хотя мы можем запускать тест-кейсы самостоятельно, в настоящее время CI/CD (непрерывная интеграция и непрерывная доставка) широко используется почти в каждой компании, занимающейся разработкой ПО. С точки зрения тестирования, это подразумевает настройку тестовых наборов на CI/CD-инструменте, например, Jenkins.

После настройки мы можем запланировать регулярный запуск тестового набора. Еще одно важное преимущество CI/CD заключается в том, что мы можем автоматически запускать тестовые случаи на выполнение после развертывания. При такой настройке всего одним щелчком мыши, сразу после развертывания, автоматизированные тесты проверяют стабильность сборки.

Фреймворк автоматизации тестирования

При ручном тестировании любого приложения мы определяем набор правил, например, формат тест-кейсов, приоритетность выполнения теста, различные практики оптимизации всего процесса тестирования ПО и т. д. Аналогично в случае автоматизированного тестирования мы используем фреймворки автоматизации, которые помогают снизить стоимость обслуживания автоматизированных скриптов. 

Фреймворк включает некоторые решения для улучшения качества тестов, например:

  • Где должны храниться тестовые данные? – Внутри скрипта или в отдельных внешних файлах.
  • Где хранить общие функции, которые можно многократно использовать? — Чтобы избежать дублирования кода и улучшить его повторное использование.
  • Какой формат отчета использовать? — HTML, PDF, Excel и т. д.
  • Как настроить логирование? — Какой инструмент или библиотеку использовать?
  • Что делать при сбое теста? — Делать снимок экрана или попытаться перезапустить тест?

Для решения всех этих вопросов мы разрабатываем фреймворк для автоматизированного тестирования. Ниже приведены некоторые из наиболее широко используемых фреймворков автоматизации.

Модульный фреймворк

Модульный фреймворк — это базовый вид автоматизации, где часто используемые функции, такие как подключение к базе данных, вход в систему, чтение данных из внешнего файла и т.д., создаются как отдельные методы. Вместо повторного написания кода, мы просто вызываем эти готовые методы там, где это нужно.

Фреймворк, основанный на данных

В таком фреймворке тестовые данные хранятся в отдельных файлах. Тест выполняется несколько раз, используя разные наборы данных из этих файлов.

Фреймворк, основанный на ключевых словах

В фреймворке, управляемом ключевыми словами, мы можем писать тест-кейсы в виде обычного текста. Например, мы можем написать тест-кейсы в Excel в следующей форме:

В фреймворке уже есть готовые методы для каждого ключевого слова, например, для OpenBrowser или NavigateTo. Это позволяет создавать тестовые скрипты даже пользователям без технических навыков, используя простой текст.

Гибридный фреймворк

Как следует из названия, гибридный фреймворк — это сочетание нескольких фреймворков. Обычно это комбинация двух фреймворков, например, фреймворка на основе данных и фреймворка на основе ключевых слов.

Мифы об автоматизированном тестировании

  • 100% автоматизация возможна. За исключением нескольких очень специфических приложений, 100% автоматизация просто невозможна. Исследовательские тесты, тесты юзабилити – вот некоторые из примеров тестов, которые невозможно автоматизировать.
  • Автоматизация заменит ручных тестировщиков. Это правда, что с появлением и развитием автоматизации тестирования и различных инструментов, от тестировщиков требуется умение работать как с ручным, так и с автоматизированным тестированием. Но автоматизация никогда не сможет полностью устранить необходимость в ручном тестировании.
  • Разработчик работает лучше, чем автоматизированные тестировщики. Хотя разработчик может иметь небольшое преимущество по уровню знаний программирования, все же тестировщик лучше мыслит с точки зрения тестирования.
  • Автоматизация стоит дорого. При правильном подходе автоматизация может сократить общие затраты по тестированию и уменьшить стоимость проекта.

Рынок программного обеспечения полон платных и бесплатных инструментов автоматизации тестирования. Основываясь на различных факторах, таких как требования проекта, бюджет, опыт и т. д., мы должны выбрать правильный инструмент, подходящий для наших нужд. Ниже приведены некоторые из самых популярных инструментов автоматизации тестирования на рынке.

Selenium

Selenium – это инструмент автоматизации тестирования с открытым исходным кодом. У него очень большое и активное сообщество. Он занимает максимальную долю рынка среди всех популярных инструментов и поддерживает скрипты на множестве языков программирования – Java, Python, Ruby, Javascript, C# и др.

Katalon Studio

Довольно новый инструмент, но быстро набирающий популярность благодаря функциям записи и воспроизведения, а также скриптам для более технических и опытных тестировщиков. Он бесплатный, но не open source.

UFT One

Платный инструмент от Microfocus, который можно использовать для автоматизации веб-приложений и десктоп-приложений для Windows. Он поддерживает сценарии только на VBScript.

TestComplete

Платный инструмент, предоставляемый компанией Smartbear, можно использовать для автоматизации веб-, мобильных и настольных приложений.

Tosca

Это платный инструмент от Tricentis, который предоставляет функции записи и воспроизведения для автоматизации веб-приложений, API и windows-приложений. Он считается одним из самых популярных инструментов автоматизации, который позволяет полностью отказаться от написания скриптов.

Watir

Watir (Web Application Testing In Ruby) – это инструмент автоматизации с открытым исходным кодом, который позволяет автоматизировать веб-приложения на Ruby. В нем есть компонент watir-webdriver, который основан на Selenium.

Appium

Его можно рассматривать как Selenium для мобильных приложений. Как и Selenium, он имеет открытый исходный код и большую базу пользователей.

TestProject

TestProject – это бесплатный и поддерживаемый сообществом инструмент для автоматизации тестирования от компании Tricentis. Его можно использовать для автоматизации как веб-, так и мобильных приложений.

Ranorex

Платный инструмент с функциями записи и воспроизведения. С его помощью можно автоматизировать приложения для Android, IOS и Windows. Наряду с записью и воспроизведением он также поддерживает создание сценариев на C# и VB.

Перевод статьи «What is Automation Testing?».

2 комментария к “Что такое автоматизированное тестирование?”

  1. Пингбэк: Нефункциональное тестирование

  2. Пингбэк: Что такое ручное тестирование?

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *