Дипломная работа: Разработка технологии непрерывного тестирования программного кода при контейнерной виртуализации на примере многопользовательского мультиплатформенного приложения

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

В итоге, конечный продукт способен оптимизировать современный процесс разработки программного обеспечения, который станет неотъемлемой частью любого комплексного многоплатформенного продукта, то есть сервера и клиентов, Android, iOS и web-приложение. Система сэкономит ценные ресурсы для современных ИТ-компаний такие, как: рабочее время разработчиков и расходы на специалистов в области тестирования и разработки.

Кроме того, система предоставляет возможность автоматического развертывания приложения в App Store и Google Play через настроенную систему непрерывной доставки, работающую как на локальных машинах, так и на удаленных облачных сервисах; и автоматическое развертывание веб-сайта на облачных мощностях.

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

Терминологический словарь

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

TravisCI -- распределённый веб-сервис для сборки и тестирования программного обеспечения, использующий GitHub в качестве хостинга исходного кода. Программная составляющая сервиса также располагается на GitHub'е, однако разработчики не рекомендуют использовать её в закрытых проектах.

yaml -- (обертка над json) «дружественный» формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования. Расшифровывается как «Yet Another Markup Language» -- «Ещё один язык разметки», позже -- «YAML Ain't Markup Language» -- «YAML -- не язык разметки».

Appium -- это инструмент автоматизации с открытым исходным кодом для запуска скриптов и тестирования собственных приложений, мобильных веб-приложений и гибридных приложений на Android или iOS с помощью веб-драйвера.

Selenium -- это инструмент для автоматизации действий веб-браузера. В большинстве случаев используется для тестирования Web-приложений, но этим не ограничивается.

Docker -- программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами. Изначально использовал возможности LXC, с 2015 года применял собственную библиотеку, абстрагирующую виртуализационные возможности ядра Linux -- libcontainer.

Kubernetes -- открытое программное обеспечение для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями. Поддерживает основные технологии контейнеризации, включая Docker, rkt, также возможна поддержка технологий аппаратной виртуализации.

Сервисно ориентированная архитектура -- модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации. Интерфейсы компонентов в сервис-ориентированной архитектуре инкапсулируют детали реализации (операционную систему, платформу, язык программирования) от остальных компонентов, таким образом обеспечивая комбинирование и многократное использование компонентов для построения сложных распределённых программных комплексов, обеспечивая независимость от используемых платформ и инструментов разработки, способствуя масштабируемости и управляемости создаваемых систем.

Список использованных источников

Jenkins vs. Travis CI vs. GitLab CI. URL: https://stackshare.io/stackups/gitlab-ci-vs-jenkins-vs-travis-ci (дата обращения 9 мая 2019).

Shaporda O. Continuous Integration. CircleCI vs Travis CI vs Jenkins. URL: https://hackernoon.com/continuous-integration-circleci-vs-travis-ci-vs-jenkins-41a1c2bd95f5 (дата обращения 18 апреля 2019).

WebdriverIO vs?Nightwatch.js. URL: https://www.slant.co/versus/9647/9648/~webdriverio_vs_nightwatch-js (дата обращения 26 апреля 2019).

Serkovskiy P. Как выполнять много UI-тестов параллельно, используя Selenium Grid? URL: https://habr.com/ru/company/avito/blog/352208/ (дата обращения 17 апреля 2019).

Gilbert J., Stoll C. Architecting iOS Apps with VIPER. URL: https://www.objc.io/issues/13-architecture/viper/ (дата обращения 01 мая 2019).

Humble J., Farley D. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional Release, 2010.

Fowler M. The “martinfowler.com” website. Continuous Integration Certification. URL: https://martinfowler.com/bliki/ContinuousIntegrationCertification.html (дата обращения 18 января 2019).

Michalнk P. Guidelines for Continuous Integration Implementation within an Agile Environment. Brno, 2017.

Manipulating the browser history. URL: https://developer.mozilla.org/en-US/docs/Web/API/History_API (дата обращения 19 марта 2019).

IndexedDB API. URL: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API (дата обращения 19 марта 2019).

Web Storage API. URL: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API (дата обращения 18 марта 2019).

Cookies. URL: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies (дата обращения 11 марта 2019).

Redux. URL: https://redux.js.org/ (дата обращения 8 января 2019).

Cli. URL: https://github.com/npm/cli (дата обращения 6 марта 2019).

immutable-js. URL: https://github.com/immutable-js/immutable-js (дата обращения 14 февраля 2019).

Ramda. URL: https://ramdajs.com/ (дата обращения 24 декабря 2018).

Schenk D. Where to use it. URL: https://momentjs.com/docs/ (дата обращения 10 февраля 2019).

Axios. URL: https://github.com/axios/axios (дата обращения 1 апреля 2019).

Babel. URL: https://github.com/babel/babel (дата обращения 1 апреля 2019).

Webpack. URL: https://webpack.js.org/ (дата обращения 5 февраля 2019).

Docker. URL: https://www.docker.com/ (дата обращения 3 декабря 2018).

Garrison J. What Is a Virtual Machine Hypervisor? URL: https://www.howtogeek.com/66734/htg-explains-what-is-a-hypervisor/ (дата обращения 2 марта 2019).

Kubernetes. URL: https://kubernetes.io/ (дата обращения 23 ноября 2018).

User Agent: Learn Your Web Browser's User Agent Now. URL: https://www.whoishostingthis.com/tools/user-agent/ (дата обращения 16 февраля 2019).

Webdriver. URL: https://webdriver.io/ (дата обращения 19 декабря 2018).

Booch G. Object-Oriented Analysis and Design with Applications. 3rd Edition. Redwood City, CA, USA: Addison Wesley Longman Publishing Co., Inc., 2004.

Kaiser G.E., Perry D.E., Schell W.M. Infuse: fusing integration test management with change management, Proceedings of the Thirteenth Annual International Computer Software & Applications Conference. 1989.

Beck K. Extreme programming explained: embrace change. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 2000.