Sunday, February 22, 2009

WHY DO SOFTWARE TESTING?

A clever person solves a problem. A wise person avoids it.”
--- Albert Einstein


Why test software? “To find the bugs!” is the instinctive response and many people, developers and programmers included, think that that’s what debugging during development and code reviews is for, so formal testing is redundant at best. But a “bug” is really a problem in the code; software testing is focused on finding defects in the final product.


Here are some important defects that better testing would have found.
  • In February 2003 the U.S. Treasury Department mailed 50,000 Social Security checks without a beneficiary name. A spokesperson said that the missing names were due to a software program maintenance error.
  • In July 2001 a “serious flaw” was found in off-the-shelf software that had long been used in systems for tracking U.S. nuclear materials. The software had recently been donated to another country and scientists in that country discovered the problem and told U.S. officials about it.
  • In October 1999 the $125 million NASA Mars Climate Orbiter—an interplanetary weather satellite—was lost in space due to a data conversion error. Investigators discovered that software on the spacecraft performed certain calculations in English units (yards) when it should have used metric units (meters).
  • In June 1996 the first flight of the European Space Agency's Ariane 5 rocket failed shortly after launching, resulting in an uninsured loss of $500,000,000. The disaster was traced to the lack of exception handling for a floating-point error when a 64-bit integer was converted to a 16-bit signed integer.
Software testing answers questions that development testing and code reviews can’t.
  • Does it really work as expected?
  • Does it meet the users’ requirements?
  • Is it what the users expect?
  • Do the users like it?
  • Is it compatible with our other systems?
  • How does it perform?
  • How does it scale when more users are added?
  • Which areas need more work?
  • Is it ready for release?
What can we do with the answers to these questions?
  • Save time and money by identifying defects early
  • Avoid or reduce development downtime
  • Provide better customer service by building a better application
  • Know that we’ve satisfied our users’ requirements
  • Build a list of desired modifications and enhancements for later versions
  • Identify and catalog reusable modules and components
  • Identify areas where programmers and developers need training

1 comment:

  1. Hi ramu,
    I got nice information on ur Blog about Testing. Keep it up man.

    Regards,
    Rabbani

    ReplyDelete