tem7
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,035
On Slideshare
1,035
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
10
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Test Driven Development THEORY • FACTS • APPLICATIONS • SUPPORT ALEXEI PIVKINE • YURIY POSLAVSKYY • SWARAJ SHERGILL • QING WEI Group 2
  • 2.
    • Definition and guideline s
    • Applications of TDD
    • Tool support in different programming languages
    • Impact on development time, code quality and maintenance costs
    • Possible issues: theory vs the real world
    Outline
  • 3. Definition
    • Software Design & Development technique
    • First introduced with Extreme Programming, but recently
    • started gaining more attention on its own
    • Test Driven Development = Test First Development + Refactoring
    • Allows developer to think through the design and understand the requirements
    • before writing the functional code
  • 4. Guidelines
    • The motto of test-driven development is " Red , Green , Refactor."
      • Red : Create a test and make it fail.
      • Green : Make the test pass by any means necessary.
      • Refactor: Change the code to remove duplication in your project and to
      • improve the design while ensuring that all tests still pass.
    • The " Red , Green , Refactor" cycle is repeated very quickly for each
    • new unit of code
  • 5. Test Driven Development Cycle
  • 6. TDD vs. Extreme Programming
    • XP is a deliberate and disciplined approach to software development.
    • XP differs from traditional methodologies primarily in placing a higher
    • value on adaptability than on predictability
    • TDD is an approach to code creation, not a software development methodology
    • TDD first popularized as an aspect of XP
    • TDD and XP are more suitable for small to medium-sized projects
  • 7. Unit Testing
    • A unit is the smallest testable part of an application
    • The goal of unit testing is to isolate each part of the program and show that the individual parts are correct.
    • Available Tools:
    • JUnit for Java
    • CppUnit for C++
    • NUnit for .NET
    • Test::Unit for Ruby
  • 8. Impact of TDD
    • Microsoft Case Study 1
    • Team size: 6
    • Language: C/C++
    • Experience level: High
    • Location: Collocated
    • Findings
  • 9. Impact of TDD
    • Microsoft Case Study 2
    • Team size: 5-8
    • Language: C++/C#
    • Experience level: Medium
    • Location: Collocated
    • Findings
  • 10. Impact of TDD
    • NRC Experiment
    • Developers: 3 rd year undergraduate computer science students
    • Language: Java
    • Experience level: Low
    • Location: Collocated
    • Application Size: Small
    • Results tested using 105 black box tests not available to developers
    • Findings
    • No statistically significant improvements in average code quality
    • More consistent quality results – higher minimum achievable quality
    • Higher productivity due to higher number of produced lines of code (test + product)
  • 11. Impact of TDD Other Case Studies
  • 12. Impact of TDD
    • Requires extra upfront development time
    • Requires more tests per unit of production code
    • Encourages frequent regression testing
    • Improves understanding of underlying requirements
    • May or may not result in significant code quality improvements
    • Note
    • Results are difficult to generalize beyond specific environment
  • 13. Theory vs. Real World
    • Possible Benefits
      • Better structured code
      • Clearly defined interfaces
      • Not afraid to refractor (improve complex code)
    • Possible Pitfalls
      • Faulty tests
      • Incomplete coverage
  • 14. Theory vs. Real World
    • Absence of consistent and reliable data to prove that TDD brings improvements
    • Resistance to change
    • Business pressures
    • Failure to completely embrace the approach
  • 15. Conclusion
    • What is TDD?
    • TDD, XP and unit testing
    • Case studies
    • R eal world issues
    To TDD or Not to TDD that is the question!
  • 16. References
    • T.Bhat, N.Nagappan. Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies.
    • Available: http://research.microsoft.com/manuvir/papers/isese-fp17288-Bhat.pdf
    • H.Erdogmus. On the Effectiveness of Test-first Approach to Programming. March 2005.
    • Available: http://iit-iti.nrc-cnrc.gc.ca/iit-publications-iti/docs/NRC-47445.pdf
    • Wikipedia, "Test-driven development",  Wikipedia , [Online]. Available: http://en.wikipedia.org/wiki/Test-driven_development [Accessed: Feb. 23, 2007].
    • Agile Data, "Introduction to Test Driven Design (TDD)", Agile Data, [Online].
    • Available: http://www.agiledata.org/essays/tdd.html [Accessed: Feb. 23, 2007].
    • F Geisendörfer, "Test Driven Development in Real World Apps," September 10, 2006. [Online].  
    • Available: http://www.thinkingphp.org/2006/09/10/test-driven-development-in-real-world-apps/ . [Accessed Feb. 23, 2007].
    • L. Wyssocky, "Some Pitfalls of Test Drive Development," March 25, 2006. [Online].
    • Available: http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/. [Accessed Feb. 23, 2007].
    • "TDD viewpoint," January 16, 2005. [Online].  
    • Available: http://neilthespod.spaces.live.com/blog/cns!F11ED9853AA5674B!110.entry. [Accessed Feb. 23, 2007].
    • Unit Testing [Online] Available: http://en.wikipedia.org/wiki/Unit_testing [Accessed February 23, 2007]
    • JUnit Framework [Online] Available: http://www.junit.org [Accessed February 23, 2007]
    • CppUnit Framework [Online] Available: http://cppunit.sourceforge.net/cppunit-wiki [Accessed February 23, 2007]
    • NUnit Framework [Online] Available: http://www.nunit.org/ [Accessed February 23, 2007]
    • Ruby Test::Unit [Online] Available: http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html [Accessed February 23, 2007]
    • What is Extreme Programming [Online] Available: http://www.extremeprogramming.org/what.html [Accessed February 23, 2007]
    • Jeffrey Palermo, “Guidelines for Test-Driven Development”, Visual Studio 2005 Technical Articles, May 2006 , [Online]
    • Available: http://msdn2.microsoft.com/en-us/library/aa730844(VS.80).aspx [Accessed: Feb. 23, 2007].