Transcription

XRAY for JIRA CloudAndré Miguel Pereira RodriguesThesis to obtain the Master of Science Degree inInformation Systems and Computer EngineeringSupervisor: Prof. Rui António dos Santos CruzExamination CommitteeChairperson: Prof. Daniel Jorge Viegas GonçalvesSupervisor: Prof. Rui António dos Santos CruzMember of the Committee: Prof. Alberto Manuel Rodrigues da SilvaJune 2018

AcknowledgmentsI would like to thank my parents for their continuous support and encouragement, to my amazinggirlfriend for always giving me strength to finish my masters thesis. I would also like to acknowledgemy dissertation supervisor Prof. Rui António dos Santos Cruz for his support, insight and sharing ofknowledge that has made this Thesis possible. To all my friends and colleagues with whom I couldshare and discuss ideas and to Xpand IT for the amazing opportunity.

AbstractXRAY for JIRA is an “app” that extends the functionality of JIRA, an “issue and project tracking” toolfrom Atlassian, to allow the user to create tests, execute the tests either manually or automatically usingexternal tools and then view the executions in reports or gadgets to have a better overview of how theirproject is doing in terms of tests. The Development of XRAY for Cloud was deemed necessary due tothe focus on JIRA Cloud and to the high client demand for XRAY for JIRA Cloud environment. Thisthesis addressed the challenge of creating a JIRA Cloud compatible version of XRAY for JIRA, as an“Atlassian Connect” add-on implemented in JavaScript using the development framework “AtlassianConnect Express”. After the development and near the start of its beta phase, the infrastructure tosupport it was created using Amazon Web Services and MongoDB Atlas service. XRAY for Cloud in thisinfrastructure was extensively tested in order to ensure that it was able to operate correctly and efficientlywhen subjected to a large amount of requests also guaranteeing fault tolerance, high availability and highperformance.KeywordsXRAY, JIRA, Jira Cloud, Test Management, Issue Tracking, Continuous Integration.iii

ResumoXRAY para o JIRA é uma “app” que estende a funcionalidade do Jira, um sistema de gestão de problemas e gestor de projectos da Atlassian, para permitir aos utilizadores criarem tests, executarem ostests tanto manualmente como automaticamente utilizando ferramentas externas e depois verem estasexecuções tanto em reports como em gadgets. O desenvolvimento do XRAY para ambiente Cloud foiconsiderado necessário devido ao foco que tem sido posto no “Jira Cloud” e devido ao elevado númerode clientes que tem pedido XRAY para “Jira Cloud”. Esta tese fala dos desafios de criar uma versãodo XRAY para Jira compatı́vel com a versão do “Jira Cloud”, implementado em JavaScript utilizando aframework “Atlassian Connect Express” . Após o desenvolvimento ter sido acabado e perto do inı́cio dafase de beta a infra-estrutura para suportar a “app” foi criada utilizando Amazon Web Services e MongoDB Atlas Service. O XRAY para ambiente Cloud nesta infra-estrutura for testado extensivamentepara garantir que funciona correctamente e eficientemente sobre uma grande quantidade de pedidos,garantindo tolerância a falhas, alta disponibilidade e elevado desempenho.Palavras ChaveXRAY, JIRA, Jira Cloud, Gestão de Testes, Gestão de Problemas, Integração Contı́nua.v

Contents1 Introduction11.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31.2 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.3 Process and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.4 Thesis Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 Background92.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112.2 Current Competition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122.3 Atlassian Jira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132.3.1 Jira Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132.3.2 Jira Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142.4 Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152.4.1 Database Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152.4.1.A Discussion: Why MongoDB? . . . . . . . . . . . . . . . . . . . . . . . . .182.4.1.B Discussion: Multi-Tenant Data Store? . . . . . . . . . . . . . . . . . . . .182.4.2 Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202.4.2.A Spring Boot: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212.4.2.B Node.JS: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222.4.2.C Spring Boot vs. Node.JS: . . . . . . . . . . . . . . . . . . . . . . . . . . .222.5 Tests and Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Implementation253.1 Idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273.2 Conceptual Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273.3 Technical Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304 Infrastructure Setup & Deployment354.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .374.2 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38vii

5 Evaluation and Results415.1 Evaluation Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435.2 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446 Conclusion516.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .536.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53viii

