Organizer of the PhillyXP user group. Website: https://anthonysciamanna.com Email: [email protected] Twitter: @asciamanna https://www.meetup.com/phillyxp/
Writing a failing test or making it pass Small, behavior preserving code improvements You can only wear one hat at a time! https://martinfowler.com/articles/workflowsOfRefactoring/#2hats
Kent demos TDD to Ward Cunningham at OOPSLA Austin in October. Details of the C3 Project start being publicized Kent Beck releases the first version of the SUnit framework for Smalltalk @asciamanna anthonysciamanna.com
1997 Kent demos TDD to Ward Cunningham at OOPSLA Austin in October. Details of the C3 Project start being publicized Kent Beck releases the first version of the SUnit framework for Smalltalk On a flight from Zurich to Atlanta (OOPSLA ‘97) Erich Gamma and Kent Beck create JUnit for Java @asciamanna anthonysciamanna.com
1997 1999 Kent demos TDD to Ward Cunningham at OOPSLA Austin in October. Details of the C3 Project start being publicized Kent Beck releases the first version of the SUnit framework for Smalltalk On a flight from Zurich to Atlanta (OOPSLA ‘97) Erich Gamma and Kent Beck create JUnit for Java Kent releases Extreme Programming Explained @asciamanna anthonysciamanna.com
untestable code in unit tests results in brittle, low-quality tests, that suffer from false failures • Test-first practices enable writing high quality production code and high- quality tests Markus Spiske for Tech Daily @asciamanna anthonysciamanna.com
tests E2E / UI tests As scope increases, detail should decrease Increase in: • Cost to develop and maintain • Execution time • Possibility of false negatives • Time to identify source of issue @asciamanna anthonysciamanna.com https://anthonysciamanna.com/2019/10/20/avoiding-automated-testing-pitfalls.html More integration More isolation
under test must be testable (loosely coupled) Refactoring Refactoring 3. Enables tests to be small, precise, fast, isolated and independent Virtuous Cycle 1. We start in the test @asciamanna anthonysciamanna.com
confuses the story of what’s being tested. Test-scoped logic is hard to read and errors are easy to miss. - Justin Searls, Co-founder Test Double anthonysciamanna.com @asciamanna
precedence Unit testing at end tends to be skipped to hit deadlines All code is tested as it is created or modified Feels like busy work if code is manually tested and considered “done” The test is the path to changing the system Code is not influenced by tests to be testable Code is influenced by the tests to be testable Tests don’t serve as feedback loops Tests are continuous feedback loops, supports refactoring and software design Tests don’t get refactored – created at end Tests are continuously refactored Tests are less comprehensive when added at end Tests are more comprehensive when added with each code change Coverage as a build gate often required (commonly 70% coverage) Coverage metrics unnecessary Tests implementation details Tests behavior VS.
Up Front Requirements Design Code Test Waterfall Mindset Requirements Test Code Design (Refactor) (Test-Driven) Agile Mindset Slide courtesy of Mike Rieser (@MichaelRieser) anthonysciamanna.com @asciamanna JIT (re)design design design design design
Communication is the professional developer’s first order of business. Perhaps you thought that ‘getting it working’ was the first order of business for a professional developer. I hope by now, however, this book has disabused you of that idea. - Robert Martin, Clean Code
communicate about Test-Driven Development is the mental state it puts you in…On the original C3 project…progress was steady and unhurried; because it was unhurried it seemed slow, but looking back on how much we got done, it was clear that despite the unhurried feeling progress was really fast. “ ” anthonysciamanna.com @asciamanna
developer happiness, and it’s a lot of fun! https://geepawhill.org https://github.com/testdouble/contributing-tests/wiki Test Double – Contributing Tests Wiki Industrial Logic eLearning https://www.industriallogic.com/elearning/ anthonysciamanna.com @asciamanna