Shift Left Testing in Ios

Introduction :

The concept of shift testing implies that testing begins at the very initial stage of the software development life cycle. The aim of this testing is to reduce long test cycles, enhance quality or to reduce the possibility of defect detection at later stages. Shift left testing avoids delays, rework bring done to fix errors that may occur, by following the strategy of integrating the developed components, as and when they are delivered, in a realistic production-like test lab. If in case any of the component cannot be delivered within the prescribed time limit, then a virtual set up can be sought which emulates the behaviour of the real work environment, until the final product is released.

But why the term shift left? What relevance does left hold ? Shift left has derived its meaning from a model in software testing, in which integration testing lies on the right side of the model, which implies that integration testing is the next subsequent test after unit testing. But the concept of shift left testing has imbibed it in its own form by shifting it to the left side, that is, testing begins at early stage. The positive impact of shift testing can be seen in agile development, where there has been a noteworthy improvement in quality as the developers delivered code in pieces, that made the task of error detection simpler and quicker.

Types of Shift Left Testing :

To categorise the various types of testing, we will take the V-model into consideration as that forms the basis of this model.

  • Traditional Shift Left Testing -This is the basic approach that states the traditional form of testing shifts a little on the left. The shift left testing emphasises on unit and integration testing.
  • Incremental Shift Left Testing -In quite large sized projects, the development process is decomposed into small number of increments, having small durations. Each increment has a corresponding type of testing. When each increment becomes a delivery to the customer and operations, the incremental shift left testing shifts the developmental and operational testing to the left.
  • Agile/DevOps Shift Left Testing -Just as in the previous type, each V is an increment towards the next. In DevOps/agile, the V's would be modified if there is a blockage in the requirements or architecture. It is a continuous testing process.
  • Model Based Shift Left Testing -The earlier models emphasised waiting for the modules to be prepared, and then begin testing. It is in quite early phases of the software life cycle. However waiting until the software code is ready, delays the whole process. So this model comprises of executable requirements, architecture and designs. One can begin with testing almost immediately.

What if.. !!

Ever wondered what would it be like , had the concept of shift left testing never taken place! Or the synonymous statement could be, what if we had considered opting for late testing? Then the situation would have been quite different. Let us have a look at the following few facts, that highlight the impact that our project can face due to late testing.

  • Planning and resources: The testers would not have been in a position to allocate the right resources at the right places, as there would have been no planning in the initial stages of the software development life cycle.
  • Initial planning definitely helps to uncover few facts that are otherwise difficult to trace in the absence of the same. Like faults in the architecture, requirement specifications and also in the design document. If such activities are realised at a later stage, one has to backtrack to the root cause, which consumes a significant amount of time.
  • Debugging is comparatively tougher as the structure of the code/application has increased to an enormous volume.

Conclusion :

The focus of this testing is to enable detection of errors at an early stage, in order to save time and cost of fixing the defects. It relies on step by step integration of small pieces of code, therefore minimising the chances of errors. It improves efficiency and effectiveness of the software testing process.