List of Figures1.1 Jira Project: (a) Concepts and (b) Workflow . . . . . . . . . . . . . . . . . . . . . . . . . .62.1 Jira Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132.2 Jira Server plug-in Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142.3 Jira Cloud Connect plug-in Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . .152.4 XRAY for Jira Server Database Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192.5 Benchmark for Spring Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222.6 Benchmark for Node.JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233.1 NodeJS Event Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283.2 Jira Server plug-in Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283.3 Project Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314.1 XRAY Cloud Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384.2 Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395.1 XRAY for Jira Cloud - Request Response Time . . . . . . . . . . . . . . . . . . . . . . . .455.2 XRAY for Jira Cloud - Request Throughput . . . . . . . . . . . . . . . . . . . . . . . . . .465.3 XRAY for Jira Cloud - Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475.4 XRAY for Jira Cloud - Jest Integration Tests . . . . . . . . . . . . . . . . . . . . . . . . . .475.5 XRAY for Jira Cloud - Jest Unit Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485.6 XRAY for Jira Cloud - Sentry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49ix

x

AcronymsACIDAtomicity, Consistency, Isolation and DurabilityAPIApplication Programming InterfaceBPMBusiness Process ManagementCMMICapability Maturity Model IntegrationGUIGraphical User InterfaceHTMLHypertext Markup LanguageIDIdentity DocumentIaaSInfrastruture as a ServiceIOInput/OutputITInformation TechnologyJQLJIRA Query LanguageJSONJavaScript Object NotationJWTJSON Web TokenOLTPOnline Transaction ProcessingOSOperating SystemPaaSPlatform as a ServiceQAQuality assuranceRDBMSRelational Database Management SystemRESTRepresentational State Transferxi

SaaSSoftware as a ServiceSQLStructured Query LanguageUIUser InterfaceURLUniform Resource LocatorNPMNode Package ManagerACEAtlassian Connect ExpressPaaSPlatform as a Servicexii

1IntroductionContents1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31.2 Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.3 Process and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71.4 Thesis Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

2

1.1MotivationWith the fast development of processing and storage technologies and the success of the Internet,computing resources have become cheaper, more powerful and more available than ever before. Thistechnological trend has enabled the realization of a new computing model called cloud computing, inwhich resources are provided as general utilities that can be leased and released by users through theInternet in an on-demand fashion. Cloud computing has emerged as a new paradigm for hosting anddelivering services over the Internet. Cloud computing is attractive to business owners as it eliminatesthe requirement for users to plan ahead for provisioning, and allows enterprises to start from the smalland increase resources only when there is a rise in service demand. Cloud computing is composed offive essential characteristics, three service models, and four deployment models [1, 2].Essential Characteristics: On-demand self-service - A consumer can unilaterally provision computing capabilities, suchas server time and network storage, as needed and automatically without requiring humaninteraction with each service provider. Broad network access - Capabilities are available over the network and accessed throughstandard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g.,mobile devices, tablets, laptops, and workstations). Resource pooling - The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamicallyassigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location ofthe provided resources but may be able to specify location at a higher level of abstraction (e.g.,country, state, or data-center). Examples of resources include storage, processing, memory,and network bandwidth. Rapid elasticity - Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, thecapabilities available for provisioning often appear to be unlimited and can be purchased in anyquantity at any time. Measured Service - Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g.,storage, processing, bandwidth, and active user accounts). Resource usage can be monitored,controlled, and reported providing transparency for both the provider and consumer of the utilized service.3

Service Models: Cloud Software as a Service (SaaS) - The capability provided to the consumer is to use theprovider’s applications running on a cloud infrastructure. The applications are accessible fromvarious client devices through a thin client interface such as a web browser (e.g., web-basedemail). The consumer does not manage or control the underlying cloud infrastructure includingnetwork, servers, operating systems, storage, or even individual application capabilities, withthe possible exception of limited user-specific application configuration settings. Cloud Platform as a Service (PaaS) - The capability provided to the consumer is to deploy ontothe cloud infrastructure consumer-created or acquired applications created using programminglanguages and tools supported by the provider. The consumer does not manage or controlthe underlying cloud infrastructure including network, servers, operating systems, or storage,but has control over the deployed applications and possibly application hosting environmentconfigurations. Cloud Infrastruture as a Service (IaaS) - The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where theconsumer is able to deploy and run arbitrary software, which can include operating systemsand applications. The consumer does not manage or control the underlying cloud infrastructurebut has control over operating systems, storage, deployed applications, and possibly limitedcontrol of select networking components (e.g., host firewalls).Deployment Models: Private cloud - The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise. Community cloud - The cloud infrastructure is shared by several organizations and supports aspecific community that has shared concerns (e.g., mission, security requirements, policy, andcompliance considerations). It may be managed by the organizations or a third party and mayexist on premise or off premise. Public cloud - The cloud infrastructure is made available to the general public or a large industrygroup and is owned by an organization selling cloud services. Hybrid cloud - The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietarytechnology that enables data and application portability (e.g., cloud bursting for load-balancingbetween clouds).Cloud software takes full advantage of the cloud paradigm by being service oriented with a focuson statelessness, low coupling, modularity, and semantic interoperability. In the last couple of years,4

