Content deleted Content added
Tags: Reverted possible vandalism |
|||
Line 39:
==Methodologies==
===Test-driven development===
Test automation, mostly using unit testing, is a key feature of [[extreme programming]] and [[agile software development]], where it is known as [[test-driven development]] (TDD) or test-first development. Unit tests can be written to define the functionality ''before'' the code is written. However, these unit tests evolve and are extended as coding progresses, issues are discovered and the code is subjected to refactoring.<ref name="Learning TDD">{{cite journal|doi=10.1109/ms.2007.80|title=Learning Test-Driven Development by Counting Lines|year=2007|last1=Vodde|first1=Bas|last2=Koskela|first2=Lasse|journal=IEEE Software|volume=24|issue=3|pages=74–79|s2cid=30671391}}</ref> Only when all the tests for all the demanded features pass is the code considered complete. Proponents argue that it produces software that is both more reliable and less costly than code that is tested by manual exploration.{{citation needed|date=January 2013}} It is considered more reliable because the code coverage is better, and because it is run constantly during development rather than once at the end of a [[Waterfall model|waterfall]] development cycle. The developer discovers defects immediately upon making a change, when it is least expensive to fix. Finally, [[code refactoring]] is safer when unit testing is used; transforming the code into a simpler form with less [[code duplication]], but equivalent behavior, is much less likely to introduce new defects when the refactored code is covered by unit tests
===Continuous testing===
|