Duration: 4 to 5 days
Recommended Class Size: 10 to 20
Prerequisites: Skilled to Advanced TDD understanding
This course takes a pragmatic approach to Test Driven Development (TDD). We believe testing should be a fundamental, integral part of software development process including design and programming. By fundamental, we mean that doing testing well leads to better designs and programs. By integral, we mean that it is part of the normal day-to-day life of the programmer, not a burdensome task added at the end of the real work. Test Driven Development is not always done as Test First Development and it is core to know what to test vs what not to test. The course is a mixture of lecture, short readings, discussion, and labs. Attendees will writing acceptance criteria, functional acceptance tests unit tests. Core testing best practices will be examined included some advanced topics such as orgranizing tests, test environments, continuous integration, and testing web services. Additionally testing techniques such as using Mock Objects and testing for different qualites such as performance and security are discussed. The attendees will read information about testing, learn the details of the techniques, and apply them in a group setting (preferably to systems they are currently working on).
- Overview of test design: which tests should a programmer run to find bugs, common patterns for writing tests, testing best practices
- Test automation: which tests should be preserved to find bugs in the future How testing meshes with agile object-oriented development processes
- Unit tests: How to develop unit and functional tests using NUnit
- How to test a class: testing the public interface The structure of a tests and how to organize your tests
- What other testing happens in a project: acceptance criteria and acceptance tests, regression and “smoke” tests
- What to test and what not to test The interactions between developers, team leads and QA
Slides to our Agile Presentation on Testing System Qualities can be found on SlideShare.