Last week I had the honor and privilege of addressing the STC 2017 conference in Bangalore India. STC is the pre-eminent trade show in India for software testing practitioners, drawing delegates from a diverse array of companies and geographies. One of the most important themes discussed at the show was the widespread acceptance and adoption of Agile practices, and its impact on the testing community at large. The impact of Agile in software testing is particularly profound in the trend known as “Shift Left.”
In today’s fast paced-development environments, a siloed approach to quality assurance is no longer seen as a best practice. The lines between development and QA are blurring, as developers themselves take on a greater responsibility for the quality of the applications they are building. This transfer of responsibility is a key part of “Shift Left”. The classic Testing Center of Excellence (TCoE) is transforming itself into an enterprise-wide resource that supports distributed teams in their own testing efforts, often call Test Excellence Centers (TEC).
As developers take more responsibility for quality, it is important to understand that they are not simply replicating the testing practices that the traditional TCoEs used. There are significant differences in how developers address these new responsibilities. Perhaps the most important difference is that developers prefer to test at the services/API layer rather than at the UI layer. Projects benefit greatly from this model in several ways:
- Defects are caught much earlier in the software development lifecycle, where fixes are cheaper and faster.
- Downstream UI testing becomes more efficient, since UI issues are often caused by the underlying services they call. Catch those underlying issues in the development phase, and the downstream UI testing is much more efficient.
- API testing lends itself well to full automation. Teams should be able to automate 100% of their API testing. As a result, adding comprehensive API testing to a CI harness is relatively straightforward, for teams using the right toolset.
There are a couple of considerations to take into account, as developers’ responsibilities for quality increase:
- Developers have been doing unit testing at the services layer for some time, commonly using open source tools like SoapUI for basic functional testing. But APIs often exist the context of their dependent services. So as developers take on more responsibility for quality, they must link unit tests, passing the results of a test of one API on to another as its input. Testing scenarios like this, becomes complex without a commercial tool.
- Many of the dependent APIs the developer needs to call to test her API may well be in development by other team members. If the developer wants to execute a realistic test that incorporates dependent services, she’ll either need to wait for her peers to finish, or alternatively, leverage virtualization With virtualization, a developer has access to any required service at any time for testing, regardless of its state in the development lifecycle. This accelerates time-to-market and reduces costs.
Enterprises that are adopting Agile development methodologies and practices are seeing the shift left paradigm in their organizations. To fully equip developers for this paradigm, developers need tooling that allows them to easily express and execute linked tests without scripting. And to eliminate the need for dependent variables, developers must have the ability to do full-scale virtualization from their own platform.