In this course students will learn what Test-Driven Development (TDD) is and why people are adopting it as a development methodology. The process of TDD is to write a test for a very small piece of functionality, to develop the code, to run the test, and then to refactor and try again if the test fails. Through lecture, demonstration and hands-on exercises, students will learn for themselves how to move through the TDD development process.
By the end of the class students will be able to:
- Understand the elements of test-driven development
- Be familiar with different test-driven concepts
- Work with testing tools such as Junit, ANT and Maven
- Set up the testing infrastructure
- Understand refactoring best practices
- Test legacy code
paragraph of text from Course Page Prerequisites
What is Test-Driven Development?
- What is it?
- Why do I want to adopt it?
- What are the benefits of test-driven development?
- What are the costs?
- What outcome should I expect when I adopt it?
- Test Plans, Test Cases, and Test Suites
- Unit Testing
- Integration Testing
- Continuous Testing
- Robustness Testing
- Acceptance Testing
Test-Driven Development Concepts
- Test-driven development
- Where to begin
- Test-driven development patterns
- Test-driven development best-practices
- Unit and Integration Testing with JUnit and Mock Objects
- Automated testing with ANT and Maven
- Continuous Testing with CruiseControl, ANT, and Maven
- Robustness Testing with DBUnit, HTTPUnit, JMeter
- Code coverage analysis
Setting up the Testing Infrastructure
- Defining the test strategy
- Picking the tools
- Configuring the IDE
- Configuring the build system
- What is JUnit
- Creating unit tests
- Creating integration tests
- What they are
- When and how to use them effectively
- Creating mocks with jMock and EasyMock
- Replacing Mock Objects with Live Objects
- What is refactoring?
- Refactoring concepts and best-practices
- Identifying and implementing potential refactorings
- Testing refactored code
Testing Legacy Code
- What do to with legacy code
- Common approaches for legacy code testing
- Exploring dependencies, creating loose couplings