Program
testing is essential while and after writing a program, whether this test will
be conducted manually or automatically. Program testing should include design
test cases, executing the software with those test cases and verify the program
output. In their paper Maamri, R and
Sahnoun, Z. (2007) indicated that 50 % of the development cost is dedicated to
testing and that this percentage becomes higher for critical software.
On
the other Hand, it is almost impossible to write the “correct program” with no
errors or bugs, as well writing the program taking into consideration
performance, reliability and functional aspects in a tough tasks if compared to
writing a program to check all that.
For
all that, I believe that it is easier to write a program to check the
correctness than writing the correct program.
However,
if we are discussing that building the program from the first time correctly is
almost impossible, and that rebuilding it again and again is not an easy task,
how can we make sure that the program checker will be correct. Blum,M. (1988)
argues that writing the program checker is sometimes easier than providing the
original program correct.
“The
challenge for building reliable software relies in that programmers do not take
the time to write detailed specification and documentation, as a result
software documentation is incomplete or out of date” Hangal,S. , Lam, M. (2002)
Even
if formal specifications were given to write the program, we still need the automated
program checker and its easier to have it to check the program code; the
program checker does sanity checks against the formal specifications and
“detect any error in system model or properties” (Rozier,K. ,Vardi,M.).
Automatic
program testing is easier to write if we have series of predefined set of test
cases, first of all, such program checker can validate the input prior
executing the program against the output and might generate input test cases as
per defined parameter.
References:
Blum,M.
(1988) ‘Designing Programs to check their
Work’ [Online]. Available from: http://www.icsi.berkeley.edu/pubs/techreports/tr-88-009.pdf
(Accessed
21 January 2011)
Hangel,S.
Lam, M. (2002), ‘Tracking Down Software
Bugs Using Automatic Anomaly Detection’,[Online]. Available from: http://www.cs.ucr.edu/~gupta/teaching/260-08/Papers/p291-hangal.pdf
doi: doi:10.1109/ICSE.2002.1007976
(Accessed 21 January 2011)
Maamri,R.
,Sahnoun,Z. ,(2007), ‘Multi-Agent Platform for Software Testing’ [Online]. Available
from:
(Accessed
21 January 2011)
Rozier,K.
,Vardi,M. ‘LTL Satisfiability Checking’
[Online] Available from: http://ti.arc.nasa.gov/m/profile/kyrozier/papers/RozierVardiSPIN07.pdf
(Accessed
22 January 2011)
Verhoeff,T.
(1990),‘Guidelines for Producing a
Programming-Contest Problem Set’, [Online]. Available from: http://ser.cs.fit.edu/samples/guidelines.pdf
(Accessed
22 January 2011)
No comments:
Post a Comment