Test Driven Development

(Difference between revisions)
Jump to: navigation, search
(added lessons found and background readings and additional TDD examples)
(ordered bullets better)
Line 1: Line 1:
=== Examples of TDD in OSS ===
+
=== Examples of OSS projects that use TDD ===
 +
==== Best examples ====
 
* http://junit.org/
 
* http://junit.org/
 
** Well-known java unit testing framwork written by Kent Beck, inventor or TDD himself
 
** Well-known java unit testing framwork written by Kent Beck, inventor or TDD himself
Line 11: Line 12:
 
** Not as well known, but might be easier for students to understand
 
** Not as well known, but might be easier for students to understand
  
 
+
==== Weaker examples ====
* http://stackoverflow.com/questions/4174425/open-source-project-developed-using-tdd-and-java
+
* https://github.com/rails/rails
** http://www.sqlite.org/testing.html
+
** It is said that much of anything rails is developed via TDD
** Superb write up by SQLite of how they do extensive testing, but its possibly not developed with TDD principles, or maybe partially.
+
 
+
* https://www.quora.com/What-are-examples-of-substantial-open-source-software-written-using-test-driven-development-TDD
+
** https://github.com/rails/rails
+
 
** https://travis-ci.org/rails/rails
 
** https://travis-ci.org/rails/rails
 
** https://github.com/rails/rails/pull/23690
 
** https://github.com/rails/rails/pull/23690
** It is said that much of anything rails is developed via TDD
+
 
 +
* http://www.sqlite.org/testing.html
 +
** Superb write up by SQLite of how they do extensive testing, but its possibly not developed with TDD principles, or maybe partially.
  
 
* https://github.com/AutoFixture/AutoFixture
 
* https://github.com/AutoFixture/AutoFixture
** https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixture.xUnit.net.UnitTest/AutoDataAttributeTest.cs
 
 
** Another TDD example project, but its around .NET .... meh
 
** Another TDD example project, but its around .NET .... meh
 +
** https://github.com/AutoFixture/AutoFixture/blob/master/Src/AutoFixture.xUnit.net.UnitTest/AutoDataAttributeTest.cs
 +
  
 
=== TDD "Lessons" ===
 
=== TDD "Lessons" ===
 
* https://dzone.com/articles/Write-JUnit-Tests-in-Spring-With-Mocked-and-Real-Objects
 
* https://dzone.com/articles/Write-JUnit-Tests-in-Spring-With-Mocked-and-Real-Objects
** It look decent, but I think the site is copyright encumbered :-/ all content on it is proprietary in their submission legal text
+
** It looks decent, but I think the site is copyright encumbered :-/ all content on it is proprietary in their submission legal text
** I have read that referncing material for learning purpse can fall under Fair Use law, but its a gray area
+
** I have read that referencing material for learning purpose can fall under Fair Use law, but its a gray area
  
 
* http://www.codeaffine.com/2014/08/12/junit-in-a-nutshell-hello-world/
 
* http://www.codeaffine.com/2014/08/12/junit-in-a-nutshell-hello-world/
 
** A superbly written step-by-step walk through of creating a test and then creating the associated functional code
 
** A superbly written step-by-step walk through of creating a test and then creating the associated functional code
 
** It uses JUnit, which is an open source technology - but it uses a helloworld example - not sure if we want this or more of an integration with an existing oss project
 
** It uses JUnit, which is an open source technology - but it uses a helloworld example - not sure if we want this or more of an integration with an existing oss project
 +
** Unknown copyright beyond a ©
 +
 +
* http://technologyconversations.com/2013/12/20/test-driven-development-tdd-example-walkthrough/ http://osherove.com/tdd-kata-1/ https://vimeo.com/8506325
 +
** These are a great series of TDD "Practice Exercises"; It gives you requirements that you are supposed to serially step through and implement on top of each other
 +
** This uses open source, but it isn't involved in any existing oss project
 +
** Unknown copyright
 +
 +
* https://github.com/orfjackal/tdd-tetris-tutorial
 +
** Tetris based TDD
 +
** It gives you test cases, already written, and you code to satisfy the tests
 +
** License says "You may use and modify this material freely for personal non-commercial use. This material may NOT be used as course material without prior written agreement."
 +
 +
 +
=== Background reading ===
 +
* 5 min TDD overview https://www.youtube.com/watch?v=QCif_-r8eK4
 +
* Graphical explanation of TDD http://www.agiledata.org/essays/tdd.html
 +
* Is TDD Dead? https://www.youtube.com/watch?v=z9quxZsLcfo
 +
* Kent Beck book http://www.amazon.com/exec/obidos/ASIN/0321146530/
 +
* Astels book http://www.amazon.com/exec/obidos/ASIN/0131016490/
 +
* Unit test vs Acceptance test https://dzone.com/articles/Write-JUnit-Tests-in-Spring-With-Mocked-and-Real-Objects
 +
* TDD in a CalPoly course https://users.csc.calpoly.edu/~djanzen/courses/405W10/presentations/TDD.pdf
 +
  
 
=== Ideas and research ===
 
=== Ideas and research ===
Line 52: Line 74:
 
** Kent Beck - extreme programming (ford motor)
 
** Kent Beck - extreme programming (ford motor)
 
** http://foss2serve.org/index.php/Test_Coverage_Activity
 
** http://foss2serve.org/index.php/Test_Coverage_Activity
 
=== Background reading ===
 
* 5 min TDD overview https://www.youtube.com/watch?v=QCif_-r8eK4
 
* Graphical explanation of TDD http://www.agiledata.org/essays/tdd.html
 
* Is TDD Dead? https://www.youtube.com/watch?v=z9quxZsLcfo
 
* Kent Beck book http://www.amazon.com/exec/obidos/ASIN/0321146530/
 
* Astels book http://www.amazon.com/exec/obidos/ASIN/0131016490/
 
* Unit test vs Acceptance test https://dzone.com/articles/Write-JUnit-Tests-in-Spring-With-Mocked-and-Real-Objects
 
* TDD in a CalPoly course https://users.csc.calpoly.edu/~djanzen/courses/405W10/presentations/TDD.pdf
 

Revision as of 20:23, 16 February 2016

Contents

Examples of OSS projects that use TDD

Best examples

  • https://github.com/unclebob/fitnesse
    • Written by one of the Agile Manifesto co-authors
    • Very clean code, tests in /test directory
    • Not as well known, but might be easier for students to understand

Weaker examples


TDD "Lessons"

  • http://www.codeaffine.com/2014/08/12/junit-in-a-nutshell-hello-world/
    • A superbly written step-by-step walk through of creating a test and then creating the associated functional code
    • It uses JUnit, which is an open source technology - but it uses a helloworld example - not sure if we want this or more of an integration with an existing oss project
    • Unknown copyright beyond a ©
  • https://github.com/orfjackal/tdd-tetris-tutorial
    • Tetris based TDD
    • It gives you test cases, already written, and you code to satisfy the tests
    • License says "You may use and modify this material freely for personal non-commercial use. This material may NOT be used as course material without prior written agreement."


Background reading


Ideas and research

TDD

  • Idea 1: Find a project that already has a testing harness and associated tests; learn it, and add a new unit test
  • Idea 2: Create a test harness to make, build, and run unit tests on an existing open source project
    • Jim Bowring has done this in the past, though it seems they are lengthy projects vs a shorter activity; Do we want to create a “project”-oriented LA?
  • Teach the “mental discipline” of testing
  • How can we test a Requirement?
    • Ensuring testing starts at user requirement gathering
    • Iterating through tests once code has been written, helps to improve the tests
Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox