Guideline: Adopting this solution


Adopting Shift Left

Adoption of Shift Left proceeds similar to any other DevOps adoption effort.  See the DevOps Adoption Framework for general DevOps adoption guidance.

The following table describes how to precede integration testing before unit testing at different levels of project development:

Project Leadership
  • Lay out plans that prioritize integration tests as the primary steering mechanisms
  • Elaborate usage scenarios for 1) highest value and 2) the most uncertainty
  • Tradeoff most important system requirements and attributes such as changeability, performance, integrity, security, usability, and reliability

Design/Development

  • Develop units, services, and components that are always executable and testable
  • Initial versions permit execution sufficient to satisfy their system interfaces
  • Progress toward more completeness across their entire operational spectrum

Testing

  • Build testing infrastructure, data sets, sequences, harnesses, drivers, and test cases that permit automated regression testing
  • Define system behavioral tests, usage tests and performance tests first.
  • Then build system coverage tests


Applying Shift Left

The diagram below shows how a cross functional mobile development project can leverage shift left to mitigate dependencies, reduce or eliminate integration testing and coordinate activities. The process for each component of the project is iterative.


The considerations for Shift Left are all undertaken in order to begin test and perform it more effectively at an earlier point in the software delivery life cycle. It is widely accepted that testing and defect resolution are more expensive if undertaken at the latter stages of integration as shown in the graph below.

However, the combination of automation and virtualization provide an enabler to actually performing the testing early without slowing down the delivery pipeline. This graph shows that once Shift Left is implemented, the impact on costs associated with defects, regardless if the numbers of defects is constant, will reduce if they are found earlier in the lifecycle.

Practices and Capacity

Continuous Integration, Automated Deployment, and Virtualized Services are key Shift Left practices. They enable a team to continuously perform integration testing during development.

The capacity of Shift Left or the periodicity you provide feedback to developers is driven by your objectives for improvement and only constrained by your ability to support the capacity requirements for each of these practices to support Shift Left. Some excellent papers that dive into these concepts and practices include:

Customer Stories 

... More