Research from the National Science Foundation points to the economy-wide influence of software creation. Half of all companies that perform their own R&D invest in software R&D. These investments in new and improved software represent one-third of the nation’s private-sector R&D dollars and are distributed across every industry.
As individuals and businesses, our connections to the world are increasingly reliant on software. To deliver the experiences we’ve come to rely upon successfully, businesses must approach quality strategically as software development becomes more closely tied to business success.
While agile and DevOps have become mainstream development methodologies to help companies meet the demands for software development and business innovation, developers tend to get all of the credit. Quality assurance (QA) has yet to earn a seat at the table as a valuable contributor to brand reputation, customer satisfaction and business growth. Yet QA is central to both agile and DevOps success, and quality professionals should be represented and valued for the role they play in the reliable delivery of high-quality software. The Software Fail Watch: 2016 in Review report found that software failures impacted 4.4 billion people—over half of the world’s population—and 1.1 trillion in assets last year.
The reality of software failures have been well documented, resulting in damage to brand reputation, stock prices and revenue loss. QA has a strategic role to play in proactively minimizing software failures, as well as their impact—when and if they do occur.
But even in agile and DevOps environments, QA is often left with their original place in the traditional waterfall methodology—coming in to perform testing after each development sprint is completed. With shorter delivery cycles this puts QA teams at odds with development, forcing them to meet deadline constraints above taking the time needed to ensure quality and performance at scale before deployment.
The value of QA throughout the software development lifecycle (SDLC)
DevOps means automating processes via continuous integration (CI), continuous delivery (CD) and ultimately continuous deployment practices made possible by automation to get high-quality software to market faster. If QA is not involved from the start, the ability to execute successfully against an agile or DevOps strategy will be in question.
While test automation is used to decrease the amount of time it takes to validate requirements prior to delivery, (and ultimately decrease your time to market), not every business scenario can be automated. QA testers understand this, can help define the appropriate automation and play a pivotal role, when involved from the start, to ensuring that all aspects of the project are tested, including functions, APIs, performance, security and more.
Four ways QA can assist in the transition to DevOps
1. Transformational change
Testers are your subject matter experts on how the application works from the front end, as well as the back end. This means they can advise the company about the challenges it may face during the transition to a new way of working. They can also provide insights on where bottlenecks and expenses can cause additional concerns, eliminating unpleasant and expensive surprises.
The concept of “continuous” has become the norm for software development and other company functions. Continuous has been used to modify integration, deployment, testing, delivery, monitoring and to the concept of overall improvements. This closed-loop thinking must also be applied to quality. Quality can and should be continuous to ensure that the output is quality-driven, not a “bolt-on” after the fact. The value is finding and fixing defects faster and earlier in the SDLC, which minimizes costs. And, a mindset for continuous quality ensures that software and applications are built for performance first, rather hoping they will perform and scale when it comes time to test.
3.Long-term partnership with DevOps
Trends including test-driven development (TDD) and behavior-driven development (BDD) could be the uniting factor that aligns QA with development to achieve high degrees of automation without sacrificing quality product delivery. TDD requires that tests be written before writing code, but also increases your test coverage, which is the amount of code testing that is automated. BDD suggests testing behaviors rather than thinking about how the code is implemented. Write BDD tests in the form of “it should do something.” This combination serves to bring testers and developers closer together by focusing on the big-picture outcome from the start, rather than one unit at a time.
4.Test strategy brings product insights
The role of QA in an agile or DevOps environment is to keep the development team and business owner apprised of the state of the product at each stage of the SDLC. Creating a test strategy requires a thorough understanding of the product and the outcomes it will produce to ensure that the product will meet business objectives upon release. There are many components to be tested, including the UI, APIs, security, units, and more. Testers use, on average, three to five techniques for testing applications. A test strategy designed to validate well-understood outputs from the user perspective helps to build confidence in the dev team by validating the code they’ve written does exactly what the requirements specified. Or alternatively, catching a flaw in the design based on a misperception.
QA brings a lot more to development projects than just testing. As the subject matter experts on your products, and as the bridge between DevOps and business owners, QA teams have the knowledge and communication skills to help their organizations make the shift to quality as a strategy. All organizations and the people who work for them are reliant on software to grow the business and get their jobs done. Relegating QA to an afterthought during the SDLC puts the health of the business at risk.
Continuous quality won’t happen on its own. It’s up to QA professionals to rock the boat and show DevOps and business owners that they can bring strategic value to software development projects throughout the entire SDLC. The goals of agile and DevOps are aligned with the outcomes that a mindset of continuous quality can bring. QA could just be the missing piece to make digital transformation a near-term success for the business.