ВВЕДЕНИЕ 4
1 Понятие тестирования 7
1.2 Уровни тестирования 8
1.2.1 Модульное тестирование. 8
1.2.2 Интеграционное тестирование. 8
1.2.3 Системное тестирование. 9
1.3 Виды тестирования 10
1.3.1 Функциональное тестирование 10
1.3.2 Конфигурационное тестирование. 11
1.3.3 Нагрузочное тестирование. 11
1.3.4 Тестирование usability. 11
1.4 Автоматизированное тестирование 12
1.4.1 Модели создания автоматизированных тестов 14
1.5 Вывод 15
2 Обзор существующих систем автоматизированного тестирования 16
2.1 Selenium 16
2.2 HP QuickTest Professional 18
2.3 IBM Rational Functional Tester 20
3 Сравнение существующих систем 22
4 Разработка системы автоматизированного тестирования 23
4.1 Формирование требований к системе 23
4.2 Выбор основного языка программирования 24
4.3 Выбор технологий и спецификации 26
4.3.2 Selenium WebDriver 28
4.3.3 Библиотека тестирования jUnit 28
4.3.4 Система автоматической сборки проекта Maven 29
4.4 Разработанная архитектура 30
5 Реализация автоматизированной системы тестирования 31
5.1 Основные классы проекта 31
5.1.1 Before 31
5.1.2 Test 31
5.1.3 After 31
5.2 Описание объектов веб-страницы 32
5.2.1 XPATH 33
5.2.2 CSS 34
5.3 Дополнительные классы для WebDriver 35
5.4 Система генерации отчетов по проведенным тестам 37
5.5 Классы сбора дополнительной информации 39
5.6 Файлы конфигурации 40
6 Структура проекта 41
ЗАКЛЮЧЕНИЕ 43
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 44
ПРИЛОЖЕНИЕ А 46
ПРИЛОЖЕНИЕ Б 48
Создание собственных сайтов и веб-сервисов играет существенную роль в большинстве сфер бизнеса. Более того, бизнес модель множества компаний, таких как Яндекс, Google, Facebook заключается исключительно в получении прибыли от качественных интернет-сервисов, рекламы, платного контента, пожертвований пользователей и т. п.
Веб-приложения могут приносить огромную прибыль, по этому конкуренция в этой сфере очень высока. Даже небольшие ошибки, допущенные при разработке, могут повлиять на выбор пользователя относительно того, какой из конкурирующих сервисов ему предпочесть. Поэтому, как и во многих других областях, тестирование играет очень важную роль и в процессе создания веб-приложений. Разработка веб-приложения подразумевает под собой решение множества задач из множества разных областей, таких как: работа с большими объемами данных, построение архитектуры, реализация функционала, сетевая безопасность, дизайн и прочее.
Существует два основных вида тестирования: ручное и автоматизированное. В работе с первым видом тестирования инженер по качеству открывает в браузере проверяемую страницу и выполняет действия пользователя сайта. От итерации к итерации тестировщик проверяет разрабатываемое ПО на соответствие заявленным требованиям, подчинению законам логики, а так же оценивает дружелюбность интерфейса.
Каждая, независимая от других, последовательность действий тестировщика, выполняемых им в процессе проверок, называется тест кейсом или тестовым сценарием.
Автоматизированное тестирование состоит в написании автотестов - программ, направленных на выполнение заложенных в них тестовых сценариев. Таким образом, запустив тест, тестировщик может по истечению короткого периода времени получить информацию о том, были ли обнаружены в ходе выполнения данного сценария ошибки или тест пройден успешно. В случае положительного результата необходимость в ручном выполнении тест кейса отпадает.
Для разработки и запуска автотестов используются специальные системы автоматизированного тестирования.
Главной идеей автоматизированного тестирования является полная замена человеческого труда. Программист единожды создает программу, которая проверяет все, подготовленные заранее, тестовые сценарии. Далее, сценарии только поддерживаются в актуальном рабочем состоянии. Создание таких про-грамм позволяет минимизировать процесс ручного тестирования в жизненном цикла разрабатываемого ПО. Хочется отметить, что данный подход экономит время сотрудников отдела по качеству, а также заметно ускоряет работу группы разработчиков, и весь процесс разработки в целом.
Минусом автоматизации тестирования является то, что она применима только в отношении работы с длительными проектами. Создание программы тестирования отнимает не мало времени, и тратить это время для маленьких проектов просто бессмысленно. Как правило, автоматизированное тестирование эффективно применяется на относительно простых сценариях и проверках. Автоматизация сложных многошаговых сценариев может занять неприемлемо много времени ввиду непредвиденных нюансов или технических проблем. Также много времени может уйти на поддержку тестов при необходимости час¬то вносить в них изменения вслед за изменениями в тестируемой функциональности.
Не смотря на нюансы автоматизированного тестирования, данный вид не сдает позиции, и компании внедряют его в свой рабочий процесс. Как правило, автоматизированное тестирование используется в паре с написанием unit-тестов, которые проверяют разрабатываемый функционал на начальных этапах жизненного цикла. Далее, в конце итераций, применяется автоматизированное тестирование, чтобы охватить полностью весь функционал.
Целью создания автотестов является улучшение процесса достижения качества разрабатываемого продукта, по средствам автоматизированного тестирования. За счет сокращения времени тестирования тривиальных задач, которое может выполнить программа, инженер по качеству может охватить большую функциональность, и более глубоко проверить логику разработанного ПО.
В итоге получился мощный инструмент для автоматизации процесса функционального тестирования, удовлетворяющий всем заявленным требованиям и обладающий достаточным уровнем модульности для дальнейшего развития и расширения.
На данный момент разработанная система применяется для тестирования некоторых проектов в компании Aspirity и зарекомендовала себя как мощный и полезный инструмент для создания и проведения автоматизированного функционального тестирования.
В перспективе развития проекта планируется доделать интеграцию с билд сервером Jenkins для реализации непрерывной интеграции и тестирования на всех стадиях разработки проекта.
Так же планируется реализация взаимодействия системы с базами данных с помощью библиотеки JDBC.
1 Мифы об автоматизированном тестировании [Электронный ресурс] — Режим доступа: http://software-testing.ru/library/around-testing/processes/462- automation-myths
2 Тестирование программного обеспечения. Основные понятия и определения. [Электронный ресурс] — Режим доступа: http://www.protesting.ru/testing/
3 Иванова, В. О. История развития методологии тестирования при разработке программного обеспечения : реферат / В. О. Иванова. — ИТМО, 2009 — 19 с.
4 Дастин, Э. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация : науч. изд. / Э. Дастин, Д. Рэшка, Д. Пол. — Москва : ЛОРИ, 2003 — 589 с.
5 Автоматизированное тестирование [Электронный ресурс] — Режим доступа: https: //en.wikipedia. org/wiki/Test_automation
6 Савин, Р. Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах. Р. Савин. — Москва : Дело, 2007. — 312 с.
7 Selenium [Электронный ресурс] — Режим доступа: https://en.wikipedia.org/wiki/Selenium_(software)
8 Java [Электронный ресурс] — Режим доступа:
https://ru.wikipedia.org/wiki/Java
9 BDD с помощью Cucumber [Электронный ресурс] — Режим доступа: https: //habrahabr.ru/po st/62958/
10 Cucumber [Электронный ресурс] — Режим доступа: http://cucumber.io
11 Apache Maven [Электронный ресурс] — Режим доступа: https://ru.wikipedia.org/wiki/Apache_Maven
12 jUnit [Электронный ресурс] — Режим доступа:
https://ru.wikipedia.org/wiki/JUnit
13 Selenium [Электронный ресурс] — Режим доступа: selenium2.ru
14 HP QuickTest Professional [Электронный ресурс] — Режим доступа: https://ru.wikipedia.org/wiki/HP_QuickTest_Professional
15 IBM Rational Functional Tester [Электронный ресурс] — Режим доступа https: //en.wikipedia. org/wiki/Rational_F unctional_T ester
16 Стандарт организации «Система менеджмента качества. Общие требования к построению, изложению и оформлению документов учебной деятельности» от 2014 г., № СТО 4.2-07-2014
17 Функциональное тестирование [Электронный ресурс] — Режим доступа: http://www.protesting.ru/testing/types/functional.html
18 Приемочное тестирование или Приемо-сдаточное испытание (Acceptance Testing) [Электронный ресурс] — Режим доступа: http://www.protesting.ru/testing/levels/acceptance.html
19 XPATH [Электронный ресурс] — Режим доступа: https: //ru.wikipedia. org/wiki/XPath
20 CSS [Электронный ресурс] — Режим доступа: http s: //ru.wikipedia. org/wiki/CSS