Test Driven Development Assignment: Key Characteristics & Benefits

Verified

Added on  2022/10/17

|5
|877
|16
Homework Assignment
AI Summary
This assignment delves into the concept of Test Driven Development (TDD), a technique that emphasizes short coding cycles interleaved with testing. It defines TDD as a cyclic development method where each cycle results in the successful deployment of a small feature, ensuring that unit tests cover the feature and existing tests pass. The assignment highlights the key characteristics of TDD, including refactoring and test-first development, and recommends iterative and incremental software development processes. It further explores the benefits of TDD, such as modular code and improved architecture, while acknowledging limitations like the need for test suite maintenance and its difficulty in applying to legacy code. Finally, it discusses the process of diverging TDD from or aligning it with software development practices, emphasizing the importance of professional developers in adopting TDD and the impact of TDD on software design quality aspects like maintainability, reusability, and understandability.
Document Page
Running head: TEST DRIVEN DEVELOPMENT
Test Driven Development (TDD)
Name of the Student
Name of the University
Author’s Note:
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
1
TEST DRIVEN DEVELOPMENT
1. Definition of Test Driven Development or TDD
Test driven development or TDD can be defined as a technique, which repeats short
coding cycle inter leaved with the help of testing. It could even be termed as a cyclic
development technique, in which every cycle coincides with successful deployment of a tiny
characteristic (Fucci et al. 2016). Every cycle gets completed only when the unit tests span a
feature and each of the existing regressing test pass. In the test driven development, every
cycle eventually initiates after writing a unit test. It is being followed by successful
implementation, which is required for making the test pass before concluding with
refactoring of code and removing any type of duplication, improving design or even replacing
the transitional behaviours. These cycles can also be referred to as the iterations of underlying
micro processes.
2. Key Distinguishing Characteristics of TDD with Type of Software Development
Processes recommended and supported by TDD
The key distinguishing characteristics of test driven development are as follows:
i) Refactoring: The first and the foremost key distinguishing characteristic of TDD is
refactoring. The entire process of TDD involves conversion of unit test to code and finally to
refactor. Refactoring of a code refers to change of some code without even affecting the
behaviour. It allows writing and correcting the failed tests even before writing new codes.
Thus, duplication of code is avoided with TDD.
ii) Test First Development: Another key distinguishing characteristic of TDD is test
first development. This TDD is the procedure for development and running of the automated
test even before actual development of the action.
The type of software development processes, recommended as well as supported by
TDD is iterative and incremental method (Bissi, Neto and Emer 2016). This is the
Document Page
2
TEST DRIVEN DEVELOPMENT
combination of both incremental building model and iterative design method for
development. During software development, over 1 iteration of the cycle might be in progress
at similar time.
3. Major Benefits and Acknowledged Limitations of TDD
The main benefits of TDD are as follows:
i) Since, small tests are done at once, TDD forces the code to be more modular. It
helps in internalizing the main principles of better modular design.
ii) TDD provided better architecture and for making the code stable, it should be
properly modularized.
iii) TDD makes code much easy to refactor and maintain (Fucci et al. 2015).
In spite of having these advantages, there are few acknowledged limitations, which
are as follows:
i) It is required to maintain the test suite and the tests might not be deterministic.
ii) It is extremely difficulty to apply to the existing legacy code in TDD.
iii) The unit testing could be carried out to an extreme position.
4. Process of Diverging TDD from or Aligning with the Software Development Practice
and Experience
The process to diverge TDD from or alignment with the software development
practice and experience is extremely effective and important for maintenance of software.
The test driven development is a new and unstudied development strategy (Rilee and Clune
2014). Pair programming improves defect detection as well as understanding of code
regarding improvement of software design. Professional developers help to understand and
Document Page
3
TEST DRIVEN DEVELOPMENT
select whether it is required to adopt TDD. It reveals over the impacts of software design
quality from application of TDD. Several quality aspects for this process are maintainability,
reusability and understand ability.
tabler-icon-diamond-filled.svg

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
4
TEST DRIVEN DEVELOPMENT
References
Bissi, W., Neto, A.G.S.S. and Emer, M.C.F.P., 2016. The effects of test driven development
on internal quality, external quality and productivity: A systematic review. Information and
Software Technology, 74, pp.45-54. Retrieved from
https://www.researchgate.net/profile/Adolfo_Neto/publication/295863661_The_Effects_of_T
est_Driven_Development_on_Internal_Quality_External_Quality_and_Productivity_A_syste
matic_review/links/57974ca208aec89db7b99c66/The-Effects-of-Test-Driven-Development-
on-Internal-Quality-External-Quality-and-Productivity-A-systematic-review.pdf
Fucci, D., Erdogmus, H., Turhan, B., Oivo, M. and Juristo, N., 2016. A dissection of the test-
driven development process: does it really matter to test-first or to test-last?. IEEE
Transactions on Software Engineering, 43(7), pp.597-614. Retrieved from
https://arxiv.org/pdf/1611.05994.pdf
Fucci, D., Turhan, B., Juristo, N., Dieste, O., Tosun-Misirli, A. and Oivo, M., 2015. Towards
an operationalization of test-driven development skills: An industrial empirical
study. Information and Software Technology, 68, pp.82-97. Retrieved from
https://bura.brunel.ac.uk/bitstream/2438/14600/1/FullText.pdf
Rilee, M. and Clune, T., 2014, November. Towards test driven development for
computational science with pFUnit. In Proceedings of the 2nd International workshop on
Software Engineering for High Performance Computing in Computational Science and
Engineering (pp. 20-27). IEEE Press. Retrieved from
https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20150001291.pdf
chevron_up_icon
1 out of 5
circle_padding
hide_on_mobile
zoom_out_icon
[object Object]