Введение 4
Глава 1 Теоретические основы методов и технологий автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектур 11
1.1 Характеристики и модели облачных вычислений 11
1.2 Особенности микросервисной архитектуры 16
1.3 Анализ преимуществ и недостатков, а также особенностей применения автоматизированного тестирования 23
Глава 2 Анализ методов проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре 29
2.1 Классификация критериев эффективности тестирования IT-продукта 29
2.2 Методы автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре 32
2.3 Сценарии автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре 38
2.4 Методологии разработки программного обеспечения с интегрированным процессом тестирования 43
Глава 3 Апробация методов проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре 52
3.1 Информационные модели автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре 52
3.2 Алгоритм тестирования облачного IT-продукта, построенного на микросервисной архитектуре и разработанного на основе методологии BDD 55
3.3 Инструментальные средства для тестирования облачного IT-продукта, построенного на микросервисной архитектуре и разработанного на основе методологии BDD 58
3.4. Сценарий автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре, с использованием тестовых дублёров 62
Глава 4 Анализ эффективности использования тестовых дублёров как части IT-продукта 69
4.1. Преимущества поставки тестовых дублёров как части IT-продукта 69
4.2 Оценка трудозатрат на установку и конфигурацию тестовых дублеров на оборудовании заказчика 71
Заключение 75
Список используемой литературы 77
Приложение А Набор тест-кейсов, созданный в библиотеке Cucumber-JVM 81
В последнее время особую актуальность в сфере информационных технологий приобретают вопросы качества программного продукта, связано это с большой конкуренцией среди компаний-разработчиков IT-продуктов. Качество разрабатываемого программного продукта напрямую зависит от того, насколько результат разработки соответствует ожиданиям заказчика. Основным этапом, предшествующим разработке программного продукта, является выявление требований, параметров и критериев, которые будут обеспечивать качество IT-продукта, необходимое заказчику.
Тестирование программного продукта является одним из основных способов управления качеством в сфере информационных технологий. Недостаточно качественно организованный этап тестирования может нанести большой урон всему проекту. Выявление и устранение ошибок во время сопровождения IT-продукта влечёт за собой дополнительные расходы в среднем в 200 раз больше, чем на стадии тестирования, а в случае позднего обнаружения дефектов итоговый бюджет проекта может увеличиться на 3040%. Наиболее простым, распространённым и дешёвым является процесс ручного тестирования, но он не гарантирует необходимое качество IT-продукта, поэтому всё чаще используют автоматизированное тестирование, однако его широкое использование не всегда целесообразно и возможно.
С целью определения критерия соответствия готового программного продукта заявленным характеристикам, необходимо протестировать разработанный IT-продукт разными методами. Это позволит выявить ошибки, устранение которых повысит качество разрабатываемого продукта. Традиционные методы ручного тестирования уже не могут обеспечить необходимое качество современных программных систем. К основным недостаткам ручного тестирования можно отнести человеческий фактор, трудоемкость повторного тестирования программы после внесения изменений, невозможность нагрузочного тестирования.
В связи с рассмотренными причинами с каждым днём появляется все больше методов, инструментов и технологий автоматизированного тестирования, направленных на улучшение качества и уменьшение затрат на этап тестирования IT-продуктов. Главным преимуществом автоматизации тестирования является уменьшение времени на тестирование больших программных модулей, так как проработать огромный объем данных вручную гораздо труднее, чем один раз составить сценарий выполнения тестирования. Кроме того, созданный тестовый сценарий целесообразно применять далее для организации такого же вида тестирования, что в будущем значительно сэкономит время. Немаловажным фактором можно отметить то, что при автоматизированном тестировании возможно быстро смоделировать пользовательскую нагрузку на всю систему, что обеспечит разностороннюю проверку корректности функционирования системы и, следовательно, гарантирует высокое качество программного продукта.
По мере того, как новые тенденции в различных областях появляются день ото дня, требуется новая архитектура для различных приложений. Пользователям требуется интерактивный, богатый и динамичный опыт работы приложений на различных платформах. Этим требованиям удовлетворяют приложения, имеющие высокую доступность, масштабируемость и простоту выполнения на облачной платформе. Большинство организаций хотят обновлять свои приложения часто, несколько раз в день. Монолитные приложения имеют ограничение для поддержки таких требований. Микросервисы представляют собой новую архитектуру, в которой большие и сложные программные приложения состоят из одного или нескольких небольших сервисов. Они могут работать независимо друг от друга. Такие микросервисы слабо связаны друг с другом, каждый из них отвечает за эффективное выполнение только одной задачи. Микросервисы очень полезны для приложений в облачных вычислениях. Использование микросервисов в облачных вычислениях позволяет повысить популярность облака. Использование микросервисов предлагает больше вариантов и возможностей для независимого развития сервиса. В 2021 году оно призвано ускорить процесс разработки мобильных и веб-приложений.
Поскольку организации создают все больше микросервисов, они все чаще сталкиваются с проблемами интеграции. Последствия могут быть разными - от увеличения времени на разработку нового функционала, до полностью нерабочей программы. В крайних случаях ошибки согласованности API - интерфейсов обнаруживаются только во время эксплуатации приложения, и ведут к долгой и дорогой его доработке и новому циклу тестирования.
На протяжении десятилетий развития разработки программного обеспечения к вопросам тестирования в системе обеспечения качества продукта подходили c разных точек зрения. Большой вклад в развитие тестирования как отдельного этапа в жизненном цикле разработки программного обеспечения внесли как отечественные, так и зарубежные учёные.
Отечественный учёный Куликов С.С. считает, что современный период развития тестирования характеризуется такими особенностями: гибкие методологии разработки и тестирования, глубокая интеграция процесса тестирования со стадией разработки, повсеместное использование автоматизации, огромный выбор технологий и инструментальных средств, кросс функциональность команды (команда, в которой тестировщик и разработчик во многом могут исполнять работу друг друга).
Согласно исследованию компании IBM, стоимость исправления программных ошибок со временем возрастает. Например, один час работы разработчика стоит 25 $, а процесс устранения дефектов на этапе архитектурного планирования занимает 2 часа. Поэтому общая стоимость составляет 50 $. В случае обнаружения дефекта на втором этапе разработки стоимость его устранения возрастет в пять раз и составит 250 $. Стоимость устранения ошибок на этапе тестирования увеличится в десять раз (500 $), на этапе бета-тестирования - в 15 раз (750 $). После релиза общая стоимость увеличится в 30 раз и будет равна 1500 $. Очевидно, что стоимость устранения одного и того же дефекта может варьироваться от 50 до 1500 $, что зависит от времени его обнаружения [23].
Определяя место и роль тестирования в обеспечении качества программного продукта, автор книги «Как тестируют в Google» Уиттакер Джеймс считает, что тестирование и разработка должны идти рука об руку. Тестирование не рассматривается как отдельный этап, это часть самого процесса разработки. Качество появляется только тогда, когда разработка и тестирование существуют вместе. «Наконец, выбирая между автоматизированным и ручным тестированием, мы отдаем предпочтение первому. Если это можно автоматизировать, и проблема не требует человеческого внимания и интуиции, то это нужно автоматизировать. Только проблемы, которые явно требуют оценки человеком (например, красив ли пользовательский интерфейс или не нарушает ли раскрытие данных конфиденциальность), должны доставаться ручному тестированию» [19].
Такие авторы, как Э.Дастин, Дж. Рэшка, Дж.Пол в своей популярной книге «Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация" большое внимание уделяют рассмотрению целесообразности внедрения автоматизации тестирования в принципе. Автоматизация не преподносится как лекарство от всех бед и волшебное средство, делающее тестирование однозначно успешным. Достаточно подробно рассматриваются в книге ложные ожидания, часто связанные с автоматизацией, анализируются факторы, при которых внедрение автоматизации может оказаться неуспешным. При этом описываются те преимущества, которые на самом деле могут дать средства автоматизации. В данной книге автоматизация рассматривается как весьма серьёзный процесс, требующий и планирования, и специально выделенных ресурсов [7].
За рубежом активное развитие автоматизированного тестирования стало возможным благодаря большим постоянным инвестициям. Иностранный ученый Хоффман в четко определил компромисс между стоимостью и преимуществами автоматизации тестирования, рассматривая различные факторы ROI (окупаемость инвестиций). На основании его расчетов можно сделать вывод, что доход от автоматизации обычно виден в следующем выпуске, после текущего, т. е. запуск и повторный запуск автоматизированных тестовых случаев дает значительную экономию. Эффективные решения по автоматизации тестирования могут привести к более чем 100% -ому ROI в десяти циклах повторного запуска тестового набора [21].
Кроме того, исследование, проведенное Коллинзом, показало, что автоматизация тестирования работает очень хорошо, если команды находят правильный способ внедрения автоматизации тестирования в свои проекты, и представил некоторые стратегии, чтобы минимизировать риск при внедрении автоматизации тестирования [20].
Исследование научных трудов и публикаций показал, что автоматизированное тестирование - это серьёзный процесс, который должен идти параллельно с разработкой программного обеспечения, требующий детального планирования и специально выделенных ресурсов. Создание алгоритма внедрения автоматизированного тестирования позволит значительно повысить качество IT-продукта, скорость разработки и выпуска обновлений.
Исходя из вышеизложенного, теоретическую основу исследования составляют труды следующих отечественных учёных: Гвоздева В.А., Котляров В.П., Коликова Т.П., Куликов С.С., Синицын С. В., Налютин Н. Ю. , Маглинец Ю.А. а также зарубежных специалистов: Бек К., Криспин Л., Калбертсон Р., Грэхем Л., Ньюмэн С., Э.Дастин, Уиттакер Дж., Dani A., Hadas Schwartz C., Yaron T., Bures M., Shlomo M., Sulabh T., Ritu S., Bharti S., Flemstrom D., Potena P., Ulewicz S., Vogel-Heuser B.
Целью диссертационной работы является создание эффективного алгоритма проведения автоматизированного тестирования облачного IT - продукта, построенного на микросервисной архитектуре, для повышения качества решения и скорости доставки обновлений заказчику.
Для достижения обозначенной цели необходимо решить следующие задачи:
1. Рассмотреть теоретические аспекты существующих средств и методов автоматизированного тестирования IT-продукта, построенного на микросервисной архитектуре;
2. На основе рассмотренной теории проанализировать методику проведения автоматизированного тестирования облачного IT-продукта;
3. Разработать алгоритм проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре, позволяющий повысить качество и скорость доставки обновлений заказчику.
Обозначенная цель определила объект и предмет исследования:
Объект исследования - методы проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре.
Предмет исследования - разработка сценария автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре для повышения качества продукта и скорости доставки обновлений заказчику.
Методологическую основу исследования составляют следующие методы:
• метод моделирования, который используется для построения модели IT-продукта и анализе его свойств на основе построенной модели.
• метод абстрагирования, который позволяет исключить из рассмотрения при тестировании незначительные свойства объекта и уделить внимание наиболее значимым характеристикам объекта.
• метод визуализации данных, используемый для построения графиков и схем, позволяющий более наглядно представлять полученные результаты исследования.
Гипотезой исследования является возможность создания тестового дублёра, способствующего повышению качества тестирования на всех этапах разработки и тестирования IT-продукта.
Научная новизна исследования состоит в разработке стратегии автоматизированного тестирования IT-продукта, построенного на микросервисной архитектуре, с применением интеллектуального тестового дублёра; исследование преимуществ, предоставляемых поставкой данного тестового дублёра как части бизнес-решения IT-продукта.
Теоретическая значимость заключается в выявлении нового способа проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре, с использованием тестового дублёра. Полученные выводы могут быть применены для дальнейшего исследования факторов, влияющих на качество IT-продукта.
Практическая значимость исследования заключается в способах применения тестового дублёра, а также способах его интеграции в стратегию автоматизированного тестирования IT-продукта.
В ходе проведенного исследования были рассмотрены основные методы и особенности автоматизированного тестирования IT-продукта, построенного на микросервисной архитектуре. Выявлено, что использование облачного пространства предоставляет удобный и быстрый доступ к ресурсам, что позволяет с минимальными управленческими усилиями или действиями по взаимодействию с поставщиком услуг разработать и протестировать IT-продукт.
При проведении исследований в диссертации получены следующие теоретические и прикладные результаты.
• в результате рассмотрения теоретических основ существующих средств и методов автоматизированного тестирования IT-продукта были установлены основные преимущества и недостатки, а также выделены особенности проведения автоматизированного тестирования облачного IT-продукт, построенного на микросервисной архитектуре. Выделены критерии эффективности автоматизированного тестирования, а также критерии формирования тестовых наборов;
• анализ методов проведения автоматизированного тестирования позволил выделить методы и инструментальные средства, позволяющие наиболее полно и быстро протестировать облачный программный продукт;
• на основе анализа методов проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре, было установлено, что использование тестовых дублёров, имитирующих ответные вызовы сотрудничающих подсистем, позволяет провести тестирование своей системы наиболее комплексно и оперативно;
• результатом рассмотрения современных методологий разработки программных продуктов с интегрированным процессом тестирования стало выделение методологии, которая позволяет наиболее быстро и качественно составить план тестирования, понятный как заказчикам, так и команде разработчиков и тестировщиков;
• рассмотрен ряд инструментальных средств, предоставляющих возможности для проведения автоматизированного тестирования облачного IT-продукта. Выделены достоинства и недостатки с точки зрения удобства использования;
• составлен сценарий проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре с использованием тестовых дублёров;
• в рамках апробации выделенных методов, сценария и инструментального средства для проведения автоматизированного тестирования был составлен набор тест-кейсов для тестирования смоделированного облачного IT-продукта, построенного на микросервисной архитектуре. Описан ход и результат тестирования;
• в результате анализа использования тестовых дублёров были выделены преимущества данного подхода, проведена оценка трудозатрат на установку и конфигурацию тестового дублёра на оборудовании заказчика. Дан ряд рекомендаций для повышения качества, надёжности и скорости доставки обновлений заказчику.
Таким образом, предложенный сценарий (алгоритм) проведения автоматизированного тестирования облачного IT-продукта, построенного на микросервисной архитектуре, позволяет значительно улучшить и оптимизировать итоговую стоимость, качество и время выхода на рынок программного обеспечения. Это улучшение очень значительно в нынешней ситуации, когда отрасли программного обеспечения сталкиваются с жесткой международной конкуренцией и пытаются сократить свои бюджеты и графики.
1. Бейзер Б. Тестирование чёрного ящика. Технологии функционального тестирования программного обеспечения и систем. — СПб.: Питер, 2015. -320 с.
2. Бек К. Экстремальное программирование. Разработка через тестирование TDD. —Питер СПб, 2019.— 224с.
3. Блэк Р. Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование. —Лори, 2019. —544с.
4. Гвоздева В.А., Лаврентьева И.Ю. Основы построения автоматизированных информационных систем. - М.: Форум, Инфра-М, 2017. • 320 с.
5. Грегори Д., Криспин Л. Agile-тестирование. Обучающий курс для всей команды. —Манн, Иванов и Фербер, 2019. —528с.
6. Грэхем Л. Разработка через тестирование для iOS. - М.: ДМК Пресс, 2018. - 272 с.
7. Дастин Э., Рэшка Дж., Пол Дж. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация. — Лори, 2019. —567с.
8. Криспин Л. Грегори Дж. Гибкое тестирование. Практическое руководство для тестировщиков ПО и гибких команд. —М.: Вильямс, 2016. — 464 с.
9. Котляров В.П., Коликова Т.П. Основы информационных технологий. Основы тестирования программного обеспечения. — Бином. Лаборатория знаний, Интернет-университет информационных технологий,2016. —288с.
10. Канер К., Фолк Д., Нгуен Е. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений. • Киев: ДиаСофт, 2018. — 544 с.
11. Калбертсон Р., Браун К., Кобб Г. Быстрое тестирование. — М.: Вильямс, 2017. — 374 с.
12. Куликов С.С. Тестирование программного обеспечения. Базовый курс. [Электронный ресурс]. — FKPTM, 2017. 312с. URL: https://fktpm.ru/file/113-svjatoslav-kulikov-testirovanie-po-bazovyj-kurs.pdf (дата обращения: 30.11.2019).
13. Липаев, В.В. Методы обеспечения качества крупномасштабных программных средств—М.: СИНТЕГ, 2016 - 350 с.
14. Маглинец Ю.А. Анализ требований к автоматизированным информационным системам. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2016. - 200 с.
15. Ошероув Р. Искусство автономного тестирования с примерами на С#.—ДМК Пресс, 2016. —360с.
...