FAILURE, ERROR, AND FAULT

6.1 FAILURE, ERROR, AND FAULT

Now that we know what a correct program is, we can easily define what a program failure is: it is any behavior of the program that belies, or is in contradiction with, its claim of correctness with respect to a given specification. Defining errors or faults is more complicated, because it relies on detailed design knowledge that has no officially sanctioned existence (in the way that a specification is an officially sanctioned doc- ument, which is part of the lifecycle deliverables), except possibly in the mind of the designer.

We use a simple example to introduce these concepts and then we present tentative definitions thereof. Let S be the space defined by a variable of type integer, and let R be the following specification:

R= s,s s=s+1 2 mod 3 + 12

and let p be the following program on space S:

{s=s+1; // line 1 s=2*s;

// line 2 s = s % 3;

// line 3 s=s+12;}

// line 4

Software Testing: Concepts and Operations, First Edition. Ali Mili and Fairouz Tchier. © 2015 John Wiley & Sons, Inc. Published 2015 by John Wiley & Sons, Inc.

102 FAILURES, ERRORS, AND FAULTS

Given the expression that the specification mandates to compute, we would expect the candidate program to add 1 to s, then compute the square of the result, then com- pute the remainder by 3, then add 12; yet on line 2, the program multiplies s by 2 rather than raise it to the power 2. Hence it may be natural to consider that line 2 is a fault, and that it should be s=s*s rather than s=2*s. Notice that in order to determine that line 2 is a fault, we have to refer to a hypothetical design, which we assume the pro- grammer had intended to follow; this matter will be discussed in subsequent sections.

We consider possible initial values of s and investigate how the program behaves on each:

• For initial state s=1, line 1 produces state s=2, which line 2 maps into 4. Because for s=2, 2*s and s*s are the same, the fault has no impact on this execution. We say that the fault is not sensitized, that is, it is not causing the state to be different from the correct state.

• For initial state s=2, line 1 produces state s=3, which line 2 maps onto 6. Because the correct state at this step of the computation is 3*3=9 rather than 2*3=6, we say that we are observing an error. In this case, we say that the fault has been sensitized: unlike in the previous case, it has produced a state that is distinct from the expected state at this step. Notice that in the same way that the identification of a fault refers to a hypothetical program design against which individual state- ments of program parts are judged, the identification of an error refers to a sequence of expected/correct states against which actual states are compared. Even though the fault is sensitized and generates an error, it causes no long-term impact, since by line 3 the program generates a correct state: indeed (6 mod 3) is the same as (9 mod 3). So that at the end of the program (after line 4), the state of the program is s=12. We say that the error has been masked.

• For initial state s=3, line 1 produces state s=4, which line 2 maps onto state s=8. Because the correct state at this step of the computation ought to be s=16 instead of s=8, we observe again that the fault has been sensitized and has caused an error. By line 3, the state becomes (8 mod 3)=2 rather than (16 mod 3)=1, hence the error is propagated to the next state. By line 4, the state becomes s=2+12=4 rather than s=1+12=13. The error is again propagated causing a failure of the program.

Hence in this example, • The fault is the statement in line 2, which should be (s=s*s) rather than (s=2*s);

• An error is the impact of the fault on program states; not all executions of the program give rise to an error; those that do are said to sensitize the fault. Execu- tions on initial states s=2 and s=3 lead to errors.

A failure is the event whereby an execution of the program on some initial state violates the specification; not all errors give rise to a failure; those that do are said to be propagated; those that do not are said to be masked.

6.2 FAULTS AND RELATIVE CORRECTNESS 103

In this example, the specification is total and deterministic and the program is expected (if it weren’t for its fault) to compute the function defined by the specification.

Dokumen yang terkait

Analisis Komparasi Internet Financial Local Government Reporting Pada Website Resmi Kabupaten dan Kota di Jawa Timur The Comparison Analysis of Internet Financial Local Government Reporting on Official Website of Regency and City in East Java

19 819 7

ANTARA IDEALISME DAN KENYATAAN: KEBIJAKAN PENDIDIKAN TIONGHOA PERANAKAN DI SURABAYA PADA MASA PENDUDUKAN JEPANG TAHUN 1942-1945 Between Idealism and Reality: Education Policy of Chinese in Surabaya in the Japanese Era at 1942-1945)

1 29 9

Improving the Eighth Year Students' Tense Achievement and Active Participation by Giving Positive Reinforcement at SMPN 1 Silo in the 2013/2014 Academic Year

7 202 3

Improving the VIII-B Students' listening comprehension ability through note taking and partial dictation techniques at SMPN 3 Jember in the 2006/2007 Academic Year -

0 63 87

The Correlation between students vocabulary master and reading comprehension

16 145 49

Improping student's reading comprehension of descriptive text through textual teaching and learning (CTL)

8 140 133

The correlation between listening skill and pronunciation accuracy : a case study in the firt year of smk vocation higt school pupita bangsa ciputat school year 2005-2006

9 128 37

Perancangan Sistem Informasi Akuntansi Laporan Keuangan Arus Kas Pada PT. Tiki Jalur Nugraha Ekakurir Cabang Bandung Dengan Menggunakan Software Microsoft Visual Basic 6.0 Dan SQL Server 2000 Berbasis Client Server

32 174 203

Pengaruh Kualitas Software Aplikasi pengawasan kredit (C-M@X) Pt.PLN (PERSERO) Distribusi Jawa Barat Dan Banten (DJBB) Terhadap Produktivitas Kerja karyawan UPJ Bandung Utara

5 72 130

Transmission of Greek and Arabic Veteri

0 1 22