Test-Driven Development & Continuous Integration Hao-Cheng Lee 本著作係依據創用 CC Attribution-ShareAlike 3.0 Unported 授權條款進行授權。如欲瀏覽本授權條款之副本，請造訪 http://creativecommons.org/licenses/by-sa/3.0/ ，或寄信至 Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA 。
About me● Hao-Cheng Lee● Java Engineer for 7+ years● Quality Engineer@Yahoo (till yesterday ;-))● Interested in Java, Scala, TDD, CI● email: email@example.com● twitter: https://twitter.com/#!/haocheng
Agenda● What is TDD?● Why use TDD?● How to do TDD?● What is CI?● Why use CI?● TDD + CI
Continuous Integration is a softwaredevelopment practice where membersof a team integrate their workfrequently, usually each personintegrates at least daily – leading tomultiple integrations per day. -- Martin Fowler
Why CI?● Rapid Feedback● Reduced Risk● Collective Ownership● Continuous Deployment● Offload from people
Jenkins for non-Java Projects● Python● PHP● Ruby● .Net
Reading List● The Bowling Game Kata● Unit Testing Guidelines● Why are we embarrassed to admit that we don’t know how to write tests? (中譯版本)● "The Clean Code Talks -- Unit Testing"● Top 10 things which make your code hard to test
References - Test-Driven Development● Test Driven Development Tutorial by Kirrily Robert● Engineer Notebook: An Extreme Programming Episode by Robert C. Martin and Robert S. Koss● Technical Debt by Martin Fowler● InfoQ: Testing Misconceptions by Liam OConnor● Unit Test Isolation● Erratic Test● Singletons are Evil● RSpec 讓你愛上寫測試
References - Continuous Integration● Jenkins: http://jenkins-ci.org/● Mailing List: http://groups.google.com/group/jenkinsci- users● Wiki: http://wiki.jenkins-ci.org/● Follow @jenkinsci on Twitter● Continous Integration by Martin Fowler● Continuous Integration with Hudson - the book● Continuous Integration with Hudson on JavaWorld
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.