Quality Engineering (QE) is the process by which software quality is tested, analyzed and improved throughout the application development lifecycle. It differs from traditional Quality Assurance, which, in a Waterfall-dominated world, was something attached to the end of a software development process. It also differs from QA in that it prevents defects as well as detect them. At InfoStretch, we prefer the more descriptive and inspiring “Quality Engineering” over “Agile Testing” or “Continuous Testing” which seem smaller in scope.
Why Quality Engineering is Vital
Now, as we shift towards an Agile and DevOps dominated world, QE rises in importance.
With both of these development movements, quality is theoretically optimized throughout the process as it becomes the responsibility of everyone involved. This has inherent advantages and disadvantages.
The biggest advantage is the effect of making everyone accountable for producing high-quality code through the rigor and discipline involved in Agile or DevOps. Paradoxically, that is also its biggest disadvantage. If something is everybody’s responsibility, then is it no-one’s responsibility? For anyone that had college roommates, think back to when someone said “let’s just all tidy up after ourselves each day”. How well did that work after the first couple of days or weeks?
In enterprise-level software development, QE is where the organizations that have embraced Agile and DevOps most routinely fall down. It seems to us that the mindset of Waterfall has a hangover in Agile and DevOps as far as testing is concerned. Instead of QA being that thing you do at the end of the development cycle, it is often now that thing you will get to on the next iteration. According to a Forrester report, admittedly from September 2013, only 13% of Agile adopters had implemented Agile testing.
Without the continual involvement of a disciplined quality regime throughout an Agile or DevOps process, the end result will be a poor-quality product, which makes the momentous shift to Agile or DevOps pointless. “Hey, the product doesn’t work very well, but we sure got it out fast”. That doesn’t sound like the ethos that any development lead would want to admit to.
What are the Benefits of Quality Engineering?
With QE, a major advantage for your application development cycle is that you are actually making all the proposed benefits of Agile and DevOps more real. As I described above, a fast, poor-quality product helps no-one. Also the collaboration between developers and testers is more real, much more in line with the Agile ethos. Testers have to be involved at the beginning of the cycle as they will be setting up the testing framework and environment which will be relied upon for all future sprints.
Done right, QE provides a great deal more speed in testing. QE relies more on Test Automation than manual testing. It is hard to imagine a QE function that does not have Test Automation at its center. And again, done right, it creates more speed and flexibility for the whole development cycle. It’s not just functional and non-functional testing, but every layer and every integration that can and should be tested. Any remaining manual testing can then be much more creative and exploratory.