часть процесса отладки).
Поиск причин возникновения дефектов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 256/301
Рисунок 2.7.j — Алгоритм поиска первопричины дефекта
На этом мы завершаем основную часть данной книги, посвящённую «тести-
рованию в принципе». Далее будет рассмотрена автоматизация тестирования как
совокупность техник, повышающих эффективность работы тестировщика по мно-
гим показателям.
Определить
проявление
проблемы
Собрать
необходимую
информацию
Выдвинуть гипотезу
о причине проблемы
Проверить
выдвинутую гипотезу
Гипотеза
подтвердилась?
Сформировать
рекомендации по
устранению
Это первопричина?
Да
Да
Нет
Нет
Раздел 3: автоматизация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 257/301
Раздел 3: автоматизация тестирования
3.1.
Выгоды и риски автоматизации
3.1.1.
Преимущества и недостатки автоматизации
В разделе, посвящённом подробной классификации тестирования
{69}
, мы
кратко рассматривали, что собой представляет автоматизированное тестирова-
ние
{76}
: это набор техник, подходов и инструментальных средств, позволяющий ис-
ключить человека из выполнения некоторых задач в процессе тестирования. В таб-
лице 2.3.b
{76}
был приведён краткий список преимуществ и недостатков автоматиза-
ции, который сейчас мы рассмотрим подробно.
•
Скорость выполнения тест-кейсов может в разы и на порядки превосходить
возможности человека. Если представить, что человеку придётся вручную
сверять несколько файлов размером в несколько десятков мегабайт каждый,
оценка времени ручного выполнения становится пугающей: месяцы или даже
годы. При этом 36 проверок, реализуемых в рамках дымового тестирования
командными скриптами
{284}
,
выполняются менее чем за пять секунд и требуют
от тестировщика только одного действия — запустить скрипт.
•
Отсутствует влияние человеческого фактора в процессе выполнения тест-
кейсов (усталости, невнимательности и т.д.). Продолжим пример из преды-
дущего пункта: какова вероятность, что человек ошибётся, сравнивая (по-
символьно!) даже два обычных текста размером в 100 страниц каждый? А
если таких текстов 10? 20? И проверки нужно повторять раз за разом? Можно
смело утверждать, что человек ошибётся гарантированно. Автоматика не
ошибётся.
•
Средства автоматизации способны выполнить тест-кейсы, в принципе непо-
сильные для человека в силу своей сложности, скорости или иных факторов.
И снова наш пример со сравнением больших текстов является актуальным:
мы не можем позволить себе потратить годы, раз за разом выполняя крайне
сложную рутинную операцию, в которой мы к тому же будем гарантированно
допускать ошибки. Другим прекрасным примером непосильных для человека
тест-кейсов является исследование производительности
{91}
, в рамках кото-
рого необходимо с высокой скоростью выполнять определённые действия, а
также фиксировать значения широкого набора параметров. Сможет ли чело-
век, например, сто раз в секунду измерять и записывать объём оперативной
памяти, занимаемой приложением? Нет. Автоматика сможет.
•
Средства автоматизации способны собирать, сохранять, анализировать, аг-
регировать и представлять в удобной для восприятия человеком форме ко-
лоссальные объёмы данных. В нашем примере с дымовым тестированием
«Конвертера файлов» объём данных, полученный в результате тестирова-
ния, невелик — его вполне можно обработать вручную. Но если обратиться
к реальным проектным ситуациям, журналы работы систем автоматизиро-
ванного тестирования могут занимать десятки гигабайт по каждой итерации.
Логично, что человек не в состоянии вручную проанализировать такие объ-
ёмы данных, но правильно настроенная среда автоматизации сделает это
сама, предоставив на выход аккуратные отчёты в 2–3 страницы, удобные гра-
фики и таблицы, а также возможность погружаться в детали, переходя от аг-
регированных данных к подробностям, если в этом возникнет необходи-
мость.
Преимущества и недостатки автоматизации
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 258/301
•
Средства автоматизации способны выполнять низкоуровневые действия с
приложением, операционной системой, каналами передачи данных и т.д. В
одном из предыдущих пунктов мы упоминали такую задачу, как «сто раз в
секунду измерить и записать объём оперативной памяти, занимаемой при-
ложением». Подобная задача сбора информации об используемых приложе-
нием ресурсах является классическим примером. Однако средства автома-
тизации могут не только собирать подобную информацию, но и воздейство-
вать на среду исполнения приложения или само приложение, эмулируя ти-
пичные события (например, нехватку оперативной памяти или процессор-
ного времени) и фиксируя реакцию приложения. Даже если у тестировщика
будет достаточно квалификации, чтобы самостоятельно выполнить подоб-
ные операции, ему всё равно понадобится то или иное инструментальное
средство — так почему не решить эту задачу сразу на уровне автоматизации
тестирования?
Итак, с использованием автоматизации мы получаем возможность увеличить
тестовое покрытие
{215}
за счёт:
•
выполнения тест-кейсов, о которых раньше не стоило и думать;
•
многократного повторения тест-кейсов с разными входными данными;
•
высвобождения времени на создание новых тест-кейсов.
Но всё ли так хорошо с автоматизацией? Увы, нет. Очень наглядно одну из
серьёзных проблем можно представить рисунком 3.1.a:
Рисунок 3.1.a — Соотношение времени разработки и выполнения тест-кейсов в
ручном и автоматизированном тестировании
В первую очередь следует осознать, что автоматизация не происходит сама
по себе, не существует волшебной кнопки, нажатием которой решаются все про-
блемы. Более того, с автоматизацией тестирования связана серия серьёзных не-
достатков и рисков:
•
Необходимость наличия высококвалифицированного персонала в силу того
факта, что автоматизация — это «проект внутри проекта» (со своими требо-
ваниями, планами, кодом и т.д.). Даже если забыть на мгновение про «проект
внутри проекта», техническая квалификация сотрудников, занимающихся ав-
томатизацией, как правило, должна быть ощутимо выше, чем у их коллег,
занимающихся ручным тестированием.
t
Разработка и отладка
В
ы
по
л
-
не
н
ие
В
ы
по
л
-
не
н
ие
Разработка
В
ы
по
л
-
не
н
ие
В
ы
по
л
-
не
н
ие
В
ы
по
л
-
не
н
ие
В
ы
по
л
-
не
н
ие
...
Ручное тестирование
Автоматизированное тестирование
Преимущества и недостатки автоматизации
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 259/301
•
Разработка и сопровождение как самих автоматизированных тест-кейсов, так
и всей необходимой инфраструктуры занимает очень много времени. Ситуа-
ция усугубляется тем, что в некоторых случаях (при серьёзных изменениях в
проекте или в случае ошибок в стратегии) всю соответствующую работу при-
ходится выполнять заново с нуля: в случае ощутимого изменения требова-
ний, смены технологического домена, переработки интерфейсов (как пользо-
вательских, так и программных) многие тест-кейсы становятся безнадёжно
устаревшими и требуют создания заново.
•
Автоматизация требует более тщательного планирования и управления рис-
ками, т.к. в противном случае проекту может быть нанесён серьёзный ущерб
(см. предыдущий пункт про переделку с нуля всех наработок).
•
Коммерческие средства автоматизации стоят ощутимо дорого, а имеющиеся
бесплатные аналоги не всегда позволяют эффективно решать поставленные
задачи. И здесь мы снова вынуждены вернуться к вопросу ошибок в плани-
ровании: если изначально набор технологий и средств автоматизации был
выбран неверно, придётся не только переделывать всю работу, но и покупать
новые средства автоматизации.
•
Средств автоматизации крайне много, что усложняет проблему выбора того
или иного средства, затрудняет планирование и определение стратегии те-
стирования, может повлечь за собой дополнительные временные и финан-
совые затраты, а также необходимость обучения персонала или найма соот-
ветствующих специалистов.
Итак, автоматизация тестирования требует ощутимых инвестиций и сильно
повышает проектные риски, а потому существуют специальные подходы
365
,
366
,
367
по
оценке применимости и эффективности автоматизированного тестирования. Если
выразить всю их суть очень кратко, то в первую очередь следует учесть:
•
Затраты времени на ручное выполнение тест-кейсов и на выполнение этих
же тест-кейсов, но уже автоматизированных. Чем ощутимее разница, тем бо-
лее выгодной представляется автоматизация.
•
Количество повторений выполнения одних и тех же тест-кейсов. Чем оно
больше, тем больше времени мы сможем сэкономить за счёт автоматизации.
•
Затраты времени на отладку, обновление и поддержку автоматизированных
тест-кейсов. Этот параметр сложнее всего оценить, и именно он представ-
ляет наибольшую угрозу успеху автоматизации, потому здесь для проведе-
ния оценки следует привлекать наиболее опытных специалистов.
•
Наличие в команде соответствующих специалистов и их рабочую загрузку.
Автоматизацией занимаются самые квалифицированные сотрудники, кото-
рые в это время не могут решать иные задачи.
365
«Implementing Automated Software Testing — Continuously Track Progress and Adjust Accordingly», Thom Garrett
[
http://www.methodsandtools.com/archive/archive.php?id=94
]
366
«The ROI of Test Automation», Michael Kelly [
https://www.stickyminds.com/sites/default/files/presenta-
tion/file/2013/04STRER_W12.pdf
]
367
«Cost Benefits Analysis of Test Automation», Douglas Hoffman [
https://www.cmcrossroads.com/sites/default/files/arti-
cle/file/2014/Cost-Benefit%20Analysis%20of%20Test%20Automation.pdf
]
Преимущества и недостатки автоматизации
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 260/301
В качестве небольшого примера беглой оценки эффективности автоматиза-
ции можно привести следующую формулу
368
:
𝐴
𝑒𝑓𝑓𝑒𝑐𝑡
=
𝑁∙𝑇
𝑚𝑎𝑛𝑢𝑎𝑙
𝑜𝑣𝑒𝑟𝑎𝑙𝑙
𝑁∙𝑇
𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑
𝑟𝑢𝑛 𝑎𝑛𝑑 𝑎𝑛𝑎𝑙𝑦𝑠𝑒
+𝑇
𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑
𝑑𝑒𝑣𝑒𝑙𝑜𝑝𝑚𝑒𝑛𝑡 𝑎𝑛𝑑 𝑠𝑢𝑝𝑝𝑜𝑟𝑡
,
где
𝐴
𝑒𝑓𝑓𝑒𝑐𝑡
— коэффициент выгоды от использования автоматизации,
𝑁
— планируемое количество билдов приложения;
𝑇
𝑚𝑎𝑛𝑢𝑎𝑙
𝑜𝑣𝑒𝑟𝑎𝑙𝑙
— расчётное время разработки, выполнения и анализа результатов ручного тестиро-
вания;
𝑇
𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑
𝑟𝑢𝑛 𝑎𝑛𝑑 𝑎𝑛𝑎𝑙𝑦𝑠𝑒
— расчётное время выполнения и анализа результатов автоматизированного
тестирования;
𝑇
𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑
𝑑𝑒𝑣𝑒𝑙𝑜𝑝𝑚𝑒𝑛𝑡 𝑎𝑛𝑑 𝑠𝑢𝑝𝑝𝑜𝑟𝑡
— расчётное время разработки и сопровождения автоматизирован-
ного тестирования.
Чтобы нагляднее представить, как эта формула может помочь, изобразим
график коэффициента выгоды автоматизации в зависимости от количества билдов
(рисунок 3.1.b). Допустим, что в некотором проекте значения параметров таковы:
𝑇
𝑚𝑎𝑛𝑢𝑎𝑙
𝑜𝑣𝑒𝑟𝑎𝑙𝑙
= 30 часов на каждый билд;
𝑇
𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑
𝑟𝑢𝑛 𝑎𝑛𝑑 𝑎𝑛𝑎𝑙𝑦𝑠𝑒
= 5 часов на каждый билд;
𝑇
𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑
𝑑𝑒𝑣𝑒𝑙𝑜𝑝𝑚𝑒𝑛𝑡 𝑎𝑛𝑑 𝑠𝑢𝑝𝑝𝑜𝑟𝑡
= 300 часов на весь проект.
Рисунок 3.1.b — Коэффициент выгоды автоматизации в зависимости от количе-
ства билдов
Как видно на рисунке 3.1.b, лишь к 12-му билду автоматизация окупит вложе-
ния и с 13-го билда начнёт приносить пользу. И тем не менее существуют области,
в которых автоматизация даёт ощутимый эффект почти сразу. Их рассмотрению
посвящена следующая глава.
368
«Introduction to automation», Vitaliy Zhyrytskyy.
Области применения автоматизации
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Достарыңызбен бөлісу: |