Testing: Level master

When you want to write code, you need to decide, what language you will write in.

Will that be Java? Or Python? Or maybe Clojure?

When you write tests along with your code, it's possible to design these tests on such a way that even if you change the implementation language at some point, the tests will not need any change at all.

Say you are writing a script to set up a workstation: install some packages, configure them, adjust the user environment, and clean up once it is all complete.

Let's also say you wrote tests to check in a matter of seconds, if the correct packages are installed, their configuration complete, the user environment properly set up, and no extra files are left afterwards.

You didn't need to use the same language for both the tests and the implementation.

Whenever you change the implementation while keeping the tests intact, the tests will tell you if after the changes (even a change in the implementation language), all key results are present.

Testing in this case would probably mean running the script on a "clean" Docker image and running the tests afterwards.

If for this, or any other, use case you find a way to focus your tests on key results, keeping them decoupled from the particular implementation of your "business logic", even the perspective of changing the implementation language will not scare you.

It would terrify a person without tests, or with tests tightly coupled to the implementation, but not you.

Because you will have a set of tests that requires no modification, as long as the key results required remain the same.