Главная страница
Навигация по странице:

  • 3.1.2. Области применения автоматизации

  • Случай / задача Какую проблему решает автоматизация

  • Случай / задача В чём проблема автоматизации

  • Тестирование приложений. Обеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022


    Скачать 5.07 Mb.
    НазваниеОбеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022
    АнкорТестирование приложений
    Дата06.10.2022
    Размер5.07 Mb.
    Формат файлаpdf
    Имя файлаSoftware Testing - Base Course (Svyatoslav Kulikov) - 3rd editio.pdf
    ТипКнига
    #718843
    страница35 из 38
    1   ...   30   31   32   33   34   35   36   37   38
    Раздел 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}
    и т.д.).
    В принципе, можно разработать некие алгоритмы, оценивающие ситуацию так, как её мог бы оценить человек. Но на практике живой человек может сде- лать это быстрее, проще, надёжнее и дешевле.
    Вывод: стоит помнить, что эффект от автоматизации наступает не сразу и не всегда. Как и любой дорогостоящий инструмент, автоматизация при верном приме- нении может дать ощутимую выгоду, но при неверном принесёт лишь весьма ощу- тимые затраты.

    Особенности автоматизированного тестирования
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 261/298
    1   ...   30   31   32   33   34   35   36   37   38


    написать администратору сайта