QA plays an indispensable role in any SDLC(Software Development Life Cycle).
There are two meaning to the word QA.
- Quality Analyst which is a profession.
- QA is also a term used for a stage environment.
I will help you explain the role of both in DevOps.
DevOps became so popular with the implementation of Agile by facilitating RAD(Rapid Application Development) in a better way!
But where does QA fit into the world of continuous integrations dominated by DevOps?
Well pretty much almost in every release! A Quality Analyst is required to assure the robustness of a product. Especially in the world of DevOps where the updates take place in an application almost on weekly basis. With so many frequent changes taking place, outages look to be very common. Outages are supposed to wreck the life of a developer and the manager. Everyone needs a quick hotfix when a service of a product goes south affecting more than a single customer.
But an immediate fix needs to be thoroughly tested before it gets migrated in Production. Developers and product manager would want the job to be done in a whim. This is where QAs need to step up and take the responsibility of evaluating whether that immediate fix for one outage doesn’t end up affecting any other functionality in the application. So just as much as a developer is needed to get rid of an outage by a quick fix, a Quality analyst is needed to prevent future outages to as many extents as possible.
QA as a stage environment is pretty crucial in itself for every successful web product.
It is considered a best practice in every SDLC:
Most of the times a web-app workflow comprises of 3 environments dedicating one for each team: Dev, QA a.k.a Staging & Prod in your release workflow.
Developers are free to apply the fix on existing bugs in any way they deem efficient in the local Dev environment.
Developers perform unit testing for the validation of the latest feature implemented by them.
Once unit testing is successful, the feature is pipelined into Staging or QA for testing and quality assurance.
Staging is where regression testing takes place to make sure that recent features are applying a fix to the problems without disturbing any other functionality of the existing application.
Release date arrives and the features who passed with flying colours in the QA/ Staging environment are migrated to Production.
QA environment as a stage helps to:
Provide a sense of reliability – Staging environment helps in ensuring the reliability of our code, pipeline, infrastructure & overall product.
Hastens Disaster Recovery – If a recent release is causing disruption of service in your product then you can roll back to the previous version with a lot less to worry about. This is vital if you are offering a SaaS where one outage could result in losing a large number of valuable customers.
Why do we need a QA when we have a Dev environment for DevOps?
Dev Environment is ever changing – With Agile Scrum Development, the demands of end users are ever changing, increasing fluidity in terms of the state of a product. It becomes nearly impossible for a QA to find a time window for performing a complete round of regression testing. Also, the tools used by a developer could prevent a QA validation to take place in an appropriate manner.