cloud computing is getting more and more companies to heavily invest in it, one of those companies isAtlassian.Atlassian is an enterprise software group of companies founded in 2002 by Mike Cannon-Brookes andScott Farquhar, that develops products geared towards software developers and project managers. It isbest known for its issue tracking application, Jira. Although commonly used for software issue tracking,due to its advanced customization features, the web application is also highly suitable for other typesof ticketing systems and project management. According to Atlassian, Jira is a “workflow managementsystem that lets you track your work in any scenario” [3].Traditionally, issue tracking systems have been largely viewed as simple data stores where softwaredefects are reported and tracked as bug reports within an archival database. Currently the most advanced way of dealing with software bugs is to enter them into an issue tracking system. Issue trackersaddress the critically important task of tracking and managing issues and bugs that emerge during aproject. Issue tracking tools such as Jira, Freshdesk, Bugzilla, Pivotal, and Mantis BT are a class ofproject management software that keeps track of various issues for project teams. These tools are alsoknown as project tracking tools. In software projects, these tools are often referred to as “bug trackingtools” because software defects are the main issues in the context of software development. In othertypes of projects, issues often mean tasks. Issue tracking systems help organizations manage issuereporting, assignment, tracking, resolution, and archiving [4].The basic functionalities that an Issue Tracker must ensure in Software Projects, are [5]: Share the information across the team; Have an instant overview of the state of the software; Expertly decide about releasing; Set and update the importance of individual fixes and adjustments; Have a recorded history of changes; What should be fixed or created; What the bug symptoms and appearances are, what actually doesn’t work; Who reported the request, who confirmed, analyzed, implemented the solution and verified it; When the request was reported, when it was fixed and when verified; What led to the decision to choose one way of fixing instead of another; How long it took to handle the request.5

To easily understand Jira we must know what means “Issue”, the fine-grained concept inside Jira.Due to Jira advanced customization features, different organizations use Jira to track different kinds ofissues. Depending on how the organization is using Jira, an issue can represent a software bug, aproject task, a help desk ticket, a leave request form, among others. Besides the concept of “Issue”there are other important Jira concepts, such as Project, Component and Workflow, as illustrated inFigures 1.1(a) and 1.1(b)(a) Jira Concepts. Source: [6](b) Jira Workflow.Figure 1.1: Jira Project: (a) Concepts and (b) WorkflowJira allows to extend its functionality by installing plug-ins to extend the platform. The Jira installations6

come with a set of pre-installed plug-ins (from Atlassian) but later other plug-ins from external companiescan be installed through a marketplace provided by Atlassian. XRAY for Jira is one of those plug-insthat extends the Jira platform. It was created on December 2013 by XpandIT, a Portuguese globalcompany specialized in strategic planning, consulting, implementation and maintenance of enterprisesoftware, fully adapted to the customers needs. They have services and products in several areas suchas Business Intelligence, Big Data, Business Process Management (BPM) and Enterprise Middlewareand Collaborative Platforms. XpandIT stands out for its innovative approach fully supported by tools,processes and agile methodologies, fully mapped with Capability Maturity Model Integration (CMMI).XRAY for Jira was created to provide for Jira users a way to perform Test Management directlyfrom inside Jira. To achieve this objective, XRAY allows the users to create test suites that can later beexecuted manually or automatically using various continuous integrations tools. This executions can thenbe use in Jira gadgets or generate reports to provide a better overview of how the project is performingin terms of tests.1.2ObjectivesThe plug-ins for Jira are divided into three types: (a) plug-ins Type-1, (b) plug-ins Type-2, and (c) Atlassian Connect plug-ins (Jira Cloud). Only Atlassian Connect plug-ins can be used/installed in instancesof Jira Cloud. Because of Atlassian bet and investment in cloud products, much of the Jira Server customers are migrating to Jira Cloud and as such there is a need to create a new version of XRAY for Jira(plug-in Type-2) as an Atlassian Connect plug-in so that it can be installed on Jira Cloud and therebybeing sold to new Jira cloud customers or to customers who have migrated from server version to cloudversion.It was therefore the objective of the work for this thesis, to develop a prototype of XRAY, but for theJira Cloud platform.1.3Process and ManagementThe development of Jira for Jira Cloud was planned and managed using Jira as Issue Tracking tool andticketing system. All documentation is created/updated at the Confluence (Atlassian tool) and will beavailable to the public. Nowadays it is crucial to develop software over a version control system, and inthe case of XRAY, Bitbucket was used, which is also a tool owned by Atlassian. During the development,a specific methodology was adopted, the XPAGILE, a methodology based on agile principles and simultaneously mapped with CMMI level 2. Bamboo (Atlassian tool) was used as continuous integration toolto automate the release management creating a continuous delivery pipeline and as continuous Testing7

