WELCOME TO
KNOWLEDGE SHARING 2020
TOPIC:
DEVOPS
1.1.1 Introduction to DevOps
DevOps is not just about tools but it also includes a set of best practices that enables to
bridge the gap between the development and operations teams in the areas of continuous
integration and deployment by using an integrated set of tools to automate the software
delivery.
DevOps – is a combination of Development & Operations – it is a Software Development
methodology that looks to integrate all the Software Development functions from
development to operations within the same cycle.
This calls for a higher level of coordination within the various stakeholders in the software
development process (namely Development, QA & Operations).
An ideal DevOps cycle would start from:
The Dev writing code
Building & deploying binaries in a QA environment
Executing test cases and finally
Deploying onto Production in one smooth integrated flow.
Obviously, this approach places a great emphasis on automation of Build, Deployment, and
Testing. Use of Continuous Integration (CI) tools, Automation Testing tools become a norm
in a DevOps cycle.
1.1.2 Is DevOps only about Tools?
In a way, you may argue that to implement DevOps you need tools. It is true but tools are
only accelerators.
But actually, it is about the following 3 aspects:
People: It is very important to train and have a highly motivated team of people to be able to
effectively communicate and collaborate through this entire journey of cultural change.
Process: As we are talking about cultural change for DevOps implementation it is very
much a necessity to have practices and strategies which provide value to the customer.
Tools:
Finally, it is about using the accelerators by automating the process using standard DevOps
tools that are available today. It could be Open-Source (Jenkins, Git etc.), Commercial
(Microsoft TFS, VSTS, IBM Rational, Jira etc.) or a mix of both.
1.1.3 Components of DevOps
Let’s now look at the following 4 components of DevOps which form the core from an
implementation point of view where organizations have developed good automation
frameworks around the same offering it as a service to their clients:
Continuous Integration
Continuous Testing
Continuous Delivery
Continuous Monitoring
1.1.3.1 #1) Continuous Integration
1.1.3.2 #2) Continuous Delivery
Continuous Delivery is the next step after Continuous integration. The goal of Continuous
Delivery is to push the application built into production as quickly as possible. During this
process, it goes through various stages in the lifecycle of delivery i.e. QA, Staging,
Production environments etc.
This process of regularly delivering the applications built into various stages is known as
Continuous Delivery.
1.1.3.3 #3) Continuous Testing
From the above two practices, we came to know that CI and CD help to deploy the
application or changes to the production. This whole process involves proper validation of
code and its integration with all the components involved in it to ensure that the application
works as envisaged and is free of bugs or defects.
So Continuous Testing is the process of running various types of automated tests starting
with CI process till the time the application is finally deployed to production.
1.1.3.4 #4) Continuous Monitoring
As the application or changes are deployed to the production environment the operations
team will look to monitor the application and environment from an up-time, stability,
availability point of view. This process is known as Continuous monitoring.
The operations teams will have their own software’s to monitor the environment but will also
need to play their part to monitor the applications deployed for any issues. For this, they
would need to work with the development teams in order to build certain tools for analyzing
the application issues.
So infrastructure, environment, and applications issues are all that monitored in the process
of continuous monitoring.
1.1.4 How DevOps will Impact QA Testing
In a pure DevOps world, Quality Assurance is no longer the gatekeeper between
development and operations – the bottleneck. QA is an enabler (remember everyone
contributes to raising the child). On one side, QA works together with development in
trying to push more of their tests into the continuous integration system.
1.1.5 Changed Role of QA in DevOps
Traditionally, QA would get a build which is deployed in their designated environment and
QA would then commence their Functional & Regression testing. The build would ideally sit
with the QA for a couple of days before the QA sign-off on the build. All these steps change
in DevOps.
QA changes for DevOps Testing:
QA are required to align their efforts in the DevOps cycle.
They have to make sure that all their test cases are automated and achieve near
100% code coverage.
They need to make sure that their environments are standardized and the
deployment on their QA boxes is automated.
All their pre-testing tasks, cleanups, post-testing tasks, etc. are automated and
aligned with the Continuous Integration cycle.
As already mentioned, DevOps requires a high level of coordination between various
functions of the deliverable chain. This also means that the boundaries between various
roles of contributors in the chain become porous.
DevOps encourages everyone to contribute to the chain. So, amongst other things, a dev
can configure deployments. Deployment engineers can add test cases to the QA repository.
QA Engineers can configure their automation test cases into the DevOps chain.
Collectively, everyone in the chain is responsible for the quality and timeliness of the
deliverables.
1.1.6 DevOps and Test Automation
To achieve such speed and agility, it is important to automate all the testing processes and
configure them to run automatically when the deployment is completed in the QA
environment.
DevOps Testing Strategy: Tips for DevOps Success
Identify and execute test cases
Test execution should be shorter
Identifying affected areas to a particular build
Achieve near 100% code coverage
New features need to be formalized with the interim build
Ensure testing environments are standardized and stable
Deployments must be automated
Create test scripts and run with automation
Parallel execution of tests helps in reducing time-to-live, which in turn is the crux of a
successful DevOps implementation.
Set up the exit criteria for each run
Report critical bugs which must be fixed before codes are deployed to production
1.1.7 Summary
Waterfall gave way to V-Model which in turn was replaced by Agile as the preferred choice
for software development.
DevOps is the future. It’s a continuous improvement cycle that software development
models undergo from time-to-time.
.
The concept essentially remains the same. Automation and more automation is the core
of a successful DevOps cycle. But, as a QA you should also be able to draw a line as to
how much automation is too much automation.
THANK YOU
QUESTIONS & ANSWERS