“Technology-Facing Tests that Support the Team”
A look at tests in Quadrant-1 – Technology Facing tests
- Unit tests and component tests ensure quality by helping the programmers understand exactly what the code needs to do and providing guidance in the right design
- The term ‘Test-Driven Development’ misleads practitioners who do not understand that its more about design than testing. Code developed test-first is naturally designed for Testability.
- When teams practice TDD, they minimize the number of bugs that must be caught later.
The more bugs that leak out of our coding process, the slower our delivery will be, and in the end, it is the quality that will suffer. That’s why programmer tests in Quadrant-1 are so critical. A team without these core agile practices is unlikely to benefit much from agile values and principles.
- Source Code Control, Configuration Management and Continuous Integration are essential to getting value from programmer tests that guide development.
- CI saves time and motivates each programmer to run the tests before checking in the new code.
- An advantage of driving development with tests is that code is written with the express intention of making tests pass.
- A common approach in designing a testable architecture is to separate the different layers that perform different functions in the application.
Teams should take time to consider how they can take time to create an architecture that will make automated tests easier to create, inexpensive to maintain and long-lived. Don’t be afraid to revisit the architecture is automated tests don’t return value for the investment in them.
“The biggest value of unit tests is in the speed of their feedback.”
- Each unit test is different and tests one dimension at a time
- Learning to write Quadrant-1 tests is hard.
- Because TDD is really more of a design activity, it is essential that the person writing the code also writes the tests, before writing the code.
- To Managers—
- If a delivery date is in jeopardy, push to reduce the scope, not the quality.
- Give the team time to learn and provide expert, hands-on training.
- Technology-facing tests cannot be done without the right tools and infrastructure