Правительство Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

Национальный исследовательский университет

«Высшая школа экономики»

Факультет информатики, математики и компьютерных наук

Кафедра прикладной математики и информатики

Автоматизация регрессионного тестирования

Выпускная квалификационная работа по направлению

01.03.02 «Прикладная математика и информатика»

студента группы № 11ПМИ

Рецензент

к. э.н., доцент кафедры МЕРА

Научный руководитель

преподаватель кафедры ПМИ

Нижний Новгород

2015

Оглавление

Введение. 2

Тестирование программного обеспечения. 3

Что такое регрессионное тестирование. 3

Автоматизированное тестирование. 4

Постановка задачи. 5

Практическая часть. 6

Ход работы.. 7

Структура приложения. 8

Процесс регрессионного тестирования. 9

Ограничение ресурсов. 10

Ручное регрессионное тестирование проверки соответствия. 10

Cucumber-инструмент. 14

Общие сведения. 14

История Cucumber 15

Структура Cucumber 16

Конфигурирование Cucumber 18

Файл с расширением. feаture. 19

Файл с расширением. rb. 20

Файл конфигурации. 21

Настраиваемые аргументы инструмента Cucumber 22

Алгоритм работы Cucumber по определению статуса теста. 24

Пояснение статусов тестов. 25

Инструкция по использования тестового сценария. 27

Анализ полученных результатов. 28

Применяемые метрики. 28

Количественный анализ. 30

Качественный анализ. 33

Заключение. 38

Список литературы.. 40

НЕ нашли? Не то? Что вы ищете?

Приложение. 42

Сценарий .rb файл (Приложение 1) 42

Instruction for Performing of Automotive Regression Testing (Приложение 2) 44

Введение

Тестирование программного обеспечения

Тестирование программного обеспечения является неотъемлемой частью процесса создания программного продукта. При применении любой модели разработки программного обеспечения роль тестирования трудно переоценить. Особенно высока значимость верификации продукта при использовании итеративной методологии разработки программного обеспечения (ПО), которая включает в себя все этапы жизненного цикла, вплоть до внедрения разрабатываемого ПО и получения реакции пользователей.

Некачественное тестирование может спровоцировать резко отрицательные отзывы о продукте и впоследствии сформировать негативное впечатление от его использования.

Понимание важности процесса тестирования приводит к возникновению тенденций, направленных на применение промышленных способов проверки качества программного обеспечения. Наиболее важным направлением здесь является внедрение различных систем автоматизированного тестирования.

Автоматические тесты давно стали не инновацией, а в некотором роде стандартом при разработке корпоративного ПО. Их использование обеспечивает более высокое качество кода и, соответственно, программного обеспечения в целом, помогая заметно повысить надежность системы.

Что такое регрессионное тестирование

Появление первых компьютеров отразилось на программном обеспечении. Программирование, в частности, невозможно без различного рода ошибок, совершенных под влиянием человеческого или других немаловажных факторов. Если процесс отладки программного продукта не был значительной проблемой еще два десятилетия назад в виду его примитивности, то сейчас ПО – это сложнейшая система, которая постоянно подвергается изменениям. Несмотря на то, что изначально программа отвечает большинству заявленным в спецификации требованиям, имеют место модификации, внесенные в работу продукта для корректировки обнаруженных дефектов на этапе его тестирования. В результате, такие изменения могут привести к регрессии функциональной части приложения. Таким образом, постоянное тестирование необходимо для того, чтобы поддерживать высокий уровень качества ПО.

Регрессионное тестирование является исключительно ресурсоемкой и дорогой (в рамках бизнес-проекта) деятельностью. Причина заключается в том, что регрессионное тестирование должно быть выполнено даже после незначительных изменений в коде программы. Таким образом, количество выполняемых тестов постоянно растет.

Автоматизированное тестирование

Автоматизированное тестирование программного обеспечения – один из вариантов верификации продукта на стадии его разработки. Автоматизация подразумевает под собой использование определенных программных средств для выполнения тестов и отслеживания результатов тестирования, что позволяет значительно упростить процесс тестирования и сократить время на его проведение.

