Transitioning from Quality Assurance to Quality Engineering

October 2, 2017

Wikipedia defines Software Quality Assurance as “consisting of a means of monitoring the software engineering processes and methods used to ensure quality”. In earlier stages of the software development era, developers used to write code and Quality Assurance team was tasked with checking it for quality, which was the last thing that had to be performed in the software development lifecycle. The world of software development is however, rapidly evolving with complex workflows across platforms, device and organisational boundaries. It is definite that the previously mentioned process is no more sufficient to answer the needs of the exploding market for platforms, apps, and content.

Today, the goal of Agile is to persistently test, dissect and enhance programming quality throughout the advancement lifecycle, as opposed to only toward the end of the cycle. In this environment, mere ‘assurance’ through process monitoring and reactive testing frameworks will not help achieve high quality standards. Engineering quality into the management, development, operation and maintenance of IT systems and enterprise architectures is the only way organisations can ensure end-to-end quality the current environments demand.

The principles of “Shift Left” has heavily influenced the transition to Quality Engineering. Shift left testing  is an approach to software and system testing in which testing is performed earlier in the lifecycle (i.e., moved left on the project timeline). Test and development teams work together in a continuous integration model and it is very important to design code which is testable and easy to integrate. This in turn allows for quick localisation of a problem and to assure individual parts are working before a significant amount of software is combined or integrated together.

What does QE transformation entail?

Organisations will have to prepare themselves internally to ensure a smooth transition from Quality Assurance to Quality Engineering. A few factors that they’ll have to keep in mind are:

  • A robust Quality Engineering Process which will define and drive the software development lifecycle
  • Adopt a sustainable Automation framework and methodology
  • Scalability of Test Infrastructure: Quality Engineering team should be able to execute multiple test cases in parallel and be efficient with their testing in general.
  • CI/CD and DevOps Integration: Automation will not be effective if it just follows old-fashioned constructs. The process of continuous integration with the help of DevOps Engineer can take the utilization of test automation to the next level.
  • Test Environment and Test Data: Preparation of test environment, configurations, and test data is very important to have the closest set up possible to the production environment.

Software Quality Engineering involves using data evidence to assess software production readiness at each step in the delivery process. QA teams have to transform in to QE teams and  become data providers than just guarding the code.  They will have to

  • be involved much earlier in the value stream to map out dependecies
  • be part of product design and architectural discussions
  • write code to test code and develop test automation frameworks tending towards Test Driven Development
  • build scalable and robust test automation solutions for functional, regression and performance testing

So what does the future look like?

With the need and importance of software testing growing annually across the globe, what, when, and how to test are areas that also must never stop growing or evolving. Newly developed applications and products are required to be tested end-to-end, while keeping Performance, Functional and Security benchmarks in mind. Quality Engineers, with their abilities in the areas of code/automation development as well as test execution would be a great fit in today’s market.

We would see development teams increasingly seeking critical data from their QE teams inorder to asses their code, before pushing it to production. We would expect the QE teams to build the test infrastructure that can capture and analyse percieved risks and potential impact on customers and end-users. We would see QE teams being part of building mitigation strategies.

In short, Quality is everyone’s responsibility and only Quality Engineering can ensure that!