Software Testing Methodology - Is Complete Testing is Possible

Is Complete Testing is Possible?

  • If the objective of the testing were to prove that a program is free of bugs, then testing not only would be practically impossible, but also would be theoretically impossible
  • Three different approaches can be used to demonstrate that a program is correct. They are:
Functional Testing
Structural Testing
Formal Proofs of Correctness
  • Each approach leads to the conclusion that complete testing, in the sense of a proof, is neither theoretically nor practically possible
Functional Testing:
  • Every program operates on a finite number of inputs. A complete functional test would consists of subjecting the program to all possible input streams
  • For each input, the routine either accepts the stream and produces a correct outcome, accepts the stream and produces an incorrect outcome, or rejects the stream and tells us that it did  so
  • For example, a 10 character input string has 280 possible input streams and corresponding outcomes, so complete functional testing in this sense is IMPRACTICAL
  • But even theoretically, we can't execute a purely functional test this way because we don't know the length of the string to which the system is responding
Structural Testing:
  • The design should have enough tests to ensure that every path through the routine is exercised at least once
  • This is impossible because some loops might never terminate
  • The number of paths through a small routine can be awesome, because each loop multiplies the path count by the number of times through the loop
  • A small routine can have millions or billions of paths, so total path testing is usually IMPRACTICAL
Formal Proofs of Correctness:
  • Formal proofs of correctness rely on a combination of functional and structural concepts
  • Requirements are stated in a formal language (example, Mathematics) and each program statement is examined and used in a step of an inductive proof that the routine will produce the correct outcome for all possible input sequences
  • The IMPRACTICAL thing here is that such proofs are very expensive and have been applied only to numerical routines or to formal proofs for crucial software, such as system's security kernel or portions of compilers

Share on Google Plus

About Data Sciences by Venu

Hi, My name is Venugopala Chary and I'm Currently working as Associate Professor in Reputed Engineerng College, Hyderabad. I have B.Tech and M.tech in regular from JNTU Hyderabad. I have 11 Years of Teaching Experience for both B.Tech and M.Tech Courses.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment