The best tests are the worst. I mean that in a good way - they are intelligent, bring together scenarios that produce unexpected behavior or may even break things that were previously thought to be fully available/resilient.
In this day and age of Cloud and DevOps, applying software development best practices to create versioned, reusable, maintainable, extensible, and testable applications is a must. Using the best tools to get your job done makes sense – including IDEs, languages, package managers, and build/test tooling.
In this post, I will focus on the testing portion while addressing it from a creative angle.
Many of us are aware that there are various types of testing we want our application (and infrastructure) to leverage at different stages in its lifecycle - static analysis, unit-testing, integration/end-to-end functional tests, performance, security testing and chaos engineering. Shooting for all or most of the above tests to be automated, is ideal.
In this post I’ll explore and encourage a fun and creative test-driven culture, by sharing with you a unique perspective. Thoughts shared here are especially geared towards creating higher order tests (anything other than unit-tests which usually are written by the developer at the time of code creation).
My challenge to you is to see the application, and the business it supports, in a heightened or skewed way, while being careful not to get too carried away.
A certain amount of divergent thinking is required in understanding and formulating good tests. Even the most bizarre and seemingly unrelated combinations can end up creating the best tests. You might need to draw together things that are typically considered far apart.
Here are a few foundational considerations (I will be giving some examples later in the article):
Here are pointers on some unique/radical/chaos tests you might consider at the infrastructure and application layers:
All that creativity can only flourish if you have a solid foundation to begin with. Here are a few things to address upfront:
Here, I’ve shared a more creative angle to the traditional testing portfolio, by encouraging you to consider and appreciate ideas that are not normally prioritized and to persuade you to combine tests that don’t normally go together. In doing so, you can create more robust test suites and rekindle that simple satisfaction of getting a test right. Consequently, your application and business become more resilient.
There may be all kinds of ‘radical’ tests that you are thinking now. Please feel free to share them with your team and in the comments below.