Блог a1qa

О тестировании и качестве ПО

Автоматизация тестирования от «А» до «Я»: часть 1

За последние 15 лет автоматизация тестирования прошла долгий путь. Изменились цели и роль сервиса в ИТ-процессах: когда-то она внедрялась только для сокращения времени тестирования, а сейчас к этому добавляется обеспечение оптимального тестового покрытия и более эффективное использование тест-кейсов.

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

Однако далеко не все организации применяют автоматизацию тестирования ПО. Согласно данным Мирового отчета по качеству (World Quality Report) 2018-2019, 61% респондентов подчеркнули, что столкнулись с трудностями при ее внедрении на проектах.

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

Несмотря на эти трудности, ИТ-специалисты все больше понимают роль данного сервиса для своих бизнесов и не сдаются, стремясь создать надежное и стабильное решение по автоматизации.

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

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

В последнее время в автоматизации часто используются ИИ, машинное обучение и предсказательная аналитика, которые дают ей новые преимущества и делают ее «умнее» и эффективнее.

Для достижения значимых результатов на проекте компании должны учитывать, что автоматизированное тестирование – это не просто сервис для замены ручных проверок или дополнительный способ снизить затраты. В самом общем смысле оно нацелено на то, чтобы обеспечить высокое качество ПО быстрее, вывести процесс QA на новый уровень, а также эффективно реализовывать DevOps и Agile.

Что дает автоматизация тестирования?

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

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

Автоматизация полезна в следующих случаях Автоматизация не будет полезной, если
Ваша первоочередная задача – сэкономить время проектной команды. Для выполнения тестирования нужен человеческий интеллект и интуиция.
Тесты должны выполняться для каждой сборки приложения. Процесс тестирования ограничен интуитивными или исследовательскими проверками.
Ваш проект длительный или комплексный (состоит из различных итераций). Требования, относящиеся к существующей функциональности, часто изменяются.
На выполнение тест-кейсов тратится много времени и ресурсов. Нужно провести тестирование только единожды.
Проводится нагрузочное или стресс-тестирование.
Нужно сократить текущий объем тестирования с целью успеть к определенным срокам.

Как найти баланс между ручным и автоматизированным тестированием?

Ручное тестирование все еще играет важную роль в процессе обеспечения качества ПО. Однако в условиях процесса непрерывного тестирования (continuous testing) оно может быть крайне ресурсозатратным.

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

В некоторых случаях автоматизация применяться не может. Приведем примеры:

  • Тестирование пользовательского интерфейса. Ручное тестирование проверит общий вид приложения (четкость изображений, расположение и отображение элементов графического интерфейса при разных разрешениях экрана и др.), а также отдельно взятые компоненты (например, цвет шрифта – сможет ли конечный пользователь его легко воспринимать). Ручные проверки покажут, соответствует ли графический интерфейс предпочтениям потребителей.
  • Тестирование удобства использования. Оно ответит с точки зрения пользователя на вопрос, является приложение простым в использовании или нет.
  • Интуитивное тестирование. Это тип проверок, при котором тест-кейсы не создаются заранее, а QA-инженеры тестируют приложение и исследуют его «на ходу».

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

Рассмотрим 5 случаев, когда такая «командная работа» будет особенно удачной:

  1. Вы используете как автоматизированные, так и ручные проверки для тестирования различных аспектов одной и той же функциональности.
  2. У вас есть цель быстрее выпустить новую версию продукта на рынок, но, чтобы эту цель достичь, нужно ускорить сам процесс тестирования.
  3. Тесты являются «полуавтоматизированными», а для завершения теста нужно провести ручную проверку. В качестве примера можно привести тестирование пользовательского интерфейса для различных браузеров и разрешений экранов. Автотест откроет каждый браузер в нужном разрешении, перейдет по ссылкам (чтобы открыть страницу), сделает скриншот, а ручной тестировщик определит, насколько корректно отображается содержимое страницы.
  4. Ручные тесты должны быть проведены после завершения автоматизированных тестов, например, чтобы выявить проблемы с пользовательской стороны.
  5. Частые выходы новых версий ПО сложного продукта (масштабное регрессионное тестирование).

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

Как повысить эффективность тестирования автоматизации?

  • Запускать автотесты как можно чаще, чтобы быстрее реагировать на изменения, быстрее находить дефекты и следить за тем, чтобы тестовое покрытие было оптимальным.
  • Группировать тесты по функциональности в тестовые наборы, чтобы упростить обновление связанных тест-кейсов при изменении функциональной области.
  • Формировать отчеты с разными артефактами (скриншоты, логи), чтобы можно было легко выявить причину ошибки.
  • Разрабатывать тест-кейсы таким образом, чтобы изменение положения элементов на странице не приводило к падению автотеста и необходимости его обновления.
  • Хранить тестовые данные в конфигурационном файле отдельно от шагов автотестов.
  • Разрабатывать тесты в наборе таким образом, чтобы они оставались независимыми друг от друга, а неудачный запуск одного из них не влиял на остальные.

Согласно гайду DZone по автоматизированному тестированию 2019 года, продолжает набирать обороты стратегия «shift left», согласно которой привлечение команды тестировщиков происходит на ранней стадии разработки ПО.

По сравнению с результатами, полученными в 2018 году, количество респондентов, которые внедряют автоматизированное тестирование ПО на этапе разработки, выросло на 12%. Количество опрошенных ИТ-специалистов, начавших автоматизацию на этапе обеспечения качества, сократилось на 9%.

Что касается ручного тестирования, то, по сравнению с предыдущим годом, модель «shift left» прослеживается слабо. На контрасте с 2018 годом, процент опрошенных респондентов, начавших тестирование программного обеспечения вручную на стадии разработки, снизился на 2%. Количество специалистов, внедряющих ручное тестирование на этапе стейджинга, увеличилось на 4%.

На каком этапе организации внедряют ручное или автоматизированное тестирование

Источник: Гайд DZone по автоматизированному тестированию от 2019 года

Когда автоматизировать, а когда применять ручное тестирование?

Определим три основных фактора, которые следует учитывать при ответе на этот вопрос.

Фактор Вспомогательные вопросы
ROI (окупаемость инвестиций) Окупят ли себя ресурсы, потраченные на автоматизацию конкретного сценария?
Сложность теста Можно ли тест автоматизировать? Есть ли смысл оставлять его ручным?
Стабильность системы Насколько приложение и его отдельные компоненты стабильны? Могут ли они быть покрыты автоматизированными тестами? Где, из-за часто меняющейся функциональности, понадобится помощь ручных тестировщиков?

Достоинства и недостатки автоматизации тестирования

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

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

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

Преимущества автоматизации тестирования Эффект
Влияние на ROI Несмотря на то что для написания тест-кейсов требуются определенные ресурсы, окупаемость у данного подхода для больших и долгосрочных проектов может быть огромной. Это можно объяснить тем, что тесты легко настраиваются и могут многократно использоваться. Внедряя автоматизацию, можно значительно снизить стоимость каждого часа, затрачиваемого на проверки, а также найти наиболее трудно обнаруживаемые баги.
Быстрая обратная связь о качестве приложения Автоматизация может дать возможность быстро собрать обратную связь относительно состояния программного продукта и обеспечить более высокую эффективность работы команды разработчиков.
Это улучшает интеграцию между инженерами по обеспечению качества, программистами, менеджерами и другими участниками процесса работы над ПО.
Более раннее обнаружение дефектов программного обеспечения Поскольку автоматизация тестирования помогает увеличить скорость разработки, она становится более рентабельной и значительно упрощает выявление ошибки и ее устранение на ранней стадии жизненного цикла системы.
Экономия времени Автоматизация регрессионных тестов экономит время QA-инженеров и освобождает больше ресурсов для проведения интуитивных проверок и других активностей по тестированию.
Кроме того, при корректном использовании, автоматизированные тесты могут выполняться с минимальной вовлеченностью человека или вообще без него.
Безопасность тестовых данных Эффективность проверок во многом зависит от качества используемых тестовых данных.
Создавать их вручную довольно ресурсоемко, поэтому тестирование часто проводится на копиях «живых» БД.
Автоматизированные тесты могут быть спроектированы таким образом, чтобы они создавали и получали необходимые данные, изменяли их (не затрагивая другие) и возвращались в исходное состояние.
Быстрая скорость выполнения проверок Автоматизация позволяет проходить этапы проведения тестов быстрее, чем это делает человек. Это особенно актуально для DDT (тестов, управляемых данными), поскольку одни и те же проверки проводятся много раз, но с разными наборами данных.

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

Свяжитесь с нашими специалистами, чтобы получить персональную консультацию по автоматизации тестирования. 

Поделиться статьей: