Developer-driven testing is probably the most influential software development technique of the last 10-15 years. There's no question that it has improved the practice of building software. And in a dynamic language like Ruby, it's hard to get by without it. But is it really the best way to find defects? Or is the emphasis on testing and test coverage barking up the wrong tree?
In this presentation filmed during QCon London 2007, Nat Pryce and Steve Freeman talk about TDD using Mock Objects. In their opinion, Mock Objects improves the software design and makes the code more easier to maintain and adapt to changing requirements.
Agile communities consider stories “done” when the acceptance tests (also called story tests) are shown to the customer. Originally, this was a manual process, but in recent years, several frameworks have been created to automate this process, providing acceptance testing all the benefits of automated unit testing. One of the most popular of these if called FIT, created by Ward Cunningham.
In this presentation from QCon San Francisco, Cedric Beust and Alexandru Popescu discuss interesting features of TestNG such as grouping of tests, data providers for tests and dependency handling in tests, tips for designing easily testable code such as eliminating statics, extreme encapsulation and TDD, the importance of functional versus unit testing, and migrating from JUnit to TestNG.
Agile developers are "test infected", we do test-first development and treat acceptance tests as full-fledged requirements artifacts and work with our stakeholders to acceptance test throughout the dev lifecycle. The end result is significantly higher quality software, achieved with very little input from the testing community. So what is the role of testers and QA people on agile projects?