Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 862
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Технологии автоматизации тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 273/301
• Многократное заполнение полей форм разными данными и проверка реак- ции приложения.
• Выполнение тест-кейса на основе данных, полученных с помощью комбина- торных техник (пример таких данных представлен в соответствующем при- ложении
{293}
).
Данные для рассматриваемого подхода к организации тест-кейсов могут по- ступать из файлов, баз данных и иных внешних источников или даже генериро- ваться в процессе выполнения тест-кейса (см. описание источников данных для ав- томатизированного тестирования
{267}
).
Преимущества и недостатки тестирования под управлением данными пока- заны в таблице 3.2.c.
Таблица 3.2.c — Преимущества и недостатки тестирования под управлением дан- ными
Преимущества
Недостатки
• Устранение избыточности кода тест-кейсов.
• Удобное хранение и понятный человеку фор- мат данных.
• Возможность поручения генерации данных сотруднику, не имеющему навыков програм- мирования.
• Возможность использования одного и того же набора данных для выполнения разных тест-кейсов.
• Возможность повторного использования набора данных для решения новых задач.
• Возможность использования одного и того же набора данных в одном и том же тест- кейсе, но реализованном под разными плат- формами.
• При изменении логики поведения тест-кейса его код всё равно придётся переписывать.
• При неудачно выбранном формате пред- ставления данных резко снижается их понят- ность для неподготовленного специалиста.
• Необходимость использования технологий генерации данных.
• Высокая сложность кода тест-кейса в случае сложных неоднородных данных.
• Риск неверной работы тест-кейсов в случае, когда несколько тест-кейсов работают с од- ним и тем же набором данных, и он был из- менён таким образом, на который не были рассчитаны некоторые тест-кейсы.
• Слабые возможности по сбору данных в слу- чае обнаружения дефектов.
• Качество тест-кейса зависит от профессио- нализма сотрудника, реализующего код тест- кейса.
Тестирование под управлением ключевыми словами
Логическим развитием идеи о вынесении вовне тест-кейса данных является вынесение вовне тест-кейса команд (описания действий). Разовьём только что по- казанный пример, добавив в CSV-файл ключевые слова, являющиеся описанием выполняемой проверки:
• moved — файл отсутствует в каталоге-источнике и присутствует в каталоге- приёмнике;
• intact — файл присутствует в каталоге-источнике и отсутствует в каталоге- приёмнике;
• equals — содержимое файлов идентично. function execute_test($scenario)
{
$data = file($scenario); foreach ($data as $line)
{
$parsed = str_csv($line); switch ($parsed[0])
{
Технологии автоматизации тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 274/301
// Проверка перемещения файла case 'moved': if (is_file($parsed[1]))&&(!is_file($parsed[2])) { file_put_contents('smoke_test.log',
"OK! '".$parsed[0]."' file was processed!\n");
} else { file_put_contents('smoke_test.log',
"ERROR! '".$parsed[0]."' file was
NOT processed!\n");
} break;
// Проверка отсутствия перемещения файла case 'intact': if (!is_file($parsed[1]))||(is_file($parsed[2])) { file_put_contents('smoke_test.log',
"OK! '".$parsed[0]."' file was processed!\n");
} else { file_put_contents('smoke_test.log',
"ERROR! '".$parsed[0]."' file was
NOT processed!\n");
} break;
// Сравнение файлов case 'equals': if (md5_file($parsed[1]) === md5_file($parsed[2])) { file_put_contents('smoke_test.log',
"OK! File '".$parsed[0]."' Was processed correctly!\n");
} else { file_put_contents('smoke_test.log',
"ERROR! File '".$parsed[0]."' Was
NOT processed correctly!\n");
} break;
}
}
}
Пример CSV-файла (первые пять строк): moved,IN/«Мелкий» эталон WIN1251.txt,OUT/«Мелкий» файл в WIN1251.txt moved,IN/«Средний» эталон CP866.txt,OUT/«Средний» файл CP866.txt intact,IN/Картинка.jpg,OUT/Картинка.jpg equals,Test_ETALON/«Мелкий» эталон WIN1251.txt,OUT/«Мелкий» файл в WIN1251.txt equals,Test_ETALON/«Средний» эталон CP866.txt,OUT/«Средний» файл CP866.txt
Ярчайшим примером инструментального средства автоматизации тестиро- вания, идеально следующего идеологии тестирования под управлением ключе- выми словами, является Selenium IDE
369
, в котором каждая операция тест-кейса описывается в виде:
Действие (ключевое слово)
Необязательный параметр 1
Необязательный параметр 2
Тестирование под управлением ключевыми словами стало тем переломным моментом, начиная с которого стало возможным привлечение к автоматизации те- стирования нетехнических специалистов. Согласитесь, что нет необходимости в знаниях программирования и тому подобных технологий, чтобы наполнять подоб- ные только что показанному CSV-файлы или (что очень часто практикуется) XLSX- файлы.
Технологии автоматизации тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 275/301
Вторым естественным преимуществом тестирования под управлением клю- чевыми словами (хотя она вполне характерна и для тестирования под управлением данными) стала возможность использования различных инструментов одними и теми же наборами команд и данных. Так, например, ничто не мешает нам взять показанные CSV-файлы и написать новую логику их обработки не на PHP, а на C#,
Java, Python или даже с использованием специализированных средств автомати- зации тестирования.
Преимущества и недостатки тестирования под управлением ключевыми сло- вами показаны в таблице 3.2.d.
Таблица 3.2.d — Преимущества и недостатки тестирования под управлением клю- чевыми словами
Преимущества
Недостатки
• Максимальное устранение избыточности кода тест-кейсов.
• Возможность построения мини-фреймвор- ков, решающих широкий спектр задач.
• Повышение уровня абстракции тест-кейсов и возможность их адаптации для работы с раз- ными техническими решениями.
• Удобное хранение и понятный человеку фор- мат данных и команд тест-кейса.
• Возможность поручения описания логики тест-кейса сотруднику, не имеющему навы- ков программирования.
• Возможность повторного использования для решения новых задач.
• Расширяемость (возможность добавления нового поведения тест-кейса на основе уже реализованного поведения).
• Высокая сложность (и, возможно, длитель- ность) разработки.
• Высокая вероятность наличия ошибок в коде тест-кейса.
• Высокая сложность (или невозможность) вы- полнения низкоуровневых операций, если фреймворк не поддерживает соответствую- щие команды.
• Эффект от использования данного подхода наступает далеко не сразу (сначала идёт длительный период разработки и отладки са- мих тест-кейсов и вспомогательной функцио- нальности).
• Для реализации данного подхода требуется наличие высококвалифицированного персо- нала.
• Необходимо обучить персонал языку ключе- вых слов, используемых в тест-кейсах.
Использование фреймворков
Фреймворки автоматизации тестирования представляют собой не что иное, как успешно развившиеся и ставшие популярными решения, объединяющие в себе лучшие стороны тестирования под управлением данными, ключевыми словами и возможности реализации частных решений на высоком уровне абстракции.
Фреймворков автоматизации тестирования очень много, они очень разные, но их объединяет несколько общих черт:
• высокая абстракция кода (нет необходимости описывать каждое элементар- ное действие) с сохранением возможности выполнения низкоуровневых дей- ствий;
• универсальность и переносимость используемых подходов;
• достаточно высокое качество реализации (для популярных фреймворков).
Как правило, каждый фреймворк специализируется на своём виде тестиро- вания, уровне тестирования, наборе технологий. Существуют фреймворки для мо- дульного тестирования (например, семейство xUnit), тестирования веб-приложений
(например, семейство Selenium), тестирования мобильных приложений, тестирова- ния производительности и т.д.
Существуют бесплатные и платные фреймворки, оформленные в виде биб- лиотек на некотором языке программирования или в виде привычных приложений с графическим интерфейсом, узко- и широко специализированные и т.д.
Технологии автоматизации тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 276/301
К сожалению, подробное описание даже одного фреймворка может по объёму быть сопоставимо со всем текстом данной книги. Но если вам ин- тересно, начните хотя бы с изучения Selenium WebDriver
371
Преимущества и недостатки фреймворков автоматизации тестирования по- казаны в таблице 3.2.e.
Таблица 3.2.e — Преимущества и недостатки фреймворков автоматизации тести- рования
Преимущества
Недостатки
• Широкое распространение.
• Универсальность в рамках своего набора технологий.
• Хорошая документация и большое сообще- ство специалистов, с которыми можно про- консультироваться.
• Высокий уровень абстракции.
• Наличие большого набора готовых решений и описаний соответствующих лучших практик применения того или иного фреймворка для решения тех или иных задач.
• Требуется время на изучение фреймворка.
• В случае написания собственного фрейм- ворка де-факто получается новый проект по разработке ПО.
• Высокая сложность перехода на другой фреймворк.
• В случае прекращения поддержки фрейм- ворка тест-кейсы рано или поздно придётся переписывать с использованием нового фреймворка.
• Высокий риск выбора неподходящего фреймворка.
Запись и воспроизведение (Record & Playback)
Технология записи и воспроизведения (Record & Playback) стала актуальной с появлением достаточно сложных средств автоматизации, обеспечивающих глу- бокое взаимодействие с тестируемым приложением и операционной системой. Ис- пользование этой технологии, как правило, сводится к следующим основным ша- гам:
1.
Тестировщик вручную выполняет тест-кейс, а средство автоматизации запи- сывает все его действия.
2.
Результаты записи представляются в виде кода на высокоуровневом языке программирования (в некоторых средствах — специально разработанном).
3.
Тестировщик редактирует полученный код.
4.
Готовый код автоматизированного тест-кейса выполняется для проведения тестирования в автоматизированном режиме.
Возможно, вам приходилось записывать макросы в офисных приложе- ниях. Это тоже технология записи и воспроизведения, только применён- ная для автоматизации решения офисных задач.
Сама технология при достаточно высокой сложности внутренней реализации очень проста в использовании и по самой своей сути, потому часто применяется для обучения начинающих специалистов по автоматизации тестирования. Её ос- новные преимущества и недостатки показаны в таблице 3.2.f.
371
Selenium WebDriver Documentation [
https://www.selenium.dev/documentation/en/webdriver/
]
Технологии автоматизации тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 277/301
Таблица 3.2.f — Преимущества и недостатки технологии записи и воспроизведения
Преимущества
Недостатки
• Предельная простота освоения (достаточно буквально нескольких минут, чтобы начать использовать данную технологию).
• Быстрое создание «скелета тест-кейса» за счёт записи ключевых действий с тестируе- мым приложением.
• Автоматический сбор технических данных о тестируемом приложении (идентификаторов и локаторов элементов, надписей, имён и т.д.).
• Автоматизация рутинных действий (заполне- ния полей, нажатий на ссылки, кнопки и т.д.).
• В отдельных случаях допускает использова- ние тестировщиками без навыков програм- мирования.
• Линейность тест-кейсов: в записи не будет циклов, условий, вызовов функций и прочих характерных для программирования и авто- матизации явлений.
• Запись лишних действий (как просто ошибоч- ных случайных действий тестировщика с те- стируемым приложением, так и (во многих случаях) переключений на другие приложе- ния и работы с ними).
• Так называемый «хардкодинг», т.е. запись внутрь кода тест-кейса конкретных значений, что потребует ручной доработки для пере- вода тест-кейса на технологию тестирования под управлением данными.
• Неудобные имена переменных, неудобное оформление кода тест-кейса, отсутствие комментариев и прочие недостатки, усложня- ющие поддержку и сопровождение тест- кейса в будущем.
• Низкая надёжность самих тест-кейсов в силу отсутствия обработки исключений, проверки условий и т.д.
Таким образом, технология записи и воспроизведения не является универ- сальным средством на все случаи жизни и не может заменить ручную работу по написанию кода автоматизированных тест-кейсов, но в отдельных ситуациях может сильно ускорить решение простых рутинных задач.
Тестирование под управлением поведением
Рассмотренные выше технологии автоматизации максимально сфокусиро- ваны на технических аспектах поведения приложения и обладают общим недостат- ком: с их помощью сложно проверять высокоуровневые пользовательские сцена- рии (а именно в них и заинтересованы заказчики и конечные пользователи). Этот недостаток призвано исправить тестирование под управлением поведением, в ко- тором акцент делается не на отдельных технических деталях, а на общей работо- способности приложения при решении типичных пользовательских задач.
Такой подход не только упрощает выполнение целого класса проверок, но и облегчает взаимодействие между разработчиками, тестировщиками, бизнес-ана- литиками и заказчиком, т.к. в основе подхода лежит очень простая формула «given- when-then
»:
• Given («имея, предполагая, при условии») описывает начальную ситуацию, в которой находится пользователь в контексте работы с приложением.
• When («когда») описывает набор действий пользователя в данной ситуации.
• Then («тогда») описывает ожидаемое поведение приложения.
Рассмотрим на примере нашего «Конвертера файлов»:
• При условии, что приложение запущено.
• Когда я помещаю во входной каталог файл поддерживаемого размера и формата.
• Тогда файл перемещается в выходной каталог, а текст внутри файла пере- кодируется в UTF-8.
Технологии автоматизации тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 278/301
Такой принцип описания проверок позволяет даже участникам проекта, не имеющим глубокой технической подготовки, принимать участие в разработке и ана- лизе тест-кейсов, а для специалистов по автоматизации упрощается создание кода автоматизированных тест-кейсов, т.к. такая форма является стандартной, единой и при этом предоставляет достаточно информации для написания высокоуровне- вых тест-кейсов. Существуют специальные технические решения (например, Behat,
JBehave, NBehave, Cucumber)
, упрощающие реализацию тестирования под управ- лением поведением.
Преимущества и недостатки тестирования под управлением поведением по- казаны в таблице 3.2.g.
Таблица 3.2.g — Преимущества и недостатки тестирования под управлением пове- дением
Преимущества
Недостатки
• Фокусировка на потребностях конечных пользователей.
• Упрощение сотрудничества между различ- ными специалистами.
• Простота и скорость создания и анализа тест-кейсов (что, в свою очередь, повышает полезный эффект автоматизации и снижает накладные расходы).
• Высокоуровневые поведенческие тест-кейсы пропускают много деталей, а потому могут не обнаружить часть проблем в приложении или не предоставить необходимой для пони- мания обнаруженной проблемы информа- ции.
• В некоторых случаях информации, предо- ставленной в поведенческом тест-кейсе, не- достаточно для его непосредственной авто- матизации.
К классическим технологиям автоматизации тестирования также можно отнести разработку под управлением тестированием (Test-driven Develop- ment, TDD) с её принципом «красный, зелёный, улучшенный» (Red-Green-
Refactor), разработку под управлением поведением (Behavior-driven Devel- opment), модульное тестирование (Unit Testing) и т.д. Но эти технологии уже находятся на границе тестирования и разработки приложений, потому выходят за рамки данной книги.
Автоматизация вне прямых задач тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 279/301
3.3.
Автоматизация вне прямых задач тестирования
На протяжении данного раздела мы рассматривали, как автоматизация мо- жет помочь в создании и выполнении тест-кейсов. Но все те же принципы можно перенести и на остальную работу тестировщика, в которой также бывают длитель- ные и утомительные задачи, рутинные задачи или задачи, требующие предельного внимания, но не связанные с интеллектуальной работой. Всё перечисленное также можно автоматизировать.
Да, это требует технических знаний и первоначальных затрат сил и времени на реализацию, но в перспективе такой подход может экономить до нескольких ча- сов в день. К самым типичным решениям из данной области можно отнести:
• Использование командных файлов для выполнения последовательностей операций — от копирования нескольких файлов из разных каталогов до раз- вёртывания тестового окружения. Даже в рамках многократно рассмотрен- ных примеров по тестированию «Конвертера файлов» запуск приложения че- рез командный файл, в котором указаны все необходимые параметры, из- бавляет от необходимости вводить их каждый раз вручную.
• Генерация и оформление данных с использованием возможностей офисных приложений, баз данных, небольших программ на высокоуровневых языках программирования. Нет картины печальнее, чем тестировщик, руками нуме- рующий три сотни строк в таблице.
• Подготовка и оформление технических разделов для отчётов. Можно тратить часы на скрупулёзное вычитывание журналов работы некоего средства ав- томатизации, а можно один раз написать скрипт, который будет за мгновение готовить документ с аккуратными таблицами и графиками, и останется только запускать этот скрипт и прикреплять результаты его работы к отчёту.
• Управление своим рабочим местом: создание и проверка резервных копий, установка обновлений, очистка дисков от устаревших данных и т.д. и т.п. Ком- пьютер всё это может (и должен!) делать сам, без участия человека.
• Сортировка и обработка почты. Даже раскладывание входящей корреспон- денции по подпапкам гарантированно занимает у вас несколько минут в день.
Если предположить, что настройка специальных правил в вашем почтовом клиенте сэкономит вам полчаса в неделю, за год экономия составит при- мерно сутки.
• Виртуализация как способ избавления от необходимости каждый раз уста- навливать и настраивать необходимый набор программ. Если у вас есть не- сколько заранее подготовленных виртуальных машин, их запуск займёт се- кунды. А в случае необходимости устранения сбоев разворачивание вирту- альной машины из резервной копии заменяет весь процесс установки и настройки с нуля операционной системы и всего необходимого программного обеспечения.
Иными словами, автоматизация объективно облегчает жизнь любого ИТ-спе- циалиста, а также расширяет его кругозор, технические навыки и способствует про- фессиональному росту.