Результаты - Разработка автоматических тестов для тестирования новой функциональности программного обеспечения

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

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

время выполнения ручных и автоматизированных тестов для 1-ой итерации регрессионной кампании

Рис. 4 Время выполнения ручных и автоматизированных тестов для 1-ой итерации регрессионной кампании.

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

Однако, это справедливо лишь для тестов первой итерации. В дальнейшем тесты на функциональность ядра, как было сказано выше, выполняются на каждой четвертой итерации в течение одной версии продукта. Рассмотрим результаты выполнения тестов на 2 и n-й итерациях теста:

время выполнения ручных и автоматизированных тестов для 2-ой и n-ой итерации регрессионной кампании

Рис. 5 Время выполнения ручных и автоматизированных тестов для 2-ой и n-ой итерации регрессионной кампании.

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

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

Введем понятие выигрыша по времени для регрессионной кампании:

Где: N - количество версий,

Y - количество запусков регрессионного тестирования,

Num - количество тестов участвующих в тестировании.

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

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

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

Подставив в данную формулу результаты, полученные во время тестирования версии v1.1, получаем следующие значения для первой итерации тестов:

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

Для 3-х же версий продукта, с выполнением регрессионного тестирования ядра на каждой четвертой итерации тестируемого приложения, выигрыш получается равным:

Для того чтобы лучше проиллюстрировать выгоду, полученную от автоматизации, переведем полученный результат в рабочие дни. Один рабочий день инженера-тестировщика составляет 8 часов. Таким образом, за 3 года использования автоматического тестирования реализованных тестов, работник получает выигрыш в 59 рабочих дней. Итого, каждый год экономия составляет 19,6 дней или примерно один рабочий месяц.

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

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

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

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

Таблица 1. Затрачиваемое время при ручном тестировании для выбранного теста

На подготовку и отчетность

0,5 часа

На ручное тестирование для 1-й итерации

1,5 часа

Всего на 1-й тест

2 часа

На ручное тестирование для n-й итерации

1,5 часа

Всего на n-й тест

2 часа

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

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

Таблица 2. Затрачиваемое время при автоматическом тестировании

На подготовку и отчетность

0,3 часа

На создание скрипта

4,2 часа

На автоматизированное тестирование для 1-й итерации

0,5 часа

Всего на 1-й тест

5 часов

На автоматизированное тестирование для n-й итерации

0,5 часа

Всего на n-й тест

0,8 часа

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

отношение времени автоматического тестирования к времени ручного тестирования

Рис. 6 Отношение времени автоматического тестирования к времени ручного тестирования

Из графика видно, что уже на 4 итерации общее время, затраченное на тестирование одного и того же теста автоматически при помощи Cucumber tool в течение регрессионной кампании, стало меньше, чем время ручного тестирования (отношение становится больше 1). В течение последующих запусков временная разница лишь увеличивалась, что еще раз показывает растущую во времени выгоду от внедрения автоматических тестов.

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

Таблица 3. Дефекты, обнаруженные в ходе ручного и автоматизированного тестирования

Важность дефекта

Тип тестирования

Незначительные

Важные

Критичные

Ручное

5

3

1

Автоматическое

3

3

1

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

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

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

Похожие статьи




Результаты - Разработка автоматических тестов для тестирования новой функциональности программного обеспечения

Предыдущая | Следующая