Она позволяет сделать процесс интеграции намного надежнее и сэкономить время, затрачиваемое на тестирование приложения. Контейнерная виртуализация делает систему независимой от операционных систем и заставляет ее работать с большей скоростью.
В итоге, конечный продукт способен оптимизировать современный процесс разработки программного обеспечения, который станет неотъемлемой частью любого комплексного многоплатформенного продукта, то есть сервера и клиентов, 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.