Testing versus Proving in Quality Assurance
In Continuous Deployment is every commit to the common source repository is a release candidate. Quality Assurance is therefore critical. Unfortunately, testing has become a discipline that many developers try to avoid.
Its not weird that we more and more scream for more testers in the teams that are specialized and know how to break code. But shouldnt be the developers know best how to break their own code?
The reason we write tests is because its good practice to have some. Thats not true and we know it. We write tests because we want to improve quality and we want to keep it. So the question is how can we make critical testing as normal as writing application code. Imagine someone ask if your code is tested well enough to ship it and you reply calmly but with a little pressure in your voice: My Code Is Correct and I Can Prove It.
Testing has many years ago become its own discipline in IT because we know how hard it is to deliver great quality. And great quality requires great experts. Obviously, the experts are not the developers anymore its the testers. We even started to distinguish between technical tester and functional tester. Some companies started to call testers Quality Assurance Analysts. First of all, I like it when important areas get more attention. Second, I also think we can do more on the developer side of testing.
A few weeks ago I listened to a chat between two developers and they talked about Code Coverage and that they need to test a bit more so the code would pass the Code Coverage Analysis Tool. Ill just test some setter/getter methods and the code will hopefully pass the step. said one of them. Yes, or maybe we just decrease the passing value. replied the other. Their talk missed the point of this tool and they knew it.
If we want to implement real continuous delivery or even continuous deployment we must be sure about what we commit because it will go out into production and it will smell if it isnt tested well and it will hit the customers at the end. Great quality is critical and we should try to prove that what we deliver is correct and that it works.
You probably ask whats the difference between testing and proving. Maybe nothing, maybe everything it depends on how passionate youre about your code and Continuous Delivery. If I want to test my code I probably write some average tests. But if I really want to prove that my code is correct I put a lot more thoughts and effort into how to write the best tests ever. There should be very little reason to doubt the validity of this proof. Dont aim for a proof like Einsteins equation E=mc2. Still, it should be constructionist, like building a house.
Sven MalvikYesterday, we locked people into a room so they could together deploy, run updates or make changes to the infrastructure in a calculated order without making any mistakes. That doesnt need to be the way we work anymore. Today, we have plenty of toolsmany of us call them DevOps toolsthat help us to make those tasks going faster, easier and with less problems. As a DevOps Engineer Im most of my time working on simplification using these tools. My job is it to involve stakeholders from business, development, test, and operations to align on common goals and make these goals happen. Latest posts by Sven Malvik (see all)
Click here to know more.