Автоматизация тестирования и мониторинга удаленных серверов с VPN-сервисом
В сравнении с традиционными методами ручного тестирования, автоматизированное тестирование позволяет существенно сократить расходы компаний, занимающихся разработкой программного обеспечения. Поэтому технологии автоматизации тестирования набирают всё большую популярность среди софтверных компаний.
Целью данной работы является автоматизация тестирования и мониторинга VPN-сервиса посредством разработки фреймворка для тестирования и мониторинга удалённых серверов на языке программирования Python, а также реализация тестов на языке программирования Java для тестирования пользовательского интерфейса мобильного Android-приложения для создания VPN-соединения.
Введение …………………………………………………………………………………………… 14
1 Анализ предметной области и постановка задач ……………………………….. 16
1.1 Описание предметной области ………………………………………………….. 16
1.2 Описание разрабатываемого компанией проекта …………………………. 16
1.3 Обоснование разработки в рамках магистерской диссертации ………. 19
1.3.1 Тестирование и мониторинг удалённых серверов …………………… 20
1.3.2 Тестирование SDK-приложения …………………………………………… 21
1.4 Формирование требований к разработке …………………………………….. 21
1.4.1 Тестирование и мониторинг удалённых серверов …………………… 21
1.4.2 Тестирование SDK-приложения …………………………………………… 22
1.5 Цель и задачи магистерской диссертации …………………………………… 23
2 Тестирование программного обеспечения………………………………………… 24
2.1 Понятие тестирования ……………………………………………………………… 24
2.2 Обеспечение качества………………………………………………………………. 25
2.3 Классификация тестирования ……………………………………………………. 27
2.3.1 Уровни тестирования ………………………………………………………….. 27
2.3.2 Виды тестирования …………………………………………………………….. 28
2.4 Автоматизация тестирования ……………………………………………………. 30
2.4.1 Понятие автоматизированного тестирования …………………………. 30
2.4.2 Применение автоматизированного тестирования ……………………. 32
2.4.3 Пирамида автоматизации тестирования ………………………………… 33
2.5 Инструменты для реализации автоматизированного тестирования … 35
2.5.1 Тестирование и мониторинг удалённых серверов …………………… 35
2.5.2 Тестирование SDK-приложения …………………………………………… 36
3 Особенности реализации ……………………………………………………………….. 42
3.1 Обоснование выбора инструментов и языков программирования ….. 42
3.1.1 Тестирование и мониторинг удалённых серверов …………………… 42
3.1.2 Тестирование SDK-приложения …………………………………………… 43
3.2 Реализация фреймворка для тестирования и мониторинга удалённых
серверов…………………………………………………………………………………………. 44
3.2.1 Параметризация запуска тестов в CircleCI …………………………….. 45
3.2.2 Тестовый сценарий …………………………………………………………….. 46
3.2.3 Параллельный запуск тестов на всех серверах ……………………….. 48
3.2.4 Обработка результатов тестирования ……………………………………. 49
3.2.5 Непрерывная интеграция …………………………………………………….. 51
3.2.6 Страница с результатами тестов в Grafana …………………………….. 52
3.3 Реализация тестирования пользовательского интерфейса SDK-
приложения ……………………………………………………………………………………. 53
3.3.1 Паттерн Testing Robots как аналог Page Object ……………………….. 55
3.3.2 Реализация класса MainRobot ………………………………………………. 56
3.3.3 Реализация тестов ………………………………………………………………. 59
3.3.4 Запуск тестов в Firebase Test Lab ………………………………………….. 60
3.4 Результаты ……………………………………………………………………………… 62
4 Финансовый менеджмент, ресурсоэффективность и ресурсосбережение 64
4.1 Введение ………………………………………………………………………………… 64
4.2 Предпроектный анализ …………………………………………………………….. 65
4.2.1 Потенциальные потребители результатов проекта ………………….. 65
4.2.2 Анализ конкурентных технических решений …………………………. 67
4.2.3 QuaD-анализ………………………………………………………………………. 69
4.2.4 Диаграмма Исикавы……………………………………………………………. 70
4.2.5 SWOT-анализ …………………………………………………………………….. 71
4.3 Инициация проекта………………………………………………………………….. 72
4.3.1 Цели и результат проекта…………………………………………………….. 73
4.3.2 Организационная структура проекта …………………………………….. 74
4.4 Определение возможных альтернатив разработки ……………………….. 74
4.5 Планирование научно-исследовательских работ………………………….. 75
4.5.1 Ограничения и допущения…………………………………………………… 75
4.5.2 Структура работ в рамках проекта………………………………………… 75
4.5.3 Определение трудоёмкости выполнения работ ………………………. 76
4.5.4 Бюджет научно-технического исследования ………………………….. 79
4.6 Определение ресурсной (ресурсосберегающей), финансовой,
бюджетной, социальной и экономической эффективности исследования .. 82
5 Социальная ответственность ………………………………………………………….. 85
5.1 Введение ………………………………………………………………………………… 85
5.2 Производственная безопасность………………………………………………… 85
5.2.1 Отклонение показателей микроклимата в помещении …………….. 86
5.2.2 Повышенный уровень шума на рабочем месте……………………….. 87
5.2.3 Недостаточная освещенность рабочей зоны …………………………… 88
5.2.4 Повышенный уровень электромагнитных полей …………………….. 88
5.2.5 Электрический ток……………………………………………………………… 89
5.3 Экологическая безопасность …………………………………………………….. 90
5.4 Безопасность в чрезвычайных ситуациях, общие правила поведения в
чрезвычайных ситуациях………………………………………………………………….. 90
5.5 Правовые и организационные вопросы обеспечения безопасности … 92
5.5.1 Правовые нормы трудового законодательства ……………………….. 92
5.5.2 Требования к организации и оборудованию рабочих мест……….. 92
Заключение ……………………………………………………………………………………….. 94
Список используемых источников ……………………………………………………….. 95
Приложение А …………………………………………………………………………………… 99
А1 Test automation ………………………………………………………………………. 100
А1.1 The meaning of test automation ……………………………………………….. 100
А2.1 The use of test automation ………………………………………………………. 101
А3.1 Automation testing pyramid ……………………………………………………. 102
А2 Test automation tools ……………………………………………………………….. 103
А1.2 Testing and monitoring of remote servers ………………………………….. 103
А2.2 Testing of SDK application …………………………………………………….. 104
References …………………………………………………………………………………….. 109
В настоящее время систематизированное тестирование —
неотъемлемый процесс в промышленной разработке ПО. Задача обеспечения
качества выпускаемой продукции является одной из наиболее важных в
индустрии информационных технологий.
В сравнении с традиционными методами ручного тестирования,
автоматизированное тестирование позволяет существенно сократить расходы
компаний, занимающихся разработкой ПО, путём экономии времени и
ресурсов, затрачиваемых на процесс тестирования, а также повысить качество
выпускаемого продукта [1]. Поэтому технологии автоматизации тестирования
набирают всё большую популярность среди софтверных компаний, что и
определяет актуальность темы магистерской диссертации.
VPN — технология создания безопасного сетевого соединения —
используется многими крупными компаниями и правительственными
органами для обеспечения безопасности внутренней сетевой инфраструктуры.
Кроме того, на сегодняшний день технология VPN популярна и среди рядовых
пользователей интернета в целях получения онлайн-конфиденциальности [2].
Для обеспечения непрерывной и качественной работы крупного VPN-
сервиса необходимо регулярное проведение тестирования как аппаратного
обеспечения, представляющего собой множество распределённых серверов,
так и программного обеспечения, позволяющего установить соответствующее
сетевое соединение. В частности, одной из разновидностей таких приложений
являются клиентские мобильные приложения, позволяющие пользователю
настроить VPN-соединение на своём смартфоне.
Целью данной работы является автоматизация тестирования и
мониторинга VPN-сервиса посредством разработки фреймворка для
тестирования и мониторинга удалённых серверов на языке программирования
Python, а также реализация тестов на языке программирования Java для
тестирования пользовательского интерфейса мобильного Android-
приложения для создания VPN-соединения.
Заказным проектом по разработке и поддержке описываемого VPN-
сервиса занимается компания ООО «Сибэдж». Практическая значимость
результата работы в рамках магистерской диссертации: разработанные
тестовые решения в настоящий момент используются в процессе тестирования
серверов VPN-сервиса и Android-приложения для создания VPN-соединения.
Их внедрение позволило сократить расходы компании на тестирование,
ускорить время разработки и улучшить качество программного продукта.
В процессе исследования был произведён анализ предметной области,
приведено обоснование необходимости реализации автоматизированного
тестирования, выполнен анализ подходов и средств реализации
автоматизированного тестирования.
В результате исследования был выбран подходящий способ реализации
решений для автоматизированного тестирования и мониторинга удалённых
серверов VPN-сервиса и для автоматизированного тестирования
пользовательского интерфейса SDK-приложения.
Для тестирования удалённых серверов VPN-сервиса был разработан
фреймворк на языке программирования Python, объединяющий в себе
параметризацию запуска тестов, реализацию тестовых сценариев, обработку и
экспорт результатов тестирования в систему сбора данных Prometheus. Для
визуализации и мониторинга результатов тестирования по одному из тестовых
сценариев была разработана статистическая страница в системе Grafana. Для
сборки и запуска тестов по расписанию была выполнена интеграция с
системой непрерывной интеграции CircleCI.
Для автоматизации регрессионного тестирования SDK-приложения
были реализованы автоматизированные тесты пользовательского интерфейса
на языке программирования Java. При реализации были использованы такие
инструменты, как Espresso, UI Automator, Barista, JUnit, паттерн
проектирования Testing Robots и сервис Firebase Test Lab.
Реализованные тестовые решения внедрены и используются в
процессах разработки и поддержки VPN-сервиса и сопутствующего
программного обеспечения в компании ООО «Сибэдж».
Автоматизация позволила снизить ресурсозатраты, повысить
эффективность и скорость выполнения процесса тестирования.
1.Новичков А., Панкратов В. Автоматизированное тестирование:
оценка возврата инвестиций и сопутствующие риски. — КомпьютерПресс,
2005. — №11. — С. 47-49.
2.Росляков А. Виртуальные частные сети VPN. Модели и методы
анализа. — LAP Lambert Academic Publishing, 2011. — С. 328.
3.ISTQB Exam Certification [Электронный ресурс]: «ISTQB Exam
Study Material». — Режим доступа: http://istqbexamcertification.com/ (дата
обращения: 01.05.2018).
4.International Organization for Standardization [Электронный ресурс]:
«ISO 9000:2015. Quality management systems — Fundamentals and vocabulary».
— Режим доступа: https://www.iso.org/standard/45481.html (дата обращения:
01.05.2018).
5.International Organization for Standardization [Электронный ресурс]:
«ISO/IEC 25000:2014. Systems and software engineering — Systems and software
Quality Requirements and Evaluation (SQuaRE) — Guide to SQuaRE». — Режим
доступа: https://www.iso.org/standard/64764.html (дата обращения: 02.05.2018).
6.Электронныйфондправовойинормативно-технической
документации [Электронный ресурс]: «ГОСТ Р ИСО/МЭК 12207-2010.
Информационная технология. Системная и программная инженерия.
Процессы жизненного цикла программных средств». — Режим доступа:
http://docs.cntd.ru/document/gost-r-iso-mek-12207-2010(датаобращения:
03.05.2018).
7.International Organization for Standardization [Электронный ресурс]:
«ISO/IEC TR 19759:2015. Software Engineering — Guide to the software
engineeringbodyofknowledge(SWEBOK)».—Режимдоступа:
https://www.iso.org/standard/64764.html (дата обращения: 03.05.2018).
8.Савин Р. tестирование dot com или Пособие по жестокому
обращению с багами в интернет-стартапах. — М.: Издательство «Дело», 2007.
— 312 с.
9.ЛизаКриспин,ДжанетГрегори.Гибкоетестирование:
практическое руководство для тестировщиков ПО и гибких команд. — М.:
«Вильямс», 2010. — 464 с.
10. Про Тестинг [Электронный ресурс]: «Автоматизированное
тестирование программного обеспечения — основные понятия». — Режим
доступа: http://www.protesting.ru/automation/ (дата обращения: 04.05.2018).
11. Куликов С. Тестирование программного обеспечения. Базовый
курс. — Минск: «Четыре четверти», 2015. — 293 с.
12. Майк Кон. Scrum. Гибкая разработка ПО. — М.: «Вильямс», 2011.
— 576 с.
13. SibEDGE. Качественное программное обеспечение [Электронный
ресурс]. — Режим доступа: http://sibedge.com/ru (дата обращения: 20.03.2018).
14. Хабрахабр. Блогкомпании Badoo [Электронный ресурс]:
«Путеводитель по инструментам автотестирования мобильных приложений».
— Режим доступа: https://habr.com/company/badoo/blog/347986/#selendroid
_robotium (дата обращения: 10.03.2018).
15. Appium. Automation for Apps [Электронный ресурс]. — Режим
доступа: http://appium.io/ (дата обращения: 10.03.2018).
16. Calabash.Automatedacceptancetestingformobileapps
[Электронный ресурс]. — Режим доступа: https://calaba.sh/ (дата обращения:
10.03.2018).
17. Android Developers. Test apps on Android [Электронный ресурс]. —
Режим доступа: https://developer.android.com/training/testing/ (дата обращения:
10.03.2018).
18. Анмеш Гандеча. Selenium Testing Tools Cookbook. — Packt
Publishing, 2012. — 326 с.
19. Марк Саммерфилд. Python на практике. — М.: ДМК Пресс, 2014.
— 338 с.
20. CircleCI: Continuous Integration and Delivery [Электронный ресурс].
— Режим доступа: https://circleci.com/docs/2.0/ (дата обращения: 01.02.2018).
21. Python Documentation [Электронный ресурс]: «argparse — Parser
for command-line options, arguments and sub-commands». — Режим доступа:
https://docs.python.org/3/library/argparse.html (дата обращения: 01.02.2018).
22. GitHub [Электронный ресурс]: «ParallelSSH». — Режим доступа:
https://github.com/ParallelSSH/parallel-ssh (дата обращения: 01.02.2018).
23. Prometheus: Monitoring system & time series database [Электронный
ресурс]. — Режим доступа: https://prometheus.io/docs/introduction/overview/
(дата обращения: 01.02.2018).
24. GitHub[Электронныйресурс]:«client_python.Prometheus
instrumentationlibraryforPython applications».—Режимдоступа:
https://github.com/prometheus/client_python(датаобращения: 01.02.2018).
[Электронный ресурс]. —Режимдоступа: https://circleci.com/(дата
обращения: 01.02.2018).
25. Grafana:The open platformfor analyticsandmonitoring
[Электронный ресурс]. — Режим доступа: http://docs.grafana.org/ (дата
обращения: 01.02.2018).
26. Jake Wharton [Электронный ресурс]: «Testing Robots». — Режим
доступа: https://jakewharton.com/testing-robots/ (дата обращения: 05.02.2018).
27. GitHub [Электронный ресурс]: «Barista». — Режим доступа:
https://github.com/SchibstedSpain/Barista (дата обращения: 07.02.2018).
28. JUnit[Электронныйресурс].—Режимдоступа:
https://junit.org/junit4/ (дата обращения: 01.02.2018).
29. Frebase Test Lab [Электронный ресурс]. — Режим доступа:
https://firebase.google.com/docs/test-lab/ (дата обращения: 01.02.2018).
30. Издательство «Открытые системы» [Электронный ресурс]:
«Средстваавтоматизированноготестирования».Режимдоступа:
https://www.osp.ru/os/2009/03/8161608/ (дата обращения: 03.09.2017).
31. IBM [Электронный ресурс]: «Rational Functional Tester». Режим
доступа: https://www.ibm.com/us-en/marketplace/rational-functional-tester (дата
обращения: 03.09.2017).
32. AutoIt [Электронный ресурс]: «AutoIt Scripting Language». Режим
доступа: https://www.autoitscript.com/site/autoit/ (дата обращения: 03.09.2017).
33. СанПиН2.2.2/2.4.1340-03.Санитарно-эпидемиологические
правила и нормативы. Гигиенические требования к персональным электронно-
вычислительным машинам и организации работы.
34. СанПиН 2.2.4.548-96. Гигиенические требования к микроклимату
производственных помещений.
35. СанПиН2.2.4.1191-03.Электромагнитныеполяв
производственных условиях.
36. СанПиН 2.2.4/2.1.8.562-96. Шум на рабочих местах, в помещениях
жилых, общественных зданий и на территории застройки.
37. ГОСТ 12.2.032-78. Рабочее место при выполнении работ сидя.
Общие эргономические требования.
38. Постановление правительства РФ №340. О порядке установления
требований к программам в области энергосбережения и повышения
энергетической эффективности организаций, осуществляющих регулируемые
виды деятельности».
39. ГОСТ Р 12.1.009-2009 Система стандартов безопасности труда
(ССБТ). Электробезопасность. Термины и определения.
40. ГОСТ 12.1.038-82 Система стандартов безопасности труда
(ССБТ). Электробезопасность. Предельно допустимые значения напряжений
прикосновения и токов.
Последние выполненные заказы
Хочешь уникальную работу?
Больше 3 000 экспертов уже готовы начать работу над твоим проектом!