Диплом: Автоматизация регрессионного тестирования с использованием языка программирования Python

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
2
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ ........................................................................................................................ 3
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПРОЦЕССА ТЕСТИРОВАНИЯ .............. 8
1.1 Определение понятия тестирования ПО ....................................................... 8
1.2 Классификация тестирования ...................................................................... 11
1.3 Процесс тестирования ................................................................................... 22
1.3.1 Разработка тест-кейсов ............................................................................... 23
1.3.2 Выполнение тест-кейсов ............................................................................ 26
1.3.3 Анализ результатов тестирования ............................................................. 27
ГЛАВА 2. АНАЛИЗ И ОПИСАНИЕ ПРОЦЕССА АВТОМАТИЗАЦИИ
ТЕСТИРОВАНИЯ ........................................................................................................... 29
2.1 Описание процесса автоматизации тестирования ...................................... 29
2.2 Критерии эффективности процесса автоматизированного тестирования 39
2.3 Описание компании «ЭКЗАКТПРО» ........................................................... 43
2.4 Анализ экономической целесообразности внедрения автоматизации
тестирования ......................................................................................................... 47
ГЛАВА 3. АВТОМАТИЗАЦИЯ ПРОЦЕССА ТЕСТИРОВАНИЯ ............................. 51
3.1 Протоколы передачи данных FIX, ITCH. Специфика тестирования
рыночных данных ................................................................................................ 51
3.2 Пример реализации автоматизированного тестирования применительно к
функциональному тестированию рыночных данных ....................................... 55
ЗАКЛЮЧЕНИЕ ................................................................................................................ 65
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ........................................................ 68
ПРИЛОЖЕНИЯ ............................................................................................................... 74
3
ВВЕДЕНИЕ
Тестирование программных продуктов (ПО) один из этапов разработки
программного обеспечения, в большинстве случаев, считающийся не самым
приоритетным для компании. Лишь в последние годы тестированию
программных продуктов стало уделяться должное внимание. Этому
способствует, как и повышенные требования к ПО, в связи с большой
конкуренцией на рынке, так и усложнение самих программных продуктов.
Усиление конкуренции между производителями программного обеспечения
стало требовать повышенного внимания к качеству выпускаемого продукта.
Поскольку ассортимент продукции стал сильно расширяться, что повлекло за
собой снижение цена на программные продукты, потребители ПО начали
обращать все больше внимания на качество программного обеспечения. В
настоящее все больше областей нашей жизни становятся подвержены
компьютеризации. Не считая того, что компьютеры, используются в
повседневной жизни для развлекательных целей, они все больше становятся
необходимы в тех сферах, когда речь заходит о гораздо более серьезных
областях нашей жизни, таких как медицина, транспорт, строительство,
безопасность и многие другие. Таким образом, мы приходим к тому, что
вопрос о качестве программного обеспечения становится все более
актуальным, поскольку это не только вопрос личного комфорта, но и нашей
безопасности.
Осознавая вышесказанное, все большое количество компаний по всему
миру начинают инвестировать свои средства в тестирование программного
обеспечения - начинают создавать отделы контроля качества и применять
современные технологии, которые могут позволить компаниям улучшить
4
качество своих программных продуктов, и за счет этого получить
конкурентное преимущество.
В последние года тестирование программного обеспечения
становиться неотъемлемой частью любого производства программного
обеспечения. Процесс тестирования необходим для того, чтобы заказчик мог
понять, работает ли продукт, как ожидается и соответствует ли он
предъявляемым к нему требованиям. Своевременное выявление и
исправление дефектов имеет весомое значение при разработке программного
обеспечения, поскольку это позволяет нивелировать риски и при этом
происходит кардинальное снижение затрат на сам процесс разработки
программного обеспечения. Используя методики тестирования, компании
имеют возможность поддерживать высокое качество своих продуктов. В
большинстве случаев процесс тестирования программного обеспечения
может быть автоматизирован, что может положительно отразиться на
скорости тестирования и качестве продукта, это позволяет компании ещё
больше снизить издержки и, при этом, повысить качество продукта.
На данный момент, в сфере информационных технологий, большое
внимание уделяется процессам автоматизации тестирования, которые
способны снизить издержки и ускорить процесс тестирования.
Автоматическое тестирование уже давно является не инновацией, а
становиться, отчасти, стандартом в процессе разработки корпоративного
программного обеспечения. На данный момент существует достаточно
большое количество информации по тематике - тестирование программного
обеспечения, начиная с общих, теоретических понятий в сфере тестирования,
и заканчивая глубоко научными исследованиями какой-либо узкой
направленности.
5
Объектом исследования, в данной работе, выступает процесс
автоматизации тестирования.
Предметом исследования выступает автоматизация регрессионного
тестирования с использованием языка программирования Python, на примере
тестирования рыночных данных фондовой биржи
Целью написания данной работы стал анализ эффективности
внедрения и использования автоматизированного тестирования в компании
профессионально занимающейся тестированием программного обеспечения.
Для достижения поставленной цели были определены следующие задачи:
- выявить теоретические основы тестирования, классификация и
описание его видов.
- выявить критерии эффективности процесса автоматизации
тестирования.
- дать характеристику деятельности компании ООО «ЭКЗАКТПРО».
- рассчитать экономическую целесообразность внедрения
автоматизации регрессионного тестирования.
- разработать методику внедрения в рабочий процесс
автоматизированных тестов.
Для достижения поставленных целей были использованы
теоретические методы исследования, такие как анализ, для решения задач, со
сбором, анализом и описанием процессов тестирования, их классификации, и
подробного разбора и описания видов тестирования. При выполнении
практической части исследования приходилось прибегать к таким
эмпирическим методам, как общение, для получения данных, требуемых для
расчета экономической целесообразности внедрения процессов авто-
тестирования в компании, и эксперимент, который дал возможность на
6
практике проверить эффективность внедряемого процесса автоматизации
тестирования.
При проведении исследования была использована литература,
охватывающая разнообразные направления тестирования. Для решения
теоретических задач, таких как исследование процессов тестирования и его
видов, применялись фундаментальные, классические для области
тестирования книги, такие как «Искусство тестирования программ» автора
Гленфорд Майерс, «Testing Computer Software» автора Cem Kaner. Для
решения задач, связанных с автоматизацией тестирования, проводилось
изучение литературы более узкой направленности, такой как «Непрерывное
развертывание ПО. Автоматизация процессов сборки, тестирования и
внедрения новых версий программ» Джез Хамбл. При изучении аспектов
программирования автоматизированных тестов использовалась книги: Марк
Саммерфилд «Python на практике», Алан Бьюлли «Изучаем SQL» и
«Автоматизация рутинных задач с помощью Python: практическое
руководство» автора Эла Свейгарта. Информация о рынке ценных буман и
функционировании биржевых систем бралась из книг Джона Халл
«Опционы, фьючерсы и другие производные финансовые инструменты».
Структура работы, целиком и полностью, обусловлена поставленными
задачами и целью исследования. Работа состоит из введения, трех глав и
заключения.
Во введении рассматривается актуальность работы, определены цель,
задачи и методы исследования, приведены характеристики основных
источников информации.
В первой главе рассматривается основные понятия тестирования
программного обеспечения, его классификация, рассматриваются базовые
методологии тестирования. В этой же главе затронут процесс тестирования и
7
сделан акцент на тех моментах, которые могут потребовать уделить более
пристальное внимание при выполнении тестирования. Во второй главе
происходит анализ критериев и показателей эффективности тестирования,
раскрывается понятие автоматизированного тестирования, приведены
примеры случаев, когда автоматизированное тестирование можно считать
целесообразным, и произведен анализ достоинств и недостатков
автоматизированного тестирования. Третья глава посвящена практической
части автоматизированных тестов. В ней рассматривается экономическая
целесообразность внедрения автоматизированного тестирования на примере
компании «ЭКЗАКТПРО», обосновывается выбор инструментария
реализации, приводятся примеры написанных автоматизированных тестов.
В заключении приводятся итоги исследования и окончательных
выводов по теме автоматизации регрессионного тестирования с
использованием языка программирования python, сформированных в
процессе проведения данного исследования.
8
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПРОЦЕССА
ТЕСТИРОВАНИЯ
1.1 Определение понятия тестирования ПО
Качество программного обеспечения (Software Quality) это
способность программного продукта, при заданных условиях, удовлетворять
установленным и предполагаемым потребностям. [10]
Качество программного продукта определяется набором свойств,
характеризующих, в какой степени продукт «хорош» с точки зрения
заинтересованных сторон, к которым могут относиться заказчик продукта,
спонсор, разработчики и тестировщики продукта, конечный пользователь.
Каждая из сторон может иметь различное представление о продукте, и по-
разному оценивать, насколько продукт хорош или плох. Из этого следует,
что процесс обеспечения качества программного обеспечения становиться
задачей, в которой следует определить круг заинтересованных лиц, их
критерии качества, и только затем найти оптимальное решение,
удовлетворяющее критериям всех сторон.
Процесс тестирования ПО - это фактически процесс исследования
программного обеспечения, и только после этого, испытания. [44] Данный
процесс имеет своей целью верификацию реального поведения программы и
её ожидаемого поведения на конечном наборе тестов, выбранных
определенным образом. В более широком понимании, тестирование это
один из видов контроля качества, консолидирующий в себя деятельность по
планированию работ (Test Management), проектированию тестов (Test
Design), выполнению тестирования (Test Execution) и анализу полученных
результатов (Test Analysis).[7]
9
Следует пояснить, что тестирование, фактически является самым
устоявшимся из способов обеспечения качества разработки ПО. С
практической точки зрения, тестирование ПО заключается в выполнении
программы на определенном множестве исходных данных и последующей
сверке полученных результатов с эталонными (предварительно известными
данными). Тестирование проводится с целью установить корректность
свойств, характеристик и поведения приложения указанным заказчиком
свойствам.
С классической точки зрения, проектирование системы делится на три
основных стадии: стадия дизайн программного обеспечения стадия
разработки кода стадия тестирование ПО. С этой точки зрения,
тестирование имеет достаточно большой вклад в базовую трудоемкость
разработки программного обеспечения. Широкую известность получила
оценка распределения трудоемкости между стадиями создания программного
продукта: 40%-20%-40%. Из данной пропорции вытекает, что наибольшую
эффективность тестирование программного обеспечения может принести на
1 и 3 стадии разработки программного обеспечения. Следуя
вышесказанному, основные вложения в автоматизацию тестирования следует
осуществлять, прежде всего, на этих стадиях.
10
Рисунок 1 - Схема тестирования программного обеспечения
Согласно стандартному процессу тестирования, тестировщик получает
программное обеспечение, которое ему следует протестировать и
требования, которым должно соответствовать данное ПО. Наблюдая за ПО в
определенных условиях, тестировщик получает сведения о том,
соответствует ли программное обеспечение своим требованиям. Полученные
данные используется для исправления дефектов в продукте, либо для
изменения требований разрабатываемому продукту.
Тест (проверка) включает в себя совокупность шагов, условий и
параметров, которые необходимы для проверки программы на соответствие
определенным требованиям. [10] Тесты могут отличаться своей
длительностью, как пример короткий тест функциональности или тест на
производительность, проверяющий работоспособность системы при
продолжительной нагрузке.
Мы можем предположить, что в процессе тестирования программного
обеспечения тестировщик преследует две цели. Первая цель - управление
11
выполнением программы, а также создание искусственных ситуаций, в
которых проверяется какое-либо определенное поведения программы.
Вторая задача - анализ поведения программы в различных созданных
ситуациях, и сравнение фактического (полученного) результата с тем, что
ожидается.
Также стоит отметить, что в задачи современного тестирования, входит
не только обнаружение ошибок программного обеспечения, но и выявление
причин, по которым возникают данные ошибки. Такой подход к
тестированию позволит разработчикам увеличить эффективность своей
работы, устраняя обнаруженные дефекты быстро и своевременно.
В данном параграфе было определено понятие тестирования ПО,
озвучены основные идеи и принципы тестирования программного
обеспечения.
1.2 Классификация тестирования
В процессе тестирования программного обеспечения применяется
большое количество различных видов тестов. (см. приложение А) Следует
признать, что методология тестирования программного обеспечения все ещё
находится в стадии развития. Что приводит к тому, что единой устоявшейся
классификации видов тестирования фактически не существует. На данный
момент есть общепринятая классификация. Согласно этой классификации,
можно выделить несколько видов тестирования. [44][19][4]
1. По объекту тестирования.
Функциональное тестирование (functional testing). Функциональное
тестирование является самым часто используемым видом
тестирования. Задачей данного тестирования является установить

Смотрите также:

«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран
Work-life balance подход в управлении рабочим временем молодых сотрудников (на примере ООО «МГТ-сервис»)
Автоматизация управления проектами студии ООО «Альт айти солюшенс»
Автоматизация учета рабочего времени сотрудников компании ООО "Эпам Системз"
Автоматизация учёта ремонта компьютерного оборудования в компании «ГАРАНТ-СЕРВИС»
Автоматизация учета товара на складе для фирмы Эльдорадо