Test Driven Development
(Difference between revisions)
(added lessons found and background readings and additional TDD examples) |
(ordered bullets better) |
||
Line 1: | Line 1: | ||
− | === Examples of | + | === 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 ==== | |
− | * | + | * https://github.com/rails/rails |
− | ** | + | ** It is said that much of anything rails is developed via TDD |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
** 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 | ||
− | ** | + | |
+ | * 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 | ||
− | |||
** 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 | + | ** 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 | + | ** 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 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 20:23, 16 February 2016
Contents |
Examples of OSS projects that use TDD
Best examples
- http://junit.org/
- Well-known java unit testing framwork written by Kent Beck, inventor or TDD himself
- https://github.com/junit-team/junit
- https://github.com/junit-team/junit/tree/master/src/test
- ex of actual test code: https://github.com/junit-team/junit/blob/master/src/test/java/junit/tests/framework/AssertTest.java
- 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
- https://github.com/rails/rails
- It is said that much of anything rails is developed via TDD
- https://travis-ci.org/rails/rails
- https://github.com/rails/rails/pull/23690
- 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
- 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"
- https://dzone.com/articles/Write-JUnit-Tests-in-Spring-With-Mocked-and-Real-Objects
- 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 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/
- 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 ©
- 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
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
- Dave thinks ManageIQ does unit testing
- Background reading:
- http://www.cs.cofc.edu/~bowring/ - course in testing
- Boris Byser - the test guru
- Kent Beck - extreme programming (ford motor)
- http://foss2serve.org/index.php/Test_Coverage_Activity