Ручное и автоматическое тестирование ПО: баланс между преимуществами и недостатками


Agile-разработка и Continuous Delivery (CD) являются желательными целями многих компаний сегодня. CD вряд ли возможен без более глубокого уровня автоматизации. Хотя практика разработки программного обеспечения идет в ногу, тестирование часто становится операционным узким местом для повышения эффективности за счет повышения автоматизации. Руководство по автоматическому тестированию программного обеспечения не ново. И, несмотря на все преобразования, оба подхода имеют свои достоинства и место в современном процессе разработки программного обеспечения.

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

Что такое ручное тестирование?

Ручное тестирование выполняется инженерами по обеспечению качества без использования каких-либо инструментов для автоматизации выполнения тестов. Различные типы кейс-тестов создаются вручную для выявления возможных недостатков в программном коде, а также дизайне. В большинстве случаев ручное тестирование не является обязательным, поскольку каждое приложение должно быть проверено «вручную», прежде чем может произойти какая-либо автоматизация. Несмотря на то, что ручное тестирование требует больших затрат времени и усилий, оно остается популярным среди предприятий. Согласно недавнему отраслевому опросу, 42% компаний указали, что их тестирование проводится «в основном» или «полностью» вручную.

Некоторыми из популярных инструментов ручного тестирования являются Postman, SoapUI и Chrome Dev Tools. Тем не менее, они также используются в автоматическом тестировании.

Преимущества ручного тестирования

  1. Меньше времени и ресурсов, необходимых для начала продуктивного ручного тестирования.
  2. Включает оценку общего пользовательского опыта (UX), например, когда речь идет об элементах дизайна, удобстве навигации и т.д.
  3. Применимо как к маленьким, так и к крупным проектам.
  4. Большая гибкость: вы можете изменить ход тестирования в середине теста, чтобы оценить определенный элемент, который ранее не рассматривался.

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

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

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

Однако важно понимать разницу между автоматизированным тестированием и автоматизацией тестирования.

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

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

Каковы преимущества автоматизированного тестирования?

  1. Автоматическое тестирование на 70% быстрее, чем ручное тестирование, что означает, что вы можете запускать больше тестов, чтобы обеспечить лучшее качество кода и сократить время выхода на рынок.
  2. Ранее обнаружение ошибок. Исправление ошибки, выявленной на этапе бета-тестирования, в 4 раза дороже и занимает больше времени, чем исправление, обнаруженное на этапе модульного тестирования.
  3. Автоматизация обеспечивает более широкий охват всех элементов приложения. Это позволяет компаниям достичь большей согласованности, когда дело доходит до охвата.
  4. Автоматизация тестирования также может использоваться многократно и может быть развернута несколько раз на разных этапах жизненного цикла разработки программного обеспечения. 
  5. Простая и полная отчетность.

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

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

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

Тем не менее, существуют определенные сценарии, когда автоматизация может не дать вам желаемого ROI:

  1. Вашей команде не хватает необходимых навыков. Если ваша внутренняя команда не имеет соответствующего опыта программирования, вы можете рассмотреть возможность инвестирования в их обучение или аутсорсинг автоматизированного тестирования для специализированной команды с соответствующим опытом. Оба случая предполагают определенные инвестиции.
  2. Вы в большой степени полагаетесь на стиль управления проектами Waterfall. Автоматизация тестирования для полного, сложного продукта может потребовать времени и средств.
  3. Создание автоматизированных тестовых случаев для тестов, которые будут выполняться один раз, не имеет большого смысла. Каждый комплект сценариев автоматизации должен иметь увеличенный срок службы, чтобы его стоимость сборки была ниже стоимости выполнения вручную.
  4. 100% автоматизация - это миф. Только определенные области и типы тестов могут быть полностью автоматизированы. Но некоторые области тестирования все еще должны выполняться вручную - тестирование пользовательского интерфейса, восстановление или тестирование на совместимость. 

Когда автоматизировать тестирование: общие типы автоматизированных тестов

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

1. Модульные тест.

Модульные тесты нацелены на проверку мельчайших компонентов вашего приложения (блока). Они самые дешевые и быстрые в написании и относительно простые в обслуживании. Кроме того, они предлагают самый высокий ROI, поскольку помогают обеспечить более высокое качество кода на детальном уровне.

Например, новая парадигма разработки на основе тестирования (TDD) предполагает, что программисты разрабатывают модульные тесты до написания кода. Когда код готов, модульные тесты развертываются автоматически для его проверки. Таким образом, ваша команда устраняет ошибки, а не исправляет их. Единственным недостатком является то, что модульные тесты не предотвращают ошибки в логике. Следовательно, они должны быть в паре с тестами API.

2. API тесты.

Тесты API выполняются на этапе интеграции. Они могут быть запланированы командой разработчиков или тестировщиков для выполнения до добавления уровня пользовательского интерфейса в продукт. Тесты API являются основными кандидатами для автоматизации, так как разработка API может контролироваться посредством центрального определения (например, API REST определяются как определения OpenAPI) и беспрепятственно использоваться на протяжении всего жизненного цикла программного обеспечения и конвейера автоматизации. К 2020 году Smartbear прогнозирует, что 77% инженеров QA автоматизируют более половины своих тестов API.

3. Тесты GUI.

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

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

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

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


0 комментариев
Сортировка:
Добавить комментарий

IT Новости

Смотреть все