Categories of Software Errors:
- User interface errors such as output errors or incorrect user messages.
- Function errors
- Hardware defects
- Incorrect program version
- Requirements errors
- Design errors
- Documentation errors
- Architecture errors
- Module interface errors
- Performance errors
- Boundary-related errors
- Logic errors such as calculation errors, State-based behavior errors, Communication errors, Program structure errors, such as control-flow errors.
Most programmers are rather cavalier about controlling the quality of the software they write. They bang out some code, run it through some fairly obvious ad hoc tests, and if it seems okay, they’re done. While this approach may work all right for small, personal programs, it doesn’t cut the mustard for professional software development.
Modern software engineering practices include considerable effort directed toward software quality assurance and testing. The idea, of course, is to produce a high software with the probability of satisfying the customer’s needs.
There are two ways to deliver software free of errors:
- Preventing the introduction of errors in the first place.
- Identifying the bugs lurking in program code, seek them out, and destroy them.
Obviously, the first method is superior. A big part of software quality comes from doing a good job of defining the requirements for the system you’re building and designing a software solution that will satisfy those requirements. Testing concentrates on detecting those errors that creep in despite your best efforts to keep them out.