Тестирование приложений. Обеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022
Скачать 5.07 Mb.
|
Раздел 3: автоматизация тестирования 3.1. Выгоды и риски автоматизации 3.1.1. Преимущества и недостатки автоматизации В разделе, посвящённом подробной классификации тестирования {66} , мы кратко рассматривали, что собой представляет автоматизированное тестирова- ние {73} : это набор техник, подходов и инструментальных средств, позволяющий ис- ключить человека из выполнения некоторых задач в процессе тестирования. В таб- лице 2.3.b {73} был приведён краткий список преимуществ и недостатков автоматиза- ции, который сейчас мы рассмотрим подробно. • Скорость выполнения тест-кейсов может в разы и на порядки превосходить возможности человека. Если представить, что человеку придётся вручную сверять несколько файлов размером в несколько десятков мегабайт каждый, оценка времени ручного выполнения становится пугающей: месяцы или даже годы. При этом 36 проверок, реализуемых в рамках дымового тестирования командными скриптами {281} , выполняются менее чем за пять секунд и требуют от тестировщика только одного действия — запустить скрипт. • Отсутствует влияние человеческого фактора в процессе выполнения тест- кейсов (усталости, невнимательности и т.д.). Продолжим пример из преды- дущего пункта: какова вероятность, что человек ошибётся, сравнивая (по- символьно!) даже два обычных текста размером в 100 страниц каждый? А если таких текстов 10? 20? И проверки нужно повторять раз за разом? Можно смело утверждать, что человек ошибётся гарантированно. Автоматика не ошибётся. • Средства автоматизации способны выполнить тест-кейсы, в принципе непо- сильные для человека в силу своей сложности, скорости или иных факторов. И снова наш пример со сравнением больших текстов является актуальным: мы не можем позволить себе потратить годы, раз за разом выполняя крайне сложную рутинную операцию, в которой мы к тому же будем гарантированно допускать ошибки. Другим прекрасным примером непосильных для человека тест-кейсов является исследование производительности {88} , в рамках кото- рого необходимо с высокой скоростью выполнять определённые действия, а также фиксировать значения широкого набора параметров. Сможет ли чело- век, например, сто раз в секунду измерять и записывать объём оперативной памяти, занимаемой приложением? Нет. Автоматика сможет. • Средства автоматизации способны собирать, сохранять, анализировать, аг- регировать и представлять в удобной для восприятия человеком форме ко- лоссальные объёмы данных. В нашем примере с дымовым тестированием «Конвертера файлов» объём данных, полученный в результате тестирова- ния, невелик — его вполне можно обработать вручную. Но если обратиться к реальным проектным ситуациям, журналы работы систем автоматизиро- ванного тестирования могут занимать десятки гигабайт по каждой итерации. Логично, что человек не в состоянии вручную проанализировать такие объ- ёмы данных, но правильно настроенная среда автоматизации сделает это сама, предоставив на выход аккуратные отчёты в 2–3 страницы, удобные гра- фики и таблицы, а также возможность погружаться в детали, переходя от аг- регированных данных к подробностям, если в этом возникнет необходи- мость. • Средства автоматизации способны выполнять низкоуровневые действия с приложением, операционной системой, каналами передачи данных и т.д. В Преимущества и недостатки автоматизации Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 255/298 одном из предыдущих пунктов мы упоминали такую задачу, как «сто раз в секунду измерить и записать объём оперативной памяти, занимаемой при- ложением». Подобная задача сбора информации об используемых приложе- нием ресурсах является классическим примером. Однако средства автома- тизации могут не только собирать подобную информацию, но и воздейство- вать на среду исполнения приложения или само приложение, эмулируя ти- пичные события (например, нехватку оперативной памяти или процессор- ного времени) и фиксируя реакцию приложения. Даже если у тестировщика будет достаточно квалификации, чтобы самостоятельно выполнить подоб- ные операции, ему всё равно понадобится то или иное инструментальное средство — так почему не решить эту задачу сразу на уровне автоматизации тестирования? Итак, с использованием автоматизации мы получаем возможность увеличить тестовое покрытие {212} за счёт: • выполнения тест-кейсов, о которых раньше не стоило и думать; • многократного повторения тест-кейсов с разными входными данными; • высвобождения времени на создание новых тест-кейсов. Но всё ли так хорошо с автоматизацией? Увы, нет. Очень наглядно одну из серьёзных проблем можно представить рисунком 3.1.a: Рисунок 3.1.a — Соотношение времени разработки и выполнения тест-кейсов в ручном и автоматизированном тестировании В первую очередь следует осознать, что автоматизация не происходит сама по себе, не существует волшебной кнопки, нажатием которой решаются все про- блемы. Более того, с автоматизацией тестирования связана серия серьёзных не- достатков и рисков: • Необходимость наличия высококвалифицированного персонала в силу того факта, что автоматизация — это «проект внутри проекта» (со своими требо- ваниями, планами, кодом и т.д.). Даже если забыть на мгновение про «проект внутри проекта», техническая квалификация сотрудников, занимающихся ав- томатизацией, как правило, должна быть ощутимо выше, чем у их коллег, занимающихся ручным тестированием. • Разработка и сопровождение как самих автоматизированных тест-кейсов, так и всей необходимой инфраструктуры занимает очень много времени. Ситуа- ция усугубляется тем, что в некоторых случаях (при серьёзных изменениях в t Разработка и отладка В ы по л - не н ие В ы по л - не н ие Разработка В ы по л - не н ие В ы по л - не н ие В ы по л - не н ие В ы по л - не н ие Ручное тестирование Автоматизированное тестирование Преимущества и недостатки автоматизации Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 256/298 проекте или в случае ошибок в стратегии) всю соответствующую работу при- ходится выполнять заново с нуля: в случае ощутимого изменения требова- ний, смены технологического домена, переработки интерфейсов (как пользо- вательских, так и программных) многие тест-кейсы становятся безнадёжно устаревшими и требуют создания заново. • Автоматизация требует более тщательного планирования и управления рис- ками, т.к. в противном случае проекту может быть нанесён серьёзный ущерб (см. предыдущий пункт про переделку с нуля всех наработок). • Коммерческие средства автоматизации стоят ощутимо дорого, а имеющиеся бесплатные аналоги не всегда позволяют эффективно решать поставленные задачи. И здесь мы снова вынуждены вернуться к вопросу ошибок в плани- ровании: если изначально набор технологий и средств автоматизации был выбран неверно, придётся не только переделывать всю работу, но и покупать новые средства автоматизации. • Средств автоматизации крайне много, что усложняет проблему выбора того или иного средства, затрудняет планирование и определение стратегии те- стирования, может повлечь за собой дополнительные временные и финан- совые затраты, а также необходимость обучения персонала или найма соот- ветствующих специалистов. Итак, автоматизация тестирования требует ощутимых инвестиций и сильно повышает проектные риски, а потому существуют специальные подходы 364 , 365 , 366 по оценке применимости и эффективности автоматизированного тестирования. Если выразить всю их суть очень кратко, то в первую очередь следует учесть: • Затраты времени на ручное выполнение тест-кейсов и на выполнение этих же тест-кейсов, но уже автоматизированных. Чем ощутимее разница, тем бо- лее выгодной представляется автоматизация. • Количество повторений выполнения одних и тех же тест-кейсов. Чем оно больше, тем больше времени мы сможем сэкономить за счёт автоматизации. • Затраты времени на отладку, обновление и поддержку автоматизированных тест-кейсов. Этот параметр сложнее всего оценить, и именно он представ- ляет наибольшую угрозу успеху автоматизации, потому здесь для проведе- ния оценки следует привлекать наиболее опытных специалистов. • Наличие в команде соответствующих специалистов и их рабочую загрузку. Автоматизацией занимаются самые квалифицированные сотрудники, кото- рые в это время не могут решать иные задачи. 364 «Implementing Automated Software Testing — Continuously Track Progress and Adjust Accordingly», Thom Garrett [ http://www.methodsandtools.com/archive/archive.php?id=94 ] 365 «The ROI of Test Automation», Michael Kelly [ https://www.stickyminds.com/sites/default/files/presenta- tion/file/2013/04STRER_W12.pdf ] 366 «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–2022 Стр: 257/298 В качестве небольшого примера беглой оценки эффективности автоматиза- ции можно привести следующую формулу 367 : 𝐴 𝑒𝑓𝑓𝑒𝑐𝑡 = 𝑁∙𝑇 𝑚𝑎𝑛𝑢𝑎𝑙 𝑜𝑣𝑒𝑟𝑎𝑙𝑙 𝑁∙𝑇 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑 𝑟𝑢𝑛 𝑎𝑛𝑑 𝑎𝑛𝑎𝑙𝑦𝑠𝑒 +𝑇 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑 𝑑𝑒𝑣𝑒𝑙𝑜𝑝𝑚𝑒𝑛𝑡 𝑎𝑛𝑑 𝑠𝑢𝑝𝑝𝑜𝑟𝑡 , где 𝐴 𝑒𝑓𝑓𝑒𝑐𝑡 — коэффициент выгоды от использования автоматизации, 𝑁 — планируемое количество билдов приложения; 𝑇 𝑚𝑎𝑛𝑢𝑎𝑙 𝑜𝑣𝑒𝑟𝑎𝑙𝑙 — расчётное время разработки, выполнения и анализа результатов ручного тестиро- вания; 𝑇 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑 𝑟𝑢𝑛 𝑎𝑛𝑑 𝑎𝑛𝑎𝑙𝑦𝑠𝑒 — расчётное время выполнения и анализа результатов автоматизированного тестирования; 𝑇 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑 𝑑𝑒𝑣𝑒𝑙𝑜𝑝𝑚𝑒𝑛𝑡 𝑎𝑛𝑑 𝑠𝑢𝑝𝑝𝑜𝑟𝑡 — расчётное время разработки и сопровождения автоматизирован- ного тестирования. Чтобы нагляднее представить, как эта формула может помочь, изобразим график коэффициента выгоды автоматизации в зависимости от количества билдов (рисунок 3.1.b). Допустим, что в некотором проекте значения параметров таковы: 𝑇 𝑚𝑎𝑛𝑢𝑎𝑙 𝑜𝑣𝑒𝑟𝑎𝑙𝑙 = 30 часов на каждый билд; 𝑇 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑 𝑟𝑢𝑛 𝑎𝑛𝑑 𝑎𝑛𝑎𝑙𝑦𝑠𝑒 = 5 часов на каждый билд; 𝑇 𝑎𝑢𝑡𝑜𝑚𝑎𝑡𝑒𝑑 𝑑𝑒𝑣𝑒𝑙𝑜𝑝𝑚𝑒𝑛𝑡 𝑎𝑛𝑑 𝑠𝑢𝑝𝑝𝑜𝑟𝑡 = 300 часов на весь проект. Рисунок 3.1.b — Коэффициент выгоды автоматизации в зависимости от количе- ства билдов Как видно на рисунке 3.1.b, лишь к 12-му билду автоматизация окупит вложе- ния и с 13-го билда начнёт приносить пользу. И тем не менее существуют области, в которых автоматизация даёт ощутимый эффект почти сразу. Их рассмотрению посвящена следующая глава. 367 «Introduction to automation», Vitaliy Zhyrytskyy. Области применения автоматизации Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 258/298 3.1.2. Области применения автоматизации Сначала мы ещё раз посмотрим на список задач, решить которые помогает автоматизация: • Выполнение тест-кейсов, непосильных человеку. • Решение рутинных задач. • Ускорение выполнения тестирования. • Высвобождение человеческих ресурсов для интеллектуальной работы. • Увеличение тестового покрытия. • Улучшение кода за счёт увеличения тестового покрытия и применения спе- циальных техник автоматизации. Эти задачи чаще всего встречаются и проще всего решаются в следующих случаях (см. таблицу 3.1.a). Таблица 3.1.a — Случаи наибольшей применимости автоматизации Случай / задача Какую проблему решает автоматизация Регрессионное тестиро- вание {84} Необходимость выполнять вручную тесты, количество которых неуклонно растёт с каждым билдом, но вся суть которых сводится к проверке того факта, что ранее работавшая функциональность про- должает работать корректно. Инсталляционное тести- рование {83} и настройка тестового окружения. Множество часто повторяющихся рутинных операций по проверке работы инсталлятора, размещения файлов в файловой системе, содержимого конфигурационных файлов, реестра и т.д. Подготовка приложения в заданной среде и с заданными настройками для про- ведения основного тестирования. Конфигурационное тести- рование {86} и тестирова- ние совместимости {86} Выполнение одних и тех же тест-кейсов на большом множестве входных данных, под разными платформами и в разных условиях. Классический пример: есть файл настроек, в нём сто параметров, каждый может принимать сто значений: существует 100 100 вариан- тов конфигурационного файла — все их нужно проверить. Использование комбина- торных техник тестирова- ния {104} (в т.ч. доменного тестирования {92} , {239} ). Генерация комбинаций значений и многократное выполнение тест- кейсов с использованием этих сгенерированных комбинаций в каче- стве входных данных. Модульное тестирова- ние {74} Проверка корректности работы атомарных участков кода и элемен- тарных взаимодействий таких участков кода — практически невы- полнимая для человека задача при условии, что нужно выполнить тысячи таких проверок и нигде не ошибиться. Интеграционное тестиро- вание {74} Глубокая проверка взаимодействия компонентов в ситуации, когда человеку почти нечего наблюдать, т.к. все представляющие инте- рес и подвергаемые тестированию процессы проходят на уровнях более глубоких, чем пользовательский интерфейс. Тестирование безопасно- сти {86} Необходимость проверки прав доступа, паролей по умолчанию, от- крытых портов, уязвимостей текущих версий ПО и т.д., т.е. быстрое выполнение очень большого количества проверок, в процессе кото- рого нельзя что-то пропустить, забыть или «не так понять». Тестирование производи- тельности {88} Создание нагрузки с интенсивностью и точностью, недоступной че- ловеку. Сбор с высокой скоростью большого набора параметров ра- боты приложения. Анализ большого объёма данных из журналов работы системы автоматизации. Дымовой тест {76} для круп- ных систем. Выполнение при получении каждого билда большого количества до- статочно простых для автоматизации тест-кейсов. Приложения (или их ча- сти) без графического ин- терфейса. Проверка консольных приложений на больших наборах значений параметров командной строки (и их комбинаций). Проверка прило- жений и их компонентов, вообще не предназначенных для взаимо- действия с человеком (веб-сервисы, серверы, библиотеки и т.д.). Области применения автоматизации Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 259/298 Длительные, рутинные, утомительные для чело- века и/или требующие по- вышенного внимания опе- рации. Проверки, требующие сравнения больших объёмов данных, высо- кой точности вычислений, обработки большого количества разме- щённых по всему дереву каталогов файлов, ощутимо большого вре- мени выполнения и т.д. Особенно, когда такие проверки повторя- ются очень часто. Проверка «внутренней функциональности» веб- приложений (ссылок, до- ступности страниц и т.д.). Автоматизация предельно рутинных действий (например, прове- рить все 30’000+ ссылок на предмет того, что все они ведут на ре- ально существующие страницы). Автоматизация здесь упрощается в силу стандартности задачи — существует много готовых решений. Стандартная, однотипная для многих проектов функциональность. Даже высокая сложность при первичной автоматизации в таком случае окупится за счёт простоты многократного использования по- лученных решений в разных проектах. «Технические задачи». Проверки корректности протоколирования, работы с базами дан- ных, корректности поиска, файловых операций, корректности фор- матов и содержимого генерируемых документов и т.д. С другой стороны, существуют случаи, в которых автоматизация, скорее всего, приведёт только к ухудшению ситуации. Вкратце — это все те области, где требуется человеческое мышление, а также некоторый перечень технологических областей. Чуть более подробно список выглядит так (таблица 3.1.b): Таблица 3.1.b — Случаи наименьшей применимости автоматизации Случай / задача В чём проблема автоматизации Планирование {205} Компьютер пока не научился думать. Разработка тест-кейсов {117} Написание отчётов о дефектах {167} Анализ результатов тестирования и отчёт- ность {205} Функциональность, которую нужно (доста- точно) проверить всего несколько раз. Затраты на автоматизацию не окупятся. Тест-кейсы, которые нужно выполнить всего несколько раз (если человек может их выполнить). Низкий уровень абстракции в имеющихся инструментах автоматизации. Придётся писать очень много кода, что не только сложно и долго, но и приводит к появлению множе- ства ошибок в самих тест-кейсах. Слабые возможности средства автомати- зации по протоколированию процесса те- стирования и сбору технических данных о приложении и окружении. Есть риск получить данные в виде «что-то где-то сломалось», что не помогает в диагностике про- блемы. Низкая стабильность требований. Придётся очень многое переделывать, что в случае автоматизации обходится дороже, чем в случае ручного тестирования. Сложные комбинации большого количе- ства технологий. Высокая сложность автоматизации, низкая надёж- ность тест-кейсов, высокая сложность оценки тру- дозатрат и прогнозирования рисков. Проблемы с планированием и ручным те- стированием. Автоматизация хаоса приводит к появлению авто- матизированного хаоса, но при этом ещё и требует трудозатрат. Сначала стоит решить имеющиеся проблемы, а потом включаться в автоматизацию. Нехватка времени и угроза срыва сроков Автоматизация не приносит мгновенных результа- тов. Поначалу она лишь потребляет ресурсы ко- манды (в том числе время). Также есть универ- сальный афоризм: «лучше руками протестировать хоть что-то, чем автоматизированно протестиро- вать ничего». Области применения автоматизации Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 260/298 Области тестирования, требующие оценки ситуации человеком (тестирование удоб- ства использования {85} , тестирование до- ступности {85} и т.д.). В принципе, можно разработать некие алгоритмы, оценивающие ситуацию так, как её мог бы оценить человек. Но на практике живой человек может сде- лать это быстрее, проще, надёжнее и дешевле. Вывод: стоит помнить, что эффект от автоматизации наступает не сразу и не всегда. Как и любой дорогостоящий инструмент, автоматизация при верном приме- нении может дать ощутимую выгоду, но при неверном принесёт лишь весьма ощу- тимые затраты. |