What is the Role of QA in the world of DevOps?
Para acceder a post original click aquí
DevOps is an extension of agile software development approach that enables software development and testing to happen simultaneously with continuous collaboration between all stakeholders. Enterprises today are witnessing a rapid adoption of DevOps to accelerate time to market and to better respond to, and meet the ever-changing customer needs. DevOps has emerged from the necessity of businesses to respond more quickly to market changes to attain competitive advantage and rapid business growth.
A quick overview of DevOps:
- High-performing IT organizations experience 60x fewer failures and recover from failure 168 times faster than their lower-performing peers. They also deploy 30 times more frequently with 200 times shorter lead times.
- Lean management and continuous delivery practices create the conditions for delivering value faster.
- It doesn’t matter if your apps are Greenfield, Brownfield, or legacy — as long as they are architected with testability and deployability in mind, high performance is achievable.
- IT managers play a critical role in any DevOps transformation.
- Diversity matters.
- Deployment pain can tell you a lot about your IT performance.
- Burnout can be prevented, and DevOps can help.
Source: State of DevOps Survey Report 2015 by Puppet Labs
DevOps practices are intended not only to improve the regularity of feature releases but also to reduce defects. DevOps is an approach highlighting rapid, small, iterative development and deployment of applications. DevOps is the answer to the requirement of enterprises that need to catch up with the relentless speed of business growth. It is driving enterprises to streamline and speed up the delivery of applications along with changes and innovation. It isn’t just about continuous delivery, but also about an overall continuous improvement of software as well.
- Why: Increase business benefits by reducing the transaction cost associated with delivering incremental change.
- What (Goal): Clarity, Consistency and Collaboration to understand the changes that each release brings to the IT and customer environments
- How: Methodology and tools that continue to evolve
- Who: Developers, QA and Operations
- Quicker and faster software delivery
- Stable operating environments
- Early detection and faster correction of defects
- Transparency and Collaboration across teams
- Continuous release and deployment
- Continuous testing
- Continuous monitoring
- Reduced time to market
- Improved quality
The Cultural Shift
DevOps is all about keeping the software deployable at any point in time over working on new features. It calls for a cultural shift among all stakeholders of the organization to come together and work towards a common goal of creating rapid, reliable and repeatable processes. DevOps encourages development and operations teams to function as one single team, focused on delivering business value across the IT value chain.
Traditionally, a development team and an operations department usually have entirely different deliverables and responsibilities. Development team continuously indulges in developing software / application based on changing user or market demands for new features or making changes and fixes in the existing product. Operations team tries to retain everything as constant as possible so as to deliver maximum stability and availability of software services.
Between the two differing goals of Development and Operations teams, Quality Assurance (QA) plays an important role as a key enabler in delivering business value. And, DevOps seamlessly integrates all the three functions – Dev, Ops, and QA into a single IT entity that delivers value. DevOps breaks down the organizational silos between development and operations teams. It emphasizes that QA is everyone’s responsibility. QA & testing functions as a bridge between all disciplines, from clients and business to development and operations in DevOps. QA & testing is viewed as one of the most vital levers for accelerating time to market within DevOps initiatives.
The Strategic Role of QA in DevOps
In the DevOps approach, testers and developers play equally important roles. The boundaries of job responsibilities between a developer and tester become blurred in DevOps. QA ties together development and operations and enables them to collaborate to have software and applications up & running. Everyone in the organization takes responsibility for quality and stability, and thereby for the business success.
A Developers thinks more like a testers, and continually checks their own code for potential errors. Conversely, a tester, whose responsibility is to test the application / software using different types of testing tools & methodologies, also fixes the code. In such a scenario, organizations without a strong and definite QA and testing strategy to “continuously test” in DevOps face troubles in meeting their goals for an accelerated speed of delivery.
As discussed in our previous post – Importance of Continuous Testing in DevOps – Continuous Testing, when implemented diligently, allows flawless continuity in the delivery cycle. It reduces the time from development to operations. QA is moving into a more strategic role building robust software testing infrastructure while tracking quality across the SDLC.
Having a QA strategy in place, coupled with best practices, has become very relevant, particularly as organizations are readily embracing the DevOps movement to enable effective software development and operations while achieving superior quality and user experience.
10 Best Practices of QA in a DevOps scenario:
- QA and testing teams should be part of technical teams. They have to move beyond manual functional testing, and should focus their efforts on automation, and testing strategies. QA becomes the enabler of quality across SDLC.
- Quality needs to be well-defined in order to meet requirements. Rather than trying to achieve perfection in software, QA should move towards focussing on accomplishing satisfying user experience within the given time frame.
- Metrics that measure quality have to be laid down and measured. Such metrics should detect software defects early in the development cycle.
- Goals of individual and teams need to be optimized. Organizations need to strengthen necessary behavior and cultural shift by incentivizing quality assurance.
- Requirements need to be specific. QA teams should proactively involve in the requirements process to help and guide development teams towards proper direction.
- QA & testing should focus more on automated regression testing on critical areas such as key software functionality.
- QA & testing has to move towards leveraging automation tools to automate testing wherever possible.
- Development, operations, and QA teams should be facilitated and encouraged to communicate, collaborate, and optimize their efforts.
- Continuous integration is the key to identifying defects early in the development lifecycle. For continuous integration to be implemented effectively, all the stakeholders have to integrate their work often on a day-to-day basis.
- A fully automated continuous testing process needs to be integrated into the SDLC for a successful continuous delivery process that minimizes risks, reduces costs, and accelerates time to market by frequent releases.