Enabling technical agility in the Lean enterprise vlog series: testability
Here’s video four in our series designed to jump-start your understanding of the core principles and practices of Agile Software Engineering (ASE). In this video, Ken Pugh, one of Lean-Agile thought leaders, talks about the principle of ‘testability.’
Testability is a key quality attribute of code. We want tests that are fast, repeatable, and that can be automated. To design the right tests, we need to consider context of the system (state) and identify the stimulus and the response that is supposed to occur in that context. The stimulus is input that comes from users, services, or other systems. The response—or output—might be a change of state, return of information, or some effect on the environment.
In many cases, testing requires using ‘test doubles,’ whose purpose is to mimic a stimulus or a paired stimulus/response to the system under test. Ken defines a test double as a simplified version of a depended-upon component that is too slow, expensive, or random (such as a database or an external service) to be used in an automated test. Test doubles come in two versions and in the video, Ken shows examples for each, explaining their advantages and disadvantages.
Bottom line: a test-first mindset is critical to mastering the testability quality attribute. You can’t achieve continuous integration and deployment without testable components, and automated ones at that.
Watch the testability video here.
Check back next week for the fifth video in the series in which Ken divulges the benefits of shifting testing left.
Go here to watch the previous video in the series about accelerating flow.
Learn more about the Agile Software Engineering course here.