Testing in DevOps World
As we have already seen the “Testing of Microservices – A Beginner’s Guide” in a previous article. To continue this discussion we are moving towards some important topic that is “Testing in DevOps world”.
Before reading this article if you want to learn DevOps in detail, You can refer to our DevOps Blog Series.
What is DevOps?
DevOps is a software development and delivery process which considers the software product from end to end, from concept to customer satisfaction. The ‘DevOps’ is a combination of ‘Development’ and ‘Operations. ‘While Agile is about the delivery of a good software build, DevOps expands the scope for deployment to the customer and get feedback from customers. DevOps includes all the stakeholders involved in developing the product including product managers, quality assurance (QA), developers, operations, management, system administrators, security and support. It is all about the team understanding software is not complete until the user accepts the software/ Product.
DevOps helps to increases an organization’s speed to deliver applications and services as fast as possible. It allows the organization to distribute their customers better and compete more strongly in the market. DevOps is a combination of the Development and Operations practices for Software development and Delivery.
DevOps model takes the Agile methodology model a step further by bringing more closer to release and deployment activities to those of development and testing. This means that an agile or Scrum team has its own responsibility for the development, testing, and release of the software.
DevOps Testing Strategy
Testing in DevOps spread the whole software development and delivery lifecycle (SDLC). Testers are no longer just focusing on functional testing and verification.
As testers, we should also be involved in performance, operations , basic security testing, as well as being able to record and analyze production data and logs/reports.
You can see why people grapple to understand where testing fits in a model that does not mention it at over. For me, testing fits at each and every single point in the DevOps model.
In fact, testing can and should be done at each stage in a DevOps model. In the Agile Test Strategy post, we described how testing fits into every phase of the Agile model.
DevOps testing strategy can extend by adding the following sections:
Test Automation and Continuous Testing in DevOps
to select a good choice of tools and technologies become ever so important in the DevOps model. The selection of tools allows an organization is an ability to deliver the software/applications and services at high velocity.
There is a greater emphasis on automated testing in DevOps as we want to create a culture where we can send code down the systems quickly and with confidence.
In automated functional tests, a tester should also have a set of performance and security tests in the delivery pipeline.
Unneeded to say, before being able to implement any of the automated test scripts, most importantly is building an automated build and delivery pipeline in a Continuous Integration tool, such as Jenkins.
Testing in Production
Testing in production does not compulsorily mean executing performance and functional testing scripts against a live system where users are using the application.
We can start by analyzing the trends in multivariant tests. We can also monitor servers for any unknown behavior, such as high CPU usage, memory leaks, etc.
Impact of DevOps on Testing
- DevOps changed the role of software testing & software testers, how?
Testers are now expected to have the following knowledge and skills so that it will effectively carry out testing activities
- Basic networking knowledge
- Basic Unix/Shell scripting, e.g. bash, python
- Continuous Integration/Continuous Delivery e.g. Jenkins,
- Performance testing tools such as JMeter or Gatling
- Ready for Operations and Resilience Testing
- Knowledge of containers, Docker, Kubernetes
- Querying monitoring tools such as Splunk
- Clouds services, e.g. AWS, Azure
What is the role of the automated tester in DevOps?
In a typical DevOps environment, teams are expected to accelerate the cycles of design, development, validate, and push it to the production really quickly. Without using an automation strategy, it is extremely difficult to achieve such speed and reliability.
While considering test automation, it is also essential to look at the bigger picture. As we say, “So, many times we hear people focusing solely on achieving the higher test automation coverage and forgetting the fact that there is no unlimited budget that is available for testing. So, optimizing the testing budgets and then trying to calculate leverage as much as possible from a test automation point of view and I think, it’s very critical.”
At the same time, Chris recommends automating anything that has to be done more than once, while also pointing out the constant need for manual testing to bring creativity within processes. With test automation solutions in place, it becomes possible to direct the human set of eyeballs to the areas that require a more sophisticated approach.
Testers who are involved in the DevOps delivery model will start asking questions like this:
- Where does testing fit in a DevOps model?
- How is testing and QA in DevOps different than testing in Agile and waterfall models?
- As a QA, what additional skills am I expected to know?
In this “DevOps with testing,” the article will are going to discusses different tools, strategies, and ideas that help to implement to test effectively in a DevOps world, embracing automation and continuous testing in DevOps.
QA and Testing in DevOps
How has testing evolved from the waterfall model to the agile model to DevOps?
Testing and Quality Assurance (QA) practices have seen a considerable shift from the days of the waterfall, Agile and now DevOps. In the waterfall model, testing was seen as a phase in the software development lifecycle (SDLC). Testers and testing efforts were very much isolated, where the tester is a part of a testing team and often separate from the development team as well.
Testers accept the testing strategy and were seen as the gatekeepers of quality. Testing was mostly manual and used when the software was fully developed and just before releasing it to production.
In addition, software used to take a long time to deliver. A separate operations (Ops) team is responsible for deploying the software to production which, at best, happened every few months. There was no or low level of communication between the Dev team and the Ops team.
The agile model created a move in the development and testing space as well as the release frequency. In the agile model, the software was developed in an iterative and incremental way. Scrum, is a methodology in the Agile delivery model, quickly became very popular.
Difference Between Iterative and Incremental Development in Agile
The development effort was broken down into a small number of iterations, typically lasting 2-4 weeks. Each iteration will create sufficient deliverable software by adding new or enhancing features.
In agile methodology, testers became part of the development team and testing team to achieve parallel activity for software development, rather than a phase at the end of SDLC. The testing activity became a divided responsibility and quality was owned by the development team.
The Agile model combined the development and testing practices and covered the way for faster delivery of software, however, the actual deployment to production was still done while using a separate TechOps team.
While the TechOps team would have knowledge of networks, servers, and deployment, they were normally unaware to the details of each release. Feedback to the development team was slow. If a bug is found during the release, it would normally take a few hours for the development team to become aware of the issue.
How the role of QA has changed with DevOps
Historically, testers were solely focused on the testing part for bringing the product to the market. This would include testing the code to validate it and then push the validated code to the developers. With DevOps, testers are required to bear the responsibility for quality across the SDLC, while focusing on continuous integration and continuous delivery with increased efficiency as the overall goal. In the long run, DevOps would make testing much more valuable to the allover software development world.
How DevOps would have a future impact on manual testing and Quality Assurance (QA)?
Here is one real-time example which shows the impact of DevOps with a beautiful analogy –
As a fowl sitting on a tree, I don’t think you should put a lot of trust on the branch of the tree, but you should have more trust in your wings. If the tree collapses, the bird should still able to fly away. Likewise, software testing professionals need to make sure that they keep improving their skillset, which continues to be relevant to the changing industry trends.
While manual testing is still required at certain complex situations within an SDLC, testers should invest in expanding their basic technology skills, coding skills, networking skills, as well as soft skills to stay relevant in a DevOps-driven environment.
DevOps naturally allows testers to be involved earlier in the software development life cycle. Thus, DevOps is assisting the testing community to shift their QA activities to the left and the right. Methodologies such as Test-driven development and Behavior-driven development help testers to build quality into the product by taking a test-early approach.
Software testing in the DevOps world demands an automated test process that provides a report at every checkpoint. Integration testing is needed on the build server. Functional testing, regression testing, and more other testing are needed on the test server. Deployment testing is needed on the staging server. If the module passes, it advances to the next step. If it fails, it’s time to stop and fix the issue.
Definitely, every development team is not able to do every type of testing. Resource limitations frequently change the team’s ability to implement DevOps. Sometimes automation takes time to automate test script and it’s rarely possible to automate every conceivable test. For this reason, it’s practical to define an automation testing strategy. Automated test development should be prioritized in critical areas like areas of complexity or key functionality. It may be productive to find out early bugs in new code before automating, as the bugs may hinder automated test development. Nevertheless of the automation strategy, it’s wise to keep test scripts under version control.
DevOps represents a crucial revolution in the way software is delivered. It provides faster delivery of software and improved customer experience. It reduces the risk of deploying deficient software, and they make everyone happy: software development, senior management, operations, sales & marketing and most importantly, the customer.
SevenMentor Pvt Ltd.
Call the Trainer and Book your free demo Class for now!!!
© Copyright 2020 | Sevenmentor Pvt Ltd.