tool where the automated tests can be defined and executed based on specific triggers, e.g., commit,release or even manual trigger.This development is being done in a team environment. Initially the team started with just 2 members: Bruno Conde, who is the Project Manager of XRAY for Jira Cloud and responsible for decidinghow features should be implemented and which frameworks should be used, although typically thesedecisions are always discussed and decided by the team, and myself, as developer of XRAY for JiraCloud, responsible for developing the features and also participate in discussions related with featureand framework decisions. Later two other members joined the team: Sérgio Vieira, developer of XRAYfor Jira Cloud responsible, like myself, for the development of new features and frequently responsible fordeveloping complex aggregate queries for MongoDB, and José Sousa, developer of XRAY for Jira Cloudresponsible for the development of new features and due to his preexisting knowledge, responsible forconfiguring many of the external systems used in XRAY for Jira Cloud.1.4Thesis OutlineThe remaining of the document is organized as follows.Chapter 2 begins by describing XRAY for Jira progress in Atlassian marketplace and discussed theexpected competition of XRAY for Jira Cloud on Jira Cloud marketplace. Will present the Jira Cloudand Jira Server architectures, their advantages and disadvantages according to the customer’s pointof view as well as their respective markets. After that is identified the available technologies and theyadvantages and disadvantages. Finally, at the end will be discussed and planned the tests and themaintenance strategy for XRAY.Chapter 3 contains a detailed description of XRAY for Jira Cloud implementation. It begins by makingan analyze of the XRAY for Jira Server modules and understanding what could be possibly used in cloudversion and which changes were needed to do it. All the major components will be described as well asthe required communication between them to get all working as expected.Chapter 4 presents and explains the cloud computing platform architecture where the XRAY for JiraCloud will be running. Will be described all the components, their communication, configuration, securityrules and strategies to assure high availability, scalability, great performance and security.Chapter 5 reports and analyzes the difficulties in each project phase and how they were overcome,what went well and what could have been approached differently and an overview of the performed testsand the process and maintenance strategies that were followed during development.Finally, Chapter 6 concludes this dissertation, by resuming the key results achieved and discussingpossible directions for future work.8

2BackgroundContents2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Current Competition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Atlassian Jira. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5 Tests and Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

10

