Understanding The Effectiveness and Benefits of Implementing Test Driven Development in Software Development Process (2012)
Test Driven Development MBA Dissertation – The business management focus of this research is to find the effectiveness and benefits of implementing Test Driven Development (TDD), in software development process and to come up with recommendations for company XYZ, on how they can make a transition from the existing software development methodology followed, to the new software development methodology in the most effectual way. This research also highlights the key factors that must be considered and dealt with, when adopting TDD.
The provided recommendation is applicable for any software development companies or organisations wanting to move to TDD. In the traditional software development process, unit and functional tests are written after the code is implemented. Recently agile software development methods were introduced which also change traditional testing practice. TDD is a practice of extreme programming (XP) where unit and functional tests drive the development of the code.
This means that the tests are written before the actual production code that is going to be tested. TDD is also known as test-driven design as the tests drive the design of the software. With TDD any change to the code is tested, refactored and the test is performed again. The process is iterated until each unit is functioning according to the desired specifications. So the design of the software always evolves all the time. TDD can produce applications of high quality, in less time when compared with the traditional software development methods.
The methodical nature of TDD ensures that all the units in an application have been tested for optimum functionality, both individually and in synergy with one another. Because tests are conducted from the very beginning of the design cycle, time and money spent in debugging at later stages is minimized.
Published empirical studies of TDD, claims that TDD produces good software design, better code quality, application quality, and developer’s productivity. The goal of this research is to collect and confirm all the claims.
Evaluation in this research was done in two steps. The first step was to study the literature for supporting or contradictory evidences. The second step was to analyse and study the results of evidence-based research on TDD. This research took a two sided approach by comparing the TDD survey done by Scott Ambler in 2008 across the world and the perceptions about TDD by practitioners, who participated in the direct interview.
In addition the study also validates the claimed disadvantages of adopting TDD from the real practitioners of TDD. This research furthermore provides information on the precautions and steps that are needed for any organization to successfully implement TDD.
The researcher concludes this abstract with a caution. This is that even though it requires a large amount of effort and investment to move towards and adopt TDD, it will result in improving the way you design, develop, test and deliver the software and software products.
- 20,000 words – 92 pages in length
- Excellent use of literature
- Good analysis of subject area
- Well written throughout
- Ideal for MBA and IT students
1 – Introduction
Background to the study
Aim of the study
Objectives of the study
Significance of the study
Format of the study
2 – Literature Review
Software Development Process
Systems development life cycle
Traditional software development Methodologies
New software development methodologies
Test Driven Development (TDD)
Benefits of Test-Driven Development
Key attributes of Test Driven Development
Small Unit Focus
Frequent Regression Testing
Software Development Skills in TDD
Acclaimed Benefits of TDD
Simpler Software Design
Better Software Quality
Software Application Quality
Software Programmer/Developer Productivity
Software Developer’s Paradigm shift
3 – Research Methodology
Rationale for the Methodology
The Research Philosophy
Positive research strategy – Surveys
Phenomenological research strategies – Case study
Combined research strategies
Administration of Questions
Collection of questionnaire
Validity and Reliability
Limitation of the Study
Elimination of Bias
Ensuring participants have given informed consent
Ensuring no harm comes to participants
Ensuring confidentiality and anonymity
Ensuring that permission is obtained
4 – Results, Discussion, and Interpretation of Findings
Which best describes your current position?
How many years of experience in IT do you have?
Where are you based?
What is the total number of people in your organization?
Which sector is your organization primarily in?
What is your experience with developer TDD?
What is your personal belief in the effectiveness of Developer TDD?
What benefits of Developer TDD have you actually experienced?
What is your opinion about the ease of learning Developer TDD?
Based on your experience, how effective are the following strategies for learning Developer TDD?
When it comes to adopting TDD within your organization, how are the potential challenges affecting you?
What is the support for developer TDD within your organization?
What other forms of testing is your team doing?
Who is writing tests and when are they doing it?
How is your team capturing requirements specifications?
Interpretation and Discussion
Moving to TDD
Training, Self-learning and Pair/Peer programming
Initial Productivity Decrease
Buy-in from the Management
Better Code Quality
No Duplication of Code
Low Coupling of Code
Easy Understanding and Meaningful Code
Clear Understanding of the Scope or Features
High level of cohesion
Better Application Quality
Low Defect Rates
High Customer Satisfaction
Passes more Functional Tests
Better Understanding of Requirements
More Tests Coverage
Tighter Verification and Validation
Increased Level of Testing
Better Developer Productivity
Working with TDD
Defect Rate Less During Long Run
Reduction of Bugs in the Coding Stage
Less Rework Effort
Less Effort to Produce Final Product
Disadvantages of TDD
Step Learning Curve
Dropped By Team When Under Pressure
Increased Productivity Cost and Complexity
Unable to Test the User Interface
Highly Reliant on Refactoring and Programming Skills
Database or External File Not Directly Tested
5 – Conclusions and Recommendations
Findings from the Study
Findings from the Secondary Research
Findings from the Primary Research
Areas and Scope for Further Research