Г ребенюк Виктор Михайлович
Grebenyuk Viktor Mikhaylovich Московский государственный технический университет радиотехники,
электроники и автоматики, МГТУ МИРЭА Moscow State Technical University of Radioengineering, Electronics and Automation, MSTU MIRF.A Аспирант/Post-graduate student E-Mail: viktor. grebenyuk@gmail. com
Оценка целесообразности внедрения автоматизированного тестирования
Test automation rationale
Аннотация: Тестирование программного обеспечение является одним из основных методов управления качеством. Наиболее растраненным является ручное тестирования, но оно не всегда отвечает задачам обеспечения качества, поэтому всё большую популярность обретает автоматизированное тестирование, однако, его повсеместное внедрение не всегда целесообразно.
The Abstract: Software testing is one of the key methods of a quality management. Manual testing is widely used within the industry, but it cannot meet all the quality assurance needs and hence automated testing is becoming more and more popular, however it is not always reasonable to automate everything.
Ключевые слова: Управление качеством, обеспечение качества, контроль качества, автоматизация тестирования.
Keywords: Quality management, quality assurance, quality control, test automation.
***
1. Введение
В настоящее время существует большое количество средств автоматизации тестирования программного обеспечения, и многие уже успели по достоинству оценить их преимущества. Однако выбор в пользу автоматизации тестирования не всегда обоснован и существует несколько «мифов» связанных с необходимостью и возможностями автоматического тестирования.
Данная статья может помочь избавится от влияния ложных представлений об автоматизированном тестировании, а также разобраться в методах определения целесообразности внедрения автоматического тестирования.
2. Рекомендации для расчёта целесообразности внедрения автоматизированного тестирования
2.1. ОБЩИЕ РЕКОМЕНДАЦИИ
Целесообразность внедрения автоматизации некоторых видов тестирования не всегда очевидна [1]. Например, необходимость автоматизации может быть легко доказана, если речь идёт об автоматизации постоянно повторяемых идентичных тестов, а также нагрузочном тестировании, тестировании быстродействия системы или других случаях, когда неоправданно сложно или невозможно обеспечить необходимые условия теста вручную. Однако необходимость автоматизации нередко подвергается сомнениям, если возникает вопрос об автоматизации функционального тестирования.
Особенно остро стоит вопрос выбора тестов для автоматизации, когда нет возможности автоматизировать всю библиотеку тестов. Какие тесты автоматизировать, а какие нет? Какую степень автоматизации использовать (т.е. стоит ли добиваться полного отсутствия вмешательства человека)? Какой инструментарий автоматизации тестирования выбрать? Вот вопросы, которые обязательно возникают в таких случаях.
2.2. ПРЕИМУЩЕСТВА И НЕДОСТАТКИ ВНЕДРЕНИЯ АВТОМАТИРОВАННОГО ТЕСТИРОВАНИЯ
Основными задачами внедрения автоматизированного тестирования являются повышение качества тестирования и экономия времени, затрачиваемого на тестирование. Под повышением качества здесь подразумевается и то, что с помощью автоматизированного тестирования можно охватить больший набор тестов, и/или тесты, которые невозможно осуществить вручную, и то, что автоматическое выполнение тестов позволяет свести к минимуму влияние человеческого фактора на результаты тестирования. Под экономией времени подразумевается то, что на выполнение автоматизированных тестов обычно уходит значительно меньше времени, чем на выполнение аналогичных тестов вручную.
К преимуществам автоматизированного тестирования можно отнести:
1. Сокращение времени на исполнение тестов по сравнению с ручным тестированием;
2. Возможность проведения тестов, которые нельзя провести без использования средств автоматизации;
3. Повышение независимости экспертизы (исключается человеческий фактор);
4. Возможность проводить тестирование вне рабочих часов тестировщика.
Необходимо также отметить и недостатки внедрения автоматизации тестирования [3]:
1. Автоматизация тестирования зачастую требует значительных трудозатрат;
2. Требуется более квалифицированный персонал;
3. Сложный анализ результатов;
4. Любое изменение в работе системы может потребовать трудозатратных изменений в автоматических тестах;
5. Ошибка в реакции системы на один из тестов может привести к ошибочным результатам прогона последующих тестов;
6. Риск возникновения ошибок в самом автоматическом тесте;
7. В некоторых случаях, не все функциональные особенности системы можно покрыть автоматизированными тестами с помощью выбранного инструментария.
2.3. РЕКОМЕНДАЦИИ ДЛЯ РАСЧЁТА ЭКОНОМИЧЕСКОЙ ЦЕЛЕСООБРАЗНОСТИ ВНЕДРЕНИЯАВТОМА ТИЗИРОВАННОГО ТЕСТИРОВАНИЯ
Точную экономическую целесообразность от автоматизации тестов не всегда можно просчитать заранее, потому что она зависит от ряда факторов:
1. Планируемого жизненного цикла системы;
2. Выбранного метода разработки системы;
3. Объектов автоматизации;
4. Методов автоматизации.
Существует 3 распространённых способа подсчёта эффективности внедрения автоматизации тестирования [2]:
1. Прямой расчёт рентабельности инвестиций;
2. Расчёт рентабельность инвестиций с точки зрения эффективности использова-
ния ресурсов;
3. Расчёт рентабельность инвестиций с точки зрения минимизации рисков.
У каждого из этих методов есть свои достоинства и недостатки, поэтому следует использовать сразу несколько методов для получения наиболее взвешенной и всесторонней оценки.
Предлагается использовать следующую общую формулу расчёта рентабельности инвестиций (ROI):
(1) ROI = (Gain - Investments)/Gain *100%
В случае прямого расчёта рентабельности инвестиций, под «Прибылью» (Gain) подразумевается расчётная стоимость тестирования без автоматизации, а под «Инвестициями» (1п-vestments) подразумеваются расходы на создание и выполнение автоматической библиотеки тестов за тот же период, что был использован для вычисления расчётной стоимости тестирования без автоматизации. Метод прямого расчёта рентабельности инвестиций позволяет произвести расчёт прямой выгоды относительно затраченных денежных средств.
При расчёте затрат на автоматизацию тестирования, необходимо учитывать следующие факторы:
1. стоимость программного обеспечения для автоматизации тестирования;
2. затраты на обучение персонала или привлечение более квалифицированного
персонала;
3. затраты на дополнительные аппаратные средства (в отдельных случаях);
4. стоимость разработки первоначальной библиотеки автоматических скриптов;
5. стоимость прогона библиотеки автоматических скриптов;
6. затраты на анализ результатов прогона автоматических тестов;
7. затраты на поддержание автоматизированных скриптов в актуальном состоянии.
Следующая формула может быть использована для расчёта необходимых инвестиций за выделенный период (Ip), если предполагается, будет автоматизироваться существующая библиотека ручных скриптов и что автоматизацией тестирования будут заниматься те же работники, что занимались ручным тестированием (то есть без изменения стоимости оплаты труда):
к
(2) Ip=Io+Co+ £ (Ct + C. + C„)
n=1
где I0- стартовые инвестиции, которые высчитываются как сумма затрат на лицензию программного обеспечения для автоматизации тестирования, обучение персонала и стоимость дополнительных аппаратных средств;
C0 - стоимость разработки и отладки первоначальной библиотеки автоматических скриптов, которая высчитывается как произведение времени, требуемого на написание одного
автоматизированного скрипта одним тестировщиком (в часах), умноженное на общее количество скриптов и на стоимость рабочего часа;
к - количество планируемых циклов тестирования (то есть предполагаемое количество прогонов скриптов);
Се - стоимость однократного выполнения набора автоматизированных скриптов, которая вычисляется как среднее время, потраченное на подготовку к выполнению и непосредственно выполнение одного скрипта одним тестировщиком (в часах), умноженное на общее количество скриптов и на стоимость рабочего часа. Данная переменная может принимать 0 значение, например, когда подразумевается полностью автономное выполнение тестов, не требующее вмешательства человека ни на стадии подготовки к выполнению теста, ни во время исполнения теста;
Са - стоимость анализа результатов одного прогона набора автоматизированных скриптов, которая вычисляется как предполагаемый процент неудачно проведённых тестов, умноженный на общее количество скриптов, среднее время, требуемое на анализ причин неудачного прогона одного скрипта одним тестировщиком (в часах), и на стоимость рабочего часа тестировщика;
Ст - стоимость поддержания автоматизированных скриптов в актуальном состоянии, которая вычисляется как произведение ожидаемого коэффициента изменений скриптов для каждого цикла выполнения, времени, потраченного одним тестировщиком на изменение одного скрипта (в часах), общего количества скриптов и стоимости рабочего часа тестировщика. Данная переменная может принимать 0 значение, например, если в данной функциональной области не планируется никаких последующих изменений.
В случаях, когда для автоматизации скриптов привлекаются более квалифицированные (то есть более дорогостоящие) специалисты, необходимо внести следующие поправки при использовании формулы расчёта необходимых инвестиций за выделенный период (1р), приведённой выше:
1. Стоимость обучения персонала следует считать равной 0 при вычислении стартовых инвестиций (10);
2. Следует использовать стоимость рабочего часа тестировщиков, привлекаемых к автоматизации, а не тестировщиков, выполняющих ручные тесты, при расчёте стоимости разработки первоначальной библиотеки автоматических скриптов (С0), стоимости одного прогона набора автоматизированных скриптов (Се), стоимости анализа результатов одного прогона набора автоматизированных скриптов (Са) и стоимости поддержания автоматизированных скриптов в актуальном состоянии Ст).
Стоимость тестирования за тот же период, но без автоматизации (Ор) может быть представлена в следующем виде:
к
(3) Ор=Оо+ ^ (Ое + Оа + От)
П=1
где О0 - стоимость разработки первоначальной библиотеки ручных скриптов. Данное значение может быть равно 0, если подразумевается наличие существующей библиотеки скриптов;
к - количество планируемых циклов тестирования (то есть предполагаемое количество прогонов скриптов);
Главный редактор - д.э.н., профессор К.А. Кирсанов тел. для справок: +7 (925) 853-04-57 (с 1100 - до 1800) Опубликовать статью в журнале - http://publ.naukovedenie.ru
Ое - стоимость однократного выполнения набора ручных скриптов, которая вычисляется как среднее время, потраченное на подготовку к выполнению и на непосредственное выполнение одного скрипта одним тестировщиком (в часах), умноженное на общее количество скриптов и на стоимость рабочего часа тестировщика;
Оа - стоимость анализа результатов одного прогона набора ручных скриптов, которая вычисляется как предполагаемый процент неудачно проведённых тестов, умноженный на общее количество скриптов, среднее время анализа причин неудачного выполнения одного скрипта (в часах), и на стоимость рабочего часа тестировщика. Данная величина может быть приравнена 0 в большинстве случаев, потому что рассматриваются ручные скрипты, представляющих детально описанную инструкцию для тестировщика;
От - стоимость поддержания ручных скриптов в актуальном состоянии, которая вычисляется как ожидаемый коэффициент изменений, среднего значения количества изменённых скриптов в час, умноженное на общее количество скриптов, среднее время, требуемое на изменение одного скрипта (в часах) и на стоимость рабочего часа. Данная переменная может принимать 0 значение, например, если в данной функциональной области не планируется никаких последующих изменений.
Рассчитать ожидаемую выгоду от внедрения автоматического тестирования можно также и с точки зрения эффективности использования ресурсов. Данный метод основан на сравнении временных затрат, требуемых на внедрение, выполнение, анализ результатов и поддержание автоматических тестов (Инвестиции) с затратами на ручные тесты (Прибыль). Стоит отметить, что метод учитывает только временные затраты персонала, не беря в расчёт их денежное выражение, поэтому он может быть особенно полезным в случаях, когда коммерческие детали неизвестны.
Предлагается использовать следующую формулу для расчёта временных инвестиций в автоматизацию тестирования за выделенный период (Т1р):
где Т10 - стартовые временные инвестиции, которые в данном случае состоят из времени затраченного на поиск подходящего программного обеспечения для автоматизации тестирования и обучение персонала. Данный параметр может принимать нулевое значение, в некоторых случаях (например, если привлекались уже обученные специалисты, и не стояло проблемы выбора программного обеспечения для автоматизации тестирования);
ТС0 - временные затраты на разработку первоначальной библиотеки автоматических скриптов, которая высчитывается как среднее время, требуемое на написание одного скрипта (в часах), умноженное на общее количество скриптов;
к - количество планируемых циклов тестирования (то есть предполагаемое количество прогонов скриптов);
ТСе - время, потраченное тестировщиком на подготовку к выполнению и непосредственно на выполнение одного скрипта (в часах), умноженное на общее количество скриптов. Данная переменная может принимать 0 значение, например, когда подразумевается полностью автономное выполнение тестов, не требующее вмешательства человека ни на стадии подготовки к выполнению теста, ни во время исполнения теста;
ТСа - временные затраты на анализ результатов однократного выполнения набора автоматизированных скриптов, которые вычисляются как предполагаемый процент неудачно
к
(4)
проведённых тестов, умноженный на общее количество скриптов и на среднее время, требуемое на анализ причин неудачного выполнения одного скрипта (в часах);
ТСт - временные затраты на поддержание автоматизированных скриптов в актуальном состоянии, которые вычисляются как ожидаемый коэффициент изменений скриптов для каждого цикла выполнения, умноженное на среднее время, требующееся на изменение одного скрипта одним тестировщиком (в часах), и на общее количество скриптов. Данная переменная может принимать 0 значение, например, если в данной функциональной области не планируется никаких последующих изменений.
Временные затраты на тестирование за тот же период, но без автоматизации (ТОр) могут быть представлены в следующем виде:
к
(5) тОр=тв0+ £ (тае+та, + тс„)
П=1
где ТО0 - время, потраченное на разработку первоначальной библиотеки ручных скриптов (в часах). Данное значение может быть равно 0, если подразумевается наличие существующей библиотеки скриптов;
к - количество планируемых циклов тестирования (то есть предполагаемое количество прогонов скриптов);
ТОе - временные затраты на однократное выполнение набора ручных скриптов, которые вычисляются как среднее время, потраченное на подготовку к выполнению и непосредственно на выполнение одного скрипта (в часах), умноженное на общее количество скриптов;
ТО, - временные затраты на анализ результатов выполнения одного цикла набора ручных скриптов, которые вычисляются как предполагаемый процент неудачно проведённых тестов, умноженный на среднее время, требующееся на анализ причин неудачного выполнения одного скрипта одним тестировщиком (в часах), и на общее количество скриптов. Данная переменная равна 0 в большинстве случаев, так как рассматриваются ручные скрипты, представляющих детально описанную инструкцию для тестировщика;
ТОт - временные затраты на поддержание ручных скриптов в актуальном состоянии, которые вычисляется как ожидаемый коэффициент изменений, умноженный на среднее время, требуемое на изменение одного скрипта одним тестировщиком (в часах), и на общее количество скриптов. Данная переменная может принимать 0 значение, например, если в данной функциональной области не планируется никаких последующих изменений.
Ещё одним способом оценки рентабельности инвестиций в автоматизированное тестирование является оценка рентабельности инвестиций с точки зрения минимизации рисков. Данный метод предполагает сравнение средств, затраченных на тестирование (Инвестиции) с убытками, которые могут возникнуть в результате ошибки функционирования готовой системы на этапе эксплуатации (Прибыль). Стоит отметить, что зачастую сложно точно оценить возможные убытки, поэтому данный метод подразумевает точный анализ возможных рисков. Кроме того, в данном методе подразумевается, что были протестированы все аспекты функционирования системы.
Принимая одну и ту же величину возможных убытков как для автоматического, так и ручного тестирования, можно подсчитать значение Я01 для каждого из видов тестирования, используя как величину инвестиций в автоматизированное тестирование и как величину инвестиций в ручное тестирование соответственно.
3. Способы сокращения издержек на внедрение автоматизированного тести-
рования
На основе анализа приведённых методов подсчёта целесообразности внедрения автоматизации можно сформировать следующие ключевые факторы, присутствующие в каждом из методов:
1. затраты на разработку первоначальной библиотеки автоматических тестов;
2. затраты на подготовку к выполнению и непосредственно на выполнение одного скрипта;
3. затраты на анализ результатов одного прогона набора автоматизированных скриптов;
4. затраты на поддержание автоматизированных тестов в актуальном состоянии;
5. количество планируемых циклов тестирования.
Затраты на разработку первоначальной библиотеки автоматических скриптов могут быть уменьшены за счёт установки чёткой структуры тестов, процессов и принципов разработки автоматических тестов, единых для всех тестировщиков, занимающихся автоматизацией на проекте. Кроме того, для повышения качества и эффективности разработки автоматизированных тестов, можно применять техники, используемые в аналогичных целях в программировании.
Затраты на подготовку к выполнению и непосредственно на выполнение одного скрипта могут быть уменьшены за счёт оптимизации кода автоматизированного теста, а также внедрения процедур эффективного поведения автоматизированного скрипта в случае неполадок и неудавшихся тестов. Последнее особенно актуально в случаях, когда выполнение тестов предусмотрено в автоматическом режиме, без постоянного контроля со стороны тестировщика. В таких случаях велика вероятность того, что один неудачно выполненный тест может привести к остановке всех последующих, что будет обнаружено только на этапе анализа результатов и, следовательно, приведет к неэффективному использованию времени.
Затраты на анализ результатов одного прогона набора автоматизированных тестов могут быть оптимизированы за счёт внедрения более подробных отчётов о выполнении теста. Это может быть достигнуто за счёт добавления дополнительных деталей в отчёты, позволяющих более точно отразить ошибку и условия её проявления. Кроме того, затраты на анализ результатов выполнения скриптов можно сократить за счёт максимально возможной независимости проведения тестов, которая проявляется в использовании разных тестовых (контрольных) данных для каждого из тестов, распараллеливание тестов (исключение вариантов, когда результат выполнения одного может потенциально повлиять на результат другого и т.д.).
Затраты на поддержание автоматизированных тестов в актуальном состоянии напрямую зависят от методов и принципов, использованных на этапе разработки тестов. Подробное документирование изменений, комментарии, а также использование средств контроля версий может уменьшить затраты на поддержку тестов.
Количество планируемых циклов тестирования является одним из ключевых факторов при определении целесообразности внедрения автоматического тестирования: чем больше повторений планируется, тем больше оправданным является внедрение автоматизированного тестирования.
Главный редактор - д.э.н., профессор К.А. Кирсанов тел. для справок: +7 (925) 853-04-57 (с 1100 - до 1800) Опубликовать статью в журнале - http://publ.naukovedenie.ru
4. Заключение
Автоматизация тестирования не может рассматриваться как универсальное средство в борьбе за качество конечного продукта, потому что кроме явных преимуществ (таких, как повышение независимости экспертизы за счёт исключения человеческого фактора, например), у автоматизации тестирования есть и ряд недостатков. Автоматизация тестирования не всегда необходима, рационально обоснована или экономически оправданна. Только детальный анализ может помочь сделать осознанный выбор, а также выявить плюсы и минусы выбранного подхода. Методы, рассмотренные в данной статье, могут помочь избавиться от ложных ожиданий и составить более точное представление о результатах автоматизации.
ЛИТЕРАТУРА
1. HOFFMAN D., Cost Benefits Analysis of Test Automation //
http://www.softwarequalitymethods.com/papers/star99%20model%20paper.pdf
2. JOHNSON D., Test Automation ROI // http://www.dijohn-ic.com/test_automation_roi.pdf
3. KANER C., Improving the Maintainability of Automated Test Suites // http://www.kaner.com/pdfs/autosqa.pdf
Рецензент: Сидорин Виктор Викторович, заведующий кафедрой конструирования и производства радиоэлектронных средств факультета радиотехнических и телекоммуникационных систем МГТУ МИРЭА, доктор технических наук, профессор