Как правило, автоматизирование тестирования влияет на весь бизнес-процесс, является ресурсозатратной деятельностью как в финансовом отношении, так и в плане временных затрат на разработку тестовых сценариев с их дальнейшей поддержкой. Однако при внедрении автотестов есть положительные моменты. Во-первых, исключен человеческий фактор, поскольку однажды написанный скрипт будет выполняться однообразно. Таким образом, тестировщик не сможет упустить шаги в тестах и ничего не напутает в результатах. Во-вторых, предусмотрено хранение результатов тестирования, что весьма полезно именно для регрессионного тестирования. В-третьих, автоматические тесты частично выполняются независимо от человека, т. е. без его вмешательства. Если речь идет о регрессионном тестировании, которое является лидером по ресурсоемкости, во время выполнения тестов инженер может заниматься какой-либо другой немаловажной деятельностью.

Принятие решения о внедрении автоматизации тестирования должно происходить после анализа всех ее нюансов, достоинств и недостатков.

Постановка задачи

В проекте несколько раз в течение жизненного цикла тестируемого продукта проводится ручное регрессионное тестирование такой функциональности, как проверка соответствия конфигураций их идеальным состояниям. Эта деятельность постепенно стала отнимать значительное количество человеческих и временных ресурсов. В то же время, наряду с регрессионным тестированием, в проекте выполняются и другие виды тестирования, которые на данный момент уже имеют реализацию в качестве автоматических тестов. Для выполнения этой задачи используется инструмент для автоматического тестирования Cucumber.

Передо мной были поставлены задачи применения вышеуказанного приложения для автоматизации регрессионного тестирования элементов проверки соответствия в текущем проекте, анализа полученных результатов и оценки целесообразности перехода от ручного регрессионного тестирования к автоматическому.

Практическая часть

Ход работы

Одной из основных функций тестируемого программного обеспечения является возможность построения конфигураций для настройки LTE-сетей. Конфигурации могут отличаться своим предназначением, объемом и глубиной. Для того, чтобы конфигурации отвечали требованиям, не содержали лишних объектов или, наоборот, включали в себя все необходимые элементы, ПО предусматривает проверку соответствия построенных конфигураций их оракулам (эталонам).

Полная проверка соответствия основана на проверке отдельных элементов, которые отвечают за различные типы и формы конфигураций. Таких элементов в тестируемом продукте может быть несколько сотен на одну версию. Каждый элемент имеет определенную постоянную структуру: название, область применения, содержание сообщений, описание элемента, шаги для корректировки конфигурации, код для ее построения. При запуске проверки соответствия на корневом элементе, который в свою очередь также является частью структуры, происходит обработка и отображение сообщений, соответствующих данному элементу.

Задача тестировщика в этом случае заключается в максимально возможном покрытии структуры элемента проверки соответствия, анализе полученных результатов, определении его соответствия ожидаемому поведению. При этом, в случае регрессионных тестов, нет необходимости в построении новых или изменении старых конфигураций, происходит мониторинг текущего состояния программного продукта на возможное косвенное влияние со стороны введения новых функций или их изменения, исправления найденных ранее дефектов.

Мониторинг текущего состояния программного продукта осуществлялся с помощью монотонных действий со стороны тестировщика с данными большого объема, поэтому введение автоматизации этой деятельности видится перспективной заменой ручного рутинного труда.

Для принятия решения о целесообразности автоматизации тестирования элементов соответствия в текущем проекте мною были определены для выполнения следующие действия:

·  исследование возможности автоматизации тестирования элементов проверки соответствия тестируемого программного обеспечения,

·  автоматизация тестирования элементов проверки соответствия тестируемого программного обеспечения,

·  запуск автоматических тестов для кампании элементов проверки соответствия ранее протестированных вручную,

·  сравнение и анализ полученных результатов,

·  выводы по целесообразности/нецелесообразности автоматизации тестирования элементов проверки соответствия.

Тестируемое программное обеспечение было исследовано в течение нескольких месяцев для написания текущей работы. Как правило, календарный год – время разработки и тестирования одной версии продукта, затем продукт уходит к пользователям. За этот период, согласно итерационной модели разработки ПО, планируется выпуск 20 итераций тестируемого программного продукта. Каждая итерация в какой-либо мере отличается от предыдущей: имеет обновленный функционал либо корректировку дефектов, найденных на предыдущем этапе жизненного цикла. Порой даже самые незначительные изменения могу повлечь за собой регрессию. Регрессионные тесты выполняются дважды за версию продукта.

Структура приложения

Тестируемый программный продукт работает с телекоммуникационными сетями нового поколения. Имеет следующие функции: конфигурация, настройка, изменение и оптимизация параметров сетей беспроводного доступа.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5