Skip to content

Commit 3fce283

Browse files
authored
Update design for testability section
1 parent bbf0802 commit 3fce283

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

practices/testing.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
- [Test-Driven Development (TDD)](https://www.thoughtworks.com/en-gb/insights/blog/test-driven-development-best-thing-has-happened-software-design) and [Behavior-Driven Development (BDD)](https://www.thoughtworks.com/en-gb/insights/blog/applying-bdd-acceptance-criteria-user-stories) encourage writing tests before or alongside code, ensuring clarity of requirements and better design.
3434
- Test planning is informed by risk analysis and [architectural decisions](../any-decision-record-template.md) made early on.
3535
- Design for testability
36-
- Systems are designed with observability, modularity, and controllability in mind.
36+
- Build systems as small units, each of which can be tested in isolation.
3737
- Expose clear APIs, provide injection points for test doubles (mocks/stubs), and avoid tight coupling.
3838
- Feature toggles and dependency injection help test components in isolation without complex setups.
3939
- Make non-functional testing (performance, security, resilience) a first-class concern, with hooks and controls to simulate adverse conditions.
@@ -42,9 +42,9 @@
4242
- Shift right, aka test in production
4343
- Testing does not stop at deployment-continuous validation in production is essential.
4444
- Implement real-time monitoring, synthetic checks, health probes, and user behavior tracking.
45-
- Use canary deployments, blue-green releases, and feature flags to roll out changes gradually, monitoring for issues as they surface.
46-
- Employ chaos engineering to test system resilience under real-world failure conditions.
47-
- Instrument systems to detect anomalies, performance degradation, or unexpected behaviors automatically.
45+
- Use canary deployments and feature flags to support testing changes as they are deployed.
46+
- When safe to do so, employ chaos engineering to test system resilience under real-world failure conditions.
47+
- Instrument systems to detect anomalies, performance degradation, or unexpected behaviors automatically - to support good quality canary deployments.
4848

4949
In a high-throughput environment-where deploying at least once a day is the norm, adhering to the design for testability principle is paramount. The benefits include: 1) *faster feedback loops* – early testing catches issues when they are cheapest to fix, while testing later in the cycle ensures real-world readiness; 2) *increased confidence* – testing at all stages validates assumptions, improves system reliability, and supports safe, frequent releases; and 3) *higher quality by design* – systems built for testability are easier to maintain, scale, and evolve.
5050

0 commit comments

Comments
 (0)