DevOps TESTING FOR DevOps
Dhruvin Maniar Computer Engineering Institute of Technology, Nirma University Ahmedabad, India.
[email protected]
Abstract DevOps( Devlopment + Operations) is a software development method which is use to produce software applications or products and services and also to improve the overall performance and QA ( Quality Assurance). DevOps is an extension of Agile methodology. There are number of organization today that are getting a lot of buisness benefit from DevOps. It matters because there are some very real business benefits to achiveving a devOps cuture time to market is crucial fewer bugs, lower cost to deliver. In pre-deveOps world the things were so different that organization is used to struggle more in terms of the delivery of a products with lack of performance and reliabilty, so some of the progressive organization come with the different ideas that how they make a reliable and improve in performance for delivery an software products to the customer. So, in devOps the developer are going to perform some operations that will be depending on the applications and make the product better in reliability with better performance .DevOps is an most recent widely used throughout the organization for a complex business scenarious. In this paper we are going to explore the usefullness of deveops and which are the types of testing methods used in deveops by the organization and what are the tools that we are going to use for an efficient use for an organization.
Keywords – Testing for Devops, Devops, continuous testing in devops, tools used for testing in devops.
I.
INTRODUCTION
DevOps is an extension of agile software development or the methodology and depends on the communication, integration and collaboration among with different end users or the stockholders of the product in the software development stage i.e. development, operations and Quality Assurance (QA). In DevOps there are two important components that are Continuous Integration and Continuous Delivery. Continuous Integration plays a crucial role of an agile practice that ensure software which will built and testing can be done in every phases and fixing the bugs at every stage. To perform this task the group of members i.e. team to divide the task among them so their work goes efficiently on daily basis. Each and every check-in that is going to perform by the automated build, which allows us to detect the faults that are present in product. Hence continuous integration helps us to identify the detection at early in the software development and also benefits to solve the complex problem and easy way to solve. Continuous Delivery helps continuous integration to extending it to the next level also with agile development in DevOps lifecycle. Continuous delivery is key component in today’s agile
methodology. Continuous delivery helps in fast adapting software correspond to the client feedback, a growth in business with the help of some changes in business strategy. In continuous delivery process or a phases the team includes testing, development, and support, they all collaborate and working together to automate the build test, and release cycles. Advantages: minimized risks, cost effective, selling to market in less time by frequent releases and shortened iterations. II.
EVOLUTION OF SOFTWARE DEVELOPMENT
A.
Traditional waterfall model
This model is best suited when, the requirements are fixed, well documented and clear and the product definition should be stable. It is a linear in nature you cannot modify the definition once it is fixed. Each phase must be completed when you are going to move on next phase. B.
In today’s world customer is demanding the seamless experience for their software applications with the reliable and extra-ordinary connection and dependency between the processes. To deliver a high quality software it is required to test the various complex applications, products etc. and make sure you are delivering your product as fast as possible. Continuous has a very important role in continuous delivery. It involved usage of different and important methods that has been used by agile development for testing the different test cases and Quality Assurance (QA) process.
Agile Development
Agile development is suited when requirements change frequently and development need to be fast and the risk taking in project is high or the complexity is increased. C.
basically automating the execution of test cases and continuous testing is basically continuous automation of these tasks or test cases so basically you have lot of test cases not only are they being automated continuously but even this automation is scheduled or is actually continuously automated and constantly there will be tools which will be monitoring the source code and whenever any problems comes up that will be thrown to developer as a bug.
DevOps Approach
DevOps approach is best suited when requirement changes frequently. Development needs to be agile and operations needs to be agile. III.
CONTINUOUS TESTING IN DEVOPS
Process of automating the execution of test cases is called Automation testing. Scheduling Automation Tests after every feature update is called Continuous testing. Difference between automation testing and continuous testing is that automation testing is
There are some various initiatives from methods of software development from part of continuous testing such as, • First of all the team of development should start the continuous testing with the code they have generated and check also the testing performance and functionality of the code. Test can include overall performance, functionality of the system and the responsive UI etc. They can use the tools such as selenium for testing for efficient testing and can be done in less time. • If the team of DevOps needs to use the appropriate tests then they have to configure the continuous integration environment. If any failure happen then they receive a automatic message and they also need to conclude the process of continuous Integration as fast as possible. • For faster execution the QA tester need to aware that they are doing process of test run parallel.
• •
They have to pass each and every acceptance test that are conducted by the operation team. After the completion, in post-production stage, the operation managers is likely to test the application for the better and continuously performance by using some of the monitoring tools and they set the test cases which can run 24/7 and whatever the failure happens within that then the message has been sent.
B.
Unit Testing is basically breaking your entire code into smaller units or components and then testing them separately individually you to test each and every single components or units and that’s why is called unit testing. C.
In above fig. you can see this is a DevOps lifecycle and continuous testing falls under the build test and release phases of our lifecycle, these are the three different stage where this continuous testing revolves around
IV.
DIFFERENT TYPES OF CONTINUOUS TESTING
After seeing what is continuous testing now we will see the different types of continuous testing. This are the most common testing and mostly used in DevOps.
Stress Testing
Stress Testing is another way important testing type. And difference between stress and the load testing is that in stress testing is basically done to figure out what exactly is the threshold and it is ensure that beyond this you cannot or your system cannot take this load so you will have to come up with alternate measures. E.
Integration Testing
Integration Testing is basically to get these smaller units or components integrated with each other and then checking how is the output of the product or the software application together they are integrated and then checked so it’s usually done with unit testing. F.
A.
Load Testing
Load Testing is basically done to figure out how much load your system can take with optimal performance. So , your code or whatever wherever its being run on what is the maximum load it can take while performing optimal performance without becoming slow or becoming unresponsive if your website can not be able to take any more load so those are the different things you think about. D.
Figure 1: Lifecycle of DevOps
Unit Testing
Regression Testing
Functional Testing
Functional testing is basically to ensure that your applications entire functionality is delivered as per requirement given by the customer or the client, the entire feature set is tested over here.
Now regression testing is basically to ensure that your application is running perfectly and there is no bug in your code even when there is a small feature set that has been added so even if you have added a few or few features and a few lines of code and you
are testing the entire application to make sure that this is not affecting anything else
V.
TOOLS USED FOR CONTINUOUS TESTING
There are different tools which can be used in DevOps such as Maven, selenium web driver, TestNG, Jenkins etc.
Selenium Web is very important tool because it does the actual web testing, it goes to their pages and looks for certain web elements and checks if they are operating and functioning the right way. Drawback: test case management and report deliberation. To overcome this problem we are using test energy along with selenium so in the industry you will always find a selenium being used with either j unit or yen unit or test energy because alone selenium is not that powerful so even though it is hulk it needs other tools and that’s what TestNG does. C.
Figure 2: Tools used in DevOps
A.
Maven
Maven is a brilliant tool to handle your entire project structure so you will have a maven XML file in which you can specify what are the different java classes which you want to execute and in which package or directory they are stored you can mention those things in that XML file along with what dependencies are needed for executing that code. Advantages:Helps in easily managing the project structure, its dependencies and test cases. Can download automatically the needed or important files and dependencies from the repository. These details need to be specified in the pom.xml file.
B.
Selenium web Driver
TestNG
It overcomes selenium test case management limitation by involving something called as test annotations so with test annotations your entire code can be broken down into smaller pieces of code each being altered with a test case so that way you will be executing smaller test cases and you will get to know which test cases has a bug so you will accurately know this is small part or the small functionality where there is a bug and you can fix it and you can keep unit testing and regression testing after that and besides this TestNG also lets you generate good report so that’s the thing with our TestNG and why use with selenium. D.
Jenkins
In your entire DevOps lifecycle the tool or the part which holds the entire structure is the continuous integration tool or CI tool as we call it often so the CI tool which we are using is Jenkins and Jenkins is easily the best tool in the market you have a couple of others you have Hudson, bamboo and few more but however nothing comes as close to Jenkins. Drawback: Jenkins has not enough documentation there are probably so many plugins, plugins for almost everything but the problem is documentation it’s not well done.
Figure 3: process of Tools used for testing in DevOps.
VI.
SUMMARY
In this paper we have seen that overview of DevOps, how it is helpful for an organization and how it is efficient to use in terms of performance and reliability. We have also seen that DevOps can also make sure of QA (quality assurance). Also we have learned about the tools which are used in continuous testing such as maven, selenium web driver, TestNG and Jenkins. There are so many other tools are also available but the most efficient tools that are used by organization is this ones.
VII. CONCLUSION
Testing in DevOps shows the ability to test the different cases of the product and how can you improve performance, reliability, different kinds of bugs from the product and overall maintainability. Testing in DevOps can be done in Continuous testing which includes unit testing, integration testing, functional testing, regression testing etc.
There are different tools available that can be used for the testing which we have already seen. Change is the only constant thing with respect to time. DevOps is mostly used for betterment for an organization and the growth in business in which we have to deliver a software product to client in efficient manner likely the software does not contain any bugs, functionality should be perform well and user friendliness in terms of UI or design part. So to performance this overall thing we have to use test the DevOps software development in efficient manner.
References [1] The DevOps handbook how to create worldclass agility, reliability and security by gene kim, jez humble. [2] effective devops: building a culture of collaboration, affinity, and tooling at scale by Jennifer davis. [3 the devops 2.0 toolkit by viktor fraric. [4] practical devops joakim verona. [5] building a devops culture mandi walls [6] Implementing DevOps on AWS vaselin kantsev [7] A Cambrian Explosion of DevOps Tools Mik Kersten [8] Pioneering the automation of lnternal quality assurance system of higher education (IQASHE) using DevOps approachAcep Taryana; Iwan Setiawan; Ari Fadli; Eko Murdyantoro2017 International Conference on Sustainable Information Engineering and Technology (SIET)