How to ‘shift left’ to defeat defects

The earlier you ‘Shift Left’ in your Software Delivery Life Cycle (SDLC), the better. If your work isn’t thoroughly checked at the beginning of SDLC, a lot of rework and maintenance at a later stage can cause dreaded defects on the whole project, as well as destroy your budget.

“Without testing early in the lifecycle you will not be able to deliver with high quality nor keep high quality during the lifecycle,” agreed Thomas Noe, Project Quality Manager at Collibra.

Recent research found that more than 56% of defects occur in the requirement phase, 23% in the design phase, 10% in the development phase and 10% defects originate in regression testing and other sources. To prevent defects, developers should design their unit tests and review code before commits.

Agile testing

Quality Assurance Manager at Wyndham Vacation Rentals UK, Felicity Lord, continued: “These days, with the adoption of agile and CD/CI, I would expect the test to either be driving the whole development lifecycle or at the very least for it to be considered a constant presence throughout the lifecycle from beginning to end.”

Agile testing is an approach typically implemented to reach high-quality products, sooner and more efficiently in the cycle. Testers work in an agile way by providing feedback early to the developers, testing manually and building automation scripts; this helps teams to meet their sprint goals with near production ready code.

In SDLC, the steps a tester typically makes is to plan the entire project, finalise the plan, receive clarification from the client, then prepare. But, of course, this varies from project to project, depending on the requested outcome.

“I have experienced the traditional waterfall model considering testing as a phase. The testing phase is known to come at the end of the development cycle. Often, I’ve been facing challenges to stick on the planed execution window if the input quality or the start dates were not as expected,” revealed Chekib Ayed, Global Head of Testing Practices at Societe Generale Corporate and Investment Banking (SGCIB).

‘Delivering benefits faster’

Ayed believes ‘Shifting Left’ the testing activities will bring at least 3 main benefits:

  1. Testers will have more proximity to developers which helps to have more synchronised comprehension, which leads to more effective and relevant test cases.
  2. Defects will be detected and fixed at early stages that reduce drastically the fixing costs.
  3. Automated tools are more easily integrated into the software factory, which increases the global quality of the product.

According to Steve Watson, Interim Project Manager at Reed Business Information, “The earlier something wrong is found, the easier it is to fix. But there’s another angle: Testers see things from a different perspective and can provide input into design discussions, offering insights that may be missed if left until late in the day.”

For test activities to be achieved earlier in a more efficient way, you must invest in infrastructures. In order to test early in the process, you need tooling, test environments, and quick deploys.

Infrastructure investments

Every tester wants to deliver the highest quality product while adhering to cost containment principals and to achieve this, you have to maintain many different machine environments and test applications. Typical test environment compromise an array of test servers, little virtualisation and primarily manual allocation and configuration of individual test environments.

The following tools can be helpful when verifying the functionality of an application:

  • Selenium Webdriver: The advantage of using Selenium WebDriver over other UI automation tools is that you have the ability to write your automated tests in different supported programming languages, such as Java, C#, Ruby, Python, and PHP.
  • JMeter: This is an opensource performance testing tool written entirely in Java. It can be used to load test websites as well as SOAP and REST web services and databases.
  • SoapUI: When using SoapUI you can create mock web services, which helps when creating tests for a web service which is not yet fully completed.
  • WireMock: This can be deployed into a test environment and used within a unit test, as well as supports HTTP response stubbing, request verification, proxy/intercept, record/playback of stubs and fault injection.
  • Selenium Grid: This is a useful tool when running the same tests on multiple browsers or against other operating systems. It also executed Selenium tests in parallel.
  • Appium: An open source test automation framework for use with native, hybrid and mobile web apps, which also drives iOS and Android apps using the WebDriver protocol.
  • Cucumber: Cucumber simplifies requirements for stakeholders, as well aids the collaboration between team members in specifying requirements, guides development, drives automated tests and describes the system.

“Shorter feedback loops result in faster time to market and lower overall costs of software development. Using API mocking and service virtualisation to test components in isolation early in the lifecycle with tools like Traffic Parrot or Wiremock has never failed me,” added Wojciech Bulaty, CTO at Traffic Parrot.

Cloud computing

Cloud computing and tooling present an unprecedented opportunity to accelerate the business value received from the software delivery lifecycle.

Moving development tools into the cloud can ensure that all developers are using the same level of tools, as well as allows you to define a single set of virtual machines for testing, which can be started when needed and then shut down when the tests have been completed.

A development and test cloud provide the following benefits for clients:

  • Cloud increases flexibility, as well as maximises infrastructure utilisation
  • Environment provisioning drops from weeks or months to minutes or even hours
  • Application virtualisation speeds up the development and test cycle
  • Cloud-based app lifecycle management tooling allows for standard configurations and quick onboarding.

In conclusion, Shift Left testing strategies, including cloud computing and tools, can help when testing as early as possible in the development process. This enables both testers and development with diverse skill sets to unanimously focus on quality from day one of the projects, instead of finding defects later in the development lifecycle.

Written by Leah Alger