What is Software Testing
Software testing is an process, to assess the capabilities of a Software product application with a purpose to observe regardless of whether the developed software met the predetermined requirements and to distinguish the deformities to guarantee that the item is sans imperfection to deliver the quality product.
According to ANSI/IEEE 1059 standard
A process of analyzing a software item to detect the differences between existing and required conditions (i.e., defects) and to evaluate the features of the software item.
Goals of Software Testing
Many software engineers are not clear about their testing goals. Is it to show correctness, find problems, or something else? To explore this concept, we first must separate validation and verification. This is very inportent factors in software testing.
Verification & Validation (IEEE) in Software Testing
Verification : The process of determining whether the products of a given phase of the software development process fulfill the requirements established during the previous phase
Validation : The process of evaluating software at the end of software development to ensure compliance with intended usage. know more
Verification is usually a more technical activity that uses knowledge about the individual software artifacts, requirements, and specifications.
Validation usually depends on domain knowledge; that is, knowledge of the application for which the software is written. For example, validation of software for an Self-Driving car airplane requires knowledge from car engineers and drivers. Validation asks whether users are satisfied, an inherently fuzzy question that has nothing to do with verification.
The acronym “IV&V” stands for “Independent Verification and Validation,” where “independent” means that the evaluation is done by non-developers. Sometimes the IV&V team is within the same project, sometimes the same company, and sometimes it is entirely an external entity. In part because of the independent nature of IV&V, the process often is not started until the software is complete and is often done by people whose expertise is in the application domain rather than software development.
Why Do We Test Software
Over the past two decades, the software industry has become much bigger, is more competitive, and has more users. Software is an essential component of exotic embedded applications. Modern households have hundreds of processors and thay run based on software.Without quality software we may lose millions of dollers. We need our software to be dependable. Testing is one way to assess dependability.
- NASA’s Mars lander: September 1999, crashed due to a units integration fault
- THERAC-25 radiation machine : Poor testing of safety-critical software can cost lives : 3 patients were killed
- Ariane 5 explosion : Lose millions of dollers
- Intel’s Pentium FDIV fault : Public relations nightmare.
- The Bank of New York (BoNY) had a $32 billion overdraft as the result of a 16-bit integer counter that went unchecked.
Software Testing in the 21st Century
- Software defines behavior
- network routers, finance, switching networks, other infrastructure
- Today’s software market :
- is much bigger
- is more competitive
- has more users
- Embedded Control Applications:
- airplanes, air traffic control
- remote controllers