Increasing Engineering Velocity & Team Efficiency with Quality Intelligence

Eran Sher
Eran SherCEO & Co-founder | December 24, 2018

The number one goal of software dev teams in today’s fast-paced development environments is increased velocity. The short, continuously iterative development practices that characterize Agile methodologies means that teams are putting out more and more releases multiple times throughout the day, as opposed to only releasing a few times a year or once every couple of weeks.

Today’s software development organizations often have to code in multiple languages, leverage various frameworks and carry out tests in languages that differ from those in which their code is written. Furthermore, tests are now written in code and they’re no longer being executed manually by QA members.

They’ve also had to deal with multiple technology stacks and new organizational structures.

In the past, software development functions were streamlined and distributed between various teams. Dev teams passed code to the QA teams, who would then pass it over to configuration management before release.

However, with the all-pervasive adoption of DevOps, most software development companies have transitioned to a continuous testing model. Testing is no longer relegated to the end of the delivery process — it is now an integral part of sprint planning and execution.

As such, software development organizations attached their QA engineers to scrum teams — effectively merging QA and software development roles, giving rise to “distributed QA.” With scrum teams combining the role of business analysis, development, and testing, everyone became responsible for delivering high-quality software faster and as such, are accountable in the event of production issues.

Although this has brought a lot of benefits to dev teams (including shorter development cycles, faster releases and earlier detection of bugs), it has given rise to a number of challenges — one of which is a lost sense of control and visibility.

Due to multiple technology stacks, lots of microservices, integrated teams and so on, management often have little control or insight into the general status (and quality status) of their product.

Increasing Engineering Velocity & Team Efficiency with Quality Intelligence - Figure 1Source: SQA Labs 

Inefficiencies

There’s also a certain amount of inefficiency. Since tests are now written in code, QA engineers have to write the tests in addition to writing the code itself. Furthermore, the lack of visibility means that most engineers don’t know exactly where and what they’re testing. They usually end up writing more and more unnecessary tests since they do not really know the areas of code they’ve tested or not tested.

Decreased Product Quality

Also, the need to rapidly deliver software to clients has transformed the software development space into a fast-paced, high-velocity environment — one that is forcing software teams to code much faster and deliver features more quickly. With developers constantly updating and modifying their code, it’s difficult to keep track of all the changes. QA engineers are required to write tests to cover all those changes, a somewhat impractical, if not impossible task. As such, there is little or no visibility on the code areas that have been tested or not tested.

In high-velocity development and deployment environments, these code changes can reach production without being tested, resulting in the release of bug-filled, sub-optimal software.

In essence, dev teams with no visibility or insights into the changes they’ve made during a sprint or the tests that have been written and executed for a particular component are very likely to miss something important.

The only way that dev teams can ensure that all their bases have been covered is through the collation and analysis of data from their entire software development pipeline. This includes data from user stories, test data (parameters and values to be used), environment data, build data, usage data, coverage data, and production data.

Increasing Engineering Velocity & Team Efficiency with Quality Intelligence - Figure 1Image Source

Monitoring the CI Process

Dev teams must also monitor the CI process closely. Applications are coded in multiple builds where each build contains incremental code changes. In such an environment, CI/CD pipelines (as well as functional, API and regression testing) require functional test code coverage to enable visibility and quick feedback loops.

With SeaLights’ Test Quality Analytics, Test Impact Analytics, And Release Quality Analytics, data from the entire software development pipeline can be collated and analyzed to enable dev teams and QA managers effectively plan sprint runs and release higher-quality software.

Test Quality Analytics

Writing and maintaining multiple tests for the same area of code is inefficient and wastes engineering resources. SeaLights minimizes test development by identifying areas of code that was recently changed or executed in production but have not been tested in any of regression cycle.

By combining refactoring, code analysis, machine learning, and data mining techniques, Test Gap Analytics enables QA managers to make accurate decisions on where and when tests should be written and executed as well as a plan where to develop new tests in upcoming sprints. Such data-driven decisions are key to increasing release velocity in fast-paced development organizations and makes for more effective sprint planning.

Release Quality Analytics

With little or no sufficient insights into the data generated throughout the software development pipeline, today’s software teams often make bad release decisions. Increasing software quality requires the interception of any untested code changes before they reach production. Such untested areas of code are most likely to contain bugs, ultimately resulting in failures, negative user feedback/experiences, and a waste of time and engineering resources on hotfixes.

To prevent this, QA teams must know exactly what they’re testing. SeaLights applies real-time analytics to hundreds of thousands of test executions, code changes, builds, historical data, and insights from production to help detect untested code changes that slipped through to production and determine release readiness.

Conclusion

Increasing engineering velocity & team efficiency in the face of current software development practices and the new technology stack requires dev teams and scrum managers to leverage quality intelligence solutions.

By providing dev and QA teams with relevant insights based on actual data from the software development pipeline, SeaLights helps facilitate more efficient sprint planning and execution, thus increasing development velocity and ensuring the faster delivery of high-quality software to clients.