Consider This When Estimating Software Quality
How would you estimate software quality in less than an hour? Ask a few users about their opinion? Look at the sales numbers? Check the implementation? Luckily, there is another powerful way.
Let the development team explain to you how the software is tested.
Sounds simple, right? And powerful nonetheless. Let me explain why:
Testing is usually not a favorite activity for most developers. We like to write code that does something. We want to produce tangible results, either in the form of behavior, visual representation or technical feasibility. Nonetheless, most developers are aware of the need for testing. Even if it’s just a little script or Hello World program. You want to run it to see if it works and make changes as needed.
Over time, several test concepts and tools have emerged and improved. Some popular concepts include Unit Testing, Mocking, Stubbing, Test-first, Test Driven Development (TDD), Behavior Driven Development (BDD) and of course, the Testing Pyramid. Most concepts advocate automated tests. Of course, there is also manual testing. This can range from mostly explorative testing to very formal procedures involving complex checklists.
Now, why is looking at the test strategy suitable for estimating software quality? Because it tells us a lot about potential problems and risks when changing or releasing software.
At its core, testing is about getting feedback. We want to verify that our software is working as expected. You might have heard, that testing can never show the absence of bugs but only the presence of them. This makes testing imperfect. Sure, we can somewhat reason about behavior in a code review. There are even formal methods for checking software for correct behavior without running it. Nonetheless, testing is by far the most pragmatic and useful way to gain confidence in correct software functionality.
This becomes even more important due to software being changeable. Every time a developer makes a change, there is a decent risk of breaking behavior that was previously working. Thus, effective software testing is about establishing a feedback loop. Ideally, this feedback loop should be reliable, fast and easy to maintain.
We will talk more about testing in future posts. What is your experience with testing strategies and their impact on software quality?
#SoftwareEngineering #SoftwareQuality #Testing #TDD #FeedbackLoop