Content deleted Content added
Fixed typo Tags: Reverted Mobile edit Mobile web edit |
Restored revision 1139173049 by 2604:2D80:9196:A00:880C:129:7DCD:714F (talk): Rv to earlier state of article prior to addition of OR/unsourced content and WP:EXT that are unreliable in terms of sources |
||
Line 1:
{{Short description|Type of software testing}}
'''Shift-left''' testing refers to testing software early in the [[Software development|development]] process, while [https://www.dynatrace.com/news/blog/what-is-shift-left-and-what-is-shift-right/ shift-right] testing refers to testing towards the end of the development cycle. The term, "shift-left" is used to describe the idea of moving [[software testing]] earlier in the process, which [https://www.softwaretestinghelp.com/shift-left-testing-approach/ can help catch defects earlier and reduce the cost of fixing them later]. In contrast, "shift-right" refers to testing later in the process, which can help ensure that the software meets the intended requirements and functions correctly before it is released. Shift-left is also the first half of the maxim "test early and often",<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/vstudio/ee330950%28v=vs.110%29.aspx |title=Test Early and Often |author=Microsoft | date=2012 |access-date=27 March 2015}}</ref> coined by Larry Smith in 2001.<ref>{{Cite journal|last=Smith|first=Larry|date=September 2001|title=Shift-Left Testing|url=https://www.drdobbs.com/shift-left-testing/184404768|journal=Dr. Dobb's Journal|volume=26|number=9|pages=56, 62}}</ref><ref>{{Cite web|url=http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/2001/0109/0109e/0109e.htm|archive-url=https://web.archive.org/web/20140810171940/http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/2001/0109/0109e/0109e.htm|url-status=dead|archive-date=2014-08-10|title=Sep01: Shift-Left Testing|date=2014-08-10|access-date=2019-09-06}}</ref>▼
{{multiple issues|{{more footnotes|date=May 2015}}{{essay-like|date=May 2015}}
▲'''Shift-left testing'''<ref>{{cite
==
Shift-left testing aims to prevent the following types of harm because of late testing:
* Insufficient resources allocated to testing.
* Undiscovered defects in requirements, architecture, and design, along with significant effort wasted while implementing them.
* Difficulty [[debugging]] (including identifying, localizing, fixing, and regression testing defects) as more software is produced and integrated.
* Reduced [[code coverage]] during testing{{Citation needed|date=October 2017}} as a result of [[Encapsulation (object-oriented programming)|encapsulation]] impeding [[white-box testing]].
* A “bow wave” of [[technical debt]] that can cause a project to fail.
==
=== Traditional shift-left testing ===
As illustrated in the following figure, traditional shift-left moves the emphasis of testing lower down (and therefore slightly to the left) on the right hand side of the classic V model. Instead of emphasizing acceptance and system level testing (e.g., [[GUI testing]] with record and playback tools<ref>{{cite web|url=https://msdn.microsoft.com/en-us/library/dd286714.aspx |title=Record and Playback Manual Tests |author=Microsoft | date= 2013 |access-date=27 March 2015}}</ref>), traditional shift-left concentrates on [[unit testing]] and [[integration testing]] (e.g., using [[API testing]] and modern test tools). The transition to traditional shift-left testing has largely been completed.{{By whom|date=April 2016}}
<gallery>
Traditional-Shift-Left.jpg|Traditional shift-left testing
</gallery> ▲|}
=== Incremental shift-left testing ===
As illustrated in the following figure, many projects developing large and complex software-reliant systems decompose development into a small number of increments (Vs) having correspondingly shorter durations. The shift-left illustrated by the dashed red arrows occurs because parts of the single, large waterfall V model’s types of testing (shown in gray) are shifted left to become increments of the corresponding types of testing in the smaller incremental V models. When each increment is also a delivery to the customer and operations, then incremental shift-left testing shifts both developmental testing and operational testing to the left. Incremental shift-left testing is popular when developing large, complex systems, especially those incorporating significant amounts of hardware. Like traditional shift-left, the transition to incremental shift-left has also been largely completed.
<gallery>
</gallery>
▲<gallery>Incremental-Shift-Left.jpg|Incremental shift-left testing</gallery>
=== Agile/DevOps shift-left testing ===
As illustrated in the following figure, [[Agile software development|Agile]] and [[DevOps]] projects have numerous short duration Vs (sprints) in lieu of a single or small number of V as in the previous two examples of shift-left testing. These small Vs would also be modified if one or more early sprints are used to block out the basic requirements and architecture or if test-first and [[test-driven development]] (TDD) are being performed. The shift-left occurs because the types of testing on the right sides of the earliest of these tiny Vs are to the left of the corresponding types of testing on right side of the larger V(s) they replace. While the following figure appears remarkably the same for Agile and DevOps, Agile testing is typically restricted to developmental testing and does not include operational testing, which occurs once the system is placed into operation. The transition to Agile/DevOps shift-left testing is currently popular and ongoing.
<gallery>
</gallery>
▲<gallery>Agile_DevOps_Shift_Left_Testing.jpg|Agile/DevOps shift-left testing</gallery>
=== Model-based shift-left testing ===
The previous forms all concentrated on testing earlier in the development cycle. However, they all test ''after'' software exists and seek to uncover only implementation defects.{{cn|date=January 2021}}
Model-based testing moves testing to the left side of the Vs, by testing requirements, architecture, and design models. This shift begins testing almost immediately, instead of waiting a long time (traditional testing), medium time (incremental testing), or short time (Agile/DevOps) for software to become available to the right side of the Vs. This trend is just beginning.
<gallery>
</gallery>
▲<gallery>Model-Shift-Left.jpg|Model-based shift-left testing</gallery>
== References ==
|