Greg Paskal on the “Craft of Testing” Youtube Channel, talks about the trap of “Going for Green” or writing tests with the aim of making sure they pass.
He has some great points and I recommend the video. Here are my comments from watching his post:
Two big differences I see with writing test automation vs traditional development:
1. Tests will need to be modified frequently — over a long time, not just until it “passes”.
2. Test failures cause friction, so you need to make sure that a failure means something, not just a pass.
What these two principles mean is that a test can’t just “work”. It needs to be able to let you know why it didn’t work — you can’t afford false positives because the cost is ignored tests — not just the failing test, but all others.
With a failing test, knowing why it failed and identifying the root cause (and production system that needs to be fixed to make the test pass) is only half the problem. When functionality, an interface, or some presupposition (data, environment, etc) changes, you need to be able to quickly adapt the test code to the new circumstance, and make sure that it not only works again — but that it is still performing the check intended.
That the test is still testing what you think it’s testing.
These challenges combine to make writing test automation code significantly different than writing most other code.