This chapter will start by making a brief overview on the progress and development of XRAY for Jirain the Atlassian Marketplace, and subsequently present the Jira Cloud and Jira Server architectures,the advantages and disadvantages of each one according to the customer’s point of view as well astheir respective markets. It will then analyze the current XRAY for Jira Cloud competition on Jira Cloudmarketplace. The chapter concludes with the technological issues concerning the development of XRAYfor Jira Cloud, the database model that best suits this use case, the appropriate development frameworksand the reasons for the choices made.2.1IntroductionAs explained earlier, Jira is a highly flexible Issue tracking software that allows to extend its functionalities by installing plug-ins developed by external companies, e.g. XRAY for Jira, which are obtainedin the marketplace Atlassian. XRAY for Jira was first developed and released through the Atlassianmarketplace in 2013. That first version of the plug-in was compatible with versions 5.2 to 6.1.4 of Jiraserver. Currently XRAY for Jira has a total of 2,511 active customer installations all over the globe, withthe biggest clients in countries such as the United States of America, Germany and United Kingdom.In addition to the new versions of its server products, Atlassian has been increasingly focusing ontheir cloud versions. This ambition has to do especially with the ease and speed a customer can beginenjoying Jira, the facilities of integration with other Atlassian cloud products and the fact that customersdo not have to worry about buying and maintaining the infrastructure.Developing a plug-in for Jira Cloud brings many limitations versus developing a Type-2 plug-in, meaning that, there are some features already implement in XRAY for Jira Server that currently are not bepossible to be implemented in XRAY for Jira Cloud. The reasons for these limitations are that an Atlassian Connect plug-in is much more limited to the data it can access when it is running in the cloud, whichmeans that the Jira Cloud Server is going to be hosted in a different place from the XRAY for Jira cloudServers, and the only way for the plug-ins to communicate with the Jira server is by RepresentationalState Transfer (REST) Application Programming Interface (API), making every operation to take extratime and adding the risk of requests being lost. Another big reason for the limitations present in the Atlassian Connect plug-ins are that Atlassian does not want foreign code to be running inside their servers,so features like custom fields types, JIRA Query Language (JQL) functions, or configuration of screensthat were available in the Jira Server, are no longer available for Jira Cloud plug-ins to create or extend.All these limitations have forced us to rethink how XRAY for Jira Cloud could be implemented and to notinclude key features that were available in XRAY for Jira Server in the Cloud version.These limitations are currently prescribed by Atlassian plug-ins for the type Atlassian Connect butmay in the future become available, which also forces us to implement and design the final solution11

keeping in mind that these features might be possible to implement in the future and if so, they shouldn’timpact the application in a significant way.2.2Current CompetitionIn the XRAY for Jira version for Server, there are many competitors in the Atlassian Marketplace, beingthe ones with the larger customer base, excluding XRAY for Jira: Zephyr for Jira–Test Management Behave Pro for Jira Agile SynapseRT–Test management & Quality assurance (QA) in Jira Test Management for Jira, previously known as Kanoah Tests TestFLO–Test Management for JiraEven thought XRAY for Jira has many competitors in Jira Server the same does not happen in theCloud version because not all of the previously mentioned Test Management add-ons have a Jira Cloudversion and even if they do they are lite versions, which end up just being Cloud plug-ins with a verylimited amount of features when compared to server versions of those plug-ins.The only real competitor for XRAY for Jira Cloud is Zephyr. Zephyr is one of the first Test Managementplug-ins for Jira Server, and currently the only Test Management plug-in with more customers than XRAYon the Atlassian Marketplace. Like XRAY for Jira, Zephyr allows the users to perform all their TestManagement directly from Jira by allowing to create Tests and executions which can later be used ingadgets and reports to extract Metrics and to provide the users with a quick overview of the state of theproject. The biggest difference between XRAY for Jira and Zephyr are on automated Tests, somethingthat Zephyr does not currently fully support. Even though Zephyr can do continuous integration, it isnot as specific and simple as XRAY’s and the tools provided to users to perform those tasks are soldseparately while in XRAY for Jira they are either inside the plug-in, for example the REST API, or arefree tools for other platforms such as Bamboo, Jenkins or Maven which will then complement the Jiraplug-in.In general even though some solutions already exist in the Atlassian marketplace for Jira Cloud forTest Management, they are not as complete or powerful as XRAY for Jira will be, but the fact that theyalready exist will make it harder for XRAY for Jira to grow its customer base in the Jira Cloud side of theAtlassian marketplace.12

2.3Atlassian JiraJira is available in two distinct options: Jira Server and Jira Cloud SaaS. An overview of general Jiraarchitecture is shown in Figure 2.1.Figure 2.1: Jira Architecture. Source: [7]2.3.1Jira ServerJira Server was the first solution released and currently still is the one with more clients. The reasonwhy most of the customers still continue to use Jira Server is related essentially to the following: Source code control; More flexibility and customization options; More third-party plug-ins available from marketplace; Upgrades control; No admin restrictions; Full access to databases.An overview of the Jira Server plug-ins architecture is shown in Figure 3.2.13

Figure 2.2: Jira Server plug-in Architecture2.3.2Jira CloudJira Cloud, for

XRAY for JIRA Cloud Andre Miguel Pereira Rodrigues . Issue tracking tools such as Jira, Freshdesk, Bugzilla, Pivotal, and Mantis BT are a class of project management software that keeps track of v