Welcome to our Exercise, for day 19 of 30 days of Testability.
Our second exercise is all to do with your dependencies and how they affect your testability. Your system can have high levels of testability but if the technologies and systems you depend upon negatively impact your testing then you will have a problem.
Identify your dependencies and visually represent them as input and outputs of your application architecture.
- Identify which dependencies your system has in terms of technologies used, such as:
- The programming languages and libraries used
- Core technologies used to communicate, HTTP or RabbitMQ as examples
- Databases and document storage
- Authentication methods
- Identify which dependencies your system has on internal or third party systems
- Payment API’s or social media feeds as external examples.
- Internally, any data feeds that your company uses, whether that is over HTTP or as synchronous batch jobs.
Using the C4 model, draw your applications architecture on a whiteboard. Add the following:
- Where data flows in and out of your application
- The version numbers of dependent languages (compare to latest)
From this, if you are working with complex data flows, older versions of dependent technologies supporting key components, then your testability may have a bottleneck. Time to reach out and build those relationships!
- Try the C4 model of sketching architecture, start with the highest level - https://c4model.com/
- Ash Winter wrote a blog on shared pain points and how they constrain testability - https://techbeacon.com/app-dev-testing/testers-guide-overcoming-painful-dependencies