It is said [Software Defect ReductionTop 10 List] that, 'about 40 to 50 percent of user programs contain nontrivial defects'.
What are some nontrivial defects and how to overcome them?
It is said [Software Defect ReductionTop 10 List] that, 'about 40 to 50 percent of user programs contain nontrivial defects'.
What are some nontrivial defects and how to overcome them?
I would interpret "non-trivial" as "has a real impact on the user".
For instance, if a menu item has a typo in it, that would be a trivial defect. If your spreadsheet application crashed when it tried to save any sheet with the number "999" in, that would be non-trivial.
I'd be hugely surprised if the number was really as low as 40-50%. In my experience pretty much every signficant application has non-trivial defects, even if they're rarely encountered. (If I'm the only user in the world who uses the number 999 in a spreadsheet, the bug is still hugely important to me so I don't think it can be classed as trivial.)
As for "overcoming" defects - the normal barrage of unit tests, continuous build, automated integration tests, manual testing, making sure you have a really good user feedback system, and management who are willing to put resources into fixing bugs as well as creating new features.
Subjective, but:
Non trivial: defects that stop users doing their job, or that impact their productivity to a significant degree Trivial: defects that just annoy users
Obviously there is a big grey area here, because what's annoying and trivial for one product might be annoying but non-trivial for another.
First, it is worth noting that most single defects are trivial: tests aim at discovering them.
So non trivial defects are generally a combination of two or more single defects, each of them being harmless alone (test input didn't trigger them).
A second step in non triviality is when time is part of the input/output space: specific dates or durations.
Then you can add discrepancies between assumptions and reality: compiler, target platform, inputs, ...
Shake all of that and may the force be with you...
Try to understand the other side first: Trivial defects. A trivial defect is either harmless or easy to fix (typo in a text in the UI, wrong color for a button, labels are not aligned perfectly).
Non-trivial defects are everything else: Performance problems, handling of the application, data corruption, etc. They are sometimes hard to find and often hard to fix.