10.12.2012 Views

Domain Testing: Divide and Conquer - Testing Education

Domain Testing: Divide and Conquer - Testing Education

Domain Testing: Divide and Conquer - Testing Education

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Domain</strong> <strong>Testing</strong>: <strong>Divide</strong> <strong>and</strong> <strong>Conquer</strong><br />

by<br />

Sowmya Padmanabhan<br />

Bachelor of Engineering<br />

in Computer Engineering<br />

SAKEC, University of Mumbai, India<br />

2001<br />

A thesis submitted to Florida Institute of Technology<br />

in partial fulfillment of the requirements for the degree of<br />

Master of Science<br />

in<br />

Computer Sciences<br />

Melbourne, Florida<br />

May 2004


© Copyright by Sowmya Padmanabhan 2004<br />

All Rights Reserved<br />

This research has been partially funded by the National Science Foundation grant<br />

EIA-0113539 ITR/SY+PE: "Improving the <strong>Education</strong> of Software Testers.” Any<br />

opinions, findings or conclusions expressed in this thesis are those of the author<br />

<strong>and</strong> do not necessarily reflect the views of the National Science Foundation.<br />

The author grants permission to make single copies<br />

_________________________________


We the undersigned committee<br />

hereby approve the attached thesis<br />

<strong>Domain</strong> <strong>Testing</strong>: <strong>Divide</strong> <strong>and</strong> <strong>Conquer</strong><br />

by<br />

Sowmya Padmanabhan<br />

Bachelor of Engineering<br />

in Computer Engineering<br />

SAKEC, University of Mumbai, India<br />

2001<br />

Cem Kaner, J.D., Ph.D. William D. Shoaff, Ph.D.<br />

Professor Assistant Professor <strong>and</strong> Head<br />

Computer Sciences Computer Sciences<br />

Principal Advisor Committee Member<br />

Robert Fronk, Ph.D.<br />

Professor <strong>and</strong> Head<br />

Science <strong>Education</strong><br />

Committee Member


Abstract<br />

<strong>Domain</strong> <strong>Testing</strong>: <strong>Divide</strong> <strong>and</strong> <strong>Conquer</strong><br />

by<br />

Sowmya Padmanabhan<br />

Principle Advisor: Dr. Cem Kaner<br />

<strong>Domain</strong> testing is a well-known software testing technique. The central idea of my<br />

thesis work is to develop <strong>and</strong> validate instructional materials that train people well<br />

in domain testing. The domain testing approach presented in my thesis is a<br />

procedural black-box testing approach. I present thorough literature reviews of<br />

domain testing <strong>and</strong> instructional design <strong>and</strong> evaluation strategies. This is followed<br />

by the designs of domain testing training material <strong>and</strong> the experiments conducted<br />

on 23 learners. Finally, I present the results of the experiments <strong>and</strong> draw inferences.<br />

I found that the instructional material, with its share of pluses <strong>and</strong> minuses, was<br />

effective in increasing learners’ competence levels in domain testing to a degree<br />

that they were able to successfully complete the tasks corresponding to the<br />

instructional goals. However, in the opinion of the evaluators of the final<br />

performance tests, the learners performed poorly on the performance tests <strong>and</strong> their<br />

performance is not comparable to the st<strong>and</strong>ard of a tester during a job interview<br />

who has one year’s experience <strong>and</strong> who considers herself reasonably good at<br />

domain testing.<br />

iii


Table of Contents<br />

Chapter 1: Introduction............................................. 1<br />

1.01 Problem Description..........................................................1<br />

1.02 Background ........................................................................1<br />

1.02.01 Definitions .....................................................................1<br />

1.02.02 White-Box <strong>Testing</strong> Approach..........................................3<br />

1.02.03 Black-Box <strong>Testing</strong> Approach..........................................3<br />

1.02.04 Complete <strong>Testing</strong>/Exhaustive <strong>Testing</strong>..............................4<br />

1.02.05 <strong>Domain</strong> <strong>Testing</strong>..............................................................4<br />

1.02.06 Similarities among Different Interpretations of <strong>Domain</strong><br />

<strong>Testing</strong>……………………………………………………………..6<br />

1.02.07 Differences between Different Interpretations of<br />

<strong>Domain</strong> <strong>Testing</strong> ..........................................................................6<br />

1.03 <strong>Domain</strong> <strong>Testing</strong> Approach Presented in Training<br />

Material .......................................................................................9<br />

1.03.01 Organization of the Thesis...............................................9<br />

Chapter 2: <strong>Domain</strong> <strong>Testing</strong>: A Literature Review 11<br />

2.01 Partitioning of Input <strong>Domain</strong> ........................................ 11<br />

2.01.01 White or Black ............................................................. 12<br />

2.01.01.01 White-Box <strong>Testing</strong> Approach..............................................13<br />

2.01.01.01.01 Path Analysis Approach.....................................................13<br />

2.01.01.01.02 Mutation <strong>Testing</strong> Approach ...............................................15<br />

2.01.01.02 Black-Box <strong>Testing</strong> Approach/ Specification-Based<br />

Approach...............................................................................................….16<br />

2.01.01.02.01 Functional <strong>Testing</strong> Approach.............................................18<br />

iv


2.01.01.03 Combination of Black-Box <strong>and</strong> White-Box <strong>Testing</strong><br />

Approaches ................................................................................................19<br />

2.01.02 Driving Factor.............................................................. 20<br />

2.01.02.01 Confidence-Based Approach...............................................20<br />

2.01.02.02 Risk-Based Approach ...........................................................21<br />

2.01.03 Linear or Non-Linear .................................................... 23<br />

2.01.04 Overlapping or Disjoint Subdomains ............................. 23<br />

2.01.05 Size of Subdomains – Equally Sized or Unequally<br />

Sized?....................................................................................... 24<br />

2.02 Selecting Representatives from Subdomains............... 24<br />

2.02.01 R<strong>and</strong>om Selection......................................................... 25<br />

2.02.02 Proportional Partition <strong>Testing</strong>........................................ 25<br />

2.02.03 Risk-Based Selection .................................................... 28<br />

2.02.03.01 Boundary Value Analysis.....................................................28<br />

2.02.03.02 Special Value <strong>Testing</strong> ...........................................................31<br />

2.02.03.03 Robustness <strong>Testing</strong>................................................................31<br />

2.02.03.04 Worst Case <strong>Testing</strong>...............................................................31<br />

2.02.04 Which Test Case Selection Method Should We Use? ..... 32<br />

2.03 <strong>Testing</strong> Multiple Variables in Combination ................ 33<br />

2.03.01 Cause-Effect Graphs..................................................... 33<br />

2.03.02 Pairwise / Orthogonal Arrays <strong>Testing</strong> ............................ 34<br />

2.03.03 Combinatorial <strong>Testing</strong> Using Input-Output Analysis ...... 35<br />

2.03.04 All Pairs Combination................................................... 36<br />

2.03.05 Weak Robust Equivalence-Class <strong>Testing</strong> ....................... 36<br />

2.03.06 When to Use What Combination Technique? ................. 37<br />

v


Chapter 3: Instructional Design <strong>and</strong> Evaluation:<br />

A Literature Review................................................. 39<br />

3.01 Definitions....................................................................... 39<br />

3.02 Learning Outcomes ........................................................ 40<br />

3.02.01 Intellectual Skills .......................................................... 41<br />

3.02.02 Cognitive Strategies ...................................................... 43<br />

3.02.03 Verbal Information ....................................................... 43<br />

3.02.04 Motor Skills ................................................................. 44<br />

3.02.05 Attitudes....................................................................... 44<br />

3.02.06 Taxonomy of Learning Levels ....................................... 45<br />

3.03 Instructional Design ....................................................... 47<br />

3.03.01 Identify Instructional Goals ........................................... 47<br />

3.03.02 Conduct Instructional Analysis/Task Analysis................ 47<br />

3.03.03 Identify Entry Behaviors <strong>and</strong> Learner Characteristics..... 48<br />

3.03.04 Identify Performance Objectives.................................... 49<br />

3.03.05 Develop Criterion-Referenced Test Items ...................... 49<br />

3.03.06 Design Instructional Strategy......................................... 50<br />

3.03.06.01 Gain Attention .......................................................................50<br />

3.03.06.02 Informing the Learner of the Objective ..............................50<br />

3.03.06.03 Stimulating Recall of Prerequisite Learned Capabilities .51<br />

3.03.06.04 Presenting the Stimulus Material ........................................51<br />

3.03.06.05 Providing Learning Guidance..............................................51<br />

3.03.06.06 Eliciting the Performance.....................................................51<br />

3.03.06.07 Providing Feedback...............................................................51<br />

3.03.06.08 Assessing Performance.........................................................52<br />

vi


3.03.06.09 Enhancing Retention <strong>and</strong> Transfer......................................52<br />

3.03.07 Develop Instructional Materials ..................................... 52<br />

3.03.08 Conduct Formative Evaluation ...................................... 53<br />

3.03.09 Revision of Instructional Materials ................................ 54<br />

3.03.10 Conduct Summative Evaluation..................................... 55<br />

3.04 Evaluation of Instruction ............................................... 55<br />

3.04.01 Different Evaluation Approaches................................... 56<br />

3.04.02 Collecting Quantitative Information for Evaluation........ 57<br />

3.04.02.01 Knowledge <strong>and</strong> Skills Assessment......................................57<br />

3.04.02.02 Attitude/Behavior Assessment.............................................60<br />

Chapter 4: Instructional Design <strong>and</strong> Evaluation<br />

Strategy for <strong>Domain</strong> <strong>Testing</strong> Training ................... 62<br />

4.01 Purpose of Developing the Instructional Material....... 62<br />

4.02 <strong>Domain</strong> <strong>Testing</strong> Approach Used in the Training ........ 62<br />

4.03 Overview of the Instructional Materials ...................... 62<br />

4.04 Instructional Strategy ..................................................... 63<br />

4.05 Evaluation Strategy ........................................................ 67<br />

4.05.01 Evaluation Materials ..................................................... 67<br />

4.05.02 Mapping Assessment Items to Instructional Objectives .. 68<br />

Chapter 5: Experiment Design................................ 69<br />

5.01 Overview of the Experiment.......................................... 69<br />

5.02 Instructional Review Board........................................... 70<br />

5.03 Finding Test Subjects..................................................... 70<br />

vii


5.04 Facilities Used for the Experiment................................ 71<br />

5.05 Before the Experiment ................................................... 72<br />

5.06 Structure of Each Training Period ................................ 72<br />

5.07 Experimental Error ......................................................... 74<br />

Chapter 6: Results <strong>and</strong> Their Analyses.................. 76<br />

6.01 Experiment Pretest <strong>and</strong> Posttest Results ...................... 76<br />

6.01.01 Paper-Based Pretest <strong>and</strong> Posttest: Results <strong>and</strong> Their<br />

Interpretation............................................................................ 76<br />

6.02 Performance Test Results .............................................. 99<br />

6.03 Questionnaire – Confidence, Attitude <strong>and</strong> Opinion of<br />

Learners.................................................................................. 100<br />

Chapter 7: Conclusion............................................ 113<br />

7.01 <strong>Domain</strong> <strong>Testing</strong> Training – Where Does it St<strong>and</strong>? ... 113<br />

7.01.01 Pluses......................................................................... 113<br />

7.01.02 Minuses...................................................................... 115<br />

7.01.03 Final Remarks ............................................................ 116<br />

Bibliography............................................................ 118<br />

Appendices............................................................... 131<br />

viii


List of Charts<br />

Chart 6.01 Paper-Based Pretest <strong>and</strong> Posttest Final Percentage Score<br />

Comparison…………………………………………….......................97<br />

Chart 6.02 Final Scores Percentage Increase…………………………98<br />

Chart 6.03 Averages…………………………………………………..98<br />

Chart 6.04 Averages Final Day (5) Questionnaire Responses………110<br />

ix


List of Tables<br />

Table 6.01 Question 1 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...78<br />

Table 6.02 Question 2 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...80<br />

Table 6.03 Question 3 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...82<br />

Table 6.04 Question 4 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...84<br />

Table 6.05 Question 5 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...86<br />

Table 6.06 Question 6 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...88<br />

Table 6.07 Question 7 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...90<br />

Table 6.08 Question 8 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...92<br />

Table 6.09 Question 9 – Paper-Based Pretest <strong>and</strong> Posttest Score<br />

Comparison…………………………………………………………...94<br />

Table 6.10 Final Scores - Pretest <strong>and</strong> Posttest Score Comparison<br />

………………………………………………………………………..95<br />

Table 6.11 Day One Questionnaire Responses……………………...100<br />

Table 6.12 Day Two Questionnaire Responses……………………..102<br />

Table 6.13 Day Three Questionnaire Responses……………………104<br />

Table 6.14 Day Four Questionnaire Responses……………………..106<br />

x


Table 6.15 Day Five Questionnaire Responses……………………..108<br />

xi


Acknowledgements<br />

• Dr. Cem Kaner, my principle advisor, who helped me with every aspect of<br />

my thesis work.<br />

• Sabrina Fay for helping me with the instructional design of the training<br />

material for domain testing.<br />

• Dr. Cem Kaner, James Bach <strong>and</strong> Pat McGee for spending their valuable<br />

time in evaluating the performance tests.<br />

• Pat McGee for helping me out with some questions I had about all-pairs<br />

combination <strong>and</strong> the test cases developed by equivalence class analysis<br />

using multidimensional analysis.<br />

• Amit Paspunattu for helping me with the literature search.<br />

• Dr. Robert Fronk <strong>and</strong> Dr. William D. Shoaff, my committee members, for<br />

their valuable suggestions on improving my experiment design.<br />

• All my learners for undergoing the training of domain testing <strong>and</strong> helping<br />

me evaluate the effectiveness of the instructional material <strong>and</strong> instruction on<br />

domain testing.<br />

• National Science Foundation <strong>and</strong> Rational/IBM for funding my thesis work.<br />

• All those who directly or indirectly have helped me with my thesis.<br />

xii


Dedication<br />

This thesis is dedicated to Almighty God for giving me the strength to successfully<br />

complete it, for uplifting me during the rough times <strong>and</strong> for cheering me during the<br />

good times. I am thankful to my loving <strong>and</strong> supportive family <strong>and</strong> to Sumit<br />

Malhotra, my best friend, without whose moral support the completion of this<br />

thesis would have been impossible.<br />

xiii


1.01 Problem Description<br />

Chapter 1: Introduction<br />

The central idea of my thesis work is to develop <strong>and</strong> validate instructional materials<br />

that train people well in domain testing. The lack of systematic <strong>and</strong> effective<br />

materials for training novice testers in domain testing, a well-established software<br />

testing technique, was the driving force behind the conception of the idea of my<br />

thesis work. The National Science Foundation (NSF) has primarily funded this<br />

thesis research.<br />

1.02 Background<br />

This section gives a brief introduction to some basics in software testing <strong>and</strong><br />

domain testing in an attempt to increase underst<strong>and</strong>ing of the detailed literature<br />

review of domain testing presented in the next chapter.<br />

1.02.01 Definitions<br />

Computer Program: “A combination of computer instructions <strong>and</strong> data<br />

definitions that enable computer hardware to perform computational or control<br />

functions” (IEEE Std. 610.12, 1990, p. 19).<br />

Software: IEEE Std. 610.12 (1990) defined software as “Computer programs,<br />

procedures, <strong>and</strong> possibly associated documentation <strong>and</strong> data pertaining to the<br />

operation of a computer system” (p.66).<br />

Software <strong>Testing</strong>: “<strong>Testing</strong> is the process of executing a program with the intent<br />

of finding errors” (Myers, 1979, p. 5).<br />

1


“The purpose of testing is to determine whether a program contains any errors”<br />

(Goodenough & Gerhart, 1975, p. 156).<br />

“<strong>Testing</strong>--A verification method that applies a controlled set of conditions <strong>and</strong><br />

stimuli for the purpose of finding errors” (IEEE Computer Society, 2004, 1).<br />

“Software testing in all its guises is a study of the software input space, the domain<br />

over which a program under test is supposed to operate. The whole question of<br />

‘how should testing be done?’ is a matter of input selection” (Hamlet, 2000, p. 71).<br />

Test Case: IEEE Std. 610.12 (1990) defined a test case as:<br />

(1) A set of test inputs, execution conditions, <strong>and</strong> expected results<br />

developed for a particular objective, such as to exercise a particular program<br />

path or to verify compliance with a specific requirement.<br />

(2) (IEEE Std. 829-1983) Documentation specifying inputs, predicted<br />

results, <strong>and</strong> a set of execution conditions for a test item. (p. 74)<br />

Bug/Error/Fault: We test to find bugs, also called errors. IEEE Std. 610.12 (1990)<br />

defined a bug, error or fault as:<br />

(1) The difference between a computed, observed, or measured value or<br />

condition <strong>and</strong> the true, specified, or theoretically correct value or condition.<br />

For example, a difference of 30 meters between a computed result <strong>and</strong> the<br />

correct result.<br />

(2) An incorrect step, process, or data definition. For example, an incorrect<br />

instruction in a computer program.<br />

(3) An incorrect result. For example, a computed result of 12 when the<br />

correct result is 10.<br />

(4) A human action that produces an incorrect result. For example, an<br />

incorrect action on the part of a programmer or operator. (p. 31)<br />

2


There are two general approaches to doing testing- ‘white-box’ testing <strong>and</strong><br />

‘black-box’ testing.<br />

1.02.02 White -Box <strong>Testing</strong> Approach<br />

In this testing approach, the program under test is treated as a white box or a glass<br />

box, something you can see through (Kaner, Falk & Nguyen, 1999; Myers, 1979).<br />

According to Myers (1979), this approach can also be called a logic-driven testing<br />

approach in which the tester does testing based on the internal structure of the<br />

program, usually ignoring the specifications. This approach is also known as<br />

structural testing or glass-box testing. IEEE Std. 610.12 (1990) defined structural,<br />

glass-box or white-box testing as “<strong>Testing</strong> that takes into account the internal<br />

mechanism of a system or component” (p. 71).<br />

1.02.03 Black-Box <strong>Testing</strong> Approach<br />

In this testing approach, the program under test is treated as a black box, something<br />

you cannot see through (Kaner et al., 1999; Myers, 1979). A black-box tester is<br />

unconcerned with the internals of the program (Howden, 1980a; Myers, 1979;<br />

Podgurski & Yang, 1993) <strong>and</strong> tests the program using the specifications of the<br />

program (Myers, 1979). Black-box testing has been defined by IEEE Std. 610.12<br />

(1990) as “(1) <strong>Testing</strong> that ignores the internal mechanism of a system or<br />

component <strong>and</strong> focuses solely on the outputs generated in response to selected<br />

inputs <strong>and</strong> execution conditions” (p. 35). Specification can be defined as “A<br />

document that specifies, in a complete, precise, verifiable manner, the<br />

characteristics of a system or component, <strong>and</strong>, often, the procedures for<br />

determining whether these provisions have been satisfied” (IEEE Std. 610.12,<br />

1990, p. 69).<br />

According to Myers (1979), the black-box testing approach can also be<br />

called a data-driven or input/output-driven testing approach since black-box testers<br />

3


feed the program a set of input values <strong>and</strong> observe the output to see if it is in<br />

accordance with what is expected in the specification document.<br />

1.02.04 Complete <strong>Testing</strong>/Exhaustive <strong>Testing</strong><br />

One of the problems with software testing is that it is practically impossible to<br />

achieve complete or exhaustive testing (Burnstein, 2003; Collard, personal<br />

communication, July 22, 2003; Goodenough & Gerhart, 1975; Huang, 1975;<br />

Myers, 1979; Kaner, 2002a; Kaner et al., 1999). According to Kaner (2002a),<br />

exhaustive or complete testing is not possible because:<br />

1. The domain of possible inputs is too large.<br />

2. There are too many combinations of data to test.<br />

3. There are too many possible paths through the program to test.<br />

4. There are user interface errors, configuration <strong>and</strong> compatibility failures,<br />

<strong>and</strong> dozens of other dimensions of analysis. (p. 2)<br />

Huang (1975) gave a simple yet very powerful example of why complete<br />

testing is just impossible. He described a program that has just two input variables,<br />

x <strong>and</strong> y, <strong>and</strong> one output variable z. If we were to assume that the variables are<br />

integers <strong>and</strong> the maximum value for x or y is 2 32 , then it means that each has 2 32<br />

possibilities of input values. This in turn means that the total possible combinations<br />

of input values for x <strong>and</strong> y is 2 32 x 2 32 .<br />

Huang (1975) said, “Now suppose this program is relatively small, <strong>and</strong> on<br />

the average it takes one millisecond to execute the program once. Then it will take<br />

more than 50 billion years for us to complete the test!” (p. 289). This is called<br />

combinatorial explosion.<br />

1.02.05 <strong>Domain</strong> <strong>Testing</strong><br />

<strong>Domain</strong> testing, one of the widely used software testing methodologies, was<br />

designed to alleviate the impossibility of complete testing <strong>and</strong> thereby enable<br />

4


effective testing with reduced effort. Kaner <strong>and</strong> Bach (2003) described the<br />

fundamental goal or question in domain testing, saying, “This confronts the<br />

problem that there are too many test cases for anyone to run. This is a stratified<br />

sampling strategy that provides a rationale for selecting a few test cases from a<br />

huge population” (part 2, slide 3).<br />

Kaner, Bach <strong>and</strong> Pettichord (2002) define domain of a variable as “a<br />

(mathematical) set that includes all possible values of a variable of a function” (p.<br />

36). According to Hamlet <strong>and</strong> Taylor (1990), “Input partitioning is the natural<br />

solution to the two fundamental testing problems of systematic method <strong>and</strong> test<br />

volume” (p. 1402).<br />

Generally speaking, tasks in domain testing consist of partitioning the input<br />

domain, the set of all possible input values, into a finite number of subsets or<br />

equivalence classes <strong>and</strong> then choosing a few representatives from each class as the<br />

c<strong>and</strong>idates for testing (Goodenough & Gerhart, 1975; Jorgensen, 2002; Kaner et al.,<br />

1999; Myers, 1979). All members of an equivalence class are equivalent to each<br />

other in the sense that they are all sensitive to the same type of error (Goodenough<br />

& Gerhart, 1975; Howden, 1976; Jeng & Weyuker, 1989; Kaner & Bach, 2003;<br />

Kaner et al., 2002; Kaner et al., 1999; Myers, 1979; Richardson & Clarke, 1981;<br />

Weyuker & Ostr<strong>and</strong>, 1980).<br />

However, one member of a class might be more likely to expose such an<br />

error or may also be able to expose a different error. In either of these cases, we<br />

would treat that member as a better (more powerful) member of the equivalence<br />

class. When one is available, we select the best representative (most powerful<br />

member) of the equivalence class (Kaner & Bach, 2003, part 2). Although most of<br />

the literature describes partitioning of input domain, similar analysis can be applied<br />

to the output domain as well (Kaner et al., 2002; Kaner et al., 1999; Myers, 1979;<br />

Whittaker & Jorgensen, 2002). For programs having multiple variables, the next<br />

task would be to combine the test cases in order to perform combination testing.<br />

5


In sum, domain testing is a divide-<strong>and</strong>-conquer method of testing in which<br />

researchers systematically reduce an enormously large test data set to a few subsets<br />

<strong>and</strong> further select a few representatives from each.<br />

1.02.06 Similarities among Different Interpretations of <strong>Domain</strong><br />

<strong>Testing</strong><br />

There are differing interpretations of the domain testing methodology, but a few<br />

things are common to all of them. They all agree that input domain of any average<br />

program is enormously large <strong>and</strong> it is impossible to test for all data points. They<br />

advocate partitioning the input domain into a finite number of subsets based on<br />

some criterion. They also agree that all the members of any such subset are<br />

equivalent to each other with respect to the criterion that was used to classify them<br />

in their respective subset. All interpretations concur that one or more<br />

representatives must be chosen from each such subset.<br />

1.02.07 Differences between Different Interpretations of <strong>Domain</strong><br />

<strong>Testing</strong><br />

One of the differences lies in the criterion that is used for partitioning the input<br />

domain. Some researchers have used path analysis as the criterion for partitioning<br />

(Boyer, Elspas & Levitt, 1975; Clarke, Hassell & Richardson, 1982; DeMillo,<br />

Lipton & Sayward, 1978; Duran & Ntafos, 1981; Ferguson & Korel, 1996;<br />

Goodenough & Gerhart, 1975; Hajnal & Forgács, 1998; Hamlet, 2000; Howden,<br />

1976; Howden, 1986; Huang, 1975; Jeng & Weyuker, 1989; Jeng & Weyuker,<br />

1994; Koh & Liu, 1994; Podgurski & Yang, 1993; Weyuker & Jeng, 1991; White<br />

& Cohen, 1980; Zeil, Afifi & White, 1992a; Zeil, Afifi & White, 1992b; Zeil &<br />

White, 1981; White & Sahay, 1985). Some others have described mutation testing<br />

as a form of domain testing. Path analysis <strong>and</strong> mutation testing approaches are<br />

basically white-box approaches <strong>and</strong> are defined <strong>and</strong> described under sections<br />

2.01.01.01.01 <strong>and</strong> 2.01.01.01.02, respectively.<br />

6


Other researchers have used the features/functions <strong>and</strong> input/output<br />

properties described in the specification as the criterion for partitioning (Beizer,<br />

1995; Chen, Poon & Tse, 2003; Hamlet, 1996; Howden, 1980; Hutcheson, 2003;<br />

Jorgensen, 2002; Kaner, 2002a; Kaner et al., 1999; Kaner et al., 2002; Kaner &<br />

Bach, 2003; Mayrhauser, Mraz & Walls, 1994; Myers, 1979; Ostr<strong>and</strong> & Balcer,<br />

1988; Schroeder & Korel, 2000; Podgurski & Yang, 1993; Reid, 1997; Richardson,<br />

O’Malley & Tittle, 1989; Weiss & Weyuker, 1988). This is a black-box testing<br />

approach.<br />

Some have described a specific form of black-box domain testing approach<br />

called functional testing (Hamlet, Manson & Woit, 2001; Howden, 1981; Howden,<br />

1986; Howden, 1989; Podgurski & Yang, 1993; Vagoun, 1996; Zeil et al., 1992b).<br />

This has been defined under section 2.01.01.02.01. In the literature, Howden’s<br />

works on functional testing have been described to have laid the foundation of<br />

black-box testing. There are some others who have suggested incorporating black-<br />

box <strong>and</strong> white-box domain testing approaches into a combined approach that takes<br />

advantage of both the specification <strong>and</strong> the internal structure of a program (Binder,<br />

1999; Chen, Poon, Tang & Yu, 2000; Goodenough & Gerhart, 1975; Hamlet &<br />

Taylor, 1990; Howden, 1980a; Howden, 1980b; Howden, 1982; Richardson &<br />

Clarke, 1981; Weyuker & Ostr<strong>and</strong>, 1980; White, 1984).<br />

Another difference is that some researchers have proposed that partitioning<br />

of input domain should result in non-overlapping or disjoint subdomains or<br />

partitions (Howden, 1976; Jorgensen, 2002; Myers, 1979; White & Cohen, 1980).<br />

However, others allowed overlapping subdomains in their analyses as they noted<br />

that in practice it may be impossible to get perfectly disjoint subdomains (Jeng &<br />

Weyuker, 1989; Kaner et al., 1999; Weyuker & Jeng, 1991).<br />

Yet another difference comes from the way best representatives are selected<br />

from an equivalence class. Some have asserted that since all members of an<br />

equivalence class are equivalent to each other, any arbitrary member can be chosen<br />

at r<strong>and</strong>om to represent its respective equivalence class (Howden, 1976; Ntafos,<br />

1998; Podgurski & Yang, 1993; Weyuker & Jeng, 1991; Weyuker & Ostr<strong>and</strong>,<br />

7


1980). But others have described strategies such as boundary value analysis for<br />

selecting best representatives from each equivalence class (Binder, 1999; Hamlet,<br />

2000; Howden, 1980b; Hutcheson, 2003; Jorgensen, 2002; Kaner & Bach, 2003;<br />

Kaner et al., 2002; Kaner et al., 1999; Myers, 1979; White & Cohen, 1980).<br />

In boundary value analysis strategy, test data at the boundaries <strong>and</strong> just<br />

beyond the boundaries is selected. In addition, some researchers have described<br />

methods such as special value <strong>and</strong> worst case testing to supplement boundary value<br />

analysis (Jorgensen, 2002). Some have also described proportional partition testing,<br />

a partition testing strategy in which the test data selection is r<strong>and</strong>om but the number<br />

of test cases selected from a subdomain depends on the probability of failure of<br />

inputs in the subdomain (Chan, Mak, Chen & Shen, 1997; Chan, Mak, Chen &<br />

Shen, 1998; Chen, Wong & Yu, 1999; Chen & Yu, 1994; Chen & Yu, 1996b; Chen<br />

& Yu, 1996c; Leung & Chen, 2000; Ntafos, 1998; Ntafos, 2001). In other words, if<br />

we were to assume that each input in a subdomain is equally likely to occur, then<br />

the number of test cases selected would depend on the size of the subdomain.<br />

There is also a difference in how linear <strong>and</strong> non-linear domains <strong>and</strong><br />

continuous <strong>and</strong> discrete domain spaces are analyzed. Some researchers have<br />

described domain testing only for linear continuous space domains (Beizer, 1995;<br />

Clarke, Hassell & Richardson, 1982; White & Cohen, 1980). Others have extended<br />

their description of domain testing methodology to non-linear <strong>and</strong> discrete domain<br />

spaces as well (Jeng & Weyuker, 1994; Kaner et al., 1999; Zeil et al., 1992b).<br />

While most people in the literature have not described forming equally<br />

sized subdomains, there are some who have suggested partitioning input domain<br />

into equally sized subdomains (Chan et al., 1998; Weyuker & Jeng, 1991).<br />

Finally, there is the difference in the driving force behind testing. Some<br />

researchers have described domain testing strategy as a method of gaining<br />

confidence in the program or for proving the correctness of the program<br />

(Goodenough & Gerhart, 1975; Howden, 1976; Howden, 1979; Howden, 1981;<br />

Howden, 1986; White & Cohen, 1980). Others have described it as a risk-based or<br />

failure-based testing approach (Beizer, 1995; Collard, personal communication,<br />

8


July 22, 2003; Frankl, Hamlet, Littlewood & Strigini, 1998; Gerrard & Thompson,<br />

2002; Hamlet & Taylor, 1990; Hamlet, 2000; Kaner, 2002b; Kaner & Bach, 2003;<br />

Podgurski & Yang, 1993; Whittaker & Jorgensen, 2000). In the latter approach,<br />

partitions or subdomains are formed anticipating failures, whereas in the former<br />

approach the goal is to prove that the program is working well. This means that if<br />

the program works properly for a representative of a partition, then it is assumed to<br />

give confidence of correctness for all the remaining members in the partition.<br />

<strong>Testing</strong> approaches that concentrate on achieving code coverage, such as<br />

the path analysis approach mentioned earlier, fall under this category.<br />

1.03 <strong>Domain</strong> <strong>Testing</strong> Approach Presented in Training<br />

Material<br />

As mentioned before, the training material was developed with the aim of training<br />

novice testers well in domain testing. In the training material I developed, I have<br />

adopted a procedural black-box approach to teaching <strong>and</strong> doing domain testing.<br />

Kaner defined the proceduralist approach to teaching, saying, “A proceduralist<br />

approach tries to create a procedure for everything, <strong>and</strong> then teach people to do<br />

tasks, or to solve problems, by following the ‘right’ procedure” (e-mail<br />

communication, January 31, 2004).<br />

Attempts have been made to add a slight flavor of risk-based testing to this<br />

procedural approach. The combination technique discussed in the training material<br />

is the all pairs combination technique. I have attempted to incorporate Gagne’s nine<br />

conditions of learning in the instructional design <strong>and</strong> Bloom’s taxonomy in the<br />

design of evaluation material, which includes exercises <strong>and</strong> tests.<br />

1.03.01 Organization of the Thesis<br />

Chapter 2: <strong>Domain</strong> <strong>Testing</strong>: A Literature Review: This describes different<br />

interpretations of domain testing in the literature.<br />

9


Chapter 3: Instructional Design <strong>and</strong> Evaluation: A Literature Review: This<br />

describes instructional design <strong>and</strong> evaluation methodologies.<br />

Chapter 4: Instructional Design <strong>and</strong> Evaluation Strategy for <strong>Domain</strong> <strong>Testing</strong><br />

Training: This contains brief descriptions of the instructional materials <strong>and</strong> their<br />

structure <strong>and</strong> contents <strong>and</strong> points to the location of the instructional material in the<br />

thesis.<br />

Chapter 5: Experiment Design: This chapter describes how the experiments were<br />

set up <strong>and</strong> explains the two experiments that were conducted as part of my thesis<br />

work.<br />

Chapter 6: Results <strong>and</strong> Their Analyses: This chapter presents the results of<br />

paper-based <strong>and</strong> computer-based pretests <strong>and</strong> posttests conducted in the two<br />

experiments. It also presents analyses <strong>and</strong> interpretation of the results.<br />

Chapter 7: Conclusion: This chapter draws conclusions from the results obtained<br />

<strong>and</strong> their interpretation.<br />

Bibliography: This contains the list of all sources that I have used directly or<br />

indirectly for the completion of my thesis.<br />

Appendices: There are 26 appendices, Appendix A through Appendix Z. These<br />

contain the various materials that were directly or indirectly used for the purpose of<br />

domain testing training. The last three appendices contain evaluation reports of the<br />

performance tests by Dr. Cem Kaner, James Bach <strong>and</strong> Pat McGee, respectively.<br />

10


Chapter 2: <strong>Domain</strong> <strong>Testing</strong>: A Literature Review<br />

As discussed in the introductory chapter, since exhaustive testing is impossible we<br />

have to be able to do selective testing, but in a way that the entire population is<br />

represented. Partitioning the input domain <strong>and</strong> selecting best representatives from<br />

each partition is one way to achieve this goal. In this testing strategy, called domain<br />

testing, the three main tasks are:<br />

1. Dividing or partitioning the set of all possible test cases into partitions<br />

based on some criterion.<br />

2. Selecting c<strong>and</strong>idates that best represent each partition.<br />

3. Combining variables in case of programs having multiple variables.<br />

2.01 Partitioning of Input <strong>Domain</strong><br />

This is the process of dividing the input domain or the set of all possible test cases<br />

into partitions such that all test cases in one partition are equivalent to each other<br />

with respect to some criterion. Although most of the literature describes<br />

partitioning of input domain, similar analysis can be applied to the output domain<br />

as well (Kaner et al., 2002; Kaner et al., 1999; Myers, 1979).<br />

According to Kaner et al. (2002), test cases can be grouped into an<br />

equivalence class if they satisfy the following conditions:<br />

“(a) they all test the same thing; (b) if one of them catches a bug, the others<br />

probably will too; <strong>and</strong> (c) if one of them doesn’t catch a bug, the others probably<br />

won’t either” (p. 36).<br />

dimensions:<br />

Partitioning of input domain differs in the literature along the following<br />

� White or Black:<br />

• White-Box <strong>Testing</strong> Approach<br />

o Path Analysis Approach<br />

o Mutation <strong>Testing</strong> Approach<br />

11


• Black-Box <strong>Testing</strong> Approach/Specification-Based Approach<br />

o Functional <strong>Testing</strong> Approach<br />

• Combination of White-Box <strong>and</strong> Black-Box <strong>Testing</strong> Approaches<br />

� Driving Factor:<br />

• Confidence-based approach<br />

• Risk-based approach<br />

� Type of <strong>Domain</strong>:<br />

• Linear<br />

• Non-linear<br />

� Overlapping or Disjoint Subdomains:<br />

• Partitioning into overlapping subdomains<br />

• Partitioning into disjoint subdomains<br />

� Size of Subdomains:<br />

• Equally sized subdomains<br />

• No particular sized subdomains<br />

A detailed description of the elements in the above classification of<br />

partitioning of the input domain follows.<br />

2.01.01 White or Black<br />

There are some testers that rely solely on the implementation of a program, which<br />

demonstrates the actual behavior of a program. We call them the 'white-box testers'.<br />

There are others that rely on specification, which describes or is at least supposed<br />

to describe the intended behavior of a program. We call this group the 'black-box<br />

testers'.<br />

12


Black-box testers may or may not rely on a specification, <strong>and</strong> white-box<br />

testers often rely on specifications. White-box testers have knowledge of the code,<br />

while black-box testers do not.<br />

Some others have realized that both implementation <strong>and</strong> specification are<br />

important sources of information for testing. In this context, different approaches to<br />

partitioning the input domain have been described in the literature. The following is<br />

a classification of the approaches.<br />

2.01.01.01 White-Box <strong>Testing</strong> Approach<br />

As mentioned before, there are two visible variations of partition testing under this<br />

category:<br />

• Path Analysis Approach<br />

• Mutation <strong>Testing</strong> Approach<br />

2.01.01.01.01 Path Analysis Approach<br />

Some of those who have described the path analysis approach to doing partition<br />

testing are Boyer et al. (1975), Clarke <strong>and</strong> Richardson (1982), DeMillo et al.<br />

(1978), Duran <strong>and</strong> Ntafos (1981), Ferguson <strong>and</strong> Korel (1996), Goodenough <strong>and</strong><br />

Gerhart (1975), Hajnal <strong>and</strong> Forgács (1998), Hamlet (2000), Howden (1976),<br />

Howden (1986), Huang (1975), Jeng <strong>and</strong> Weyuker (1989), Jeng <strong>and</strong> Weyuker<br />

(1994), Koh <strong>and</strong> Liu (1994), Podgurski <strong>and</strong> Yang (1993), Weyuker <strong>and</strong> Jeng<br />

(1991), White <strong>and</strong> Cohen (1980), White <strong>and</strong> Sahay (1985), Zeil et al. (1992a), <strong>and</strong><br />

Zeil <strong>and</strong> White (1981).<br />

These are definitions of some basic terms concerned with path-analysis:<br />

Path: IEEE Std. 610.12 (1990) defined a path by stating, “(1) In software<br />

engineering, a sequence of instructions that may be performed in the execution of a<br />

computer program” (pp. 54-55).<br />

13


Howden (1976) defined a path this way: “A path through a program<br />

corresponds to some possible flow of control” (p. 209).<br />

Kaner et al. (1999) defined a path as “…a sequence of operations that runs<br />

from the start of the program to an exit point. This is also called an end-to-end path.<br />

A subpath is a sequence of statements from one place in the program to another.<br />

Subpaths are also called paths” (p. 43).<br />

Path Condition: IEEE Std. 610.12 (1990) defined the path condition as “A set of<br />

conditions that must be met in order for a particular program path to be executed”<br />

(p. 55).<br />

Path Analysis: This has been defined by IEEE Std. 610.12 (1990) as “Analysis of<br />

a computer program to identify all possible paths through the program, to detect<br />

incomplete paths, or to discover portions of the program that are not on any path”<br />

(p.55).<br />

In the path analysis approach to doing domain testing, partitioning of the<br />

input domain is done based on paths. To underst<strong>and</strong> what is meant by path in this<br />

context, consider an example of a very simple program:<br />

If x < 10 then<br />

Else<br />

Event A occurs<br />

Event B occurs.<br />

Depending on what the value of the variable x is, the program would either<br />

go down the path that leads to the execution of event A or would go down the path<br />

that leads to the execution of event B.<br />

In the path analysis approach to doing partition testing, the input domain<br />

corresponding to a program would be the set of all paths that the program can take.<br />

14


For instance, in the above example, there are two possible paths. One path is that<br />

event A occurs <strong>and</strong> the other path corresponds to the possibility that event B occurs.<br />

Of course, there is another possible path for all the cases when the value of<br />

x is non-numeric. In the above example it is difficult to tell, but normally if there<br />

were an error-h<strong>and</strong>ling capability incorporated in the program, the path taken in the<br />

event of such an error would be whatever is mentioned in the corresponding error-<br />

h<strong>and</strong>ling construct of the program.<br />

In domain testing, the first main task is to partition the input domain into<br />

partitions or equivalence classes based on some criterion. As mentioned before, the<br />

criterion in the path analysis approach is the path. All members of one partition or<br />

subset of the input domain are expected to result in the execution of the same path<br />

of the program (Howden, 1976; Weyuker & Jeng, 1991; White & Cohen, 1980). In<br />

the example above, the set of all values of variable x less than 10 forms one<br />

partition <strong>and</strong> the set of all values of x greater than or equal to 10 forms another.<br />

2.01.01.01.02 Mutation <strong>Testing</strong> Approach<br />

If a program passed all the tests from a subdomain, then can one really be sure that<br />

the program is actually correct? Either the program really is correct over that<br />

subdomain or the tester is using a set of ineffective test cases to test the program<br />

(DeMillo et al., 1978). This is where mutation testing comes into play.<br />

Mutation testing involves creating a set of wrong versions of a program,<br />

called mutants, for every subdomain over whose members the original program<br />

seems to operate correctly. That is, it is known to have passed all the tests in that<br />

subdomain (DeMillo et al., 1978). A mutant of a program is usually formed by<br />

modifying a single statement of the original program (Weyuker & Jeng, 1991). The<br />

statement that is modified will depend on which portion of the program the<br />

associated subdomain corresponds to.<br />

Adrion, Branstad <strong>and</strong> Cherniavsky (1982), DeMillo et al. (1978), Howden<br />

(1981), Jeng <strong>and</strong> Weyuker (1989), Podgurski <strong>and</strong> Yang (1993), <strong>and</strong> Weyuker <strong>and</strong><br />

15


Jeng (1991) are among the researchers that have described how mutation testing<br />

can be incorporated in the process of achieving partitioning of input domain.<br />

So, how are the mutants really used? If testing the mutant gives different<br />

results compared to the original program, then it is confirmed that the original<br />

program was indeed correct. But if the mutant yields results identical to that of the<br />

original program, then there is definitely something amiss (DeMillo et al., 1978).<br />

Hence, mutation testing is taking domain testing or partition testing a step further.<br />

It ensures that when a program passes a set of tests, it really means that the program<br />

is correct.<br />

However, Howden (1981) has pointed out one outst<strong>and</strong>ing disadvantage<br />

of the mutation testing approach--the large number of mutants that one might end<br />

up generating for a program. Howden said, “It is estimated that there are on the<br />

order of n 2 mutants for an n-line program. This implies that if a proposed test set T<br />

contains t elements it is necessary to carry out on the order of n 2 to n 2 t program<br />

executions to determine its completeness” (1981, p. 67).<br />

2.01.01.02 Black-Box <strong>Testing</strong> Approach/ Specification-Based Approach<br />

Those who have described the process of domain testing using specifications<br />

include Beizer (1995), Chen et al. (2003), Hamlet (1996), Howden (1980),<br />

Hutcheson (2003), Jorgensen (2002), Kaner (2002a), Kaner <strong>and</strong> Bach (2003),<br />

Kaner et al. (2002), Kaner et al. (1999), Mayrhauser et al. (1994), Myers (1979),<br />

Ostr<strong>and</strong> <strong>and</strong> Balcer (1988), Patrick <strong>and</strong> Bogdan (2000), Podgurski <strong>and</strong> Yang<br />

(1993), Richardson et al. (1989), Reid (1997), <strong>and</strong> Weiss <strong>and</strong> Weyuker (1988).<br />

Kaner et al. (2002) have suggested doing domain testing by first identifying<br />

both input <strong>and</strong> output variables for every function either by looking at the<br />

specification for the program at h<strong>and</strong> or by looking at the program or prototype<br />

from the outside by considering the program or function as a black box. Next, they<br />

suggested finding the domain for each variable <strong>and</strong> partitioning this domain into<br />

equivalence classes. After that, they suggested choosing a few c<strong>and</strong>idates from<br />

each class that best represent that class.<br />

16


Myers (1979) suggested associating an equivalence class with every input<br />

or output condition mentioned in the specification of the product under test. Myers<br />

cited two kinds of equivalence classes associated with every input or output<br />

condition:<br />

1. A valid equivalence class consists of all values that serve as valid input to<br />

the product or program under test, such that the corresponding input or<br />

output condition is satisfied.<br />

2. An invalid equivalence class consists of all erroneous values or invalid<br />

inputs.<br />

Ostr<strong>and</strong> <strong>and</strong> Balcer (1988) described the classic category partition method<br />

of doing functional testing using specifications. The first three tasks in their method<br />

are:<br />

1. Analyze the specification. The tester identifies individual functional<br />

units that can be tested separately. For each unit, the tester identifies:<br />

• parameters of the functional unit<br />

• characteristics of each parameter<br />

• objects in the environment whose state could affect the<br />

functional unit’s operation<br />

• characteristics of each environment object<br />

The tester then classifies these items into categories that have an effect on<br />

the behavior of the functional unit.<br />

2. Partition the categories into choices. The tester determines the different<br />

significant cases that can occur within each parameter <strong>and</strong> environment<br />

category.<br />

3. Determine constraints among the choices. The tester decides how the<br />

choices interact, how the occurrence of one choice can affect the existence<br />

of another, <strong>and</strong> what special restrictions might affect any choice. (p. 679)<br />

Kaner et al. (1999) described an example of a program whose specification<br />

includes 64K to 256K RAM memory requirements. In this case, one could identify<br />

17


three equivalence classes. The first one contains all cases that require operating the<br />

program over RAM capacities below 64K. The second class consists of all cases<br />

that require operating the program over RAM capacities between 64K <strong>and</strong> 256K.<br />

Finally, the third equivalence class consists of all cases that require operating the<br />

program over RAM capacities greater than 256K.<br />

Functional testing has been described in the literature as a specific form of<br />

specification-based or black-box domain testing, which is described next .<br />

2.01.01.02.01 Functional <strong>Testing</strong> Approach<br />

In the context of this thesis, a function is defined as: “In programming, a named<br />

section of a program that performs a specific task” (Webopedia, 2003, 1).<br />

IEEE Std. 610.12 defined a function as:<br />

(1) A defined objective or characteristic action of a system or component.<br />

For example, a system may have inventory control as its primary function.<br />

(2) A software module that performs a specific action, is invoked by the<br />

appearance of its name in an expression, may receive input values, <strong>and</strong><br />

returns a single value. (p. 35)<br />

Hamlet et al. (2001), Howden (1981), Howden (1986), Howden (1989),<br />

Podgurski <strong>and</strong> Yang (1993), Vagoun (1996) <strong>and</strong> Zeil et al. (1992b) are among the<br />

researchers that have described the functional testing approach to doing domain<br />

testing.<br />

Howden's work on functional testing is often cited in the literature as having<br />

laid the foundation of black-box testing because the approach he described focuses<br />

only on the inputs <strong>and</strong> outputs of a program’s functions <strong>and</strong> not on how the<br />

program executes the functions. According to Podgurski <strong>and</strong> Yang (1993),<br />

“Perhaps the most widely used form of partition testing is functional testing. This<br />

approach requires selecting test data to exercise each aspect of functionality<br />

identified in a program’s requirement specification. The inputs that invoke a<br />

particular feature comprise a subdomain” (p. 170).<br />

18


In the functional approach to doing domain testing, partitioning of the input<br />

domain is done based on functions. Functional structures described in the<br />

specification are studied <strong>and</strong> test data is developed around these structures<br />

(Howden, 1986). The program at h<strong>and</strong> is analyzed to identify the functions<br />

involved, the input variables involved <strong>and</strong> their constraints. According to Howden<br />

(1981), identifying functions <strong>and</strong> selecting reliable test cases are two important<br />

tasks in functional testing. Depending on what kind of function it is, the approach<br />

to deriving a reliable test data set for the corresponding function will be different,<br />

since each will have different kinds of errors associated with it (Howden, 1981).<br />

One of the five types of functions identified by Howden (1981) based on<br />

functional structure is the arithmetic relation function. “Arithmetic relation<br />

functions are computed by expressions of the form E1 r E2, where E1 <strong>and</strong> E2 are<br />

arithmetic expressions <strong>and</strong> r is one of the relational operators , =, =, = or ?” (p.<br />

70).<br />

According to Howden (1981), of the many errors that can be associated<br />

with this type of function, a simple one is use of illegal or incorrect relation, which<br />

in turn means use of an incorrect relational operator. To test for such an error, a<br />

tester would consider two partitions. One corresponds to the set of test cases that<br />

have the expressions related by the correct relational operator, <strong>and</strong> the other<br />

partition consists of all test cases that have the expressions related by one of the<br />

remaining sets of relational operators.<br />

2.01.01.03 Combination of Black-Box <strong>and</strong> White-Box <strong>Testing</strong><br />

Approaches<br />

As previously mentioned, there are also a few researchers who have talked about<br />

leveraging the advantages of both white-box <strong>and</strong> black-box testing strategies <strong>and</strong><br />

described a combined approach to doing domain testing. Among the proponents of<br />

such a combined approach have been Binder (1999), Chen et al. (2000),<br />

Goodenough <strong>and</strong> Gerhart (1975), Hamlet <strong>and</strong> Taylor (1990), Howden (1980a),<br />

19


Howden (1980b), Howden (1982), Richardson <strong>and</strong> Clarke (1981), Weyuker <strong>and</strong><br />

Ostr<strong>and</strong> (1980) <strong>and</strong> White (1984).<br />

In Weyuker <strong>and</strong> Ostr<strong>and</strong>’s (1980) approach to doing domain testing, both<br />

program-dependent sources (such as the underlying code) <strong>and</strong> program-<br />

independent sources (such as the program specifications) are used. Program-<br />

dependent sources lead to path domains <strong>and</strong> program-independent sources lead to<br />

problem domains. These two domains are intersected to get the final subdomains.<br />

Since a program’s specification describes the intended behavior of the<br />

program <strong>and</strong> the implementation represents the actual behavior, Weyuker <strong>and</strong><br />

Ostr<strong>and</strong> (1980) suggested that the differences between the path <strong>and</strong> problem<br />

domains are good places to look for errors because that is where the inconsistency<br />

between the specification <strong>and</strong> the implementation lies.<br />

2.01.02 Driving Factor<br />

Are we trying to gain confidence that the program works well, or are we trying to<br />

find failures? To achieve confidence in a program, the kind of test cases selected<br />

will be different from the ones chosen to break the program. This in turn will affect<br />

how a tester forms partitions of the input domain. In this context, there are two<br />

general approaches to doing domain testing, which are explained in the following<br />

sections.<br />

2.01.02.01 Confidence-Based Approach<br />

Some researchers have described partition testing as a method of gaining<br />

confidence in the correctness of the program, rather than testing the program to<br />

specifically make it fail in as many ways as possible (Goodenough & Gerhart,<br />

1975; Howden, 1976; Howden, 1979; Howden, 1981; Howden, 1986; White &<br />

Cohen, 1980).<br />

Most testing strategies that strive for code coverage fall under this<br />

category since the main goal there is to obtain coverage <strong>and</strong> in turn gain confidence<br />

20


in the correctness of the program. Code coverage-based testing methods like the<br />

path analysis approach seem to give confidence in the program since they test all or<br />

most portions of the code. This approach will probably miss all or some of the bugs<br />

<strong>and</strong> issues that would have been revealed if the criterion for testing was to expose<br />

all risky areas of the program <strong>and</strong> make the program fail in many interesting <strong>and</strong><br />

challenging ways.<br />

2.01.02.02 Risk-Based Approach<br />

There are other researchers who have talked about strategizing domain testing<br />

effort based on risks. In other words, they described a fault-based or suspicion-<br />

based approach to forming partitions (Beizer, 1995; Collard, personal<br />

communication, July 22, 2003; Frankl et al., 1998; Gerrard & Thompson, 2002;<br />

Hamlet, 2000; Hamlet & Taylor, 1990; Kaner, 2002b; Kaner & Bach, 2003; Myers,<br />

1979; Podgurski & Yang, 1993; Whittaker & Jorgensen, 2002).<br />

Gerrard <strong>and</strong> Thompson (2002) defined risk as: “A risk threatens one or<br />

more of a project’s cardinal objectives <strong>and</strong> has an uncertain probability” (p. 14).<br />

Kaner (2002b) characterized risk as: “Possibility of suffering loss or harm<br />

(probability of an accident caused by a given hazard)” (slide 8). In other words, a<br />

statement describing a risk is an assertion about how a program or system could<br />

fail.<br />

Collard said, “I often say in classes that a list of assumptions is a list of risk<br />

factors with plans for how we are going to manage them. I also emphasize the<br />

criticality of assumptions (how much does each one matter?), which is another way<br />

of saying we need to prioritize based on risk” (personal communication, July 22,<br />

2003).<br />

Most of those who describe risk-based approaches to doing domain<br />

testing do not specifically describe forming equivalence classes or partitions based<br />

on risks, but their approach describes how risks should be identified <strong>and</strong> how test<br />

data should be selected based on identified risks. Some researchers have described<br />

how data points that represent the most risky areas in an equivalence class should<br />

21


e selected (Beizer, 1995; Collard, personal communication, July 22, 2003; Hamlet<br />

& Taylor, 1990; Kaner, 2002b; Kaner & Bach, 2004; Myers, 1979). An example is<br />

selection of test data lying on the boundaries of equivalence classes.<br />

However, Hamlet <strong>and</strong> Taylor (1990) <strong>and</strong> Kaner <strong>and</strong> Bach (2004) have not<br />

specifically described forming partitions or equivalence classes based on risks or<br />

anticipated failures. Kaner <strong>and</strong> Bach (2004) identified specific tasks involved in the<br />

risk-based domain testing approach:<br />

The risk-based approach looks like this:<br />

– Start by identifying a risk (a problem the program might have).<br />

– Progress by discovering a class (an equivalence class) of tests that could<br />

expose the problem.<br />

– Question every test c<strong>and</strong>idate<br />

• What kind of problem do you have in mind?<br />

• How will this test find that problem? (Is this in the right class?)<br />

• What power does this test have against that kind of problem?<br />

• Is there a more powerful test? A more powerful suite of tests? (Is this<br />

the best representative?)<br />

– Use the best representatives of the test classes to expose bugs. (part 5,<br />

slide 3)<br />

Hamlet <strong>and</strong> Taylor (1990) suggested development of fault-revealing<br />

subdomains. They described the partition testing method to doing domain testing as<br />

a failure-based approach. They also asserted that a good partition testing method<br />

will help create subdomains, each of which is associated with a particular failure,<br />

<strong>and</strong> that testing samples from a subdomain should enable detection of the<br />

associated failure.<br />

According to Kaner (2002b), risk-based domain testing leads to<br />

development of powerful tests <strong>and</strong> optimal prioritization, assuming that correct<br />

risks are first identified <strong>and</strong> then prioritized. The hazard with using the risk-based<br />

approach is that testers might miss certain risks because they might not think they<br />

are likely or just not be aware of them (Kaner, 2002b).<br />

22


Whittaker <strong>and</strong> Jorgensen (2002) described an attack-based approach to doing<br />

domain testing. They argued that testing any software along four (input, output,<br />

storage <strong>and</strong> computational) dimensions with the right set of attacks will, to a large<br />

extent, ensure finding the major bugs in software.<br />

2.01.03 Linear or Non-Linear<br />

Not all domains of programs are linear in nature. Kaner <strong>and</strong> Bach (2003) described<br />

linearizable <strong>and</strong> non-linearizable domains. Linearizable variables are ones whose<br />

values can be mapped onto a number line, such as a variable representing a range of<br />

numbers. On the other h<strong>and</strong>, non-linearizable variables are those whose values<br />

cannot be mapped onto a number line, such as printers (Kaner et al., 1999; Kaner &<br />

Bach, 2003).<br />

Kaner <strong>and</strong> Bach (2003) also characterized linearizable variables as variables<br />

whose values represent ordered sets <strong>and</strong> non-linearizable variables as ones whose<br />

values represent non-ordered sets. Most of the literature on domain testing refrains<br />

from w<strong>and</strong>ering into the territory of non-linear domains, but there are some who do<br />

discuss it.<br />

Jeng <strong>and</strong> Weyuker (1994) described a simplified domain testing strategy<br />

that is applicable to non-linear domains as much as it is to linear domains. Zeil et<br />

al. (1992b) depicted detection of linear errors in non-linear domains. According to<br />

both Jeng <strong>and</strong> Weyuker (1994) <strong>and</strong> Zeil et al. (1992b), it does not matter whether<br />

the domain is continuous or discrete.<br />

2.01.04 Overlapping or Disjoint Subdomains<br />

Some researchers have suggested that partitioning of input domain should result in<br />

non-overlapping or disjoint partitions since their analysis is based on a pure<br />

mathematical model of doing partitioning (Howden, 1976; Jorgensen, 2002; Myers,<br />

1979; White & Cohen, 1980). Some people talk about having disjoint or non-<br />

overlapping partitions because according to them, if two partitions (for example, A<br />

23


<strong>and</strong> B) overlap <strong>and</strong> someone were to select test data from the area that forms the<br />

intersection of the two partitions, how would one decide whether to consider the<br />

test data as belonging to partition A or to partition B, or both?<br />

Ntafos (1998) proposed that one way to resolve the problem of overlapping<br />

subdomains is to further partition the overlapping portion until one gets disjoint<br />

subdomains. Other researchers have relaxed their requirements <strong>and</strong> considered the<br />

possibility of overlapping subdomains in their analyses, observing that in practice,<br />

overlapping subdomains are very probable (Jeng & Weyuker, 1989; Kaner et al.,<br />

1999; Weyuker & Jeng, 1991).<br />

2.01.05 Size of Subdomains – Equally Sized or Unequally Sized?<br />

Most partition testing discussions in the literature do not necessitate forming<br />

equally sized domains because the size of the subdomains is an irrelevant criterion<br />

for them. However, Chan et al. (1998) <strong>and</strong> Weyuker <strong>and</strong> Jeng (1991) have asserted<br />

that forming equally sized partitions actually helps improve the effectiveness of<br />

detecting failures by partition testing over r<strong>and</strong>om testing. There is a detailed<br />

discussion about this under section 2.02.02.<br />

2.02 Selecting Representatives from Subdomains<br />

Partitioning the input domain is only half the battle. The next task is to select<br />

c<strong>and</strong>idates from each partition to represent their respective partitions. The literature<br />

outlines some visible distinctions in how the selection of representatives can be<br />

done:<br />

• R<strong>and</strong>om Selection<br />

• Proportional Partition <strong>Testing</strong><br />

• Risk-Based Selection<br />

o Boundary Value Analysis<br />

o Special Value <strong>Testing</strong><br />

o Robustness <strong>Testing</strong><br />

24


listed above.<br />

o Worst Case <strong>Testing</strong><br />

The following section contains detailed descriptions of each of the items<br />

2.02.01 R<strong>and</strong>om Selection<br />

Some researchers have taken the word “equivalence” in the equivalence class quite<br />

literally. They have considered all the elements of an equivalence class to be<br />

equivalent in all respects, so much so that they would not know how to prefer a<br />

member over any other member of an equivalence class. Hence, they have<br />

suggested r<strong>and</strong>om selection of one or more members from each equivalence class.<br />

Their theory is that the program under test will either pass (behave as expected)<br />

over all members of an equivalence class or fail (behave differently from what is<br />

expected) over all. According to them, it really does not matter which one is chosen<br />

from a partition (Howden, 1976; Ntafos, 1998; Podgurski & Yang, 1993; Weyuker<br />

& Jeng, 1991; Weyuker & Ostr<strong>and</strong>, 1980).<br />

In the literature, those who describe such a r<strong>and</strong>om process of choosing best<br />

representatives are usually the ones that do not specifically describe a risk-based<br />

approach to doing domain testing.<br />

2.02.02 Proportional Partition <strong>Testing</strong><br />

This method is a slight variation of the above-defined r<strong>and</strong>om selection method.<br />

Some researchers have portrayed proportional partition testing, a partition testing<br />

strategy in which the test data selection is r<strong>and</strong>om but the number of test cases<br />

selected from a subdomain depends on the probability of failure of inputs in the<br />

subdomain. In other words, if we were to assume that each input in a subdomain is<br />

equally likely to occur, then the number of test cases selected would depend on the<br />

size of the subdomain (Chan et al., 1997; Chan et al., 1998; Chen et al., 1999; Chen<br />

& Yu, 1994; Chen & Yu, 1996; Leung & Chen, 2000; Ntafos, 1998; Ntafos, 2001).<br />

25


There have been several discussions in the literature about the relative<br />

merits of partition testing <strong>and</strong> pure r<strong>and</strong>om testing. Pure r<strong>and</strong>om testing is not<br />

r<strong>and</strong>om selection of test cases from subdomains, but is just r<strong>and</strong>om selection of test<br />

cases from the entire input domain without forming any partitions. R<strong>and</strong>om <strong>and</strong><br />

partition testing have been found to be better than each other under certain<br />

conditions, <strong>and</strong> the two are almost equivalent under certain other conditions.<br />

Proportional partition testing has mostly been discussed as a method that<br />

evolved in order to improve partition testing <strong>and</strong> to make its effectiveness at<br />

finding failures greater than that of r<strong>and</strong>om testing. Weyuker <strong>and</strong> Jeng (1991) noted<br />

that when the original partition testing method is refined so that we form all<br />

subdomains of equal size <strong>and</strong> then select an equal number of test cases from each<br />

subdomain, pure r<strong>and</strong>om testing can never beat partition testing in terms of<br />

effectively finding failures. This is assuming that either the number of subdomains<br />

formed is very large or the number of test cases chosen from each subdomain is<br />

very large compared to the size of the subdomain itself.<br />

Chan et al. (1998) cited a modified version of the proportional partition<br />

testing method that somewhat blends the refined version of partition testing<br />

described by Weyuker <strong>and</strong> Jeng (1991) with the traditional proportional partition<br />

testing method.<br />

Chan et al. (1998) called their method the Optimally Refined Proportional<br />

Sampling (ORPS) strategy. This method involves partitioning the input domain into<br />

equally sized partitions as described by Weyuker <strong>and</strong> Jeng (1991), <strong>and</strong> then<br />

selecting one test case at r<strong>and</strong>om from each equally sized subdomain.<br />

Chan et al. (1998) noted that the results of trying out their ORPS strategy on<br />

several programs seemed positive enough to recommend this method as a<br />

subdomain testing strategy.<br />

Ntafos (1998) has illustrated an experiment in which he compared r<strong>and</strong>om<br />

testing with proportional partition testing. When doing proportional partition<br />

testing, he considered 50 subdomains. He applied the two strategies to 50 test cases<br />

to start with, <strong>and</strong> then increased to 2,000 total test cases in increments of 50 cases.<br />

26


He referred to the number of test cases as n, the probability of detecting at least one<br />

failure in subdomain i as Pi <strong>and</strong> the number of subdomains as k. Ntafos (1998)<br />

found the following:<br />

The experiment was repeated 1,000 times using r<strong>and</strong>om values for the<br />

probabilities <strong>and</strong> the failure rates (but keeping the overall failure rate about<br />

the same). Test case allocation for proportional partition testing was done<br />

by starting with an initial allocation of ni = max(l, floor(n Pi )) <strong>and</strong><br />

allocating each of the remaining test cases so as to minimize the percentage<br />

difference between the current <strong>and</strong> the true proportional allocation. With 50<br />

test cases we have that proportional partition testing was outperformed by<br />

r<strong>and</strong>om testing in 154 out of 1,000 cases but the probability of detecting at<br />

least one error is 22.5% higher for proportional partition testing than<br />

r<strong>and</strong>om testing (averaged over the 1,000 cases). (pp. 43-44)<br />

With 2,000 test cases, proportional partition testing is outperformed in only<br />

35 cases but the two strategies perform equally well in 581 cases. The<br />

probability of detecting at least one error is now only 0.06% higher for<br />

proportional partition testing. The variation of the various values with n is<br />

mostly the expected one; note that the number of cases in which r<strong>and</strong>om<br />

testing outperforms proportional partition testing tends to decrease but the<br />

decrease is not monotonic. It is also somewhat surprising that even with<br />

2,000 test cases r<strong>and</strong>om testing still outperforms proportional partition<br />

testing in a significant number of cases. (p. 44)<br />

Ntafos (1998) repeated his experiment with 100 subdomains. This time, he<br />

started with 100 test cases <strong>and</strong> increased to a total of 4,000 test cases in increments<br />

of 100 cases. “The results are similar; even with 4,000 test cases, there is still one<br />

case when r<strong>and</strong>om outperforms proportional partition testing while the difference<br />

in performance is only 0.009%” (p. 44).<br />

Ntafos (1998) concluded that if it requires at least one test case selected<br />

from each subdomain <strong>and</strong> thous<strong>and</strong>s of test cases overall to prove that proportional<br />

27


partition testing beats r<strong>and</strong>om testing by an insignificant amount, then the<br />

effectiveness of proportional partition testing when compared with r<strong>and</strong>om testing<br />

is questionable not only in terms of cost (overhead of generation of thous<strong>and</strong>s of<br />

test cases) but also in terms of how effective it is in detecting failures.<br />

Ntafos (1998) also pointed out that partition testing strategies that rely on<br />

r<strong>and</strong>om selection of representatives from subdomains that are considered<br />

homogenous are ineffective in finding certain errors when compared with testing<br />

strategies that involve knowledge-based selection of test cases. These would<br />

include boundary values in domain testing, selection of test cases based on<br />

anticipated failures or risk-prone areas in case of risk-based approach <strong>and</strong> selection<br />

of test cases based on important features or functions of a software. He further<br />

argued that forming perfectly homogeneous subdomains has been practically<br />

impossible, so r<strong>and</strong>om selection of test cases from so-called homogeneous<br />

subdomains might not be a great idea after all.<br />

2.02.03 Risk-Based Selection<br />

Here we select test cases based on risk. Section 2.01.02.02 discussed how risk-<br />

based testing strategies determine risks <strong>and</strong> select test cases based on these risks.<br />

One of the most familiar risk-based test case selection strategies is called boundary<br />

values analysis. Jorgensen (2002) also identified certain other risk-based test<br />

selection strategies, such as special value testing <strong>and</strong> worst case testing.<br />

2.02.03.01 Boundary Value Analysis<br />

“Experience shows that test cases that explore boundary conditions have a higher<br />

payoff than test cases that do not. Boundary conditions are those situations directly<br />

on, above, <strong>and</strong> beneath the edges of input equivalence classes <strong>and</strong> output<br />

equivalence classes” (Myers, 1979, p. 50).<br />

“A boundary describes a change-point for a program. The program is<br />

supposed to work one way for anything on one side of the boundary. It does<br />

something different for anything on the other side” (Kaner et al., 1999, p. 399).<br />

28


Hutcheson (2003) described boundary value analysis as one of the most<br />

important testing techniques. “Boundary value analysis is a test data selection<br />

technique in which values are chosen to lie along data extremes. Boundary values<br />

include maximum, minimum, just inside <strong>and</strong> outside boundaries, typical values,<br />

<strong>and</strong> error values” (p. 316).<br />

Those who practice boundary value analysis believe that areas on the<br />

boundary <strong>and</strong> around it are risky areas. This, in fact, is a risk-based strategy.<br />

According to Kaner et al. (2002), in boundary testing the values of an equivalence<br />

class are mapped onto a number line <strong>and</strong> the boundary values, which are the<br />

extreme endpoints of the mapping <strong>and</strong> the values just beyond the boundaries, are<br />

chosen as the best representatives of that equivalence class. “A best representative<br />

of an equivalence class is a value that is at least as likely as any other value in the<br />

class to expose an error in the software” (p. 37).<br />

Kaner et al. (1999) depicted different kinds of boundaries, some of which<br />

are described below.<br />

• Numeric boundaries: lower <strong>and</strong> upper boundaries defined by a range of<br />

values or a single boundary defined by equality.<br />

• Boundaries on numerosity: boundaries defined by the length (or ranges<br />

of length) of the elements or the number of constituent characters in the<br />

elements.<br />

• Boundaries in loops: minimum <strong>and</strong> maximum number of times a loop<br />

can execute will determine the lower <strong>and</strong> upper boundaries,<br />

respectively, for the loop iterations.<br />

• Boundaries within data structures: boundaries defined by the lower <strong>and</strong><br />

upper bounds of structures that store data.<br />

• Boundaries in space: boundaries defined by the bounds of objects in<br />

two-dimensional or three-dimensional space.<br />

• Boundaries in time: boundaries defined by time-determined tasks.<br />

29


• Hardware-related boundaries: boundaries defined by the upper <strong>and</strong><br />

lower bounds of hardware needs <strong>and</strong> requirements.<br />

According to Hutcheson (2003), boundary value analysis is based on the<br />

belief that if a system works correctly for the boundary values, it will also work<br />

correctly for all the values within the range. This makes boundary values the most<br />

important test cases.<br />

Hutcheson (2003) explained that applying boundary value analysis to a<br />

month variable will yield the following six test cases: {0, 1, 2, 11, 12, 13}. The test<br />

cases or data points 1 <strong>and</strong> 12 are minimum <strong>and</strong> maximum values, respectively, that<br />

a month variable can take. Test cases 0 <strong>and</strong> 2 are just outside <strong>and</strong> just inside the<br />

boundary defined by test case 1, respectively. Similarly, test cases 11 <strong>and</strong> 13 are<br />

just inside <strong>and</strong> just outside the boundary defined by test case 12, respectively.<br />

Hutcheson (2003) further noted that test cases 2 <strong>and</strong> 11 seem redundant, as<br />

both of these serve as data points from the region within the two endpoints. The<br />

researcher therefore suggested replacing the two test cases 2 <strong>and</strong> 11 with mid-point<br />

data value 6, which makes {0, 1, 6, 12, 13} the final set of test cases due to<br />

boundary value analysis.<br />

Some other researchers have not recommended using any values other than<br />

those on the boundaries <strong>and</strong> ones that are just beyond the boundaries, since the<br />

others would simply be redundant. According to them, in the aforementioned<br />

example the test case 6 would also be redundant (Kaner et al., 2002; Kaner et al.,<br />

1999; Kaner & Bach, 2003; Myers, 1979).<br />

Jorgensen (2002) pointed out one outst<strong>and</strong>ing disadvantage of boundary<br />

value analysis. This analysis works well only when there are independent variables<br />

that belong to domains with well-defined boundaries.<br />

Jorgensen (2002) gave an example of a function that evaluates the next date<br />

of the current date. Just applying boundary value analysis to the date variable of<br />

this function will miss errors corresponding to that of a leap year. Also, boundary<br />

value analysis cannot be applied to non-linearizable discrete variables.<br />

30


2.02.03.02 Special Value <strong>Testing</strong><br />

Jorgensen (2002) described this strategy as a widely practiced form of functional<br />

testing. According to him, in this strategy a tester tests the program or software<br />

based on their knowledge of the problem domain. Testers who have tested similar<br />

software before or are familiar with its domain of functionality have their own lists<br />

of encountered issues <strong>and</strong> risky areas for such software <strong>and</strong> the corresponding<br />

problem domain. Such testers know where the most risk-prone areas in the software<br />

are. Based on their knowledge <strong>and</strong> experience, they would then select such<br />

“special” test cases that address those risks <strong>and</strong> reveal the vulnerability of the<br />

corresponding risk-prone areas.<br />

Jorgensen (2002) noted that for the date example described in the previous<br />

section, special value testing would generate test cases that test for leap year risks<br />

that would be missed by the normal boundary value analysis technique.<br />

2.02.03.03 Robustness <strong>Testing</strong><br />

Jorgensen (2002) described robustness testing as a simple extension of boundary<br />

value analysis. He explained that the main focus here is on outputs. This kind of<br />

testing is done to determine how well the program h<strong>and</strong>les situations in which the<br />

value of the expected output exceeds the maximum tolerated or perhaps falls below<br />

the minimum required. Hence, this testing would involve test case generation that<br />

yields those values for input variables that push the expected values of the output<br />

variables to the extreme <strong>and</strong> beyond.<br />

2.02.03.04 Worst Case <strong>Testing</strong><br />

Jorgensen (2002) illustrated this as an extreme version of boundary value analysis.<br />

In this case, one would test using various combinations of test cases that were<br />

generated for individual variables using boundary value analysis. The intention<br />

here is to see what happens to the software when variables with such extreme<br />

values interact together.<br />

31


Jorgensen (2002) also asserted that this kind of testing is useful when<br />

variables are known to heavily interact with each other. However, this has similar<br />

shortcomings as with boundary value analysis when there are dependent variables<br />

involved.<br />

Beizer (1995) contended that extreme points combination testing might not<br />

be an effective test case generation technique. This is because the number of<br />

combinations increases exponentially with the number of input variables <strong>and</strong> when<br />

there are dependent variables involved, a large number of the tests that are<br />

generated might be meaningless. For example, certain combinations might be<br />

impossible due to certain dependency relationships among the input variables.<br />

2.02.04 Which Test Case Selection Method Should We Use?<br />

This thesis research has concluded that risk-based strategy is the best strategy,<br />

especially where cost <strong>and</strong> effective failure detection are concerned. R<strong>and</strong>om testing<br />

might be used as a supplement <strong>and</strong> might be valuable in high-volume automated<br />

test case execution. High-volume automated r<strong>and</strong>om testing would be inexpensive<br />

since it is automated, <strong>and</strong> having hundreds or thous<strong>and</strong>s of r<strong>and</strong>om test cases might<br />

help in finding any bugs that were not revealed by the risk-based strategy.<br />

In conclusion, risk-based selection of test cases is something that definitely<br />

needs to be done, but high-volume r<strong>and</strong>om test selection might be done in addition<br />

if time <strong>and</strong> resources permit, especially for regression testing. Kaner et al. (2002)<br />

have described regression testing as follows:<br />

Regression testing involves reuse of the same tests, so you can retest (with<br />

these) after change. There are three kinds of regression testing. You do bug<br />

fix regression after reporting a bug <strong>and</strong> hearing later on that it’s fixed. The<br />

goal is to prove that the fix is no good. The goal of old bugs regression is to<br />

prove that a change to the software has caused an old bug fix to become<br />

unfixed. Side-effect regression, also called stability regression, involves<br />

retesting of substantial parts of the product. The goal is to prove that the<br />

32


change has caused something that used to work to now be broken. ( pp. 40-<br />

41)<br />

2.03 <strong>Testing</strong> Multiple Variables in Combination<br />

While testing multiple variables together, a test case represents a combination of<br />

input values of these multiple variables. As noted in the introductory chapter, one<br />

would ideally test for all possible combinations of inputs. But this is practically<br />

impossible because even with a normal commercial program with few variables, all<br />

possible combinations can lead to combinatorial explosion. The following are some<br />

of the techniques described in the literature that involve combination testing of<br />

multiple variables with a reduced test case set:<br />

items.<br />

• Cause-effect graphs<br />

• Combinatorial testing using input-output analysis<br />

• Pairwise or orthogonal arrays testing<br />

• All pairs combination testing<br />

• Weak robust equivalence class testing<br />

The following sections include brief discussions of each of the above-listed<br />

2.03.01 Cause-Effect Graphs<br />

Bender (2001), Elmendorf (1973), Elmendorf (1974), Elmendorf (1975), Myers<br />

(1979), <strong>and</strong> Nursimulu <strong>and</strong> Probert (1995) described cause-effect graphing as a<br />

combination testing technique. To start with, using the specification of the program<br />

under test, one identifies causes, effects <strong>and</strong> constraints due to the external<br />

environment. Next, Boolean graphs are formed with causes <strong>and</strong> effects as the nodes<br />

<strong>and</strong> the links joining causes <strong>and</strong> the respective effects that represent the relationship<br />

between the causes <strong>and</strong> effects. The graph is then traced to build a decision table,<br />

which is used to produce test cases.<br />

33


According to Ostr<strong>and</strong> <strong>and</strong> Balcer (1988), the cause-effect graphing<br />

technique can get very complicated <strong>and</strong> very difficult to implement, especially<br />

when the number of causes is too large.<br />

2.03.02 Pairwise / Orthogonal Arrays <strong>Testing</strong><br />

One of the solutions to combinatorial explosion is pairwise testing. “Pairwise<br />

testing (or 2-way testing) is a specification based testing criterion, which requires<br />

that for each pair of input parameters of a system, every combination of valid<br />

values of these two parameters be covered by at least one test case” (Lei & Tai,<br />

1988, p. 1).<br />

Bolton (2004) defined an orthogonal array (OA) as: “An orthogonal array<br />

has specific properties. First, an OA is a rectangular array or table of values,<br />

presented in rows <strong>and</strong> columns, like a database or spreadsheet. In this spreadsheet,<br />

each column represents a variable or parameter” (About Orthogonal Arrays<br />

section, 2).<br />

The value of each variable is chosen from a set known as an alphabet. This<br />

alphabet doesn't have to be composed of letters—it's more abstract than<br />

that; consider the alphabet to be "available choices" or "possible values". A<br />

specific value, represented by a symbol within an alphabet is formally<br />

called a level. That said, we often use letters to represent those levels; we<br />

can use numbers, words, or any other symbol. As an example, think of<br />

levels in terms of a variable that has Low, Medium, <strong>and</strong> High settings.<br />

Represent those settings in our table using the letters A, B, <strong>and</strong> C. This<br />

gives us a three-letter, or three-level alphabet.<br />

At an intersection of each row <strong>and</strong> column, we have a cell. Each cell<br />

contains a variable set to a certain level. Thus in our table, each row<br />

represents a possible combination of variables <strong>and</strong> values… (About<br />

Orthogonal Arrays section, 3-4)<br />

34


Hence, a row in an orthogonal array would represent one possible<br />

combination of values of the existing variables <strong>and</strong> all the rows together would<br />

comprise the set of all possible combinations of values for the variables. The<br />

combinations generated due to orthogonal array strategy can quickly become<br />

overwhelming <strong>and</strong> difficult to manage, especially with today’s normal commercial<br />

programs that have hundreds of variables.<br />

Pairwise testing tends to alleviate this problem somewhat. It involves<br />

testing variables in pairs <strong>and</strong> without combining them with other variables. The<br />

pairwise strategy is helpful if the tester is trying to test for risks associated with<br />

relationships that exist among the pairs, but not otherwise (Kaner, 2002c). As<br />

pairwise testing has been described in the literature, it seems that the test cases used<br />

are actually a subset of the set of all test cases that are generated by orthogonal<br />

array testing.<br />

2.03.03 Combinatorial <strong>Testing</strong> Using Input-Output Analysis<br />

Schroeder <strong>and</strong> Korel (2000) described the input-output analysis approach to doing<br />

combinatorial testing, asserting that the credibility of pairwise testing or orthogonal<br />

arrays testing in terms of fault-detecting capability is quite doubtful since it has not<br />

been proven that the reduced data set resulting from these methods actually has a<br />

good failure-detection rate. They suggested reducing the set of all possible<br />

combinations without losing the ability to detect failures in the given program.<br />

Schroeder <strong>and</strong> Korel (2000) observed that since not every input to a<br />

program affects every possible output of the program, if one can identify the<br />

influencing subset of input values for every possible output of a program, the<br />

number of combinations of input-output for a particular output will be significantly<br />

lower compared to the set of all possible input-output combinations for that output.<br />

They drew input-output relationship diagrams that have inputs at the top <strong>and</strong><br />

outputs at the bottom <strong>and</strong> arrows going down from inputs to the corresponding<br />

outputs they affect. After doing this, for every output they listed its influencing<br />

inputs as columns of a table. Next, they filled in the rows with values of the inputs<br />

35


that lead to the corresponding output. After they had done this for each output, they<br />

used their brute-force algorithm to form a minimal set of combinations of inputs<br />

that best represent each of the outputs. The two researchers considered their method<br />

better than pairwise or orthogonal testing.<br />

2.03.04 All Pairs Combination<br />

Yet another solution to combinatorial explosion is all pairs combination. This is an<br />

extension of pairwise testing, but it yields more combinations. According to Kaner<br />

et al. (2002), “Every value of every variable is paired with every value of every<br />

other variable in at least one test case” (p. 54). If there are n number of variables in<br />

a program, then combinations generated due to the all pairs combination technique<br />

will contain n*(n-1)/2 pairs in each combination (Kaner et al., 1999).<br />

Cohen, Dalal, Parelius <strong>and</strong> Patton (1996) considered the all pairs approach<br />

to be far better than the orthogonal arrays approach. They noted that in the pairwise<br />

version of orthogonal testing, every pair of values must occur an equal number of<br />

times, which makes this combinatorial approach very difficult to implement in<br />

practice. They gave an example to prove their point. “For example, for 100<br />

parameters with two values each, the orthogonal array requires at least 101 tests,<br />

while 10 test cases are sufficient to cover all pairs” (p. 87). However, this technique<br />

is only applicable to independent variables (Kaner & Bach, 2004, part 19).<br />

2.03.05 Weak Robust Equivalence -Class <strong>Testing</strong><br />

Jorgensen (2002) cited four forms of equivalence class testing involving multiple<br />

variables:<br />

• Weak Normal Equivalence Class <strong>Testing</strong>: It is called normal because only<br />

those test cases that contain valid values for each variable in the input<br />

combination will be considered. It is called weak because not all possible<br />

36


combinations of valid equivalence classes of variables involved will be<br />

considered.<br />

• Strong Normal Equivalence Class <strong>Testing</strong>: This is called normal for the<br />

reasons stated above <strong>and</strong> it is called strong because there will be at least one<br />

test case for each combination of valid equivalence classes of input<br />

variables involved.<br />

• Weak Robust Equivalence Class <strong>Testing</strong>: This is called robust because there<br />

is at least one variable in an input combination whose value is a<br />

representative of an invalid equivalence class of that variable. This method<br />

is weak because in a given combination of input variables, only one variable<br />

has its value coming from an invalid equivalence class.<br />

• Strong Robust Equivalence Class <strong>Testing</strong>: As mentioned before, the robust<br />

part comes from consideration of invalid values. The strong part refers to<br />

the fact that a single test case has multiple variables with values coming<br />

from their invalid equivalence classes.<br />

2.03.06 When to Use What Combination Technique?<br />

According to Kaner <strong>and</strong> Bach (2004), when independent variables are involved, all<br />

pairs is perhaps the most effective combination technique to use because it<br />

generates a minimal number of combinations when compared with other<br />

combination techniques, such as orthogonal <strong>and</strong> pairwise. It also considers several<br />

pairs of multiple variables simultaneously. When dependent variables are present in<br />

a program, then the cause-effect graphing technique can be used, although this is<br />

quite a complex combination technique (part 19).<br />

Kaner <strong>and</strong> Bach (2004) also presented a method of combining dependent<br />

variables by constructing relationship tables for variables in a program <strong>and</strong><br />

37


analyzing the dependency relationships existing between them to generate only<br />

meaningful combinations (part 19).<br />

Hence, if there are both independent <strong>and</strong> dependent variables in a program,<br />

one might choose to apply the all pairs method to the independent variables <strong>and</strong><br />

then separately test the dependent variables. This is what I have done in my domain<br />

testing training. The variables are first categorized as independent or dependent.<br />

The independent variables are combined using the all pairs combination technique<br />

<strong>and</strong> then the dependent variables, if there are any, are tested separately using<br />

dependency relationship tables.<br />

38


Chapter 3: Instructional Design <strong>and</strong> Evaluation: A<br />

3.01 Definitions<br />

Literature Review<br />

Instruction: “Instruction is the intentional facilitation of learning toward identified<br />

learning goals” (Smith & Ragan, 1999, p. 2).<br />

“By instruction I mean any deliberate arrangement of events to facilitate a<br />

learner’s acquisition of some goal” (Driscoll, 2000, p. 25).<br />

“Instruction is seen as organizing <strong>and</strong> providing sets of information <strong>and</strong><br />

activities that guide, support <strong>and</strong> augment students’ internal mental processes”<br />

(Dick, L. Carey & J.O. Carey, 2001, p. 5).<br />

Learning: “Learning has occurred when students have incorporated new<br />

information into their memories that enables them to master new knowledge <strong>and</strong><br />

skills” (Dick et al., 2001, p. 5).<br />

Driscoll (2000) contended that there are certain basic assumptions made in<br />

the literature about learning. “First, they refer to learning as a persisting change in<br />

human performance or performance potential … Second, to be considered learning,<br />

a change in performance or performance potential must come about as a result of<br />

the learner’s experience <strong>and</strong> interaction with the world” (p. 11).<br />

Instructional Design: “The term instructional design refers to the systematic <strong>and</strong><br />

reflective process of translating principles of learning <strong>and</strong> instruction into plans for<br />

instructional materials, activities, information resources <strong>and</strong> evaluation” (Smith &<br />

Ragan, 1999, p. 2).<br />

39


Reiser <strong>and</strong> Dempsey’s (2002) definition of instructional design is,<br />

“Instructional design is a system of procedures for developing education <strong>and</strong><br />

training programs in a consistent <strong>and</strong> reliable fashion. Instructional design is a<br />

complex process that is creative, active, <strong>and</strong> iterative” (p. 17).<br />

Learning Theory: “A learning theory, therefore, comprises a set of constructs<br />

linking observed changes in performance with what is thought to bring about those<br />

changes” (Dick et al., 2001, p. 11).<br />

Driscoll (2000) commented about what the focus of any learning theory<br />

should be, saying, “Learning requires experience, but just what experiences are<br />

essential <strong>and</strong> how these experiences are presumed to bring about learning constitute<br />

the focus of every learning theory” (p. 11).<br />

3.02 Learning Outcomes<br />

Why do we learn? We learn to achieve some desired outcome, perhaps to attain<br />

some new skills. There are different kinds of outcomes or skills that one can<br />

achieve or aim to achieve via the process of learning. The performance of a learner<br />

indicates the kind of outcomes that have been achieved due to learning.<br />

Krathwohn, Benjamin <strong>and</strong> Masia (1956) stated almost five decades ago that<br />

all instructional objectives, <strong>and</strong> hence learning outcomes, fall under three domains:<br />

• Cognitive – tasks that require intellect, recollection of learned information,<br />

combining old ideas to synthesize new ones, etc.<br />

• Affective – deals with emotions, attitudes, etc.<br />

• Psychomotor – tasks requiring muscular movement, etc.<br />

Later in the literature, these three domains were exp<strong>and</strong>ed upon <strong>and</strong> spread<br />

out across five different skills or learning outcomes. The following five learning<br />

outcomes are described in the literature (Bloom, Hastings & Madaus, 1971; Dick &<br />

40


Carey, 1985; Dick et al., 2001; Driscoll, 2000; Gagne, Briggs & Wager, 1988;<br />

Morrison, Ross & Kemp, 2004; Reiser & Dempsey, 2002).<br />

• Intellectual skills<br />

• Cognitive strategies<br />

• Verbal information<br />

• Motor skills<br />

• Attitudes<br />

Intellectual skills, cognitive strategies <strong>and</strong> verbal information, which are<br />

discussed in sections 3.02.01 through 3.02.05, fall under the cognitive domain.<br />

Attitudes fall under the affective domain <strong>and</strong> motor skills are classified in the<br />

psychomotor domain.<br />

3.02.01 Intellectual Skills<br />

“Intellectual skills enable individuals to interact with their environment in terms of<br />

symbols or conceptualizations. Learning an intellectual skill means learning how to<br />

do something of an intellectual sort.” “Identifying the diagonal of a rectangle” is<br />

one example of a performance that indicates achievement of an intellectual skill as<br />

a learning outcome (Gagne et al., 1988, pp. 43-44).<br />

Also in the literature, the following subcategories of intellectual skill are<br />

described (Gagne, 1985; Driscoll, 2000).<br />

• Concept: This skill is the ability to combine previously possessed pieces of<br />

knowledge to learn new rules <strong>and</strong> thereby new concepts. Driscoll (2000)<br />

further depicted two different types of concepts, defined <strong>and</strong> concrete. This<br />

means that the learner can state the newly learned rule or concept <strong>and</strong> can<br />

demonstrate the essence of the concept as well.<br />

• Discriminations: This subcategory of intellectual skill is the ability to<br />

discriminate between different objects involved in the new concept or rule<br />

41


that needs to be learned. The learner should be able to discriminate between<br />

the objects in terms of certain properties, such as color, shape, size <strong>and</strong><br />

texture. Without learning to make such discriminations, a learner cannot<br />

learn new concepts or rules.<br />

• Higher-Order Rules: This is the ability to combine two or more simple<br />

rules or concepts <strong>and</strong> form complex rules or concepts. This skill comes in<br />

h<strong>and</strong>y, especially when a learner is involved in some kind of problem-<br />

solving activity.<br />

• Procedures: When rules or concepts become too long <strong>and</strong> complex, they<br />

need what is called a procedure. A learner then needs to develop the ability<br />

to state a sequence of events or actions of a procedure that describes the<br />

simple divisions of a complex rule or concept. The learner, through the<br />

learned procedure, should then be able to apply the corresponding complex<br />

concept or rule to an applicable problem or situation <strong>and</strong> should know<br />

exactly how <strong>and</strong> where to start, as well as how to arrive at the end result of<br />

the solution.<br />

Here lies the foundational idea of the procedural approach to teaching. I<br />

have used the procedural approach in the training material for domain testing. First,<br />

I present my learners with the concept of domain testing technique. Next , I describe<br />

the tasks involved in performing testing using this technique. Then I lay out the<br />

procedures for performing the individual tasks, starting from the first <strong>and</strong> going to<br />

the last in a sequential <strong>and</strong> procedural manner.<br />

This approach has its advantages <strong>and</strong> disadvantages. The disadvantages are<br />

apparent when higher-order learning is concerned, which I came to realize when<br />

my learners’ performance tests were evaluated. The advantage is that you train the<br />

learners to a common baseline <strong>and</strong> there is a lot of uniformity in what they learned<br />

42


<strong>and</strong> how they apply the knowledge. The problems encountered with the procedural<br />

style of teaching domain testing are discussed in Chapter 7.<br />

3.02.02 Cognitive Strategies<br />

Gagne et al. (1988) defined cognitive strategies, saying, “They are capabilities that<br />

govern the individual’s own learning, remembering, <strong>and</strong> thinking behavior” (p. 45).<br />

Every individual has their own internal methods of learning things. Cognitive<br />

strategies control an individual’s internal mechanisms of learning <strong>and</strong> in turn, how<br />

they learn (Gagne et al., 1988).<br />

“Using an image link to learn a foreign equivalent to an English word” is<br />

one of the examples Gagne et al. (1988) gave of a performance that demonstrates<br />

use of cognitive strategies as one of the learning outcomes (p. 44). In the context of<br />

software testing, an example of a cognitive strategy would be applying knowledge<br />

of characteristics of different types of variables to identify variables of a given<br />

program <strong>and</strong> mapping them to different variable types.<br />

According to Gagne (1985), as learners begin to achieve intellectual skills<br />

they are trying to develop internal strategies, finding ways to improve the way they<br />

learn, think <strong>and</strong> grasp knowledge <strong>and</strong> skills.<br />

3.02.03 Verbal Information<br />

“Verbal information is the kind of knowledge we are able to state. It is knowing<br />

that or declarative knowledge.” During our lifetime, we all constantly learn verbal<br />

information or knowledge (Gagne et al., 1988, p. 46).<br />

“Listing the seven major symptoms of cancer” is one of the examples<br />

Driscoll (2000) gave of a performance that demonstrates learned capability of<br />

verbal information (p. 350). In the context of software testing, an example of verbal<br />

knowledge would be being able to list the different tasks involved with doing<br />

domain testing.<br />

43


3.02.04 Motor Skills<br />

“A motor skill is one of the most obvious kinds of human capabilities. Children<br />

learn a motor skill for each printed letter they make with pencil on paper. The<br />

function of the skill, as a capability, is simply to make possible the motor<br />

performance” (Gagne et al., 1988, pp. 47-48).<br />

“Examples of motor skills include serving a tennis ball, executing a triple<br />

axle jump in ice skating, dribbling a baseball, <strong>and</strong> lifting a barbell with weights”<br />

(Driscoll, 2000, p. 356).<br />

Gagne (1985) asserted that learners are said to have learned a motor skill<br />

not just when they are able to perform a set of actions, but when they are also able<br />

to perform those actions proficiently with a sense of accuracy <strong>and</strong> smoothness. In<br />

the context of domain testing, an example of a motor skill would be use of the<br />

wrist, h<strong>and</strong> <strong>and</strong> fingers to operate the mouse <strong>and</strong> position the cursor on the<br />

computer screen to type characters, construct equivalence class <strong>and</strong> all pairs tables,<br />

etc.<br />

3.02.05 Attitudes<br />

What we do, how we do what we do, <strong>and</strong> why we do what we do are determined<br />

<strong>and</strong> influenced by our attitude. “All of us possess attitudes of many sorts toward<br />

various things, persons, <strong>and</strong> situations. The effect of an attitude is to amplify an<br />

individual’s positive or negative reaction toward some person, thing, or situation”<br />

(Gagne et al., 1988, p. 48).<br />

Determining learners’ attitudes is important when trying to evaluate an<br />

instructional design <strong>and</strong> the corresponding instructional material, since attitudes are<br />

influential to the way learners learn <strong>and</strong> how they perform. Gagne et al. (1988) said<br />

that since it is obvious that observing attitudes of each <strong>and</strong> every learner in a<br />

classroom is extremely time consuming, an alternative to observation is having the<br />

learners fill out anonymous questionnaires or surveys.<br />

44


Keeping the questionnaires anonymous helps the learners freely express<br />

themselves. This might also help to determine if a learner’s poor performance was<br />

due to their own attitude <strong>and</strong> effort or something lacking in the instruction.<br />

However, it would be very difficult to analyze the responses since anonymity does<br />

not guarantee that the responses will be accurate. Also, if one learner’s response<br />

was very negative <strong>and</strong> one learner failed the class, there is really no way to prove<br />

that these two learners are one <strong>and</strong> the same. It is quite possible that a student who<br />

aced the test might not have really enjoyed the class, or one who enjoyed the class<br />

actually did fail.<br />

In general, questionnaires help to measure learners’ overall attitudes<br />

towards the instruction <strong>and</strong> find out on an average what the learners’ opinions<br />

about the instruction are. It is also helpful to see if the overall responses are<br />

synchronized with the overall performance, or if there is just something<br />

outst<strong>and</strong>ingly different about the attitudes when compared with the performance.<br />

However, questionnaires might not always be useful for deducing specific<br />

correlations between attitude <strong>and</strong> performance of individual learners.<br />

3.02.06 Taxonomy of Learning Levels<br />

The taxonomy of learning levels proposed by Benjamin Bloom, Gagne’s<br />

contemporary, falls within the cognitive domain of learning outcome--one of the<br />

three learning levels described by Gagne (Bloom et al., 1971; Driscoll, 2000).<br />

The following is a brief description of the taxonomy of learning levels,<br />

popularly known as Bloom’s Taxonomy (Anderson et al., 2001; Bloom et al., 1971;<br />

Driscoll, 2000; Learning Skills Program, 2003; Krathwohn et al., 1956; Reiser &<br />

Dempsey, 2002).<br />

• Knowledge: This is the ability to recall knowledge <strong>and</strong> information<br />

presented during an instruction. Being able to define domain testing-related<br />

terms such as equivalence class analysis, boundary value analysis <strong>and</strong> all<br />

45


pairs combination is an example of this ability. This is not an intellectual<br />

ability. The next five learning levels require intellectual skills.<br />

• Comprehension: This is the ability to underst<strong>and</strong> <strong>and</strong> grasp the<br />

instructional material. The ability to underst<strong>and</strong> what is meant by boundary<br />

values of a variable is an example of this learning level.<br />

• Application: This is the ability to use the knowledge <strong>and</strong> skills learned<br />

during the instruction by putting it to practice in real scenarios or situations.<br />

Being able to identify variables of a real program <strong>and</strong> apply equivalence<br />

class analysis to the variables to come up with equivalence classes for the<br />

variable is an example of this sort of learning level.<br />

• Analysis: This is the ability to see patterns, correlate different information<br />

<strong>and</strong> identify components of a problem. Being able to realize when just<br />

applying boundary value analysis is a good idea <strong>and</strong> when finding<br />

additional test cases based on special value testing is a better idea is an<br />

example of this kind of ability.<br />

• Synthesis: This is the ability to use different pieces of information <strong>and</strong> put<br />

them together to draw inferences <strong>and</strong> possibly create new knowledge <strong>and</strong><br />

concepts. Being able to put all different concepts in domain testing together<br />

<strong>and</strong> correctly apply them to any given program or software is an example of<br />

this ability.<br />

• Evaluation: This is the ability to make judgments about the knowledge<br />

acquired <strong>and</strong> concepts learned through an instruction. This is also the ability<br />

to compare the learned concepts with other similar concepts <strong>and</strong> make<br />

informed decisions about their value, perhaps even being able to determine<br />

to what extent the instructional material addresses the higher-level<br />

46


objectives of the instruction. Being able to evaluate the effectiveness of the<br />

domain testing method relative to other testing techniques or being able to<br />

judge when one method is more applicable than others to a situation is an<br />

example of the highest level in Bloom’s taxonomy.<br />

3.03 Instructional Design<br />

According to Gagne et al. (1988), “The purpose of instruction, however it may be<br />

done, is to provide support to the processes of learning” (p. 178). There are 10<br />

stages of instructional design discussed in the literature, <strong>and</strong> they are outlined in the<br />

subsequent sections (Dick & Carey, 1985; Dick et al., 2001; Gagne et al., 1988;<br />

Morrison et al., 2004; Smith & Ragan, 1999).<br />

3.03.01 Identify Instructional Goals<br />

What exactly do you want the learners to achieve? The instructor has to determine<br />

what the need for designing the instruction really is <strong>and</strong> what performance is<br />

expected out of the learners after undertaking the instruction. These desired<br />

expectations can be identified as instructional goals. “A goal may be defined as a<br />

desirable state of affairs” (Gagne et al., 1988, p. 21).<br />

According to Gagne et al. (1988), this can be done by studying the goals,<br />

comparing them with the current scenario <strong>and</strong> determining what is missing in the<br />

current scenario. This will give direction to the design of instruction. In my case, I<br />

realized that the existing training materials on domain testing were not thorough<br />

enough <strong>and</strong> there weren’t enough assessment items in the form of exercise<br />

questions to train learners for every task involved with doing domain testing. This<br />

missing piece was my motivation in developing the training material the way I did.<br />

3.03.02 Conduct Instructional Analysis/Task Analysis<br />

What tasks need to be performed to achieve the instructional goals <strong>and</strong> what skills<br />

are required to perform these tasks? The purpose of this stage is to do skill analysis<br />

47


in order to find out what skills are required to achieve each of the goals defined in<br />

the first stage. But first <strong>and</strong> foremost, task analysis needs to be conducted in order<br />

to find out the steps or tasks required to achieve each of the goals. Then the<br />

associated skills corresponding to each task or step are determined (Dick et al.,<br />

2001; Gagne et al., 1988; Jonassen, Tessmer & Hannum, 1999). “Task analysis for<br />

instructional design is a process of analyzing <strong>and</strong> articulating the kind of learning<br />

that you expect the learners to know how to perform” (Jonassen et al., 1999, p. 3).<br />

According to Gagne et al. (1988), learning task analysis is carried out if the<br />

skills involved are of intellectual nature. “The purpose of a learning task analysis is<br />

to reveal the objectives that are enabling <strong>and</strong> for which teaching sequence decisions<br />

need to be made” (p. 24).<br />

In my case, I did a detailed task analysis of the domain testing technique,<br />

starting with the higher-level tasks such as identifying variables <strong>and</strong> conducting<br />

equivalence class analysis, further breaking down each individual task into<br />

subtasks. Once the tasks were identified, the corresponding skills were analyzed.<br />

3.03.03 Identify Entry Behaviors <strong>and</strong> Learner Characteristics<br />

What are the prerequisite skills? Gagne et al. (1988) stated that the purpose of this<br />

stage is to determine what skills <strong>and</strong> characteristics the learners should have. This<br />

step is important since the instructional designer needs to identify for whom the<br />

instruction would be appropriate <strong>and</strong> for whom it would be inappropriate.<br />

Dick et al. (2001) described the entry behavior test which needs to be<br />

administered to determine whether or not the learners possess the required<br />

prerequisites. This is discussed further in section 3.04.02.01. In my case, after I<br />

completed the task <strong>and</strong> skill analyses for domain testing, I realized that my<br />

prospective learners needed to have at least some basic knowledge in discrete<br />

mathematics to sufficiently underst<strong>and</strong> the concept of set theory. They also needed<br />

some experience in programming, <strong>and</strong> having taken at least two programming<br />

classes was deemed sufficient. I determined that learners should not have taken any<br />

48


software testing courses before, since that would influence their performance in my<br />

training.<br />

3.03.04 Identify Performance Objectives<br />

What kind of performance of learners determines their success? The needs <strong>and</strong><br />

goals should be translated into performance objectives that are specific <strong>and</strong> detailed<br />

enough to show progress towards the instructional goals developed in the first<br />

stage.<br />

According to Gagne et al. (1988), there are several reasons why writing<br />

performance objectives could be very useful. One of the goals of developing<br />

performance objectives is to cater to communication with people at all levels.<br />

Having these objectives also helps in the development of instructional material. Yet<br />

another reason for having detailed performance objectives is that they enable<br />

measurement of student performance against the objectives. Appendix P contains<br />

the basic <strong>and</strong> higher-order instructional objectives that were identified for my<br />

training.<br />

3.03.05 Develop Criterion-Referenced Test Items<br />

How do we know if the learners have actually learned? Tests are a means to assess<br />

the effectiveness of the instructional design. Various kinds of tests are described in<br />

the literature, such as entry behavior tests, pretests, posttests <strong>and</strong> practice tests.<br />

Pretests <strong>and</strong> posttests enable the instructor to measure the extent to which<br />

learners have learned <strong>and</strong> practice tests or exercises help the instructor to keep track<br />

of each learner’s progress <strong>and</strong> provide corrective feedback from time to time. I had<br />

one pretest <strong>and</strong> two posttests, as well as exercise questions to test each instructional<br />

objective. More of this is discussed in section 3.04.02.01.<br />

49


3.03.06 Design Instructional Strategy<br />

What is the instructor’s plan of action to enable the learners to meet the<br />

objectives? Gagne et al. (1988) defined instructional strategy, saying, “By<br />

instructional strategy we mean a plan for assisting the learners with their study<br />

efforts for each performance objective” (p. 27). In order to support the process of<br />

learning, an external support structure which consists of events of instruction needs<br />

to be designed.<br />

According to Gagne et al. (1988), “The events of instruction are designed to<br />

make it possible for learners to proceed from ‘where they are’ to the achievement<br />

of the capability identified as the target objective” (p. 181).<br />

Gagne et al. (1988) also stated that the purpose of any teaching should be to<br />

provide nine events of instruction, which are described next. Section 4.04 describes<br />

how I have attempted to achieve these nine events of instruction in my training of<br />

domain testing.<br />

3.03.06.01 Gain Attention<br />

Learners learn the most when instructors have their attention. In order to achieve<br />

this, instructors should constantly involve stimulus changes in their lessons.<br />

Nonverbal communication is also often used to gain attention.<br />

Kaner (2004) suggested a technique to gain students’ attention <strong>and</strong><br />

motivate them. He presented the students with a problem even before presenting<br />

any related lecture material. He gave them some time to think about it before<br />

presenting the lecture <strong>and</strong> perhaps the solution. He hoped that this would trigger<br />

students’ thinking <strong>and</strong> help them come up with their solution as they follow the<br />

lecture.<br />

3.03.06.02 Informing the Learner of the Objective<br />

Informing the learner about instructional objectives is very important, as the learner<br />

needs to be made aware of what kind of performance is indicative of having<br />

50


accomplished learning. This also helps give the learner a direction towards<br />

achieving the end goals.<br />

3.03.06.03 Stimulating Recall of Prerequisite Learned Capabilities<br />

It is very important that the instructor help the learners recall prior learning by<br />

asking probing, relevant questions. This enables the learner to connect new<br />

knowledge to previous knowledge <strong>and</strong> makes learning fun <strong>and</strong> interesting. “Much<br />

of new learning (some might say all) is, after all, the combining of ideas” (Gagne et<br />

al., 1988, p. 184).<br />

3.03.06.04 Presenting the Stimulus Material<br />

Every piece of information that is required by the learner to meet the performance<br />

objectives must be communicated either verbally or in writing. The written form of<br />

communication is called instructional material.<br />

3.03.06.05 Providing Learning Guidance<br />

Guiding the learner facilitates the process of learning. Guiding a learner is not<br />

telling the answer but it is giving direction, which in turn is expected to enable the<br />

learner to combine previous concepts to learn new concepts.<br />

3.03.06.06 Eliciting the Performance<br />

Once the learners have been provided instruction <strong>and</strong> guidance, they are tested to<br />

see if they can actually perform <strong>and</strong> exhibit characteristics that indicate that they<br />

have indeed learned. In other words, these tests determine if they have met the<br />

instructional objectives. Learners can be tested through exercises <strong>and</strong> tests.<br />

3.03.06.07 Providing Feedback<br />

The learners should be given feedback <strong>and</strong> should be made aware of the degree of<br />

correctness in their performance. There may be written or verbal feedback<br />

51


provided. It is very important for learners to know what they are doing correctly<br />

<strong>and</strong> incorrectly.<br />

3.03.06.08 Assessing Performance<br />

According to Gagne et al. (1988), there are two decisions that need to be made by<br />

the instructor when assessing the learners’ performance. “The first is, does the<br />

performance in fact accurately reflect the objective? … The second judgment,<br />

which is no easier to make, is whether the performance has occurred under<br />

conditions that make the observation free of distortion” (pp. 189-190).<br />

3.03.06.09 Enhancing Retention <strong>and</strong> Transfer<br />

Gagne et al. (1988) have asserted, “Provisions made for the recall of intellectual<br />

skills often include arrangements for ‘practicing’ their retrieval” (p. 190). Transfer<br />

of learning can be effectively achieved by giving the learners a set of new tasks that<br />

are very different from the tasks (for example, practice exercises) that they were<br />

exposed to during the actual instruction. The goal of doing this is to see whether or<br />

not a learner can apply the concepts <strong>and</strong> skills learned through the instruction to a<br />

situation that is very different, but still in the applicable domain (Gagne et al.,<br />

1988).<br />

3.03.07 Develop Instructional Materials<br />

What training material will be provided to the learners? “The word materials here<br />

refers to printed or other media intended to convey events of instruction” (Gagne et<br />

al., 1988, p. 29). Depending on how original the instructional goals are,<br />

instructional materials might or might not already be available in the market. If<br />

applicable instructional material does not exist, instructors may develop their own<br />

instructional material, although it is an expensive affair. Even if the exact required<br />

materials are not available in the market, teachers could use the ones that are<br />

52


available <strong>and</strong> integrate them with their ideas to produce something that is tailored<br />

to the requirements of their instructional goals (Gagne et al., 1988).<br />

3.03.08 Conduct Formative Evaluation<br />

Does the instructional design really cater to the instructional objectives <strong>and</strong> will<br />

the instruction actually work? “The purpose of formative evaluation is to revise the<br />

instruction so as to make it as effective as possible for the largest number of<br />

students” (Gagne et al., 1988, p. 30).<br />

Dick <strong>and</strong> Carey (1985) defined the purpose of formative evaluation<br />

strategy, saying, “The major function of formative evaluation is to collect data <strong>and</strong><br />

information to improve an instructional product or activity” (p. 257).<br />

There are two main things that need to be done in formative evaluation.<br />

The first is to have a subject matter expert evaluate the instructional design. The<br />

second task is to have the instructional material tried out on some test subjects from<br />

the target population. The data hence collected can then be used to revise the<br />

instruction (Dick & Carey, 1985).<br />

According to Worthen, S<strong>and</strong>ers <strong>and</strong> Fitzpatrick (1997), formative<br />

evaluation is a technique to determine holes in an instruction, which in turn gives<br />

direction to the instructor about what improvements need to be made. Formative<br />

evaluation is an early risk-analysis strategy used to determine whether or not the<br />

instructional design is going to work.<br />

The following are three levels or stages of formative evaluation that have<br />

been discussed in the literature (Dick & Carey, 1985; Dick et al., 2001; Gagne et<br />

al., 1988; Smith & Ragan, 1999).<br />

• One-to-One Evaluation/<strong>Testing</strong>: This involves evaluating the performance of<br />

a few individual test subjects chosen from the target population. The goal of<br />

one-to-one testing is to find out if the instructional material has some obvious<br />

blunders, such as unclear questions on the test or unreasonable learning<br />

53


expectations. If there are such blunders, then corrective measures need to be<br />

taken <strong>and</strong> the instruction needs to be revised.<br />

• Small Group Evaluation/<strong>Testing</strong>: This involves trying out the instructional<br />

materials on a small group of learners. While Gagne et al. (1988) have<br />

suggested a group of six to eight test subjects, Dick <strong>and</strong> Cary (1985) argued that<br />

data collected from a group of fewer than eight subjects would not be credible<br />

enough to be declared as a correct representation of the target population. Dick<br />

<strong>and</strong> Carey (1985) also said that there are two main objectives in conducting<br />

small group evaluation. The first is to check if the blunders found in the<br />

previous stage have been effectively implemented, <strong>and</strong> the second is to find any<br />

other errors in the instructional design.<br />

• Field Trial: Now an entire classroom of learners that very closely simulates the<br />

actual classroom environment gets to try the instructional materials, which have<br />

been revised by one-to-one <strong>and</strong> small group evaluation techniques. Dick <strong>and</strong><br />

Carey (1985) have asserted that there are two things that need attention in this<br />

final stage of formative evaluation. The first is to verify that the problems found<br />

in the small group evaluation stage have been effectively resolved. The second<br />

is to determine if the instruction is truly ready for the real audience.<br />

I conducted a single one-to-one evaluation <strong>and</strong> one small group evaluation<br />

for the formative evaluation of my training material. I will collectively refer to<br />

these as pilot studies.<br />

3.03.09 Revision of Instructional Materials<br />

Have you made the necessary changes <strong>and</strong> corrections to the instruction based on<br />

the data collected during formative evaluation? According to Dick <strong>and</strong> Carey<br />

(1985), there are two basic types of revisions that will need to be made in this stage<br />

of instructional design “The first is changes that need to be made in the content or<br />

54


substance of the materials to make them more accurate or more effective as a<br />

learning tool. The second type of change is related to the procedures employed in<br />

using your materials” (p. 223).<br />

Based on the feedback I received from the pilot studies, I revised my<br />

instructional material before conducting the actual training.<br />

3.03.10 Conduct Summative Evaluation<br />

How worthy is the instruction? According to Gagne et al. (1988), once the<br />

instructional materials have been revised enough through formative evaluation,<br />

their effectiveness as a whole is tested by conducting summative evaluation.<br />

Dick <strong>and</strong> Carey (1985) defined the purpose of summative evaluation,<br />

saying, “Summative evaluation may be defined as the design, collection, <strong>and</strong><br />

interpretation of data <strong>and</strong> information for a given set of instruction for the purpose<br />

of determining the value or worth of that instruction” (p. 258).<br />

Unlike formative evaluation, the data collected during summative<br />

evaluation is not used to improve the existing version of the course or instruction,<br />

but it is intended to be used to improve potential future revisions of the course.<br />

Summative evaluation may be conducted as early as immediately after formative<br />

evaluation or as late as after several years.<br />

According to Worthen et al. (1997), summative evaluation is carried out to<br />

make decisions about the future of the instructional program <strong>and</strong> to determine<br />

whether or not it can be adopted. Chapter 7 presents the evaluation reports of the<br />

performance tests taken by my learners. These reports may be treated as a<br />

summative evaluation.<br />

3.04 Evaluation of Instruction<br />

Bloom et al. (1971) outlined their view of evaluation in education this way:<br />

1. Evaluation as a method of acquiring <strong>and</strong> processing the evidence needed<br />

to improve the student’s learning <strong>and</strong> the teaching.<br />

55


2. Evaluation as including a great variety of evidence beyond the usual<br />

paper <strong>and</strong> pencil examination.<br />

3. Evaluation as an aid in clarifying the significant goals <strong>and</strong> objectives of<br />

education <strong>and</strong> as a process for determining the extent to which students<br />

are developing in these desired ways.<br />

4. Evaluation as a system of quality control in which it may be determined<br />

at each step in the teaching-learning process whether the process is<br />

effective or not, <strong>and</strong> if not, what changes must be made to ensure its<br />

effectiveness before it is too late.<br />

5. Finally, evaluation as a tool in education practice for ascertaining<br />

whether alternative procedures are equally effective or not in achieving<br />

a set of educational ends. (pp. 7-8)<br />

Efforts in teaching software testing, especially these days, seem to have all<br />

or most of the above-mentioned objectives as their focus of evaluation. My training<br />

primarily attempted to cater to the first three objectives mentioned above.<br />

3.04.01 Different Evaluation Approaches<br />

According to Worthen et al. (1997), the following are several different evaluation<br />

approaches:<br />

1. Objectives-oriented approaches, where the focus is on specifying goals<br />

<strong>and</strong> objectives <strong>and</strong> determining the extent to which they have been<br />

attained.<br />

2. Management-oriented approaches, where the central concern is on<br />

identifying <strong>and</strong> meeting the informational needs of managerial<br />

decisionmakers.<br />

3. Consumer-oriented approaches, where the central issue is developing<br />

evaluative information on ‘products,’ broadly defined, for use by<br />

consumers in choosing among competing products, services <strong>and</strong> the<br />

like.<br />

56


4. Expertise-oriented approaches, which depend primarily on the direct<br />

application of professional expertise to judge the quality of whatever<br />

endeavor is evaluated.<br />

5. Adversary-oriented approaches, where planned opposition in points of<br />

view of different evaluators (pro <strong>and</strong> con) is the central focus of the<br />

evaluation.<br />

6. Participant-oriented approaches, where involvement of participants<br />

(stakeholders in that which is evaluated) is central in determining the<br />

values, criteria, needs, <strong>and</strong> data for the evaluation. (p. 78)<br />

I have used the objectives-oriented evaluation approach in this thesis. I<br />

found this approach to be most applicable to the kind of evaluation I wanted to do<br />

for my training, which was being able to direct the assessment items towards the<br />

predefined objectives. This evaluation method provides the perfect technique of<br />

mapping assessment items to the instructional objectives, which makes it possible<br />

to measure learners’ performance against specific instructional objectives. This is<br />

discussed more in Chapter 4, section 4.05.<br />

3.04.02 Collecting Quantitative Information for Evaluation<br />

In the literature, tests <strong>and</strong> questionnaires have been described as two of the most<br />

common methods employed to collect quantitative information that can be used to<br />

evaluate the effectiveness of an instructional program.<br />

3.04.02.01 Knowledge <strong>and</strong> Skills Assessment<br />

The following are four testing approaches described in the literature:<br />

• Norm-Referenced <strong>Testing</strong>: Worthen et al.(1997) stated that the<br />

principal aim of administering norm-referenced tests is to compare the<br />

performance of one group of learners with the performance of a<br />

different group of learners taking the same test. They contended that the<br />

57


weakness of this approach could be that the test content might have little<br />

or no validity for the curriculum being evaluated. This weakness does<br />

not exist in the criterion-based testing approach, which is discussed<br />

next.<br />

• Criterion-Referenced <strong>Testing</strong>: “In contrast with norm-referenced tests,<br />

criterion-referenced tests are developed specifically to measure<br />

performance against some absolute criterion” (Worthen et al., 1997, p.<br />

352). Such testing has an edge over norm-referenced testing strategy<br />

because the content of the tests is tailored according to a specific<br />

curriculum <strong>and</strong> consequently is relevant to that curriculum (Worthen et<br />

al., 1997). Every item on the test is also tied to some criterion, which<br />

makes this testing strategy very effective. Dick et al. (2001) declared<br />

that the terms “objectives-referenced” <strong>and</strong> “criterion-referenced” are<br />

one <strong>and</strong> the same, except that “objectives-referenced” is used to be more<br />

specific when tying the assessment or test items to the performance<br />

objectives.<br />

Dick et al. (2001) described four kinds of criterion-referenced tests:<br />

o Entry Behavior Test: These tests are administered to the<br />

learners to find out their level of expertise in the prerequisite<br />

skills. If some learners perform poorly on this test, it might<br />

mean that they would have great difficulty in succeeding in<br />

the upcoming instruction or may not succeed at all.<br />

o Pretest: The pretest is usually administered so that the score<br />

can be compared with the score on the posttest to determine<br />

how much the learners have really gotten out of the<br />

instruction. This also means that both the pretest <strong>and</strong> posttest<br />

should be equivalent in terms of difficulty level <strong>and</strong> what<br />

performance objectives they address. Dick et al. (2001) also<br />

58


specifically said, “A pretest is valuable only when it is likely<br />

that some of the learners will have partial knowledge of the<br />

content. If time for testing is a problem, it is possible to<br />

design an abbreviated pretest that assesses the terminal<br />

objective <strong>and</strong> several key subordinate objectives” (p. 147).<br />

The entry behavior test <strong>and</strong> pretest can be combined into one<br />

test if time is especially short (Dick et al., 2001).<br />

o Practice Tests: These are administered during the<br />

instruction at regular intervals, not only because it helps the<br />

learners to remain involved with the instruction, but also<br />

because they are like milestones that indicate how much the<br />

student has learned so far. This helps the instructor provide<br />

feedback to the learners from time to time <strong>and</strong> lets students<br />

underst<strong>and</strong> where they are doing well <strong>and</strong> where they need to<br />

improve.<br />

o Posttest: This is administered to determine how much the<br />

learners have learned <strong>and</strong> whether or not the performance<br />

objectives have been met. According to Dick et al. (2001),<br />

“Posttests are administered following instruction, <strong>and</strong> they<br />

are parallel to pretests, except they do not include items on<br />

entry behaviors” (p. 148). In addition, Worthen et al. (1997)<br />

contended that some instructional designs are posttest-only<br />

designs because a pretest in those circumstances might not<br />

provide useful information for assessment <strong>and</strong> evaluation.<br />

• Objectives-Referenced <strong>Testing</strong>: According to Worthen et al.(1997),<br />

unlike norm-referenced <strong>and</strong> criterion-referenced testing strategies that<br />

provide a st<strong>and</strong>ard for judging learners’ performance, objectives-<br />

referenced <strong>and</strong> domain-referenced testing strategies do not provide any<br />

such st<strong>and</strong>ards. In objectives-referenced tests, the test items are<br />

59


designed to cater to specific instructional objectives. Dick et al. (2001)<br />

have reiterated that the terms “objectives-referenced” <strong>and</strong> “criterion-<br />

referenced” are one <strong>and</strong> the same, except that “objectives-referenced” is<br />

more specific in tying the assessment items back to the stated<br />

performance objectives. Objectives-referenced <strong>and</strong> criterion-referenced<br />

testing are useful mostly for formative evaluation (Worthen et al.,<br />

1997).<br />

• <strong>Domain</strong>-Referenced <strong>Testing</strong>: In domain-referenced tests, the test items<br />

are designed to test the learners’ knowledge <strong>and</strong> mastery of a domain of<br />

content.<br />

I have used objectives-referenced testing strategy in my training, which is<br />

categorized under the objectives-oriented evaluation approach. I have used this<br />

approach for the reasons previously mentioned.<br />

3.04.02.02 Attitude/Behavior Assessment<br />

Attitudes, particularly behavioral outcomes of instruction, need to be studied<br />

because they not only show how effective the instruction has been, but they also<br />

enable the instructor to receive corrective feedback from learners in the form of<br />

criticism or suggestions that might help improve future instruction (Morrison et al.,<br />

2004). Questionnaires, surveys <strong>and</strong> interviews are some of the techniques described<br />

in the literature to assess learners’ attitudes. Attitudes as a learning outcome have<br />

been discussed previously in section 3.02.05.<br />

Questionnaires: According to Worthen et al. (1997), “Questionnaires (sometimes<br />

referred to as ‘surveys’) may be developed to measure attitudes, opinions, behavior,<br />

life circumstances (income, family size, housing conditions, etc.) or other issues”<br />

(p. 353). Jonassen et al. (1999) have stated that questionnaires, called survey<br />

questionnaires, might be used during the instructional analysis phase of<br />

60


instructional design itself. According to them, survey questionnaires might be given<br />

to a group of subjects from the target audience to determine the kind of tasks they<br />

perform, which in turn helps in performing task analysis.<br />

Morrison et al. (2004) have outlined two kinds of questions that might be included<br />

in a questionnaire:<br />

• Open-Ended – these require that learners write down answers to the questions in<br />

their own words. For example, “What did you like best about the instruction?” is an<br />

example of an open-ended question.<br />

• Closed-Ended – these require that learners choose from a given set of answers.<br />

Such questions usually have their answers mapping to a rating scale, such as “1-<br />

Excellent, 2-Very Good, 3-Good, 4-Fair <strong>and</strong> 5-Poor.”<br />

I have used questionnaires in my training sessions to measure learners’ attitudes,<br />

opinions <strong>and</strong> behaviors. I have used both open-ended <strong>and</strong> closed-ended questions in<br />

these questionnaires.<br />

Interviews: Morrison et al. (2004) have stated, “An interview allows learners to<br />

discuss their reactions toward instruction in more detail than can be done on a<br />

survey or questionnaire” (p. 301). They have further contended that it is up to the<br />

instructional designer to decide, keeping in mind the comfort level of the<br />

interviewees, if group interviews or individual interviews are to be conducted.<br />

61


Chapter 4: Instructional Design <strong>and</strong> Evaluation<br />

Strategy for <strong>Domain</strong> <strong>Testing</strong> Training<br />

4.01 Purpose of Developing the Instructional Material<br />

As mentioned before, the central idea of my thesis work is to develop <strong>and</strong> validate<br />

instructional materials that train people well in domain testing.<br />

4.02 <strong>Domain</strong> <strong>Testing</strong> Approach Used in the Training<br />

As discussed in Chapter 1, I have presented a procedural black-box approach to<br />

doing domain testing in the training material I developed. Attempts have been<br />

made to add a slight flavor of risk-based testing to this procedural approach. The<br />

combination technique discussed in the training material is the all pairs<br />

combination technique. I have attempted to incorporate Gagne’s nine conditions of<br />

learning in the instructional design <strong>and</strong> Bloom’s taxonomy in the design of<br />

evaluation material, which includes exercises <strong>and</strong> tests.<br />

4.03 Overview of the Instructional Materials<br />

The instructional material collectively contains:<br />

1. Reference Materials:<br />

• Appendix A: Reference Material #1 for <strong>Domain</strong> <strong>Testing</strong> Training<br />

• Appendix B: Reference Material #2 for <strong>Domain</strong> <strong>Testing</strong> Training<br />

• Appendix C: Reference Material #3 for <strong>Domain</strong> <strong>Testing</strong> Training<br />

• Appendix D: Heuristics for Equivalence Class Analysis<br />

• Appendix E: Guidelines for All Pairs Combination<br />

2. Lecture Slides:<br />

• Appendix F: Day 1 Lecture<br />

62


• Appendix G: Day 2 Lecture<br />

• Appendix H: Day 3 Lecture<br />

• Appendix I: Day 4 Lecture<br />

3. Exercises:<br />

4. Tests:<br />

• Appendix J: Day 2 Exercises<br />

• Appendix K: Day 3 Exercises<br />

• Appendix L: Day 4 Exercises<br />

• Appendix M: Paper-Based Tests (Tests A <strong>and</strong> B)<br />

• Appendix N: Performance Test<br />

5. Questionnaires:<br />

• Appendix O: Questionnaires<br />

4.04 Instructional Strategy<br />

The instruction was designed based on Gagne’s conditions of learning.<br />

Specifically, the instruction was designed to meet Gagne’s nine events of<br />

instruction.<br />

1. Gain Attention<br />

• I have tried to achieve this through motivational introduction on the<br />

first day of the training with the help of a simple example showing<br />

how even a simple program can make testing seem so impossible. I<br />

then introduce domain testing as a software testing technique which<br />

helps alleviate the impossibility of complete testing.<br />

• I also utilize nonverbal communication such as voice modulation, in<br />

which I vary the tone <strong>and</strong> pitch of my voice. This not only wakes up<br />

63


sleeping minds <strong>and</strong> makes them alert, but it also helps emphasize a<br />

sentence or concept.<br />

• Before introducing any new topic during the remaining training, I<br />

present a scenario that highlights the importance of the topic.<br />

2. Identify Objectives<br />

• During the introductory lecture on the first training day, I give the<br />

learners a brief overview of the overall instructional <strong>and</strong><br />

performance objectives so they are aware of what performance is<br />

expected of them.<br />

• Before the start of every new topic, I give a brief introduction on<br />

what is coming next , including objectives.<br />

3. Recall Prior Learning<br />

• The examples <strong>and</strong> exercises have been presented in the order of their<br />

complexity.<br />

• Every new example <strong>and</strong> exercise requires the knowledge <strong>and</strong> skills<br />

acquired in the previous examples <strong>and</strong> exercises.<br />

• Before starting with a new example, I help the students recall what<br />

they have learned so far <strong>and</strong> how it extends to what they are going to<br />

learn next.<br />

4. Present Stimulus<br />

This is achieved through:<br />

• Lecture slides<br />

• Reference materials<br />

5. Guide Learning<br />

This is achieved through:<br />

64


• Reference materials<br />

• Linking examples to real world problems<br />

• Examples presented in the order of complexity<br />

• Examples teaching how to extract information from problem<br />

description <strong>and</strong> translate that to symbolic information<br />

• Examples organized so that learners get to see patterns from<br />

previous examples <strong>and</strong> generalize them to apply to new situations,<br />

examples <strong>and</strong> exercises. Whether or not the learners actually see<br />

patterns <strong>and</strong> generalize them to apply to new situations has been<br />

assessed with the help of corresponding exercises.<br />

• After every set of examples, the learners get to solve similar<br />

exercises that help reinforce the concept that is being taught.<br />

6. Elicit Performance<br />

This is achieved through:<br />

• Exercises<br />

• Tests<br />

Learners get to take three tests: a paper-based pretest, a paper-based posttest<br />

<strong>and</strong> a computer-based posttest. The paper-based tests are achievement tests,<br />

whereas the final posttest is the performance test. An extra posttest was<br />

administered for the sake of extra validation of the instructional materials.<br />

Learners get to solve both paper-based <strong>and</strong> computer-based exercises during<br />

the training sessions. Computer-based tests <strong>and</strong> exercises involve actual<br />

applications or programs on the computer.<br />

7. Provide Feedback<br />

• Feedback is given after every exercise session.<br />

65


• During each exercise session, I go around the class from learner to<br />

learner to see their progress <strong>and</strong> point out what they are doing<br />

correctly <strong>and</strong> where they can improve. If time permits, the learners<br />

are required to take corrective action immediately by redoing the<br />

exercise question that they previously did incorrectly or<br />

incompletely.<br />

• An answer key to the exercise questions is also shown <strong>and</strong> is<br />

provided for future reference.<br />

8. Assess Performance<br />

This is done with the help of:<br />

• Exercises<br />

• Tests (pre <strong>and</strong> post)<br />

• Answer key<br />

• Grading st<strong>and</strong>ards<br />

9. Enhance Retention/Transfer<br />

• For every new piece of information presented in the examples,<br />

learners get to solve exercises that are on various levels of<br />

difficulties according to Bloom’s taxonomy. Those levels are:<br />

i. Knowledge<br />

ii. Comprehension<br />

iii. Application<br />

iv. Analysis<br />

v. Synthesis<br />

vi. Evaluation<br />

• Learners get to test real computer applications.<br />

66


Every exercise question <strong>and</strong> every question on each of the tests has been<br />

assigned a difficulty level according to Bloom’s taxonomy. (See Appendix Q <strong>and</strong><br />

Appendix R.)<br />

4.05 Evaluation Strategy<br />

I have used objectives-oriented evaluation strategy. According to Worthen et al.<br />

(1997), the purpose of evaluation in objectives-oriented evaluation strategy is<br />

determining the extent to which the instructional objectives have been met.<br />

4.05.01 Evaluation Materials<br />

The following materials have been used for evaluation purposes:<br />

• Exercises<br />

• Tests<br />

o Pretest – paper-based test (A or B)<br />

o Posttests<br />

� Paper-Based Test – equivalent to the pretest<br />

� Performance Test – testing “real world”<br />

application<br />

There are basically two paper-based tests, Test A <strong>and</strong> Test B. Both of them<br />

have an identical number of questions that are equivalent in terms of what<br />

instructional goals they test for. However, the scenario described in the<br />

corresponding questions is slightly different. In addition, there is a performance<br />

test. The learners were divided into two groups at r<strong>and</strong>om, <strong>and</strong> those groups were<br />

equally sized whenever possible. Again at r<strong>and</strong>om, one of the groups was assigned<br />

Test A <strong>and</strong> the other Test B on the pretest. If learners got Test A on the pretest,<br />

then they would get Test B on the posttest <strong>and</strong> vice versa.<br />

67


• Questionnaires – Learners got to fill out a questionnaire at the<br />

end of each of the five training days. (See Appendix O to find<br />

the five questionnaires.)<br />

4.05.02 Mapping Assessment Items to Instructional Objectives<br />

Every exercise question <strong>and</strong> every question on each of the tests has been mapped to<br />

one or more instructional objectives. This is in keeping with the spirit of objectives-<br />

oriented evaluation strategy. The matrices illustrating these mappings are located in<br />

Appendix R. These matrices, as previously mentioned, also have a difficulty level<br />

corresponding to Bloom’s taxonomy assigned to each exercise <strong>and</strong> test question.<br />

(See Appendix Q.)<br />

68


Chapter 5: Experiment Design<br />

5.01 Overview of the Experiment<br />

After designing <strong>and</strong> developing training material for domain testing, I conducted<br />

two rounds of pilot studies. These were basically formative evaluations that lead to<br />

immense revision <strong>and</strong> refinement of the training material content, my instruction<br />

<strong>and</strong> the way I was organizing the training material. Once I felt the training material<br />

was polished enough to be used in the real experiment, I conducted actual training<br />

sessions using the revised training material with 23 learners.<br />

I started with 18 learners in my actual experiment. Each training period<br />

lasted for five days, starting on a Monday <strong>and</strong> ending on a Friday. The entire<br />

training period totaled 18 hours. The learners took a paper-based pretest on the first<br />

day following a brief introductory lecture on domain testing. The pretest was open<br />

book <strong>and</strong> the learners were given reference materials to consult during the test.<br />

On the second, third <strong>and</strong> fourth training days, the learners were subject to<br />

lectures that involved demonstration of examples that addressed one or more<br />

instructional objectives. They were then required to solve exercises based on what<br />

they learned in the lecture. The strategy was to alternate between examples <strong>and</strong><br />

exercises.<br />

The learners could refer to the reference materials <strong>and</strong> lecture slides to solve<br />

exercises. However, they were not allowed to take the reference materials home.<br />

This helped control the amount of time subjects actually spent on the material<br />

during the week. We didn't want the variability of some students working for<br />

several hours per night on the material while others worked only in class. We also<br />

wanted to reduce the chances of learners scheduled to attend future training<br />

sessions being exposed to the training material, which could influence those future<br />

learners’ performance.<br />

On the fifth <strong>and</strong> final training day, the learners were required to take two<br />

posttests. One was a paper-based test which was equivalent to the pretest, <strong>and</strong> the<br />

69


other was a performance test that required them to apply what they had learned to<br />

an actual computer program. As before, both the posttests were open book. The<br />

learners had access to the reference materials, lecture slides, exercises <strong>and</strong> the<br />

exercise answer key, along with their own solutions to the exercises. Learners were<br />

required to fill out questionnaires after the end of each training day.<br />

Every training day except the first day was split into two sessions. There<br />

was a morning session followed by a lunch break <strong>and</strong> the afternoon session. Lunch<br />

breaks lasted for approximately an hour. Caffeinated <strong>and</strong> carbonated drinks were<br />

also served after lunch breaks each training day <strong>and</strong> during pretests <strong>and</strong> posttests.<br />

After the completion of this experiment, it was realized that the experiment<br />

unfortunately had a blunder associated with one of the instructional objectives. This<br />

is discussed further in section 5.06. It was then decided to correct this error <strong>and</strong><br />

conduct another round of training sessions using five more learners. The first round<br />

of experiments is classified as Experiment 1 <strong>and</strong> the latter round as Experiment 2.<br />

5.02 Instructional Review Board<br />

Any research at Florida Tech involving human subjects requires approval from<br />

Florida Tech’s instructional review board (IRB). If the research meets certain<br />

criteria, which mine did, it may be exempted by the IRB. Before conducting the<br />

experiments, I submitted an application to the IRB requesting exemption from IRB<br />

review. The application was approved. (See Appendix T.)<br />

5.03 Finding Test Subjects<br />

Flyers <strong>and</strong> e-mail invitations to open e-mail forums were used to obtain test<br />

subjects. Appendix V contains the flyer that was first used to advertise the training<br />

sessions. The content of the e-mail invitations was identical to the display flyer.<br />

The prerequisites for undergoing this training were successful completion of a<br />

discrete math course <strong>and</strong> at least two programming languages courses. It was also<br />

required that the learners had never taken a software testing course before.<br />

70


This first version of the advertisement helped me get subjects for pilot<br />

studies (formative evaluation). The pilot studies were conducted for 15 hours. After<br />

the pilot studies, it was realized that 15 hours were not enough to successfully<br />

complete the training <strong>and</strong> that we were falling short by at least three hours. Thus,<br />

the training time was extended to 18 hours.<br />

The “Call for Participation” contents were revised <strong>and</strong> a new version was<br />

circulated inviting test subjects for the final experiment. The revised version is<br />

included in Appendix W. Again, both flyers <strong>and</strong> e-mails to open forums were used<br />

as media for communication.<br />

To begin with, I had planned out schedules of the training sessions in four<br />

successive weeks. When prospective c<strong>and</strong>idates responded to the advertisement, I<br />

interviewed them to determine if they had the required prerequisites. If they did<br />

satisfy the prerequisites, I explained briefly what the training sessions were <strong>and</strong><br />

what they were required to do. I then assigned the c<strong>and</strong>idates to one of the four<br />

training sessions depending on their availability.<br />

I sent out e-mail confirmations about the dates <strong>and</strong> times each c<strong>and</strong>idate<br />

was scheduled for. I also sent out e-mail reminders to c<strong>and</strong>idates five days before<br />

the Monday of their scheduled training week, specifically telling them to confirm<br />

their attendance so that in case they were unable to attend, I would have sufficient<br />

time to look for some other suitable c<strong>and</strong>idates to fill their spot.<br />

5.04 Facilities Used for the Experiment<br />

Computer-aided classrooms were used for the training sessions. Classrooms had to<br />

be booked in advance. Having computers in the classroom was very useful,<br />

especially when the students had to solve exercises <strong>and</strong> test questions on the<br />

computer. The instructor terminal was also connected to a projector that projected<br />

the computer screen image on a large screen that faced the students.<br />

71


5.05 Before the Experiment<br />

Before starting the training on the first day, the learners were informed about the<br />

rules <strong>and</strong> regulations of the experiment, what their role in the experiment was, how<br />

many hours of their time would be invested in the training <strong>and</strong> how they would be<br />

compensated. They were also given a consent form, which explained the same <strong>and</strong><br />

more. This consent form is included in Appendix U. The learners were allowed to<br />

participate in the training sessions only after they had completely read the consent<br />

form <strong>and</strong> signed it.<br />

Learners’ academic transcripts were collected on the first day before the<br />

training began. Transcripts were required as proof that they indeed met the<br />

prerequisites for attending the training. The learners were also required to fill out a<br />

tax form to be compensated for investing their time in the training.<br />

Finally, the learners were assigned secret codes in order to protect their<br />

identities. The learners used the codes on tests <strong>and</strong> exercise sheets. No data<br />

collected during the training required the learners’ real names, real student<br />

identification numbers or any other personal information.<br />

5.06 Structure of Each Training Period<br />

The following is a description of sessions on each day. This section <strong>and</strong> Appendix<br />

S describe the distribution of time with respect to the examples <strong>and</strong> exercises, as<br />

well as the order in which the examples <strong>and</strong> exercise sessions were conducted.<br />

Day 1<br />

• Introduction to domain testing (30 minutes) – see Appendix F<br />

• Paper-based pretest (150 minutes), reference materials were provided –<br />

see Appendix M <strong>and</strong> Appendices A through C for reference materials<br />

Day 2 -- See Appendix G <strong>and</strong> Appendix J<br />

• Morning session (90 minutes):<br />

� <strong>Testing</strong> range type variables along single dimension:<br />

72


o Numeric variables<br />

� Integer<br />

� Floating point<br />

• Afternoon session (90 minutes):<br />

� <strong>Testing</strong> numeric variables defined over multiple ranges<br />

� Introduction to ASCII <strong>and</strong> testing in terms of ASCII<br />

� <strong>Testing</strong> string type variables along a single dimension<br />

Day 3 -- See Appendix H <strong>and</strong> Appendix K<br />

• Morning session (120 minutes):<br />

� <strong>Testing</strong> range type variables along multiple dimensions:<br />

o Numeric variables<br />

� Integer<br />

� Floating point<br />

o String variables<br />

� <strong>Testing</strong> enumerated variables<br />

� Identifying variables <strong>and</strong> their data type of actual computer<br />

application functions<br />

• Afternoon session (120 minutes):<br />

� <strong>Testing</strong> actual computer application functions using the<br />

concepts <strong>and</strong> techniques learned in the earlier sessions<br />

Day 4 -- See Appendix I <strong>and</strong> Appendix L<br />

• Morning session (90 minutes):<br />

� Introduction to combination testing<br />

� Performing all pairs combination on simple problems<br />

� Identifying independent <strong>and</strong> dependent variables<br />

� Demonstration of all pairs combination of test cases<br />

pertaining to independent variables belonging to actual<br />

computer application functions<br />

73


� <strong>Testing</strong> the dependent variables separately by first finding<br />

their dependency relationships<br />

• Afternoon session (90 minutes):<br />

� Performing all pairs combination of test cases of actual<br />

computer application functions<br />

� Identifying independent <strong>and</strong> dependent variables of the<br />

functions<br />

� Combining independent variables using all pairs<br />

combination technique <strong>and</strong> testing dependent variables<br />

separately based on dependency relationships<br />

Day 5 -- See Appendix M <strong>and</strong> Appendix N<br />

• Morning session (150 minutes):<br />

� Paper-based posttest<br />

• Afternoon session (150 minutes):<br />

� Performance-based posttest<br />

5.07 Experimental Error<br />

After trying the training material on 18 learners, I realized that I had made an error<br />

in the instructional objective that required the learners to be able to do all pairs<br />

combination. I misinterpreted <strong>and</strong> misunderstood the method of doing all pairs<br />

combination, so obviously what was taught to the learners was incorrect. Dr. Kaner<br />

pointed out this blunder when he <strong>and</strong> other evaluators were reviewing the<br />

performance tests of the 18 learners.<br />

Having corrected my underst<strong>and</strong>ing of the all pairs combination technique, I<br />

made appropriate changes to the instructional material, reference material <strong>and</strong><br />

lecture slides involving the topic. The questions on the exercises <strong>and</strong> the tests<br />

remained the same, except that the expected answers were now according to the<br />

corrected instruction. All other things remained unchanged. Since the portion of the<br />

instructional materials altered was minor, Dr. Kaner recommended that five<br />

74


learners should be sufficient to test the corrected material. Thus, Experiment 2 was<br />

performed with five new learners having the same prerequisites as before.<br />

75


Chapter 6: Results <strong>and</strong> Their Analyses<br />

6.01 Experiment Pretest <strong>and</strong> Posttest Results<br />

This section presents the results of evaluation of the pretest <strong>and</strong> posttests (both<br />

paper-based <strong>and</strong> computer-based performance test). The results have been analyzed<br />

<strong>and</strong> interpreted.<br />

• The scores for individual questions, the final scores of all the 23 learners<br />

<strong>and</strong> the interpretation of the scores are presented in Table 6.01 to Table<br />

6.10.<br />

• The graphic representation of the comparison of the 23 learners’ final scores<br />

is presented in Chart 6.01 to Chart 6.03.<br />

• The average of pretest score, posttest score <strong>and</strong> percentage increase for the<br />

23 learners is presented in Chart 7.12.<br />

6.01.01 Paper-Based Pretest <strong>and</strong> Posttest: Results <strong>and</strong> Their<br />

Interpretation<br />

All the learners’ scores are presented in Table 6.01 to Table 6.10. Question 6,<br />

which tested all pairs combination, had an experimental error corresponding to<br />

Experiment 1. This has been discussed in section 5.06. This question, which was<br />

worth 10 points, has not been evaluated for Experiment 1. Consequently, the paper-<br />

based pretest <strong>and</strong> posttest for Experiment 1 are evaluated out of a total score of 90<br />

points <strong>and</strong> those for Experiment 2 are evaluated out of 100 points.<br />

Before we proceed to the results, let us look at the definitions of the terms<br />

“average” <strong>and</strong> “st<strong>and</strong>ard deviation.”<br />

Average: “An average is a numerical value used to describe the overall clustering<br />

of data in a set. Average is usually used to indicate an arithmetic mean. However,<br />

an average can also be a median or a mode” (Intermath Dictionary, 2004a, 1).<br />

76


St<strong>and</strong>ard Deviation: “A measure describing how close members of a data set are<br />

in relation to each other. The st<strong>and</strong>ard deviation is the square root of the variance,<br />

also known as the mean of the mean. The st<strong>and</strong>ard deviation can be found by<br />

taking the square root of the variance” (Intermath Dictionary, 2004b, 1).<br />

Question 1 (10 points):<br />

• Test A: An integer field/variable i can take values in the range –999 <strong>and</strong><br />

999, the endpoints being inclusive. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Analyze only the dimension that is explicitly specified here.<br />

• Test B: An integer field/variable i can take values in the range –1000 <strong>and</strong><br />

1000, the endpoints being exclusive. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Analyze only the dimension that is explicitly specified here.<br />

Table 6.01 analyzes <strong>and</strong> interprets learners’ scores on Question 1.<br />

77


Table 6.01: Question 1 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Student Code.<br />

Interpretation (Question 1): The average score of the students for this question<br />

was 7.4 in the pretest <strong>and</strong> 9.97 in the posttest. This means that most of the students<br />

did well on this question in the pretest itself. Almost all of the students scored<br />

above 90% in the posttest <strong>and</strong> their scores improved from pretest to posttest. The<br />

st<strong>and</strong>ard deviation of the scores was 2.85 <strong>and</strong> 0.11 in the pretest <strong>and</strong> posttest,<br />

respectively. This means that the deviation in the scores from the average was<br />

higher in the pretest than in the posttest. In fact, the deviation in the scores on the<br />

posttest was extremely minimal.<br />

Q1 (Pretest score,<br />

worth 10 points)<br />

78<br />

Q1 (Posttest, worth<br />

10 points)<br />

Experiment 1<br />

1. JL711S1 9 10<br />

2. JL711S2 10 10<br />

3. JL711S3 8 10<br />

4. JL711S4 10 10<br />

5. JL1418S1 10 10<br />

6. JL1418S2 10 10<br />

7. JL1418S3 10 10<br />

8. JL1418S4 10 10<br />

9. JL1418S5 10 10<br />

10. JL2125S1 9.5 10<br />

11. JL2125S2 2 10<br />

12. JL2125S3 5 9.75<br />

13. JL2125S4 5 9.5<br />

14. JL28A1S2 4 10<br />

15. JL28A1S3 8 10<br />

16. JL28A1S4 8 10<br />

17. JL28A1S5 10 10<br />

18. JL28A1S6 9.75 10<br />

Experiment 2<br />

19. A2529S1 5 10<br />

20. A2529S2 2 10<br />

21. A2529S3 4 10<br />

22. A2529S4 7 10<br />

23. A2529S5 4 10<br />

Average 7.40 9.97<br />

St<strong>and</strong>ard deviation 2.85 0.11


Question 2 (10 points):<br />

• Test A: A floating point field/variable f can take values only between –<br />

70.000 <strong>and</strong> 70.000, the left end being inclusive <strong>and</strong> the right end being<br />

exclusive. The precision is 3 places after the decimal point. Develop a series<br />

of tests by performing equivalence class analysis <strong>and</strong> boundary value<br />

analysis on this variable. Analyze only the dimension that is explicitly<br />

specified here.<br />

• Test B: A floating point field/variable f can take values only between –<br />

50.00 <strong>and</strong> 49.99, both endpoints being inclusive. The precision is 2 places<br />

after the decimal point. Develop a series of tests by performing equivalence<br />

class analysis <strong>and</strong> boundary value analysis on this variable. Analyze only<br />

the dimension that is explicitly specified here.<br />

Table 6.02 analyzes <strong>and</strong> interprets learners’ scores on Question 2.<br />

79


Table 6.02: Question 2 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Interpretation (Question 2): Students’ average score for this question was 6.36 in<br />

the pretest <strong>and</strong> 9.93 in the posttest. This means that on an average, the students<br />

scored well (63.6%) on this question in the pretest itself. Almost all of the students<br />

scored above 90% in the posttest <strong>and</strong> their scores improved from pretest to posttest.<br />

The st<strong>and</strong>ard deviation of the scores was 3.14 <strong>and</strong> 0.23 in the pretest <strong>and</strong> posttest,<br />

respectively. This means that the deviation in the scores from the average was<br />

higher in the pretest than in the posttest. In fact, the deviation in the scores on the<br />

posttest was minimal.<br />

Student Code.<br />

Q2 (Pretest score,<br />

worth 10 points)<br />

80<br />

Q2 (Posttest, worth<br />

10 points)<br />

Experiment 1<br />

1. JL711S1 9 10<br />

2. JL711S2 9 10<br />

3. JL711S3 6.5 9<br />

4. JL711S4 8 10<br />

5. JL1418S1 9.5 10<br />

6. JL1418S2 10 10<br />

7. JL1418S3 10 10<br />

8. JL1418S4 10 10<br />

9. JL1418S5 8 10<br />

10. JL2125S1 3 10<br />

11. JL2125S2 1.5 10<br />

12. JL2125S3 0 10<br />

13. JL2125S4 5 9.5<br />

14. JL28A1S2 3 10<br />

15. JL28A1S3 10 10<br />

16. JL28A1S4 8 10<br />

17. JL28A1S5 8 10<br />

18. JL28A1S6 7.25 10<br />

Experiment 2<br />

19. A2529S1 3 10<br />

20. A2529S2 2 10<br />

21. A2529S3 4 10<br />

22. A2529S4 7 10<br />

23. A2529S5 4.5 10<br />

Average 6.36 9.93<br />

St<strong>and</strong>ard deviation 3.14 0.23


Question 3 (10 points):<br />

• Test A: A string field/variable s can take only uppercase <strong>and</strong> lowercase<br />

letters from the English alphabet. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Analyze only the dimension that is explicitly specified here.<br />

• Test B: A string field/variable s can take digits <strong>and</strong> uppercase <strong>and</strong><br />

lowercase letters from the English alphabet. Develop a series of tests by<br />

performing equivalence class analysis <strong>and</strong> boundary value analysis on this<br />

variable. Analyze only the dimension that is explicitly specified here.<br />

Table 6.03 analyzes <strong>and</strong> interprets learners’ scores on Question 3.<br />

81


Table 6.03: Question 3 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Student Code.<br />

Q3 (Pretest score,<br />

worth 10 points)<br />

Interpretation (Question 3): Students’ average score for this question was 3.07 in<br />

the pretest <strong>and</strong> 8.96 in the posttest. This means that on an average, the students<br />

scored very poorly (30.7%) on this question in the pretest. But the average score<br />

improved significantly to 89.6% in the posttest. The st<strong>and</strong>ard deviation of the<br />

scores was 1.57 <strong>and</strong> 1.33 in the pretest <strong>and</strong> posttest, respectively. This means that<br />

the deviation in the scores from the average was minimal in the pretest <strong>and</strong> the<br />

posttest, although the scores became somewhat more uniform in the posttest.<br />

82<br />

Q3 (Posttest, worth<br />

10 points)<br />

Experiment 1<br />

1. JL711S1 4 10<br />

2. JL711S2 5 10<br />

3. JL711S3 4 5<br />

4. JL711S4 1 10<br />

5. JL1418S1 6 10<br />

6. JL1418S2 4 10<br />

7. JL1418S3 4 9<br />

8. JL1418S4 0 10<br />

9. JL1418S5 2 10<br />

10. JL2125S1 3 10<br />

11. JL2125S2 2 8<br />

12. JL2125S3 0 8<br />

13. JL2125S4 3 8<br />

14. JL28A1S2 2 7<br />

15. JL28A1S3 3 7<br />

16. JL28A1S4 3 10<br />

17. JL28A1S5 5 10<br />

18. JL28A1S6 1 9<br />

Experiment 2<br />

19. A2529S1 4 10<br />

20. A2529S2 3 9<br />

21. A2529S3 4 9<br />

22. A2529S4 3 9<br />

23. A2529S5 4.5 8<br />

Average 3.07 8.96<br />

St<strong>and</strong>ard deviation 1.57 1.33


Question 4 (10 points):<br />

• Test A: In an online airlines reservation system, there is a year combo-box<br />

field that has the following options available:<br />

o 2003<br />

o 2004<br />

o 2005<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis, if applicable, on this field.<br />

• Test B: DVD Collections, Inc. has a shopping Web site where a user can<br />

purchase DVDs. For checking out, a user needs to enter his or her credit<br />

card number <strong>and</strong> the type of the credit card, which is a combo-box field<br />

having the following options available:<br />

o American Express<br />

o VISA<br />

o MasterCard<br />

o Discover<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis, if applicable, on the “type of credit card”<br />

variable/field.<br />

Table 6.04 analyzes <strong>and</strong> interprets learners’ scores on Question 4.<br />

83


Table 6.04: Question 4 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Interpretation (Question 4): Students’ average score for this question was 3.86 in<br />

the pretest <strong>and</strong> 8.73 in the posttest. This means that on an average, the students<br />

scored very poorly (38.6%) on this question in the pretest. But the average score<br />

improved significantly to 87.3% in the posttest. The st<strong>and</strong>ard deviation of the<br />

scores was 3.29 <strong>and</strong> 2.42 in the pretest <strong>and</strong> posttest, respectively. This means that<br />

the deviation in the scores from the average was higher in the pretest than in the<br />

posttest.<br />

Student Code.<br />

Q4 (Pretest score,<br />

worth 10 points)<br />

84<br />

Q4 (Posttest, worth<br />

10 points)<br />

Experiment 1<br />

1. JL711S1 9 10<br />

2. JL711S2 7 0<br />

3. JL711S3 7 10<br />

4. JL711S4 9.25 9.25<br />

5. JL1418S1 9.25 10<br />

6. JL1418S2 4.25 4.25<br />

7. JL1418S3 4 10<br />

8. JL1418S4 0 10<br />

9. JL1418S5 0.5 10<br />

10. JL2125S1 1 9<br />

11. JL2125S2 0.5 9<br />

12. JL2125S3 1 9.5<br />

13. JL2125S4 4 9.75<br />

14. JL28A1S2 0.5 10<br />

15. JL28A1S3 9.5 9.75<br />

16. JL28A1S4 6 10<br />

17. JL28A1S5 2 10<br />

18. JL28A1S6 0 9.25<br />

Experiment 2<br />

19. A2529S1 1 7<br />

20. A2529S2 3 8<br />

21. A2529S3 3 6<br />

22. A2529S4 2 10<br />

23. A2529S5 5 10<br />

Average 3.86 8.73<br />

St<strong>and</strong>ard deviation 3.29 2.42


Question 5 (5 points):<br />

• Test A: The screenshot of the login function of the Yahoo Messenger<br />

application program is shown below. For this login function, identify its<br />

variables. For each variable, determine the data type <strong>and</strong> state whether the<br />

variables are input or output.<br />

• Test B: The screenshot of an online length or distance unit converter<br />

program is provided below. The program takes an input value for length <strong>and</strong><br />

the corresponding unit of measurement <strong>and</strong> outputs the corresponding<br />

equivalent value for the output unit of measurement chosen by the user.<br />

Identify the variables of the unit converter program, the data type of each of<br />

the variables <strong>and</strong> state whether the variables are input or output.<br />

Length or distance<br />

Input<br />

1<br />

Output<br />

0.000016<br />

inches<br />

miles (UK <strong>and</strong> US)<br />

Table 6.05 analyzes <strong>and</strong> interprets learners’ scores on Question 5.<br />

85


Table 6.05: Question 5 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Student Code.<br />

Interpretation (Question 5): Students’ average score for this question was 3.58 in<br />

the pretest <strong>and</strong> 4.84 in the posttest. This means that on an average, not only did the<br />

students score well (71.6%) on this question in the pretest itself, but the average<br />

score in the posttest also improved by 25.2%. The st<strong>and</strong>ard deviation of the scores<br />

was 1.44 <strong>and</strong> 0.63 in the pretest <strong>and</strong> posttest, respectively. This means that the<br />

deviation in the scores from the average was slightly conspicuous in the pretest but<br />

it became quite negligible in the posttest.<br />

Q5 (Pretest score,<br />

worth 5 points)<br />

86<br />

Q5 (Posttest, worth 5<br />

points)<br />

Experiment 1<br />

1. JL711S1 5 5<br />

2. JL711S2 5 4.5<br />

3. JL711S3 1 5<br />

4. JL711S4 4 5<br />

5. JL1418S1 5 4.75<br />

6. JL1418S2 5 5<br />

7. JL1418S3 2.5 5<br />

8. JL1418S4 4.5 5<br />

9. JL1418S5 3 5<br />

10. JL2125S1 5 5<br />

11. JL2125S2 5 5<br />

12. JL2125S3 3.75 5<br />

13. JL2125S4 5 5<br />

14. JL28A1S2 2 5<br />

15. JL28A1S3 2 5<br />

16. JL28A1S4 5 5<br />

17. JL28A1S5 2 5<br />

18. JL28A1S6 2 2<br />

Experiment 2<br />

19. A2529S1 4 5<br />

20. A2529S2 1 5<br />

21. A2529S3 3 5<br />

22. A2529S4 5 5<br />

23. A2529S5 2.5 5<br />

Average 3.58 4.84<br />

St<strong>and</strong>ard deviation 1.44 0.63


Question 6 (10 points):<br />

• Test A: There are five variables l, m, n, o <strong>and</strong> p in some function. The<br />

variables l, m, n <strong>and</strong> o have five test cases each <strong>and</strong> p has two test cases.<br />

How many total combinations of test cases are possible for these five<br />

variables? How many minimal combinations does all pairs combination<br />

technique yield? How many pairs will each combination have if all pairs<br />

combination technique is used? Develop a series of combination tests on<br />

these five variables by performing all pairs combination on them. Show all<br />

iterations. Give relevant comments when you backtrack <strong>and</strong> redo any<br />

ordering. Please have a separate table for each reordering.<br />

• Test B: There are four variables a, b, c <strong>and</strong> d in some function. All four<br />

variables have five test cases each. How many total combinations of test<br />

cases are possible for these four variables? How many minimal<br />

combinations does all pairs combination technique yield? How many pairs<br />

will each combination have if all pairs combination technique is used?<br />

Develop a series of combination tests on these four variables by performing<br />

all pairs combination on them. Show all iterations. Give relevant comments<br />

when you backtrack <strong>and</strong> redo any ordering. Please have a separate table for<br />

each reordering.<br />

Table 6.06 analyzes <strong>and</strong> interprets learners’ scores on Question 6.<br />

87


Table 6.06: Question 6 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Q6 (Pretest score , Q6 (Posttest, worth<br />

Student Code. worth 10 points) 10 points)<br />

Experiment 1<br />

1. JL711S1<br />

2. JL711S2<br />

3. JL711S3<br />

4. JL711S4<br />

5. JL1418S1<br />

6.<br />

7.<br />

8.<br />

9.<br />

10.<br />

11.<br />

JL1418S2<br />

JL1418S3<br />

JL1418S4<br />

JL1418S5<br />

JL2125S1<br />

JL2125S2<br />

This question has not been evaluated for<br />

Experiment 1 due to an experimental error<br />

(refer to section 5.06) corresponding to the<br />

instructional goal that is being tested in this<br />

question.<br />

12. JL2125S3<br />

13. JL2125S4<br />

14. JL28A1S2<br />

15. JL28A1S3<br />

16. JL28A1S4<br />

17. JL28A1S5<br />

18.<br />

Experiment 2<br />

JL28A1S6<br />

19. A2529S1 3 10<br />

20. A2529S2 2 10<br />

21. A2529S3 4 10<br />

22. A2529S4 1 9<br />

23. A2529S5 4.5 10<br />

Average 2.90 9.80<br />

St<strong>and</strong>ard deviation 1.43 0.45<br />

Interpretation (Question 6): Students’ average score for this question was 2.90 in<br />

the pretest <strong>and</strong> 9.80 in the posttest. This means that on an average, the students<br />

scored poorly (29%) on this question in the pretest itself. But the average score in<br />

the posttest improved significantly to 98%. The st<strong>and</strong>ard deviation of the scores<br />

was 1.43 <strong>and</strong> 0.45 in the pretest <strong>and</strong> posttest, respectively. This means that the<br />

deviation in the scores from the average was low in the pretest <strong>and</strong> it became<br />

almost negligible in the posttest.<br />

88


Question 7 (15 points):<br />

• Test A: The I-20 VISA program for international students lets a student<br />

know the status of his or her application for a new I-20 by entering his or<br />

her corresponding VISA number. The VISA number is a 16-digit numeric<br />

value with no dashes, commas or spaces in between. The minimum allowed<br />

VISA number that a student could have ever been assigned is<br />

1000009999000000 <strong>and</strong> the maximum is 9999955590999800. What<br />

variables could be involved in analysis of this group of facts? What variable<br />

do we know enough about to perform equivalence class analysis <strong>and</strong> then a<br />

boundary value analysis? Develop a series of tests by performing<br />

equivalence class <strong>and</strong> boundary value analysis on this variable.<br />

• Test B: Creative Technologies offers its employees the opportunity to<br />

attend conferences <strong>and</strong> training that helps in the enhancement of their skill<br />

set <strong>and</strong> in turn the company’s profits. The company requires that an<br />

employee use the company’s reimbursement system to report expenses. The<br />

system has an expense report function that has various fields like employee<br />

ID, meal expenses, travel expenses, training/conference registration<br />

expenses, miscellaneous expenses <strong>and</strong> total expenditure. The company<br />

reimburses the employees up to $5,000. All expense-related fields require<br />

entering of only whole numbers, which means that the user should round<br />

each expense to the nearest whole number <strong>and</strong> then enter this number in the<br />

corresponding field. What variables could be involved in analysis of this<br />

group of facts? What variable do we know enough about to perform<br />

equivalence class analysis <strong>and</strong> then a boundary value analysis? Develop a<br />

series of tests by performing equivalence class <strong>and</strong> boundary value analysis<br />

on this variable.<br />

Table 6.07 analyzes <strong>and</strong> interprets learners’ scores on Question 7.<br />

89


Table 6.07: Question 7 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Interpretation (Question 7): Students’ average score for this question was 2.22 in<br />

the pretest <strong>and</strong> 13.88 in the posttest. This means that on an average, the students<br />

scored very poorly (14.8%) on this question in the pretest. But the average score<br />

improved significantly to 92.53% in the posttest. The st<strong>and</strong>ard deviation of the<br />

scores was 1.87 <strong>and</strong> 1.98 in the pretest <strong>and</strong> posttest, respectively. This means that<br />

the deviation in the scores from the average was almost equivalent in the pretest<br />

<strong>and</strong> the posttest. The students did equally poorly in the pretest <strong>and</strong> equally well in<br />

the posttest.<br />

Student Code.<br />

Q7 (Pretest score,<br />

worth 15 points)<br />

90<br />

Q7 (Posttest, worth<br />

15 points)<br />

Experiment 1<br />

1. JL711S1 4 5.5<br />

2. JL711S2 3 14<br />

3. JL711S3 3 15<br />

4. JL711S4 0 15<br />

5. JL1418S1 0.5 14<br />

6. JL1418S2 4 15<br />

7. JL1418S3 1 15<br />

8. JL1418S4 1 14.75<br />

9. JL1418S5 2 14<br />

10. JL2125S1 1 14.5<br />

11. JL2125S2 1 13<br />

12. JL2125S3 3 14.75<br />

13. JL2125S4 5 13<br />

14. JL28A1S2 1 15<br />

15. JL28A1S3 1.5 15<br />

16. JL28A1S4 3 14.75<br />

17. JL28A1S5 0 14.5<br />

18. JL28A1S6 0 13<br />

Experiment 2<br />

19. A2529S1 5 14.75<br />

20. A2529S2 0 14.75<br />

21. A2529S3 1.5 14<br />

22. A2529S4 4 13<br />

23. A2529S5 6.5 13<br />

Average 2.22 13.88<br />

St<strong>and</strong>ard deviation 1.87 1.98


Question 8 (15 points):<br />

• Test A: Bank X has started a new savings account program that allows<br />

customers to earn interest based on their savings account balance. The<br />

interest is calculated using the following table:<br />

Balance range Interest that can be earned<br />

$5000.00


Table 6.08: Question 8 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Student Code.<br />

Q8 (Pretest score,<br />

worth 15 points)<br />

Interpretation (Question 8): Students’ average score for this question was 2.83 in<br />

the pretest <strong>and</strong> 12.51 in the posttest. This means that on an average, the students<br />

scored very poorly (18.86%) on this question in the pretest. But the average score<br />

improved significantly to 83.4% in the posttest. The st<strong>and</strong>ard deviation of the<br />

scores was 2.53 <strong>and</strong> 3.17 in the pretest <strong>and</strong> posttest, respectively. This means that<br />

the deviation in the scores from the average actually increased from the pretest to<br />

the posttest. This is because student JL711S2 scored zero on this question in both<br />

the pretest <strong>and</strong> posttest, whereas the others improved significantly in the posttest.<br />

92<br />

Q8 (Posttest, worth<br />

15 points)<br />

Experiment 1<br />

1. JL711S1 2.5 14<br />

2. JL711S2 0 0<br />

3. JL711S3 3 15<br />

4. JL711S4 2 14.75<br />

5. JL1418S1 3.5 14<br />

6. JL1418S2 4 14.5<br />

7. JL1418S3 5 10<br />

8. JL1418S4 0.5 10<br />

9. JL1418S5 0 14.75<br />

10. JL2125S1 0 14.5<br />

11. JL2125S2 0.5 14<br />

12. JL2125S3 1 14.5<br />

13. JL2125S4 5 13<br />

14. JL28A1S2 1 13<br />

15. JL28A1S3 2 12<br />

16. JL28A1S4 4 14.75<br />

17. JL28A1S5 5 11<br />

18. JL28A1S6 0 11<br />

Experiment 2<br />

19. A2529S1 7 14<br />

20. A2529S2 0 12<br />

21. A2529S3 5 12<br />

22. A2529S4 5 14<br />

23. A2529S5 9 11<br />

Average 2.83 12.51<br />

St<strong>and</strong>ard deviation 2.53 3.17


Question 9 (15 points):<br />

• Test A: ZLTech has a Web-based student records system. A student has to<br />

enter his or her Social Security number in the text field provided for it <strong>and</strong><br />

then click on the sign in button to log in <strong>and</strong> access his or her records,<br />

which include courses taken by the student so far <strong>and</strong> the corresponding<br />

grades.<br />

The Social Security number can have only 11 characters. The first<br />

three characters have to be digits, then a hyphen <strong>and</strong> then two more digits, a<br />

hyphen <strong>and</strong> finally four digits. No other characters whatsoever are allowed<br />

to be entered for the Social Security number field.<br />

What variables could be involved in analysis of this group of<br />

facts? What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis? Develop a series of tests<br />

by performing equivalence class analysis <strong>and</strong> boundary value analysis on<br />

this variable.<br />

• Test B: The U.S. Immigration <strong>and</strong> Naturalization Service has an online<br />

application that lets international students check the status of their work<br />

authorization application in the United States. Upon applying for work<br />

authorization, every student is given a ticket number, which is an 11-<br />

character value. Every ticket number consists of digits <strong>and</strong> uppercase letters,<br />

with a letter in the fourth <strong>and</strong> eighth positions. The other characters have to<br />

be strictly digits. What variables could be involved in analysis of this group<br />

of facts? What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis? Develop a series of tests<br />

by performing equivalence class <strong>and</strong> boundary value analysis on this<br />

variable.<br />

Table 6.09 analyzes <strong>and</strong> interprets learners’ scores on Question 9.<br />

93


Table 6.09: Question 9 – Paper-Based Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Student Code.<br />

Q9 (Pretest score,<br />

worth 15 points)<br />

Interpretation (Question 9): Students’ average score for this question was 1.91 in<br />

the pretest <strong>and</strong> 13.34 in the posttest. This means that on an average, the students<br />

scored very poorly (12.73%) on this question in the pretest. But the average score<br />

improved significantly to 88.93% in the posttest. The st<strong>and</strong>ard deviation of the<br />

scores was 1.35 <strong>and</strong> 1.69 in the pretest <strong>and</strong> posttest, respectively.<br />

94<br />

Q9 (Posttest, worth<br />

15 points)<br />

Experiment 1<br />

1. JL711S1 1 15<br />

2. JL711S2 0 14<br />

3. JL711S3 2.35 14.5<br />

4. JL711S4 5 15<br />

5. JL1418S1 2 14.5<br />

6. JL1418S2 2 12<br />

7. JL1418S3 3.5 14.5<br />

8. JL1418S4 0 12<br />

9. JL1418S5 2 15<br />

10. JL2125S1 1 14.75<br />

11. JL2125S2 2 7.5<br />

12. JL2125S3 2 14<br />

13. JL2125S4 4 12<br />

14. JL28A1S2 2 12<br />

15. JL28A1S3 1 12<br />

16. JL28A1S4 3 14<br />

17. JL28A1S5 0 14.5<br />

18. JL28A1S6 0 14<br />

Experiment 2<br />

19. A2529S1 1 13.5<br />

20. A2529S2 2 14<br />

21. A2529S3 2 13<br />

22. A2529S4 2 12<br />

23. A2529S5 4 13<br />

Average 1.91 13.34<br />

St<strong>and</strong>ard deviation 1.35 1.69


Table 6.10: Final Scores - Pretest <strong>and</strong> Posttest Score Comparison<br />

Student#<br />

Student<br />

Code.<br />

Pretest<br />

Final<br />

Score (out<br />

of 90 for<br />

1:18, out of<br />

100 for<br />

19:23)<br />

Posttest<br />

Final Score<br />

(out of 90<br />

for 1:18, out<br />

of 100 for<br />

19:23)<br />

Interpretation (Final Scores): Since Question 6 has not been evaluated for<br />

Experiment 1 (refer to section 5.06), the final pretest <strong>and</strong> posttest scores for<br />

Experiment 1 were computed out of 90 points <strong>and</strong> the scores for Experiment 2 were<br />

computed out of 100 points. All the scores have also been computed on a scale of<br />

95<br />

Pretest<br />

%<br />

Score<br />

Posttest<br />

% Score<br />

Percentage<br />

Increase<br />

Experiment 1<br />

1. JL711S1 43.5 79.5 48.33 88.33 40.00<br />

2. JL711S2 39 62.5 43.33 69.44 26.11<br />

3. JL711S3 34.85 83.5 38.72 92.78 54.06<br />

4. JL711S4 39.25 89 43.61 98.89 55.28<br />

5. JL1418S1 45.75 87.25 50.83 96.94 46.11<br />

6. JL1418S2 43.25 80.75 48.06 89.72 41.67<br />

7. JL1418S3 40 83.5 44.44 92.78 48.33<br />

8. JL1418S4 26 81.75 28.89 90.83 61.94<br />

9. JL1418S5 27.5 88.75 30.56 98.61 68.06<br />

10. JL2125S1 23.5 87.75 26.11 97.50 71.39<br />

11. JL2125S2 14.5 76.5 16.11 85.00 68.89<br />

12. JL2125S3 15.75 85.5 17.50 95.00 77.50<br />

13. JL2125S4 36 79.75 40.00 88.61 48.61<br />

14. JL28A1S2 15.5 82 17.22 91.11 73.89<br />

15. JL28A1S3 37 80.75 41.11 89.72 48.61<br />

16. JL28A1S4 40 88.5 44.44 98.33 53.89<br />

17. JL28A1S5 32 85 35.56 94.44 58.89<br />

18. JL28A1S6 20 78.25 22.22 86.94 64.72<br />

Experiment 2<br />

19. A2529S1 33 94.25 33 94.25 61.25<br />

20. A2529S2 15 92.75 15 92.75 77.75<br />

21. A2529S3 30.5 89 30.5 89.00 58.50<br />

22. A2529S4 36 92 36 92.00 56.00<br />

23. A2529S5 44.5 90 44.5 90.00 45.50<br />

Average 31.84 84.28 34.61 91.43 56.82<br />

St<strong>and</strong>ard<br />

deviation 10.24 6.81 11.26 6.16


100 (% scores) for the sake of uniformity <strong>and</strong> easier data analysis. On an average,<br />

the percentage increase in the scores from pretest to posttest was 56.82%, a good<br />

improvement. The st<strong>and</strong>ard deviation of the final pretest score was 11.26. It<br />

decreased to 6.16 for the posttest, which means that the students’ performance was<br />

more uniform compared to that in the pretest.<br />

Chart 6.01, Chart 6.02 <strong>and</strong> Chart 6.03 graphically represent the comparison of final<br />

paper-based pretest <strong>and</strong> posttest percentage scores, the percentage increases <strong>and</strong> the<br />

averages of the final pretest <strong>and</strong> posttest percentage scores, <strong>and</strong> the average<br />

percentage increase in the scores from pretest to posttest, respectively.<br />

96


Chart 6.01: Paper-Based Pretest <strong>and</strong> Posttest Final Percentage Score<br />

Comparison<br />

Score (out of 100)<br />

120.00<br />

100.00<br />

80.00<br />

60.00<br />

40.00<br />

20.00<br />

0.00<br />

Percentage Score Comparison<br />

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23<br />

97<br />

Student<br />

Pretest %<br />

Posttest %


Chart 6.02: Final Scores Percentage Increase<br />

Chart 6.03: Averages<br />

Score<br />

100<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

AVERAGES<br />

Pretest (out of 100) Posttest (out of 100) Percentage Increase (Max 100%)<br />

98


6.02 Performance Test Results<br />

Appendices X, Y <strong>and</strong> Z contain the performance test evaluation reports by Dr. Cem<br />

Kaner, James Bach <strong>and</strong> Pat McGee, respectively.<br />

99


6.03 Questionnaire – Confidence, Attitude <strong>and</strong> Opinion of<br />

Learners<br />

As mentioned before, the learners were required to complete questionnaires at the<br />

end of each of the five training days. The questionnaires consisted of both closed-<br />

ended <strong>and</strong> open-ended questions. Tables 6.11 through 6.15 describe questions on<br />

each questionnaire <strong>and</strong> their answers.<br />

Table 6.11: Day 1 Questionnaire Responses<br />

Questionnaire – Day 1<br />

1. How would you rate the overall clarity of today's lecture?<br />

Excellent Good Fair Poor<br />

10 13 0 0<br />

2. How would you rate the overall clarity of the pretest?<br />

Excellent Good Fair Poor<br />

2 15 5 1<br />

3. How would you rate your overall satisfaction with today's lecture?<br />

Excellent Good Fair Poor<br />

6 15 2 0<br />

4. How would you rate your overall satisfaction with the pretest?<br />

Excellent Good Fair Poor<br />

3 13 5 2<br />

5. How would you rate today's session in terms of how interesting it was?<br />

Excellent Good Fair Poor<br />

10 10 3 0<br />

6. Rate your confidence when answering the questions on the pretest.<br />

Excellent Good Fair Poor<br />

1 7 11 4<br />

7. Was enough time given to solve the pretest?<br />

Little short of Very less time<br />

More than enough Enough<br />

enough<br />

provided<br />

7 11 5 0<br />

8. Were too many or too less questions included in the pretest?<br />

Little short of<br />

Too many questions Enough<br />

enough<br />

100<br />

Very less<br />

questions


11 12 0 0<br />

9. How would you rate your competence in doing domain testing?<br />

Excellent Good Fair Poor<br />

1 7 11 4<br />

10. What was the most useful part of today’s session?<br />

General comments were that the reference materials were very helpful in solving the<br />

test. The learners also liked the fact that there was an introductory lecture before the<br />

pretest.<br />

11. What did you like best about today’s session?<br />

While some commented that the pretest was the best part of the training session, there<br />

were some others that commented that the introductory lecture was the best part.<br />

12. What was the least useful part of today’s session?<br />

Some commented that the least useful part of the day was taking the pretest. Others<br />

complained that the pretest was just too lengthy. There were a couple of learners that<br />

felt that everything was useful. One learner commented that he was just too confused to<br />

know what was useful <strong>and</strong> what was useless.<br />

13. What other information would you like to see added to today’s lecture <strong>and</strong> test?<br />

Some commented that they would like to see more examples added to the reference<br />

materials, while others said that a longer introductory lecture would have been nice.<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

Some commented that it would be nice to have demonstrations of some more examples<br />

during the lecture, which might help during the pretest.<br />

15. Would you like to suggest specific improvements to the pretest?<br />

Generally, the comments were that the number of questions on the test should be<br />

reduced.<br />

101


Table 6.12: Day 2 Questionnaire Responses<br />

Questionnaire – Day 2<br />

1. How would you rate the overall clarity of today's lecture?<br />

Excellent Good Fair Poor<br />

14 9 0 0<br />

2. How would you rate the overall clarity of today's exercises?<br />

Excellent Good Fair Poor<br />

8 15 0 0<br />

3. How would you rate your overall satisfaction with today's lecture?<br />

Excellent Good Fair Poor<br />

11 12 0 0<br />

4. How would you rate your overall satisfaction with today's exercises?<br />

Excellent Good Fair Poor<br />

7 15 1 0<br />

5. How would you rate today's session in terms of how interesting it was?<br />

Excellent Good Fair Poor<br />

9 12 2 0<br />

6. Rate your confidence when solving the exercises.<br />

Excellent Good Fair Poor<br />

5 18 0 0<br />

7. Was enough feedback provided for the exercises?<br />

Little short of<br />

More than enough Enough<br />

enough Very less<br />

6 16 1 0<br />

8. Was enough time given to solve the exercises?<br />

Little short of Very less time<br />

More than enough Enough<br />

enough<br />

provided<br />

3 16 4 0<br />

9. What was the most useful part of today’s session?<br />

While some commented that they best liked the exercises <strong>and</strong> examples, others<br />

specifically mentioned that they found doing equivalence class analysis the best part of<br />

the training session. Some also mentioned that they enjoyed learning to do domain<br />

testing on non-numbers. A few commented that they found the lecture very informative.<br />

10. What did you like best about today’s session?<br />

While some commented that the exercises <strong>and</strong> examples were the best part, some others<br />

commented that they liked the fact that examples <strong>and</strong> exercises were alternated. Some<br />

102


commented that they liked the fact that examples <strong>and</strong> exercises were alternated. Some<br />

also commented that they loved the step-by-step approach to doing equivalence class<br />

analysis.<br />

11. What was the least useful part of today’s session?<br />

While most of them did not answer this question, some commented that everything was<br />

useful. There were two that thought that the equivalence class analysis of non-numbers<br />

was least useful to them. There was a learner who thought that the lecture slides were<br />

least useful.<br />

12. What other information would you like to see added to today’s lecture?<br />

While most of them did not answer this question, some commented that they would not<br />

like to see anything added. One learner commented that she would like more lecture<br />

time.<br />

13. What other information would you like to see added to today’s exercises?<br />

Some commented that it would nice to have more explanation of how to build the<br />

equivalence class table<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

While most of them did not answer this question or just said “none,” some commented<br />

that the lecture was too long.<br />

15. Would you like to suggest specific improvements to today’s exercises?<br />

While most of them did not answer this question or just said “none,” a few of the<br />

learners requested more time to solve the exercises.<br />

103


Table 6.13: Day 3 Questionnaire Responses<br />

Questionnaire – Day 3<br />

1. How would you rate the overall clarity of today's lecture?<br />

Excellent Good Fair Poor<br />

10 12 1 0<br />

2. How would you rate the overall clarity of today's exercises?<br />

Excellent Good Fair Poor<br />

9 14 0 0<br />

3. How would you rate your overall satisfaction with today's lecture?<br />

Excellent Good Fair Poor<br />

8 14 1 0<br />

4. How would you rate your overall satisfaction with today's exercises?<br />

Excellent Good Fair Poor<br />

8 13 2 0<br />

5. How would you rate today's session in terms of how interesting it was?<br />

Excellent Good Fair Poor<br />

9 14 0 0<br />

6. Rate your confidence when solving the exercises.<br />

Excellent Good Fair Poor<br />

5 15 3 0<br />

7. Was enough feedback provided for the exercises?<br />

Little short of<br />

More than enough Enough<br />

enough Very less<br />

3 20 0 0<br />

8. Was enough time given to solve the exercises?<br />

Little short of Very less time<br />

More than enough Enough<br />

enough<br />

provided<br />

2 14 3 4<br />

9. What was the most useful part of today’s session?<br />

While most of the learners commented that they best liked the h<strong>and</strong>s-on experience as<br />

they got to test real computer applications, some others commented that they liked the<br />

multidimensional analysis of variables.<br />

10. What did you like best about today’s session?<br />

Most of the learners commented that they liked the exercises <strong>and</strong> liked the fact that the<br />

exercises involved functions of real computer applications.<br />

104


11. What was the least useful part of today’s session?<br />

While most of them did not answer this question, some commented that everything was<br />

useful. There was one who thought slides were least useful.<br />

12. What other information would you like to see added to today’s lecture?<br />

While most of them did not answer this question, two of the learners suggested adding<br />

more time <strong>and</strong> examples to the lecture.<br />

13. What other information would you like to see added to today’s exercises?<br />

While most of them did not answer this question, some commented that everything was<br />

fine. However, there were at least two learners that suggested giving more time to solve<br />

exercises.<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

While most of them did not answer this question, some commented that everything was<br />

fine. However, one learner suggested that examples required more explanations to solve<br />

the corresponding exercises successfully.<br />

15. Would you like to suggest specific improvements to today’s exercises?<br />

While most of them did not answer this question or just said “none,” a few of the<br />

learners suggested that the number of exercises be reduced.<br />

105


Table 6.14: Day 4 Questionnaire Responses<br />

Questionnaire – Day 4<br />

1. How would you rate the overall clarity of today's lecture?<br />

Excellent Good Fair Poor<br />

11 12 0 0<br />

2. How would you rate the overall clarity of today's exercises?<br />

Excellent Good Fair Poor<br />

9 13 1 0<br />

3. How would you rate your overall satisfaction with today's lecture?<br />

Excellent Good Fair Poor<br />

11 12 0 0<br />

4. How would you rate your overall satisfaction with today's exercises?<br />

Excellent Good Fair Poor<br />

10 12 1 0<br />

5. How would you rate today's session in terms of how interesting it was?<br />

Excellent Good Fair Poor<br />

9 14 0 0<br />

6. Rate your confidence when solving the exercises.<br />

Excellent Good Fair Poor<br />

4 19 0 0<br />

7. Was enough feedback provided for the exercises?<br />

Little short of<br />

More than enough Enough<br />

enough Very less<br />

5 18 0 0<br />

8. Was enough time given to solve the exercises?<br />

Little short of Very less time<br />

More than enough Enough<br />

enough<br />

provided<br />

2 15 5 1<br />

9. What was the most useful part of today’s session?<br />

While most of the learners commented that they best liked the exercises, a few others<br />

commented that they best liked learning to do all pairs combination <strong>and</strong> building the all<br />

pairs table.<br />

10. What did you like best about today’s session?<br />

Most of the learners commented that they liked building the all pairs table <strong>and</strong><br />

appreciated the fact that a lot of time was spent teaching how to build the all pairs table<br />

106


appreciated the fact that a lot of time was spent teaching how to build the all pairs table<br />

<strong>and</strong> enough feedback was provided. Some also commented that they best liked learning<br />

how to identify dependent variables <strong>and</strong> analyzing the dependency relationships. A<br />

learner also commented that she liked the fact that there was a lot of student interaction.<br />

11. What was the least useful part of today’s session?<br />

While most of them refrained from answering this question, some commented that<br />

everything was useful. There was one who thought slides were least useful <strong>and</strong> another<br />

one who thought that it took forever to build the all pairs table.<br />

12. What other information would you like to see added to today’s lecture?<br />

While most of them did not answer this question, others just commented “none.”<br />

13. What other information would you like to see added to today’s exercises?<br />

While most of them did not answer this question, others just commented “none.”<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

While most of them did not answer this question, some commented that everything was<br />

fine.<br />

15. Would you like to suggest specific improvements to today’s exercises?<br />

While most of them did not answer this question or just said “none,” a few of the<br />

learners commented that more time needs to be provided to solve the exercises.<br />

107


Table 6.15: Day 5 Questionnaire Responses<br />

Questionnaire – Day 5<br />

1. How would you rate the overall training in terms of how interesting it was?<br />

Excellent Good Fair Poor<br />

15 7 1 0<br />

2. How would you rate your overall satisfaction with the training?<br />

Excellent Good Fair Poor<br />

14 9 0 0<br />

3. How would you rate the overall clarity of the posttest?<br />

Excellent Good Fair Poor<br />

14 9 0 0<br />

4. How would you rate your overall satisfaction with the posttest?<br />

Excellent Good Fair Poor<br />

11 11 1 0<br />

5. Rate your confidence when answering the questions on the posttest.<br />

Excellent Good Fair Poor<br />

8 15 0 0<br />

6. Was enough time given to solve the posttests?<br />

Little short of Very less time<br />

More than enough Enough<br />

enough<br />

provided<br />

3 15 5 0<br />

7. Were too many or too less questions included in the posttests?<br />

Little short of Very less<br />

Too many questions Enough<br />

enough<br />

questions<br />

4 18 1 0<br />

8. How would you rate your competence in doing domain testing?<br />

Excellent Good Fair Poor<br />

6 16 1 0<br />

9. How likely is it that you'll recommend this training to somebody else?<br />

Very likely Likely Less likely Not likely<br />

13 10 0 0<br />

10. What was the most useful part of this training?<br />

Some learners commented that they found the training very informative <strong>and</strong> interactive.<br />

Some others commented that they best liked the exercises <strong>and</strong> examples.<br />

11. What did you like best about the training?<br />

108


Most of them commented that they best liked the exercises <strong>and</strong> examples. Several others<br />

said that they learned so much about a testing strategy that was new to them in just five<br />

days. One learner commented that the best part of the training was that he got paid for<br />

it. A few commented that h<strong>and</strong>s-on experience during the training was the best part.<br />

12. What was the least useful part of the training?<br />

While most of them refrained from answering this question, some commented that<br />

everything was useful. There was one who thought slides were least useful <strong>and</strong> another<br />

one who thought that it took forever to build the all pairs table.<br />

13. What other information would you like to see added to or deleted from today’s<br />

tests?<br />

While most of them did not answer this question or just commented “none,” one learner<br />

said that either more time should be provided to solve the tests or some questions should<br />

be deleted.<br />

14. Would you like to suggest specific improvements to the posttests?<br />

While some of them did not answer this question, some commented that everything was<br />

fine. Several learners commented that fewer questions on the paper-based posttest <strong>and</strong><br />

more on the computer-based performance test would be desirable. A learner commented<br />

that the training should actually be spread over more days <strong>and</strong> the learners should be<br />

allowed to take the training materials home. A few commented that the paper-based test<br />

was too time consuming. Just one learner said that the difficulty level of the test<br />

questions should be increased.<br />

15. Would you like to suggest specific improvements to the training?<br />

While most of them did not answer this question or just said “none,” a few of the<br />

learners commented that more time needs to be provided to solve the exercises <strong>and</strong> tests.<br />

One learner specifically mentioned that an overview of all software testing paradigms<br />

should be provided <strong>and</strong> it should be explained where domain testing methodology st<strong>and</strong>s<br />

amongst all of them.<br />

The following page contains Chart 6.04 that graphically describes the<br />

answers to the closed-ended questions on the questionnaire for Day 5 with the help<br />

of several pie charts.<br />

109


Chart 6.04: Final Day (5) Questionnaire Responses<br />

Q1: How would you rate the overall training in<br />

terms of how interesting it was?<br />

30%<br />

4% 0%<br />

110<br />

66%<br />

Q2: How would you rate your overall satisfaction<br />

with the training?<br />

39%<br />

0%<br />

0%<br />

61%<br />

Q3: How would you rate the overall clarity of the<br />

posttest?<br />

39%<br />

0%<br />

0%<br />

61%<br />

Excellent<br />

Good<br />

Fair<br />

Poor<br />

Excellent<br />

Good<br />

Fair<br />

Poor<br />

Excellent<br />

Good<br />

Fair<br />

Poor


48%<br />

Q4: How would you rate your overall satisfaction<br />

with the posttest?<br />

4% 0%<br />

111<br />

48%<br />

Q5: Rate your confidence when answering the<br />

questions on the posttest.<br />

65%<br />

22%<br />

0%<br />

0%<br />

35%<br />

Q6: Was enough time given to solve the<br />

posttests?<br />

0%<br />

65%<br />

13%<br />

Excellent<br />

Good<br />

Fair<br />

Poor<br />

Excellent<br />

Good<br />

Fair<br />

Poor<br />

More than enough<br />

Enough<br />

Little short of enough<br />

Very less time provided


Q7: Were too many or too less questions included<br />

in the posttests?<br />

43%<br />

79%<br />

4%0%<br />

17%<br />

112<br />

Too many questions<br />

Enough<br />

Little short of enough<br />

Very less questions<br />

Q8: How would you rate your competence in<br />

doing domain testing?<br />

70%<br />

4% 0%<br />

26%<br />

Q9: How likely is it that you'll recommend this<br />

training to somebody else?<br />

0%<br />

57%<br />

Excellent<br />

Good<br />

Fair<br />

Poor<br />

Very likely<br />

Likely<br />

Less likely<br />

Not likely


Chapter 7: Conclusion<br />

7.01 <strong>Domain</strong> <strong>Testing</strong> Training – Where Does it St<strong>and</strong>?<br />

After evaluation of the tests, it has been observed that there were some plus points<br />

<strong>and</strong> some minus points about the learners’ performance. I evaluated the paper-<br />

based tests. As you can see from the results presented in the previous chapter, the<br />

learners’ performance improved a lot from the pretest to the posttest. But when it<br />

came to testing a real computer-based application, while the learners did do some<br />

things very well, they failed in some ways.<br />

The performance tests were evaluated by Dr. Cem Kaner, James Bach <strong>and</strong><br />

Pat McGee. They have noted some pluses <strong>and</strong> minuses with the learners’<br />

performance <strong>and</strong> thus the training material. According to these three evaluators, the<br />

learners’ performance is not comparable to the st<strong>and</strong>ard of a tester during a job<br />

interview who has one year’s experience <strong>and</strong> who considers herself reasonably<br />

good at domain testing. The detailed evaluation reports of the performance tests are<br />

available in appendices X, Y <strong>and</strong> Z, respectively.<br />

7.01.01 Pluses<br />

Kaner (2003) cited some plus points of the learners’ performance in the<br />

performance test for the page setup feature of Microsoft’s PowerPoint application,<br />

which are mentioned below:<br />

These students’ tables—especially the specific identification of dimensions<br />

along which data entered into the variable can vary—look unusually<br />

sophisticated for students who have no prior test experience or education<br />

<strong>and</strong> only 15 hours of instruction. The 23 students’ analyses were<br />

remarkably consistent. Their tables were structured the same way <strong>and</strong><br />

almost all identified the same dimensions. For example, for the Page Width<br />

variable (a floating point field that can range from 1 to 56 inches), students<br />

consistently identified three dimensions: page width (in inches), number of<br />

113


materials:<br />

characters that can be entered into the field (from 0 to 32) <strong>and</strong> the allowed<br />

characters (digits <strong>and</strong> decimal point). (p. 4)<br />

Kaner (2004) mentioned the following plus points about my instructional<br />

In my opinion, the instructional materials developed by Padmanabhan are<br />

consistent with the field's most common presentation style for domain<br />

testing. She took their approach, did a more thorough job of presenting it to<br />

students, <strong>and</strong> obtained reasonable results when she asked questions that<br />

involved straightforward application of what she had taught. The specific<br />

results could certainly be improved on, but I don't think that those problems<br />

are at the heart of the learning problems faced by the subjects when they<br />

tried to transfer their knowledge to the performance test. (p. 10)<br />

McGee cited the following positive point:<br />

They did well on the outside boundaries of each dimension, since these<br />

could be tested independently. They did well on the enumerated variables,<br />

correctly identifying each value as something they needed to test. (Appendix<br />

Z: Performance Tests’ Evaluation Report by Pat McGee, p. 2)<br />

Given the analysis that they did, all of the subjects generated all-pairs tables<br />

that were completely or mostly correct. One subject got the first three<br />

iterations correct, then completely messed up the fourth iteration. Another<br />

generated a table that was completely wrong, but the error was probably a<br />

bad copy-<strong>and</strong>-paste for the first variable. (For that variable, all values listed<br />

were the same.) Making a very reasonable correction to this answer would<br />

lead to it being completely correct. (Appendix Z: Performance Tests’<br />

Evaluation Report by Pat McGee, p. 3)<br />

114


7.01.02 Minuses<br />

Kaner (2003) also commented on the things the students failed at in the<br />

performance test.<br />

the students:<br />

The students were also remarkably consistent in what they missed.<br />

Examples: (a) If you enter a sufficiently large paper size, PowerPoint warns<br />

that ‘the current page size exceeds the printable area of the paper in the<br />

printer.’ No one identified a boundary related to this message. (b) When<br />

you change page dimensions, the display of slides on the screen <strong>and</strong> their<br />

font sizes (defaults <strong>and</strong> existing text on existing slides) change. No one<br />

appeared to notice this. And (c) change the page size to a large page <strong>and</strong> try<br />

a print preview. You only see part of the page. (p. 4)<br />

Bach mentions the following problem with some of the risks identified by<br />

Some of the risks identified by the students indicate a lack of insight about<br />

the nature of the technology under test. For instance, student #1 suggested<br />

using characters that are on either side of the ASCII code range for numeric<br />

digits. That kind of test made sense in 1985, but it seems unlikely that the<br />

programmers of PowerPoint are still writing their own input filter routines<br />

based on ASCII code signposts in an IF statement. Modern languages<br />

provide more sophisticated libraries <strong>and</strong> constructs to perform filtering on<br />

input. I think a much better test would be to paste in every possible<br />

character code. This is fairly easy to do <strong>and</strong> would trigger many more kinds<br />

of faults in the filtering code. (Appendix Y: Performance Tests’ Evaluation<br />

Report by James Bach, p. 4)<br />

McGee commented that the students failed to achieve higher-order learning:<br />

I believe that the problem presented was somewhat different from the<br />

simple cases presented in the training. The problem presented had four<br />

inter-related controls which basically represented a 2-D space with special<br />

115


points. The material presented in training was mostly about 1-D spaces. So,<br />

in many respects, this problem was a good test in that it required<br />

performance at level 6 of Bloom's taxonomy. Unfortunately, none of the<br />

subjects made this conceptual leap. They tried to treat the problem as if it<br />

were two independent 1-D spaces. This led them to propose tests that I<br />

thought were not very powerful. (Appendix Z: Performance Tests’<br />

Evaluation Report by Pat McGee, pp. 1-2)<br />

7.01.03 Final Remarks<br />

Kaner (2003) made some final comments about my experiment:<br />

Padmanabhan provided her students with detailed procedural<br />

documentation <strong>and</strong> checklists. From the consistency of the students’ results,<br />

I infer that students followed the procedural documentation rather than<br />

relying on their own analyses. It’s interesting to note that, assuming they are<br />

following the procedures most applicable to the task at h<strong>and</strong>, the students<br />

not only include what the procedures appear to tell them to include, but they<br />

also miss the issues not addressed by the procedures. In other words, the<br />

students aren’t doing a risk analysis or a dimensional analysis; they are<br />

following a detailed set of instructions for how to produce something that<br />

looks like a risk analysis or dimensional analysis.<br />

I think we’ll find Padmanabhan’s materials (especially the practice<br />

exercises) useful for bringing students to a common procedural baseline.<br />

However, we have more work to do to bring students’ underst<strong>and</strong>ing of<br />

domain testing up to Bloom’s Level 6 (Evaluation) or Gagne’s (1996)<br />

development of cognitive strategies. (p. 4-5)<br />

Bach made the following final comments:<br />

I expect more insight, product knowledge, <strong>and</strong> imagination from a serious<br />

tester who had more than a few months of experience working for a<br />

company that cared about doing good testing. So, I would not say that this<br />

116


work is strong evidence that the students have been brought to an equivalent<br />

of a tester with 1 or 2 years experience. (Appendix Y: Performance Tests’<br />

Evaluation Report by James Bach, p. 4)<br />

McGee made the following final comments:<br />

Overall, I did not get the impression that any of these subjects understood<br />

the material well enough to apply it to a new situation. I believe that they<br />

mostly could apply these techniques to situations that were very similar to<br />

the examples they had been trained on. In terms of Bloom's Taxonomy, I<br />

believe they learned the material mostly at level 3 (Application). (Appendix<br />

Z: Performance Tests’ Evaluation Report by Pat McGee, p. 4)<br />

Kaner made the following concluding comments in his evaluation report:<br />

Padmanabhan's course takes the approach that I was using (<strong>and</strong> that is<br />

common in the literature <strong>and</strong> in other instructor's courses) to a higher level.<br />

Her teaching is more thorough, has more examples, <strong>and</strong> more formative<br />

assessment.<br />

The lesson that I take from her results is not that she didn't do a good<br />

enough job, but that failure despite the acceptable job that she did indicates<br />

that we need to rethink the teaching strategy in common use. I think that the<br />

modern literature on mathematics education, focusing on how to build<br />

higher-order underst<strong>and</strong>ing rather than procedural knowledge, can provide a<br />

good foundation for the next generation of course (<strong>and</strong> course-related<br />

experimentation), but I think that's the subject for another thesis. (Appendix<br />

X: Performance Tests’ Evaluation Report by Dr. Cem Kaner, p. 12)<br />

117


Bibliography<br />

Adrion, R. W., Branstad, M. A., & Cherniavsky, J. C. (1982, June). Validation,<br />

verification, <strong>and</strong> testing of computer software. ACM Computing Surveys,<br />

14(2), 159-192.<br />

Ammann, P., & Offutt, J. (1994, June). Using formal methods to derive test<br />

frames in category-partition testing. IEEE Computer Society, 69-80.<br />

Anderson, L. W., Krathwohl, D. R., Airasian, P. W., Cruikshank, K. A., Mayer,<br />

R. E., Pintrich, P. R., et al. (Eds.). (2001). A taxonomy for learning,<br />

teaching <strong>and</strong> assessing: A revision of Bloom’s taxonomy of educational<br />

objectives. New York: Addison Wesley Longman.<br />

Bailey, M. A., Moyers, T. E., & Ntafos, S. (1995). An application of r<strong>and</strong>om<br />

software testing. IEEE Computer Society, 1098-1102. Retrieved October<br />

10, 2003, from http://ieeexplore.ieee.org<br />

Beizer, B. (1995). Black-box testing: Techniques for functional testing of<br />

software <strong>and</strong> systems. United States: John Wiley & Sons.<br />

Bender, R. (2001). How do you know when you are done testing? Retrieved<br />

February 20, 2004, from,<br />

http://jisqa.org/Presentations/2002%20Presentations/BENDER-D.pdf<br />

Binder, R. V. (1994, September). Design for testability in object-oriented<br />

systems. Communications of the ACM, 37(9), 87-101.<br />

Binder, R. V. (1999). <strong>Testing</strong> object oriented systems: Models, patterns <strong>and</strong> tools.<br />

Boston, MA: Addison-Wesley Longman.<br />

Bloom, B. S. (1956). Taxonomy of educational objectives: H<strong>and</strong>book 1 -<br />

cognitive domain. New York: Longman.<br />

Bloom, B. S., Hastings, T. J., & Madaus, G. F. (1971). H<strong>and</strong>book on formative<br />

<strong>and</strong> summative evaluation of student learning. United States: McGraw-Hill.<br />

118


Bol<strong>and</strong>, P. J., Singh, H., & Cukic, B. (2003, January). Comparing partition <strong>and</strong><br />

r<strong>and</strong>om testing via majorization <strong>and</strong> Schur functions. IEEE Transactions on<br />

Software Engineering, 29(1), 88-94.<br />

Bolton, M. (2004). Pairwise testing. Retrieved February 29, 2004, from<br />

http://www.developsense.com/testing/Pairwise<strong>Testing</strong>.html<br />

Boyer, R. S., Elspas, B., & Levitt, K. (1975, June). SELECT – A formal system<br />

for testing <strong>and</strong> debugging programs by symbolic execution. ACM SIGPLAN<br />

Notices, 10(6), 234-245.<br />

Burnstein, I. (2003). Practical software testing. New York: Springer-Verlag.<br />

Chan, F. T., Mak, I. K., Chen, T. Y., & Shen, S. M. (1997). On some properties<br />

of the optimally refined proportional sampling strategy. Computer Journal,<br />

40(4), 194-199. Retrieved October 25, 2003, from<br />

http://www3.oup.co.uk/computer_journal/subs/Volume_40/Issue_04/Chan.<br />

pdf<br />

Chan, F. T., Mak, I. K., Chen, T. Y., & Shen, S. M. (1998). On the effectiveness<br />

of the optimally refined proportional sampling testing strategy. IEEE<br />

Computer Society, 1-10. Retrieved October 10, 2003, from<br />

http://ieeexplore.ieee.org<br />

Chen, T. Y., Leung, H., & Yu, Y. T. (1995). On the analysis of subdomain testing<br />

strategies. IEEE Computer Society, 218-224. Retrieved October 10, 2003,<br />

from http://ieeexplore.ieee.org<br />

Chen, T. Y., Poon, P. L., Tang, S. F., & Yu, Y. T. (2000). White on black: A<br />

white-box-oriented approach for selecting black-box generated test cases.<br />

IEEE Computer Society, 275-284. Retrieved October 10, 2003, from<br />

http://ieeexplore.ieee.org<br />

Chen, T. Y., Poon, P. L., & Tse, T. H. (2003, July). Choice relation framework<br />

for supporting category-partition test case generation. IEEE Transactions on<br />

Software Engineering, 29(7), 577-593.<br />

119


Chen, T. Y., Tse, T. H., & Zhou, Z. (2001). Fault-based testing in the absence of<br />

an oracle. IEEE Computer Society, 172-178. Retrieved September 23, 2003,<br />

from http://ieeexplore.ieee.org<br />

Chen, T. Y., Wong, P. K., & Yu, Y. T. (1999). Integrating approximation<br />

methods with the generalized proportional sampling strategy. IEEE<br />

Computer Society, 598-605. Retrieved November 6, 2003, from<br />

http://ieeexplore.ieee.org.<br />

Chen, T. Y., & Yu, Y. T. (1994, December). On the relationship between<br />

partition <strong>and</strong> r<strong>and</strong>om testing. IEEE Transactions on Software Engineering,<br />

20(12), 977-980.<br />

Chen, T. Y., & Yu, Y. T. (1996a). Constraints for safe partition testing strategies.<br />

Computer Journal, 39(7), 619-625.<br />

Retrieved September 30, 2003, from http://ieeexplore.ieee.org<br />

Chen, T. Y., & Yu, Y. T. (1996b). More on the e-measure of subdomain testing<br />

strategies. IEEE Computer Society, 167-174. Retrieved September 30, 2003,<br />

from http://ieeexplore.ieee.org<br />

Chen, T. Y., & Yu, Y. T. (1996c). On the expected number of failures detected<br />

by subdomain testing <strong>and</strong> r<strong>and</strong>om testing. IEEE Transactions on Software<br />

Engineering, 22(2), 109-119. Retrieved September 30, 2003, from<br />

http://ieeexplore.ieee.org<br />

Chen, T. Y., & Yu, Y. T. (1997). Optimal improvement of the lower bound<br />

performance of partition testing strategies. IEE Proc.-Softw. Eng., 144(5-6),<br />

271-278.<br />

Chen, T. Y., & Yu, Y. T. (1998). On the test allocations for the best lower bound<br />

performance of partition testing. Retrieved September 30, 2003, from<br />

http://ieeexplore.ieee.org<br />

Clarke, L. A. (1976, September). A system to generate test data <strong>and</strong> symbolically<br />

execute programs. IEEE Transaction on Software Engineering, SE-2(3),<br />

215-222.<br />

120


Clarke, L. A., Hassell, J., & Richardson, D. (1982, July). A close look at domain<br />

testing. IEEE Transactions on Software Engineering, SE-8(4), 380-390.<br />

Cohen, D. M., Dalal, S. R., Parelius, J., & Patton, G. C. (1996). The<br />

combinatorial design approach to automatic test generation. Retrieved<br />

December 7, 2003, from http://ieeexplore.ieee.org.<br />

Cohen, M. B., Colbourn, C. J., Gibbons, P. B., & Mugridge, W. B. (2003).<br />

Constructing test suites for interaction testing. IEEE Computer Society, 38-<br />

48. Retrieved December 23, 2003, from http://ieeexplore.ieee.org<br />

DeMillo, R. A., Lipton, R. J., & Sayward, F. G. (1978, April). Hints on test data<br />

selection: Help for the practicing programmer. Computer, 11(4), 34-41.<br />

Dick, W., & Carey, L. (1985). The systematic design of instruction (2nd ed.).<br />

United States: Scott, Foresman <strong>and</strong> Company.<br />

Dick, W., Carey, L., & Carey, J. O. (2001). The systematic design of instruction<br />

(5th ed.). New York: Addison-Wesley.<br />

Driscoll, M. P. (2000). Psychology of learning for instruction (2nd ed.). Needham<br />

Heights, MA: Allyn <strong>and</strong> Bacon.<br />

Duran, J. W., & Ntafos, S. (1981). A report on r<strong>and</strong>om testing. IEEE Computer<br />

Society, 179-183. Retrieved December 13, 2003, from<br />

http://ieeexplore.ieee.org<br />

Elmendorf, W. R. (1973, November). Cause-effect graphs in functional testing.<br />

TR_00.2487. Poughkeepsie, NY: IBM.<br />

Elmendorf, W. R. (1974). Functional analysis using cause-effect graphs.<br />

Poughkeepsie, NY: IBM.<br />

Elmendorf, W. R. (1975). Functional testing of software using cause-effect<br />

graphs. Poughkeepsie, NY: IBM.<br />

Fenrich, P. (1997). Practical guidelines for creating instructional multimedia<br />

applications. Fort Worth, TX: Harcourt Brace.<br />

Ferguson, R., & Korel, B. (1996). The chaining approach for software test data<br />

generation. ACM Transactions on Software Engineering <strong>and</strong> Methodology,<br />

5(1), 63-86.<br />

121


Fosdick, L. D., & Osterweil, L. J. (1976). Data flow analysis in software<br />

reliability. Computing Surveys, 8(3), 305-330.<br />

Frankl, P., Hamlet, D., Littlewood, B., & Strigini, L. (1997). Choosing a testing<br />

method to deliver reliability. Paper presented at ICSE 97, Boston, MA, pp.<br />

68-78.<br />

Frankl, P., Hamlet, D., Littlewood, B., & Strigini, L. (1998). Evaluating testing<br />

methods by delivered reliability. Retrieved November 21, 2003, from<br />

http://citeseer.nj.nec.com/frankl98evaluating.html.<br />

Frankl, P. G., & Weiss, S. N. (1993). An experimental comparison of the<br />

effectiveness of branch testing <strong>and</strong> data flow testing. Retrieved November<br />

23, 2003, from http://citeseer.nj.nec.com/frankl93experimental.html.<br />

Gagne, R. M. (1985). The conditions of learning <strong>and</strong> theory of instruction (4th<br />

ed.). New York: Holt, Rinehart <strong>and</strong> Winston.<br />

Gagne, R. M., & Medsker, K. L. (1996). The conditions of learning: Training<br />

applications. Fort Worth, TX: Harcourt Brace.<br />

Gagne, R. M, Briggs, L. J., & Wager, W. W. (1988). Principles of instructional<br />

design (3rd ed.). New York: Holt, Rinehart <strong>and</strong> Winston.<br />

Gelperin, D., & Hetzel, B. (1988, June). The growth of software testing.<br />

Communications of the ACM, 31(6), 687-694.<br />

Gerrard, P., & Thompson, N. (2002). Risk-based e-business testing. Norwood,<br />

MA: Artech House.<br />

Goodenough, J. B., & Gerhart, S. L. (1975, June). Toward a theory of test data<br />

selection. IEEE Transactions on Software Engineering, 156-173.<br />

Gotlieb, A., Botella, B., & Rueher, M. (1998). Automatic test data generation<br />

using constraint solving techniques. Paper presented at ISSTA 98,<br />

Clearwater Beach, FL.<br />

Gronlund, N. E. (2000). How to write <strong>and</strong> use instructional objectives (6th ed.).<br />

Upper Saddle River, NJ: Prentice-Hall.<br />

Gutjahr, W. J. (1999). Partition testing vs. r<strong>and</strong>om testing: The influence of<br />

uncertainty. IEEE Transactions on Software Engineering, 25(5), 661-674.<br />

122


Hajnal, À., & Forgács, I. (1998). An applicable test data generation algorithm for<br />

domain errors. Paper presented at ISSTA 98, Clearwater Beach, FL.<br />

Hall, P. A. V., & May, J. H. R. (1997, December). Software unit test coverage<br />

<strong>and</strong> adequacy. ACM Computing Surveys, 29(4), 366-427.<br />

Hamlet, D. (1996, September 5). Software component dependability – a<br />

subdomain-based theory. Retrieved November 22, 2003, from<br />

http://citeseer.nj.nec.com/hamlet96software.html<br />

Hamlet, D. (2000). On subdomains: <strong>Testing</strong>, profiles, <strong>and</strong> components. ACM, 71-<br />

76.<br />

Hamlet, D., Manson, D., & Woit, D. (2001). Theory of software reliability based<br />

on components. Retrieved November 22, 2003, from<br />

http://citeseer.nj.nec.com/hamlet01theory.html.<br />

Hamlet, D., & Taylor, R. (1990). Partition testing does not inspire confidence.<br />

IEEE Transactions on Software Engineering, 16(12), 1402-1411.<br />

Hantler, S. L., & King, J. C. (1976, September). An introduction to proving the<br />

correctness of programs. ACM Computing Survey, 331-353.<br />

Harrell, J. M. (2001). Orthogonal array testing strategy (OATS). Retrieved<br />

December 7, 2003, from<br />

http://www.cvc.uab.es/shared/teach/a21291/apunts/provaOO/OATS.pdf.<br />

Hierons, R. M. (2002, October). Comparing test sets <strong>and</strong> criteria in the presence<br />

of test hypotheses <strong>and</strong> fault domains. ACM Transactions on Software<br />

Engineering <strong>and</strong> Methodology, 11(4), 427–448.<br />

Howden, W. E. (1976, September). Reliability of the path analysis testing<br />

strategy. IEEE Transactions on Software Engineering, 2(3), 208-215.<br />

Howden, W. E. (1977, July). Symbolic testing <strong>and</strong> the DISSECT symbolic<br />

evaluation system. IEEE Transactions on Software Engineering, 4(4), 266-<br />

278.<br />

Howden, W. E. (1980a). Functional program testing. IEEE Transactions on<br />

Software Engineering, SE-6(2), 162-169.<br />

123


Howden, W. E. (1980b). Functional testing <strong>and</strong> design abstractions. The Journal<br />

of Systems <strong>and</strong> Software, 1, 307-313.<br />

Howden, W. E. (1981). Completeness criteria for testing elementary program<br />

functions. Paper presented at the 5 th International Conference on Software<br />

Engineering, pp. 235-243.<br />

Howden, W. E. (1982, June). Validation of scientific programs. ACM Computing<br />

Surveys, 14(2), 193-227.<br />

Howden, W. E. (1986, October). A functional approach to program testing <strong>and</strong><br />

analysis. IEEE Transactions on Software Engineering, SE-12(10), 997-<br />

1004.<br />

Howden, W. E. (1989). Validating programs without specifications. ACM, 2-9.<br />

Retrieved September, 30, 2003, from http://portal.acm.org/<br />

Huang, J. C. (1975, September). An approach to program testing. ACM<br />

Computing Surveys, 7(3), 113-128.<br />

Hutcheson, M. L. (2003). Software testing fundamentals: Methods <strong>and</strong> metrics.<br />

Indianapolis, IN: Wiley Publishing.<br />

IEEE Computer Society (2004). Definition of ‘testing’. Retrieved January 30,<br />

2004, from<br />

http://www.computer.org/certification/guide/<strong>Testing</strong>Definition.htm<br />

IEEE Std. 610.12. (1990). IEEE st<strong>and</strong>ard glossary of software engineering<br />

terminology. Retrieved December 21, 2003, from<br />

http://st<strong>and</strong>ards.ieee.org/<br />

Intermath Dictionary. (2004a). Definition of ‘average’. Retrieved January 12,<br />

2004, from http://www.intermath-<br />

uga.gatech.edu/dictnary/descript.asp?termID=46<br />

Intermath Dictionary. (2004b). Definition of ‘st<strong>and</strong>ard deviation’. Retrieved<br />

January 12, 2004, from http://www.intermath-<br />

uga.gatech.edu/dictnary/descript.asp?termid=450<br />

Jeng, B., & Weyuker, E. J. (1989). Some observations on partition testing. ACM<br />

SIGSOFT Software Engineering Notes, 14(8), 38-47.<br />

124


Jeng, B., & Weyuker, E. J. (1994, July). A simplified domain testing strategy.<br />

ACM Transactions on Software Engineering <strong>and</strong> Methodology, 3(3), 254-<br />

270.<br />

Jonassen, D. H., Tessmer, M., & Hannum, W. H. (1999). Task analysis methods<br />

for instructional design. New Jersey: Lawrence Erlbaum Associates.<br />

Jorgensen, P. C. (2002). Software testing: A craftsman’s approach (2nd ed.).<br />

Boca Raton, FL: CRC Press.<br />

Kaner, C. (2002a). Black box software testing: Professional seminar, section 4:<br />

The impossibility of complete testing. Retrieved May 23, 2003, from<br />

http://www.testingeducation.org/coursenotes/kaner_cem/cm_200204_black<br />

boxtesting/<br />

Kaner, C. (2002b). Risk-based testing <strong>and</strong> risk-based test management.<br />

Professional Seminar on Black Box Software <strong>Testing</strong>. Retrieved May 23,<br />

2003, from www.testingeducation.org<br />

Kaner, C. (2002c). Combination testing. Professional Seminar on Black Box<br />

Software <strong>Testing</strong>. Retrieved February 23, 2004, from<br />

www.testingeducation.org<br />

Kaner, C. (2003). Teaching domain testing: A status report. Retrieved December<br />

2, 2003, from http://www.testingeducation.org/articles/<br />

Kaner, C. (2004). Carts before horses: Using preparatory exercises to motivate<br />

lecture material. Retrieved March 4, 2004, from<br />

http://testingeducation.org/conference/wtst_page_2004.php<br />

Kaner, C., & Bach, J. (2003). Black box software testing: 2003 commercial<br />

edition. Retrieved October 11, 2003, from<br />

http://www.testingeducation.org/coursenotes/<br />

Kaner, C., & Bach, J. (2004). Black box software testing: 2004 academic edition.<br />

Retrieved February 14, 2004, from<br />

http://www.testingeducation.org/k04/index.htm#coursenotes<br />

Kaner, C., Bach, J., & Pettichord, B. (2002). Lessons learned in software testing:<br />

A context driven approach. New York: Willey Computer.<br />

125


Kaner, C., Falk, J., & Nguyen, H. Q. (1999). <strong>Testing</strong> computer software (2nd<br />

ed.). New York: John Wiley & Sons.<br />

Koh, L. S., & Liu, M. T. (1994). Test path selection based on effective domains.<br />

IEEE Computer Society, 64-71. Retrieved December 23, 2003, from<br />

http://ieeexplore.ieee.org<br />

Krathwohn, D. R., Benjamin, B. S., & Masia, B. B. (1956). Taxonomy of<br />

educational objectives. The classification of educational goals. H<strong>and</strong>book<br />

II: Affective domain. New York: David McKay.<br />

Learning Skills Program. (2003). Bloom’s taxonomy. Retrieved May 2, 2003,<br />

from<br />

http://www.coun.uvic.ca/learn/program/hndouts/bloom.html<br />

Lee, H. K. (1997). Optimization based domain decomposition methods for linear<br />

<strong>and</strong> nonlinear problems. Retrieved December 7, 2003, from<br />

http://scholar.lib.vt.edu/theses/available/etd-7497-<br />

163154/unrestricted/kwon.pdf<br />

Lei, Y., & Tai, K. C. (1988). In-parameter-order: A test generation strategy for<br />

pairwise testing. Retrieved December 21, 2003, from http://portal.acm.org/<br />

Leung, H., & Chen, T. Y. (2000). A revisit of the proportional sampling strategy.<br />

IEEE Computer Society, 247-254. Retrieved December 13, 2003, from<br />

http://ieeexplore.ieee.org<br />

Mayrhauser, A. V., Mraz, R. T., & Walls, J. (1994). <strong>Domain</strong> based regression<br />

testing. IEEE Computer Society, 26-35. Retrieved December 23, 2003, from<br />

http://ieeexplore.ieee.org<br />

Mayrhauser, A. V., Mraz, R. T., Walls, J., & Ocken, P. (1994). <strong>Domain</strong> based<br />

testing: Increasing test case reuse. IEEE Computer Society, 1-16. Retrieved<br />

December 13, 2003, from http://ieeexplore.ieee.org<br />

Mayrhauser, A. V., Ocken, P., & Mraz, R. (1996). On domain models for system<br />

testing. IEEE Computer Society, 114-123. Retrieved November 15, 2003,<br />

from http://ieeexplore.ieee.org<br />

126


Mayrhauser, A. V., Walls, J., & Mraz, R. T. (1994). Sleuth: A domain based<br />

testing tool. IEEE Computer Society, 840-849. Retrieved November 23,<br />

2003, from http://ieeexplore.ieee.org<br />

Miller, E. F., & Melton, R. A. (1975). Automated generation of testcase datasets.<br />

Paper presented at the 1975 International Conference on Reliability<br />

Software, pp. 51-58.<br />

Morrison, G. R., Ross, S. M., & Kemp, J. E. (2004). Designing effective<br />

instruction (4th ed.). New York: John Wiley <strong>and</strong> Sons.<br />

Myers, G. J. (1979). The art of software testing. United States: John Wiley <strong>and</strong><br />

Sons.<br />

Ntafos, S. (1998). On r<strong>and</strong>om <strong>and</strong> partition testing. Paper presented at ISSTA 98,<br />

Clearwater Beach, FL.<br />

Ntafos, S. C. (2001). On comparisons of r<strong>and</strong>om, partition, <strong>and</strong> proportional<br />

partition testing. IEEE Transactions on Software Engineering, 27(10), 949-<br />

960.<br />

Nursimulu, K., & Probert, R. L. (1995). Cause-effect graphing analysis <strong>and</strong><br />

validation of requirements. Retrieved December 2, 2003, from<br />

http://portal.acm.org/<br />

Offutt, A. J., Jin, Z., & Pan, J. (1997). The dynamic domain reduction procedure<br />

for test data generation. Retrieved November 25, 2003, from<br />

http://citeseer.nj.nec.com/282317.html<br />

Ostr<strong>and</strong>, T. J., & Balcer, M. J. (1988, June). The category-partition method for<br />

specifying <strong>and</strong> generating functional tests. Communications of the ACM,<br />

31(6), 676-686.<br />

Podgurski, A., Masri, W., Yol<strong>and</strong>a, M., & Wolff, F. G. (1999, July). Estimation<br />

of software reliability by stratified sampling. ACM Transactions on<br />

Software Engineering <strong>and</strong> Methodology, 8(3), 263–283.<br />

Podgurski, A., & Yang, C. (1993). Partition testing, stratified sampling, <strong>and</strong><br />

cluster analysis. ACM, 169-181. Retrieved December 2, 2003, from<br />

http://portal.acm.org/<br />

127


Powell, A. (1998). Experiences with category-partition testing. Retrieved<br />

September 2003, from http://www.castellan.com/~amp/bups/bups.html<br />

Pozewaunig, H., & Rauner, R. D. (1999). Support of semantics recovery during<br />

code scavenging using repository classification. ACM, 65-72. Retrieved<br />

December 2, 2003, from http://portal.acm.org/<br />

Ramamoorthy, C. V., & Ho, S. F. (1975). <strong>Testing</strong> large software with automated<br />

software evaluation systems. ACM SIGPLAN Notices, 10(6), 382-394.<br />

Rapps, S., & Weyuker, E. J. (1982). Data flow analysis techniques for test data<br />

selection. ACM, 272-278. Retrieved December 15, 2003, from<br />

http://portal.acm.org/<br />

Reid, S. C. (1997). An empirical analysis of equivalence partitioning,<br />

boundary-value analysis <strong>and</strong> r<strong>and</strong>om testing. IEEE Computer Society, 64-<br />

73. Retrieved November 23, 2003, from http://ieeexplore.ieee.org<br />

Reiser, R. A., & Dempsey, J. V. (2002). Trends <strong>and</strong> issues in instructional design<br />

<strong>and</strong> technology. Saddle River, NJ: Merrill Prentice Hall.<br />

Richardson, D. J., & Clarke, L. A. (1981). A Partition analysis method to increase<br />

program reliability. ACM, 244-253. Retrieved November 23, 2003, from<br />

http://portal.acm.org/<br />

Richardson, D. J., O’Malley, O., & Tittle, C. (1989). Approaches to<br />

specification-based testing. Retrieved November 23, 2003, from<br />

http://portal.acm.org/<br />

Rothwell, W. J., & Kazanas, H. C. (1998). Mastering the instructional design<br />

process: A systematic approach (2nd ed.). San Francisco: Jossey-<br />

Bass/Pfeiffer.<br />

Sayre, K., & Poore, J. H. (2000). Partition testing with usage models. IEEE<br />

Computer Society, 42(12), 845-850.<br />

Schroeder, P. J. (2004). Involving testing students in software projects, part II.<br />

Retrieved March 4, 2004, from<br />

http://testingeducation.org/conference/wtst_page_2004.php<br />

128


Schroeder, P. J., & Korel, B. (2000). Black-box test reduction using input-output<br />

analysis. Retrieved November 23, 2003, from http://portal.acm.org/<br />

Smith, P. L., & Ragan, T. J. (1999). Instructional design (2nd ed.). Upper Saddle<br />

River, NJ: Prentice-Hall.<br />

Srinivasan, R., Gupta, S. K., & Breuer, M. A. (1993). An efficient partitioning<br />

strategy for pseudo-exhaustive testing. ACM, 242-248. Retrieved<br />

November 23, 2003, from http://portal.acm.org/<br />

Tsoukalas, M. Z., Duran, J. W., & Ntafos, S. C. (1993). On some reliability<br />

estimation problems in r<strong>and</strong>om <strong>and</strong> partition testing. IEEE Transactions on<br />

Software Engineering, 19(7), 687-697.<br />

Vagoun, T. (1996). Input domain partitioning in software testing. IEEE<br />

Computer Society, 261-268. Retrieved November 23, 2003, from<br />

http://ieeexplore.ieee.org<br />

Webopedia. (2003). Definition of ‘function’. Retrieved December 6, 2003, from<br />

http://www.webopedia.com/TERM/f/function.html<br />

Weiss, S. N., & Weyuker, E. J. (1988). An extended domain-based model of<br />

software reliability. IEEE Transactions on Software Engineering, 14(10),<br />

1512-1524.<br />

Weyuker, E. J., & Jeng, B. (1991). Analyzing partition testing strategies. IEEE<br />

Transactions on Software Engineering, 17(7), 703-711.<br />

Weyuker, E. J., & Ostr<strong>and</strong>, T. J. (1980, May). Theories of program testing <strong>and</strong><br />

the application of revealing subdomains. IEEE Transactions on Software<br />

Engineering, 6(3), 236-246.<br />

Weyuker, E. J., Weiss, S. N., & Hamlet, D. (1991). Comparison of program<br />

testing strategies. ACM, 1-10. Retrieved November 23, 2003, from<br />

http://portal.acm.org/<br />

White, L. J. (1984). The evolution of an integrated testing environment by the<br />

domain testing strategy. ACM, 69-74. Retrieved November 23, 2003, from<br />

http://portal.acm.org/<br />

129


White, L. J., & Cohen, E. I. (1980, May). A domain strategy for computer<br />

program testing. IEEE Transactions on Software Engineering, 6(3), 247-<br />

257.<br />

White, L. J., & Sahay, P. N. (1985). Experiments determining best-paths for<br />

testing computer program predicates. ACM, 238-243. Retrieved November<br />

23, 2003, from http://portal.acm.org/<br />

Whittaker, J. A., & Jorgensen, P. C. (2002). How to break software: A practical<br />

guide to testing. Boston: Addison Wesley.<br />

Worthen, B. R., S<strong>and</strong>ers, J. R., & Fitzpatrick, J. L. (1997). Program evaluation:<br />

Alternative approaches <strong>and</strong> practical guidelines (2nd ed.). New York:<br />

Longman.<br />

Wu, Y. (2001). Category partition testing. Retrieved October 14, 2003, from<br />

http://www.isse.gmu.edu/~wuye/classes/637/lecture/CategoryPartitionTesti<br />

ng.pdf<br />

Zeil, S. J. (1984). Perturbation testing for computation errors. Paper presented at<br />

the 7 th International Conference on Software Engineering, Orl<strong>and</strong>o, FL, pp.<br />

257-265.<br />

Zeil, S. J., Afifi, F. H., & White, L. J. (1992a, October). Detection of linear errors<br />

via domain testing. ACM Transactions on Software Engineering <strong>and</strong><br />

Methodology, 1(4), 422-451.<br />

Zeil, S. J., Afifi, F. H., & White, L. J. (1992b, October). <strong>Testing</strong> for linear errors<br />

in nonlinear programs. ACM, 81-91. Retrieved November 23, 2003, from<br />

http://portal.acm.org/<br />

Zeil, S. J., & White, L. J. (1981). Sufficient test sets for path analysis testing<br />

strategies. Retrieved November 22, 2003, from<br />

http://portal.acm.org/citation.cfm?id=802531&jmp=abstract&dl=GUIDE&<br />

dl=ACM<br />

Zhao, R., Lyu, M. R., & Min, Y. (2003). <strong>Domain</strong> testing based on character<br />

string predicate. Retrieved September 12, 2003, from<br />

http://www.cse.cuhk.edu.hk/~lyu/paper_pdf/ats03.pdf<br />

130


Zhu, H., Hall, P. A. V., & May, J. H. R. (1997, December). Software unit test<br />

coverage <strong>and</strong> adequacy. ACM Computing Surveys, 29(4), 366-427.<br />

131


Appendices


Appendix A: Reference Material# 1 for <strong>Domain</strong><br />

<strong>Testing</strong> Training (Reference Material 1: Identifying<br />

Variables of a Function <strong>and</strong> Their Characteristics in<br />

Training Material)


<strong>Domain</strong> <strong>Testing</strong><br />

Identifying Variables of a Function <strong>and</strong> Their Characteristics<br />

Phase I: Given a function, identify variables <strong>and</strong> their characteristics<br />

To conduct domain testing you will need either written or verbal specification, which<br />

includes code, or the product or prototype. If the product is available, you can do<br />

exploratory testing on it to get yourself familiarized with the product <strong>and</strong> the domain.<br />

The analysis to be done in this phase requires the following steps:<br />

1. Identify variables.<br />

2. Categorize variables.<br />

3. Explore functionality of the function with respect to the identified variables.<br />

4. Identify <strong>and</strong> analyze values taken by each variable.<br />

5. Determine whether the identified variables are one-dimensional or multidimensional.<br />

6. Determine whether the identified variables are of range type or enumerated type.<br />

7. Determine whether each of the identified variables is linearizable or not.<br />

Step 1: Identify variables<br />

What is a variable?<br />

In general a variable<br />

• is something that varies or is prone to variation.<br />

• is a quantity capable of assuming a set of values.<br />

• is a symbol representing a quantity. For example, in the expression a 2 + b 2 =<br />

c 2 , a, b, <strong>and</strong> c are variables.<br />

• is the mathematical model for a characteristic observed or measured in an<br />

experiment, survey, or observational study.<br />

In the computing world, a variable is the name given to a space in the memory to<br />

store a value of some data type. The variable names can be conveniently used to<br />

access the values stored in the memory.<br />

Step 2: Categorize variables<br />

Now that we have identified some variables, let us categorize these variables.<br />

What are the different kinds of variables?<br />

• Input<br />

• Output<br />

© Sowmya Padmanabhan, 2003 1


What is an input variable?<br />

An input variable is a variable whose value serves as an input to a<br />

function. The value to an input variable inputted by an external entity like<br />

a user or some other program.<br />

What is an output variable?<br />

An output variable is a variable that stores the result of execution of the<br />

function to which it belongs. In other words, an output variable’s value<br />

indicates what happened as a result of execution of the function.<br />

For example, in z = x + y, ‘x’ <strong>and</strong> ‘y’ are plain input variables <strong>and</strong> ‘z’ is an<br />

output variable storing the value of x plus y.<br />

Not all functions have explicitly visible output variables. However,<br />

usually there is at least one variable in the internal code that serves as an<br />

output variable. In the technique of domain testing, we are only concerned<br />

with explicit output variables.<br />

Step 3: Explore functionality of the function with respect to the identified variables.<br />

It is a good idea to explore the functionality of the function at h<strong>and</strong> <strong>and</strong> summarize the<br />

functionality you observe with respect to the identified variables.<br />

If a product is available then exploring its functions is easier. However, in some cases<br />

you are just given a prototype <strong>and</strong> a set of written or verbal specifications about the<br />

variables of the function. While this is an adequate way to conduct domain testing, it is<br />

important to realize that the specification may not match the actual prototype.<br />

Step 4: Identify <strong>and</strong> analyze values taken by each variable<br />

The next step is to identify the values taken by each of the identified variables. For every<br />

variable answer the following three questions:<br />

1. What kind of values does the variable take?<br />

2. What are the characteristics of these values?<br />

3. Can you map the type of data it takes to st<strong>and</strong>ard data types like int, double, float,<br />

string, char, etc…?<br />

© Sowmya Padmanabhan, 2003 2


Step 5: Determine whether the identified variables are one-dimensional or multidimensional<br />

<strong>and</strong> identify the dimensions<br />

What does dimension mean in domain testing?<br />

In simple words, a dimension of a variable is looking at the variable from<br />

a particular angle.<br />

For example, we are given a bunch of numbers <strong>and</strong> are told to represent or<br />

classify them in terms of some property. Then, one way to do this is to<br />

consider the ‘bigness’ property <strong>and</strong> arrange them from the number that has<br />

the least value to the number that has the biggest value. You probably<br />

have already guessed what our ‘dimension’ is. Yes, it is the property<br />

‘bigness’. Now, we could also classify these as ‘integers’ <strong>and</strong> ‘reals’ with<br />

everything that is just an integer in the integer category <strong>and</strong> the other<br />

decimal numbers in the real category. So, what is our dimension of<br />

classification here? Correct! It is data type.<br />

What are multidimensional variables?<br />

A numeric field, for example, is multidimensional. The length of the input<br />

value in terms of the number of constituent characters, the type of<br />

constituent characters <strong>and</strong> the size of its input value all are its dimensions,<br />

that is they all are different ways to look at the same variable. Hence, a<br />

numeric field along the length dimension can be considered to be of<br />

integer data type, whereas the same field can be considered as being<br />

integer or floating point type data type along the dimensions ‘Type of<br />

characters’ <strong>and</strong> ‘size’ depending on the kind of values the field takes.<br />

Similarly a string or a text field is multidimensional. Length <strong>and</strong> type of<br />

the constituent characters of the input value are its dimensions. A string or<br />

text field can be viewed as integer data type along the length dimension<br />

whereas it can be viewed as string along the dimension ‘Type of<br />

characters’.<br />

So, just a bunch of numbers with no uniformity like- only integers, only<br />

decimals, only numbers greater that 1000 or only numbers less than -23<br />

will be multi-dimensional <strong>and</strong> depending on what is required in your<br />

analysis, you might pick one or more dimensions that are relevant <strong>and</strong><br />

base your analysis on them.<br />

© Sowmya Padmanabhan, 2003 3


Step 6: Determine whether the variables are range type or enumerated type<br />

We can categorize variables into two categories based on the kind of values they take:<br />

What is a ‘range type’ variable?<br />

Variables that can take a range of values are said to be of the range type.<br />

What is an ‘enumerated type’ variable?<br />

Variables that can take only a set of values or a fixed number of values are<br />

said to be of the enumerated type.<br />

Step 7: Determine whether each of the identified variables is linearizable or not.<br />

What is a linearizable variable?<br />

A variable is said to be linearizable if its possible values can be<br />

represented on a number line. For example, say we have a variable ‘x’ of<br />

‘real/float/double’ data type such that its possible valid values lie between<br />

-0.01 <strong>and</strong> -0.001 (inclusive) then any valid value (-0.006, -0.009, etc…)<br />

between these two end points, including the end points, is a valid value for<br />

variable ‘x’. We can then represent the values of ‘x’ on a number line with<br />

-0.001 on the left end <strong>and</strong> -0.01 on the right end. The choice of directions<br />

is in accordance with the general rule of representing quantities on a<br />

number line, in which quantities with ‘lesser’ value go on the left <strong>and</strong><br />

those with ‘higher’ value go on the right.<br />

-0.001 x -0.01<br />

What is the relation between linearizable <strong>and</strong> range type variables?<br />

Variables that are of the range type are usually linearizable whereas<br />

enumerated types are usually not.<br />

© Sowmya Padmanabhan, 2003 4


Appendix B: Reference Material# 2 for <strong>Domain</strong><br />

<strong>Testing</strong> Training (Reference Material 2: Equivalence<br />

Class <strong>and</strong> Boundary Value Analysis in Training<br />

Material)


<strong>Domain</strong> <strong>Testing</strong><br />

Equivalence Class <strong>and</strong> Boundary Value Analysis<br />

Phase II: Given variables of a function, conduct equivalence class analysis on them.<br />

The analysis to be done in this phase requires the following steps:<br />

1. Review the analysis completed in phase I.<br />

2. Represent the variable(s) as a mathematical range expression.<br />

3. Identify the input domain for the variable.<br />

4. Determine the risks for each variable’s dimension(s).<br />

5. Set up your equivalence class table.<br />

6. Partition the input domain into sub-domains based on the identified risks by<br />

performing equivalence class analysis.<br />

7. Apply boundary value analysis, wherever applicable, to pick best test cases from<br />

each sub-domain.<br />

Step 1: Review the analysis done in previous phase<br />

It is a good idea to review the analysis done in phase I before proceeding further with this<br />

phase.<br />

Step 2: Represent the variable(s) as a mathematical range expression<br />

For each of the range type variables identified in Phase I, represent the variable as a<br />

mathematical range expression.<br />

For example, if a variable ‘x’ lies in the range of v1 <strong>and</strong> v2, then ‘x’ can be represented<br />

as follows:<br />

v1


variable causing the function to fail. It is also helpful to list the associated<br />

risks for each dimension of all identified variables.<br />

Step 5: Set up the equivalence class table.<br />

Before continuing with the analysis of domain testing, it is convenient to construct an<br />

equivalence class analysis table. A typical equivalence class table looks like the<br />

following:<br />

Variable Equivalence<br />

classes<br />

In case of multi-dimensional variables, the above table has an extra column for<br />

dimension. The table then looks like the following:<br />

Step 6: Partition the input domain into sub-domains based on the identified risks.<br />

What is a sub-domain?<br />

Sub-domains in our context can also be called ‘sub-sets’ or ‘categories’ or<br />

‘equivalence classes’.<br />

How to partition?<br />

Test case<br />

(Best<br />

representatives)<br />

Variable Dimension Equivalence<br />

classes<br />

Test case<br />

(Best<br />

representatives)<br />

© Sowmya Padmanabhan, 2003<br />

Risks Notes<br />

Risks Notes<br />

2


Partition the input domain into different sub-domains or subsets based on<br />

the identified risks by performing equivalence class analysis.<br />

What is an equivalence class?<br />

An equivalence class of a variable consists of a set of elements, called<br />

members of that class that are values belonging to the original input<br />

domain <strong>and</strong> have been categorized into this class based on a risk. The<br />

function to which the variable belongs fails in a particular way with<br />

respect to this characteristic. Thus, all members or elements of an<br />

equivalence class are equivalent to each other with respect to some risk.<br />

Why should we do equivalence class analysis?<br />

The idea is that all elements within an equivalence class are essentially the<br />

same for the purposes of testing the corresponding program/function for a<br />

particular risk.<br />

The purpose of domain testing is to systematically reduce an enormous set<br />

of possible input values for a variable (called input domain) into few<br />

manageable sub-domains based on risks.<br />

Doing equivalence class analysis enables us to pick the best<br />

representatives or test cases from each class, thereby reducing the number<br />

of test data drastically. The aim is to alleviate the problem of<br />

‘impossibility of complete testing’.<br />

Why is it impossible to do complete testing?<br />

Complete testing is impossible for several reasons:<br />

• We can’t test all the inputs to the program.<br />

• We can’t test all the combinations of inputs to the program.<br />

• We can’t test all the paths through the program.<br />

• We can’t test for all of the other potential failures, such as those caused by<br />

user interface design errors or incomplete requirements analyses.<br />

Here is a simple example from the paper on ‘An approach to Program <strong>Testing</strong>’ by<br />

J. C. Huang:<br />

© Sowmya Padmanabhan, 2003<br />

3


To assert that the output value Z assumes the correct value for all input values of<br />

X <strong>and</strong> Y, we have to test all possible assignment values of X <strong>and</strong> Y. Assume that<br />

X <strong>and</strong> Y take integer values.<br />

If the program is being tested on a computer for which the word size is 32 bits<br />

then the total possible values for X <strong>and</strong> Y, each are 2 32 .Since the combination of<br />

X <strong>and</strong> Y yields Z, we have to test X <strong>and</strong> Y in combination.<br />

The total possible combinations for X <strong>and</strong> Y are 2 32 x 2 32<br />

Now, if we assume that the program takes about a millisecond to execute once,<br />

we will need more than 50 billion years to completely test this program!<br />

If testing a program as simple as this can lead to combinatorial explosion <strong>and</strong><br />

make testing seem impossible, imagine what happens with huge complicated<br />

programs having hundreds of variables? This is where domain testing comes to<br />

our rescue by helping us systematically reduce an infinitely large input domain to<br />

few manageable sub-domains <strong>and</strong> then helping us choose the best test cases from<br />

each sub-domain, thereby reducing out testing effort (time, money, labor, etc…)<br />

drastically.<br />

Step 7: Apply boundary value analysis, wherever applicable, to pick best test cases<br />

from each sub-domain.<br />

Rather than selecting any arbitrary element in an equivalence class as being the best<br />

representative, the boundary-value analysis requires that one or more elements be<br />

selected such that each edge (border) of the equivalence class is the subject of a test.<br />

Hence, values on the boundary <strong>and</strong> values just off the boundary (below <strong>and</strong>/or beyond,<br />

whatever is applicable) are selected in an equivalence class to be the best representatives<br />

or test cases for that equivalence class.<br />

What are the pitfalls of boundary-value analysis?<br />

• Boundary-value analysis works well only when the program to be tested is<br />

a function of several independent variables that represent bounded<br />

physical quantities. In other words, boundary value analysis does not find<br />

© Sowmya Padmanabhan, 2003<br />

4


domain specific special condition bugs. For example, merely performing<br />

boundary-value analysis on a function called ‘NextDate’ that takes a date<br />

as input <strong>and</strong> outputs the date of the next day, will only find bugs<br />

corresponding to end-of the-month <strong>and</strong> end-of the year faults <strong>and</strong> not bugs<br />

corresponding to leap year <strong>and</strong> February faults. That is why we need to<br />

also look at special values (like leap year <strong>and</strong> February for the NextDate<br />

mentioned above) when looking for best representatives.<br />

• Boundary-value analysis cannot be used to test dependent variables. As in<br />

the above date example, the number of days in February is dependent on<br />

the whether the year is leap year or if it is non-leap year. Hence, we<br />

should not just test for boundaries. Instead we should also try to find out<br />

dependency between variables. This is explained in the reference materials<br />

corresponding to Phase III: Combination <strong>Testing</strong>.<br />

© Sowmya Padmanabhan, 2003<br />

5


How do I determine what members to categorize into an equivalence class?<br />

To partition the input domain space into sub-domains with equivalence class analysis it is<br />

helpful to use heuristics.<br />

What is a heuristic?<br />

1. Of or relating to a usually speculative formulation serving as a guide in the<br />

investigation or solution of a problem: “The historian discovers the past by the<br />

judicious use of such a heuristic device as the ‘ideal type’” (Karl J.<br />

Weintraub).<br />

2. Of or constituting an educational method in which learning takes place<br />

through discoveries that result from investigations made by the student.<br />

3. Computer Science. Relating to or using a problem-solving technique in which<br />

the most appropriate solution of several found by alternative methods is<br />

selected at successive stages of a program for use in the next step of the<br />

program.<br />

Heuristics do not always work; else they would be called guidelines.<br />

Some common heuristics for equivalence class analysis is located in Appendix A:<br />

Equivalence Class Analysis Heuristics. Please note that all the examples in the heuristics<br />

presented in Appendix A deal with only one dimension of the concerned variable since the<br />

information presented in the examples gives enough information only along one dimension<br />

for analysis purposes. Examples given during training lectures will describe detailed<br />

analysis of multidimensional variables.<br />

Also note that the risks identified in the examples corresponding to the heuristics<br />

presented below are an incomplete list. Additional risks will be outlined during training<br />

lectures, but the ones listed here are the ones most often considered in domain testing.<br />

© Sowmya Padmanabhan, 2003<br />

6


Appendix C: Reference Material# 3 for <strong>Domain</strong><br />

<strong>Testing</strong> Training (Reference Material 3: Combination<br />

<strong>Testing</strong> in Training Material)


<strong>Domain</strong> <strong>Testing</strong><br />

Combination <strong>Testing</strong><br />

Phase III: Given variables <strong>and</strong> best representatives of each of their equivalence<br />

classes, perform combination testing on them.<br />

The analysis for this phase requires the following steps:<br />

1. Review the analysis done in previous phase.<br />

2. Do combination testing.<br />

Step 1: Review the analysis done in previous phase<br />

It is a good idea to review the analysis done in Phase II before proceeding further with<br />

this phase.<br />

Step 2: Do combination testing<br />

Now that we have learned how to choose the best representatives (test cases) from each<br />

equivalence class for each variable, we next have to perform combination testing of all<br />

the identified variables using these best representatives in order to test these variables in<br />

combination.<br />

Why combine, why not test in isolation?<br />

We need to test variables in combination for the simple reason that all<br />

variables will interact as they are part of one functional unit <strong>and</strong> they have<br />

to unite to achieve the duty that the functional unit is designated for.<br />

Hence most of these variables influence each other in some or the other<br />

way.<br />

How to perform combination testing?<br />

Consider an example of a program (a simple GUI) that has 7 variables<br />

with 3, 2, 2, 2, 3, 2 <strong>and</strong> 2 representatives respectively. The number of all<br />

possible test cases is equivalent to 3x2x2x2x3x2x2 = 288 combinations,<br />

which means 288 test cases-one test case corresponding to each<br />

combination!<br />

If the number of test cases is so huge for as few as 7 variables, imagine<br />

what happens in a typical program where there are hundreds of variables.<br />

Yes, combinatorial explosion!<br />

A solution to this problem is ‘All-pairs combination testing’ <strong>and</strong> is<br />

discussed next.<br />

© Sowmya Padmanabhan, 2003<br />

1


What is All-Pairs Combination <strong>Testing</strong>?<br />

All-pairs combination technique ensures that the set of test cases generated with<br />

this technique will include all the pairs of values for every variable. In other<br />

words, every value of a variable is combined with every value of every other<br />

variable at least once. This is known as achieving all-pairs. Doing all-pairs<br />

reduces the number of combinations drastically.<br />

The first step is to select the variables of interest from the pool of variables of the<br />

program or function under test. In all-pairs combination technique, only<br />

independent variables are combined. This is because having dependent variables<br />

may lead to many impossible combinations due to one or more dependency<br />

relationships amongst the variables. Therefore, we need to identify which<br />

variables are independent <strong>and</strong> which are dependent. Test dependent variables<br />

separately <strong>and</strong> use separate combinations that test for specific dependencies. To<br />

determine dependency among variables, follow these steps:<br />

1. Find out what variables are dependent upon on another.<br />

2. Determine the dependency relations of these variables.<br />

3. Identify the critical combination of values for the dependency.<br />

4. Separately list (‘dependency variables combination list’) combinations.<br />

A domain tester might not know all the dependencies during the first test run.<br />

This will depend on how far the tester has explored the product/system (if there is<br />

a product to play with) or to what extent the specification documents, if there are<br />

any, explain the dependencies. As the tester encounters failures s/he might<br />

discover new dependencies <strong>and</strong> then s/he can revise the test suite by adding<br />

additional test case combinations to test for these new found dependencies <strong>and</strong><br />

special cases.<br />

Next, from the short-listed set of independent variables, select the test cases of<br />

interest for each variable. The selection criterion is that only those test cases<br />

should be included which are expected to be processed <strong>and</strong> h<strong>and</strong>led properly by<br />

the program. Hence, error h<strong>and</strong>ling test cases or test cases that the program is<br />

expected to mish<strong>and</strong>le or combinations that are impossible should not be<br />

included. The reason to not have such test cases is that having even one such test<br />

case in a combination in all-pairs table would be wasteful as it would make<br />

existence of other acceptable pairs in the corresponding combination worthless as<br />

these pairs would not even be tested for. Error h<strong>and</strong>ling test cases or test cases<br />

that are expected to be mish<strong>and</strong>led by the program or function should be tested<br />

individually for every variable <strong>and</strong> one might even want to have one or two<br />

separate combinations that have all such error h<strong>and</strong>ing test cases corresponding to<br />

all the variables combined together, in order to test what happens when you<br />

combine multiple faults together.<br />

© Sowmya Padmanabhan, 2003<br />

2


For example, consider a function that has five variables a, b, c, d <strong>and</strong> e. ‘a’ has 3<br />

test cases corresponding to it <strong>and</strong> each of the remaining four have two test cases<br />

each. Let us apply all-pairs combination to this function <strong>and</strong> see how we could<br />

achieve all-pairs, that is, each test case value of each of the five variables is paired<br />

(at least once) with each of the test case values of the remaining four variables.<br />

Let’s assume that all the five variables are useful for all-pairs combination, since<br />

we really don’t have any information about the variables other than the number of<br />

test cases they have. Let us also assume that each of their test cases produces an<br />

acceptable result by the function. Let us give symbolic representations to the test<br />

cases of each of the variables:<br />

Variable Test Cases<br />

a A1, A2, A3<br />

b B1, B2<br />

c C1, C2<br />

d D1, D2<br />

e E1, E2<br />

The following is the result of all-pairs combination:<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1 C1 D1 E1<br />

2. A1 B2 C2 D2 E2<br />

3. A2 B1 C2 D2 E1<br />

4. A2 B2 C1 D1 E2<br />

5. A3 B1 C1 D2 E2<br />

6. A3 B2 C2 D1 E1<br />

If you observe carefully, you will see that every test case of ‘a’ has been paired at<br />

least once with every test case of ‘b’, ‘c’, ‘d’ <strong>and</strong> ‘e’. This holds true for ‘b’, ‘c’,<br />

‘d’ <strong>and</strong> ‘e’ also. Hence, all-pairs of the five variables have been achieved in the<br />

above arrangement. Also, note that the number of combinations needed to arrive<br />

at this all-pairs configuration is six, which is the product of the number of test<br />

cases of ‘a’ <strong>and</strong> ‘b’ (3x2).<br />

In general, if we were to sort the variables in descending order in terms of the<br />

number of representatives (values chosen to be tested) <strong>and</strong> if Max1 <strong>and</strong> Max2 are<br />

the first two in this sorted list (the two highest) then the minimal number of<br />

combinations in all-pairs combination would be (Max1) x (Max2). We might not<br />

be able to fit in all pairs within Max1 x Max2 combinations, in which case,<br />

additional combinations might have to be added.<br />

© Sowmya Padmanabhan, 2003<br />

3


If ‘n’ is the total number of variables then each combination would have n (n-1)/2<br />

pairs. In the above example, this formula gives 5(5-1)/2 = 5x4/2 = 10 pairs in<br />

every combination, which is easily verifiable by looking at the above table. Let us<br />

now look step by step as to how to arrive at this arrangement. The guidelines for<br />

performing all-pairs combination are located in Appendix B: Guidelines for<br />

filling in “all-pairs combination” table.<br />

a. Arrange the variables in descending order of the number of test cases<br />

they have. Call the first two Max1 <strong>and</strong> Max2.<br />

1. ‘a’ (3) – Max1<br />

2. ‘b’ (2) – Max2<br />

3. ‘c’ (2)<br />

4. ‘d’ (2)<br />

5. ‘e’ (2)<br />

In this case, variables ‘b’ through ‘f’ have the same number of test cases;<br />

hence any one of these five could have been called Max2.<br />

Refer guideline numbered 3 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

b. Give symbolic names to the test cases of each of the variables.<br />

Variable Test Cases<br />

a A1, A2, A3<br />

b B1, B2<br />

c C1, C2<br />

d D1, D2<br />

e E1, E2<br />

f F1, F2<br />

Refer guideline numbered 4 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

c. Calculate the minimal number of all-pairs combinations.<br />

No. of test cases (Max1) x No. of test cases (Max2) = 3x2 =6<br />

This is the minimal number of rows you will have in the all-pairs table<br />

plus the extra blank rows after every set. Contrast this with all possible<br />

combinations (3x2x2x2x2x2) = 96<br />

Refer guideline numbered 5 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

© Sowmya Padmanabhan, 2003<br />

4


Step 1:<br />

Step 2:<br />

d. Determine the number of pairs in each combination:<br />

Total number of variables x (Total number of variables – 1) / 2 =<br />

6(6 – 1)/ 2 = 6x5/2 = 15<br />

Refer guideline numbered 7 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

e. Build the all-pairs combination table.<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1<br />

2. A1<br />

3. A2<br />

4. A2<br />

5. A3<br />

6. A3<br />

Refer guidelines numbered 6, 7 <strong>and</strong> 8 in Appendix B: Guidelines for filling<br />

in “all-pairs combination” table<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1<br />

2. A1 B2<br />

3. A2 B1<br />

4. A2 B2<br />

5. A3 B1<br />

6. A3 B2<br />

Refer guideline numbered 9 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

© Sowmya Padmanabhan, 2003<br />

5


Step 3:<br />

Step 4:<br />

Step 5:<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1 C1<br />

2. A1 B2 C2<br />

3. A2 B1 C2<br />

4. A2 B2 C1<br />

5. A3 B1 C1<br />

6. A3 B2 C2<br />

Refer guidelines numbered 10 <strong>and</strong> 11 in Appendix B: Guidelines for filling<br />

in “all-pairs combination” table<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1 C1 D1<br />

2. A1 B2 C2 D2<br />

3. A2 B1 C2 D2<br />

4. A2 B2 C1 D1<br />

5. A3 B1 C1 D2<br />

6. A3 B2 C2 D1<br />

Refer guideline numbered 12 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

Let us try ordering the test cases of variable ‘e’ in the same manner as we did for variable<br />

‘d’ since it worked for ‘d’ <strong>and</strong> see if this ordering works for variable ‘e’ also.<br />

© Sowmya Padmanabhan, 2003<br />

6


Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1 C1 D1 E1<br />

2. A1 B2 C2 D2 E2<br />

3. A2 B1 C2 D2 E2<br />

4. A2 B2 C1 D1 E1<br />

5. A3 B1 C1 D2 E2<br />

6. A3 B2 C2 D1 E1<br />

Refer guideline numbered 12 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

We observe that the sequence of test cases of variable ‘e’ in e’s column yields the<br />

following results:<br />

• each test case of variable ‘e’ is paired with each test case of variables a, b <strong>and</strong><br />

c.<br />

• each test case of variable ‘e’ is NOT paired with each test case of variable d.<br />

For instance, D1 is paired with only E1 <strong>and</strong> D2 is paired with only E2 in all<br />

the three sets.<br />

Step 6:<br />

Backtracking:<br />

• Erase the third set of variable ‘e’ since the choice of ordering was based on the<br />

ordering of the previous set.<br />

• Let us swap the ordering in set two for variable ‘e’, from E2 followed by E1 to E1<br />

followed by E2 <strong>and</strong> see if this does any good.<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1 C1 D1 E1<br />

2. A1 B2 C2 D2 E2<br />

3. A2 B1 C2 D2 E1<br />

4. A2 B2 C1 D1 E2<br />

5. A3 B1 C1 D2<br />

6. A3 B2 C2 D1<br />

• Let us now have E2 followed by E1 for the third set of variable ‘e’.<br />

© Sowmya Padmanabhan, 2003<br />

7


Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2)<br />

1. A1 B1 C1 D1 E1<br />

2. A1 B2 C2 D2 E2<br />

3. A2 B1 C2 D2 E1<br />

4. A2 B2 C1 D1 E2<br />

5. A3 B1 C1 D2 E2<br />

6. A3 B2 C2 D1 E1<br />

• The above backtracking <strong>and</strong> refilling worked!<br />

Refer guideline numbered 12 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

Now, let us say we have to add an additional variable ‘f’ having two test cases, say<br />

F1 <strong>and</strong> F2. Let us see if we can fit in the test cases of this sixth variable in the allpairs<br />

combination table <strong>and</strong> achieve all-pairs.<br />

Step 7:<br />

Let us first try the ordering sequence of variable ‘d’ for variable ‘f’.<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2) f(2)<br />

1. A1 B1 C1 D1 E1 F1<br />

2. A1 B2 C2 D2 E2 F2<br />

3. A2 B1 C2 D2 E1 F2<br />

4. A2 B2 C1 D1 E2 F1<br />

5. A3 B1 C1 D2 E2 F2<br />

6. A3 B2 C2 D1 E1 F1<br />

We observe that the sequence of test cases of variable ‘f’ in f’s column yields the<br />

following results:<br />

• each test case of variable ‘f’ is paired with each test case of variables e, c, b<br />

<strong>and</strong> a.<br />

• each test case of variable ‘f’ is NOT paired with each test case of variable d.<br />

For instance, F1 is paired with only D1 <strong>and</strong> F2 is paired with only D2 in all<br />

the three sets. This problem is identical to the problem we encountered before.<br />

Let try to counter attack this problem with the solution we used before.<br />

© Sowmya Padmanabhan, 2003<br />

8


Step 8:<br />

Backtracking:<br />

• Erase the third set of variable ‘f’ since the choice of ordering was based on the<br />

ordering of the previous set.<br />

• Let us swap the ordering in set two for variable ‘f’, from F2 followed by F1 to F1<br />

followed by F2 <strong>and</strong> see if this does any good.<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2) f(2)<br />

1. A1 B1 C1 D1 E1 F1<br />

2. A1 B2 C2 D2 E2 F2<br />

3. A2 B1 C2 D2 E1 F1<br />

4. A2 B2 C1 D1 E2 F2<br />

5. A3 B1 C1 D2 E2<br />

6. A3 B2 C2 D1 E1<br />

• Let us now have F2 followed by F1 for the third set of variable ‘f’.<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2) f(2)<br />

1. A1 B1 C1 D1 E1 F1<br />

2. A1 B2 C2 D2 E2 F2<br />

3. A2 B1 C2 D2 E1 F1<br />

4. A2 B2 C1 D1 E2 F2<br />

5. A3 B1 C1 D2 E2 F2<br />

6. A3 B2 C2 D1 E1 F1<br />

• This arrangement does not work either since now F1 is paired with only E1 <strong>and</strong><br />

F2 is paired with only E2.<br />

• In fact, no matter what ordering you try you just can’t fit in all-pairs in these six<br />

test cases or combinations.<br />

Refer guideline numbered 12 in Appendix B: Guidelines for filling in “allpairs<br />

combination” table<br />

© Sowmya Padmanabhan, 2003<br />

9


Step 9:<br />

• The only two pairs missing are F1 paired with E2 <strong>and</strong> F2 paired with E1. Hence,<br />

let us just add two additional combinations that contain these pairs in the available<br />

blank rows.<br />

Test<br />

case#<br />

a(3) b(2) c(2) d(2) e(2) f(2)<br />

1. A1 B1 C1 D1 E1 F1<br />

2. A1 B2 C2 D2 E2 F2<br />

3. E1 F2<br />

4. A2 B1 C2 D2 E1 F1<br />

5. A2 B2 C1 D1 E2 F2<br />

6. E2 F1<br />

7. A3 B1 C1 D2 E2 F2<br />

8. A3 B2 C2 D1 E1 F1<br />

© Sowmya Padmanabhan, 2003<br />

10


Appendix C: Reference Material# 3 for <strong>Domain</strong><br />

<strong>Testing</strong> Training (Reference Material 3: Combination<br />

<strong>Testing</strong> in Training Material)


Appendix D: Equivalence Class Analysis Heuristics 1<br />

Heuristic 1: Range of values<br />

� If (min_value max_value) is the given range for a numeric input<br />

variable/field then there are usually 4 equivalence classes:<br />

• min_value


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Variable Equivalence<br />

classes<br />

x<br />

Exclusive ranges (Open-ended):<br />

Consider a variable ‘y’ which can take values only between the range v1 to v2, the end<br />

points being exclusive.<br />

Analysis:<br />

Step 1: Represent this variable as a mathematical range expression.<br />

v1 < y < v2<br />

Test case<br />

(Best<br />

representatives)<br />

Step 2: Identify the risks associated with this variable.<br />

• Failure to process values between v1+1 <strong>and</strong> v2-1 correctly<br />

• Mish<strong>and</strong>ling of values below v1+1<br />

• Mish<strong>and</strong>ling of values above v2-1<br />

Step 3: Determine the input domain for this variable<br />

The input domain is the set of all possible values that can ever be inputted to the<br />

variable ‘y’.<br />

Step 4: Partition the input domain based on the identified risks.<br />

The following is the corresponding equivalence class table for this example:<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

v1 -- v2 v1, v2 1) Failure to process values between v1<br />

<strong>and</strong> v2 correctly<br />

2) Mish<strong>and</strong>ling higher <strong>and</strong> lower<br />

boundary values.<br />

< v1 v1–1 1) Mish<strong>and</strong>ling of values below v1<br />

2) Mish<strong>and</strong>ling of values just beneath the<br />

lower boundary.<br />

> v2 v2+1 1) Mish<strong>and</strong>ling of values above v2<br />

2) Mish<strong>and</strong>ling of values just above the<br />

upper boundary.<br />

2


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Variable Equivalence<br />

classes<br />

y<br />

Test case<br />

(Best<br />

representatives)<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

v1+1 -- v2-1 v1+1, v2-1 1) Failure to process values between<br />

v1+1 <strong>and</strong> v2-1 correctly<br />

2) Mish<strong>and</strong>ling higher <strong>and</strong> lower<br />

boundary values.<br />

< v1+1 v1 1) Mish<strong>and</strong>ling of values below<br />

v1+1<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath the lower boundary.<br />

> v2-1 v2 1) Mish<strong>and</strong>ling of values above v2-1<br />

2) Mish<strong>and</strong>ling of values just above<br />

the upper boundary.<br />

3


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Heuristic 2: Membership in a group<br />

Analysis:<br />

� One equivalence class would consist of all the members of the group. Another<br />

equivalence class would consist of all the other groups. If there is no natural<br />

ordering within the group then any member can be chosen to be the best<br />

representative or test case.<br />

� If you have a basis to believe that there could be error with respect to the<br />

group, identify equivalence classes based on this error.<br />

Step 1: Identify the risks associated with this variable.<br />

• Failure to process the members of the group correctly<br />

• Mish<strong>and</strong>ling of non-members<br />

Step 2: Determine the input domain<br />

The input domain is the set of all possible groups <strong>and</strong> their corresponding<br />

members.<br />

Step 3: Partition the input domain based on the identified risks.<br />

The following is the corresponding equivalence class table for this example:<br />

Variable Equivalence<br />

classes<br />

Group<br />

All members of<br />

the group<br />

Test case<br />

(Best<br />

representatives)<br />

All other groups Any element of<br />

any group<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

Any member 1) Failure to process the<br />

members of the group correctly.<br />

1) Mish<strong>and</strong>ling of non-members<br />

4


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Heuristic 3: Enumerated field<br />

Analysis:<br />

� Such variables usually are fields representing menus, drop-down combo<br />

boxes, lists or radio buttons or any form of fixed number of available choices.<br />

Such values are enumerated values (set of options/choices) <strong>and</strong> the<br />

corresponding variable is called a enumerated variable.<br />

� Every option is an equivalence class in its own right since each option has the<br />

program/function respond differently. Depending on the time available, you<br />

would either test for all options or would r<strong>and</strong>omly pick some options for test.<br />

� Look for a grouping strategy within the list of options, if you can find one,<br />

then form partitions (sub-domains) <strong>and</strong> select a test case from each partition.<br />

Step 1: Identify the risks associated with this variable.<br />

• Failure to process each of the values in the enumerated set correctly<br />

• Mish<strong>and</strong>ling of values outside the enumerated set.<br />

Step 2: Determine the input domain<br />

The input domain is the set of values that can ever be inputted to the enumerated<br />

field.<br />

Step 3: Partition the input domain based on the identified risks.<br />

The following is the corresponding equivalence class table for this example:<br />

© Sowmya Padmanabhan, 2003<br />

5


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Variable Equivalence<br />

classes<br />

Enumerated<br />

field<br />

All cases with<br />

option 1<br />

selected<br />

All cases with<br />

option 2<br />

selected<br />

Test case<br />

(Best<br />

representatives)<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

Option 1 1) Failure to process option 1<br />

correctly.<br />

Option 2 1) Failure to process option 2<br />

correctly.<br />

… … … …<br />

All cases with<br />

option n<br />

selected<br />

All cases with<br />

a value other<br />

than the listed<br />

options,<br />

selected for<br />

the variable<br />

Option n 1) Failure to process option n<br />

correctly.<br />

Any value not<br />

present in the<br />

enumerated list<br />

1) Mish<strong>and</strong>ling of values<br />

outside the enumerated list of<br />

values.<br />

6


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Heuristic 4: Variables that have to be equal<br />

� Consider two variables ‘a’ <strong>and</strong> ‘b’. We know that at some point in the<br />

processing of the function to which they belong, value in ‘a’ is the value in<br />

‘b’. Manipulate ‘b’ to see what you can do to ‘a’.<br />

Analysis:<br />

Step 1: Identify the risks associated with this variable.<br />

• Failure to process identical values of ‘a’ <strong>and</strong> ‘b’ correctly<br />

• Mish<strong>and</strong>ling of non-identical values<br />

• Mish<strong>and</strong>ling of identical values but of data types other than what the<br />

values should be of.<br />

Step 2: Determine the input domain<br />

The input domain is the set of all possible ‘a’ <strong>and</strong> ‘b’ value pairs.<br />

Step 3: Partition the input domain based on the identified risks.<br />

The following is the corresponding equivalence class table for this example:<br />

© Sowmya Padmanabhan, 2003<br />

7


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Variable Equivalence<br />

classes<br />

‘a’ <strong>and</strong><br />

‘b’<br />

All cases when<br />

values of ‘a’ <strong>and</strong><br />

‘b’ are identical<br />

All cases of<br />

values of ‘a’ <strong>and</strong><br />

‘b’ are not<br />

identical<br />

Values in ‘a’ <strong>and</strong><br />

‘b’ are identical<br />

but the values<br />

are of some<br />

other data type.<br />

Test case<br />

(Best<br />

representatives)<br />

One case in<br />

which both are<br />

equal.<br />

One case in<br />

which they are<br />

not identical. Say,<br />

‘a’ <strong>and</strong> ‘b’ have<br />

to be both equal<br />

to 10 <strong>and</strong> the<br />

precision is 4<br />

decimal places<br />

after the decimal<br />

point then choose<br />

the following test<br />

case:<br />

Value of ‘a’ is<br />

9.9999 <strong>and</strong> ‘b’ is<br />

10 (they are<br />

almost equal, but<br />

not exactly equal)<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

1) Failure to process<br />

identical values of ‘a’<br />

<strong>and</strong> ‘b’ correctly.<br />

1) Mish<strong>and</strong>ling of<br />

non-identical<br />

values of ‘a’ <strong>and</strong> ‘b<br />

correctly.<br />

2) Mish<strong>and</strong>ling of<br />

boundary value.<br />

3) Mish<strong>and</strong>ling of<br />

precision of<br />

floating point<br />

variables.<br />

‘xyz’ <strong>and</strong> ‘xyz’ 1) Mish<strong>and</strong>ling of<br />

values of ‘a’ <strong>and</strong><br />

‘b’ that are<br />

identical but not of<br />

the data type that<br />

they are supposed<br />

to be of.<br />

8


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Heuristic 5: Time-determined tasks<br />

� Let’s say our variable is a task that is time-determined. Then we have an<br />

equivalence class for each of the following:<br />

o Task completed before the required time-limit<br />

o Task completed at exactly the required time-limit<br />

o Task completed after the required time-limit<br />

Analysis:<br />

Step 1: Identify the risks associated with this variable.<br />

• Failure to process tasks correctly that are completed within the timelimit.<br />

• Mish<strong>and</strong>ling of tasks completed after the time-limit<br />

Step 2: Determine the input domain<br />

The input domain is the set of all possible times taken by the task.<br />

Step 3: Partition the input domain based on the identified risks.<br />

The following is the corresponding equivalence class table for this example:<br />

© Sowmya Padmanabhan, 2003<br />

9


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Variable Equivalence<br />

classes<br />

‘timedependent<br />

variable’<br />

All tasks<br />

completed<br />

within the timelimit<br />

All tasks<br />

completed after<br />

the time-limit.<br />

Test case<br />

(Best<br />

representatives)<br />

Tasks completed<br />

after the timelimit<br />

<strong>and</strong> exactly<br />

at the time-limit.<br />

time-limit - 1,<br />

time-limit.<br />

Time-limit+1<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

1) Failure to process<br />

tasks that are<br />

completed within<br />

<strong>and</strong> exactly at the<br />

defined time-limit.<br />

2) Mish<strong>and</strong>ling of<br />

boundary values.<br />

1) Mish<strong>and</strong>ling of<br />

tasks completed<br />

after the defined<br />

time-limit.<br />

2) Mish<strong>and</strong>ling of<br />

value just beyond<br />

the boundary.<br />

10


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Heuristic 6: Look for variable groups that must calculate to a certain value or range<br />

� Consider ‘i1’ <strong>and</strong> ‘i2’ are input variables to a function <strong>and</strong> o is the output<br />

variable such that the value of ‘o’ can lie only in the range of v1 <strong>and</strong> v2. In<br />

such cases you would test the output variable ‘o’ in terms of the input<br />

variables.<br />

Analysis:<br />

Step 1: Represent this variable as a mathematical range expression.<br />

v1


Appendix A: Equivalence Class Analysis Heuristics (continued)<br />

Variable Equivalence<br />

classes<br />

‘o’<br />

All<br />

combinations<br />

of values of<br />

input<br />

variables v1<br />

<strong>and</strong> v2 that<br />

result in the<br />

output<br />

variable’s<br />

value to be<br />

within the<br />

range of v1<br />

<strong>and</strong> v2<br />

All<br />

combinations<br />

of values of<br />

input<br />

variables v1<br />

<strong>and</strong> v2 that<br />

result in the<br />

output<br />

variable’s<br />

value to be<br />

less than v1<br />

All<br />

combinations<br />

of values of<br />

input<br />

variables v1<br />

<strong>and</strong> v2 that<br />

result in the<br />

output<br />

variable’s<br />

value to be<br />

greater than<br />

v2<br />

Test case<br />

(Best<br />

representatives)<br />

1) A combination<br />

of values of input<br />

variables v1 <strong>and</strong><br />

v2 that result in<br />

the output<br />

variable’s value<br />

to be v1.<br />

2) A combination<br />

of values of input<br />

variables v1 <strong>and</strong><br />

v2 that result in<br />

the output<br />

variable’s value<br />

to be v2.<br />

A combination of<br />

values of input<br />

variables v1 <strong>and</strong><br />

v2 that result in<br />

the output<br />

variable’s value<br />

to be v1-1.<br />

A combination of<br />

values of input<br />

variables v1 <strong>and</strong><br />

v2 that result in<br />

the output<br />

variable’s value<br />

to be v2+1.<br />

© Sowmya Padmanabhan, 2003<br />

Risk Notes<br />

1) Failure to process values<br />

between v1 <strong>and</strong> v2 correctly.<br />

2) Mish<strong>and</strong>ling higher <strong>and</strong> lower<br />

boundary values.<br />

1) Mish<strong>and</strong>ling of values below<br />

v1.<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath the lower boundary.<br />

1) Mish<strong>and</strong>ling of values above<br />

v2<br />

2) Mish<strong>and</strong>ling of values just<br />

above the upper boundary.<br />

12


Appendix E: Guidelines for All-Pairs Combination<br />

(Appendix B: Guidelines for Filling in “All-Pairs<br />

Combination” Table in Training Material)


Appendix E: Guidelines for Filling in “All-Pairs Combination” Table 1<br />

1. Select the variables that you want to combine using all-pairs combination<br />

technique. Only independent variables should be combined using all-pairs<br />

technique. Do not include dependent variables because when such variables are<br />

combined with the remaining variables using all-pairs combination technique will<br />

lead to many impossible combinations due to one or more dependency<br />

relationships amongst the variables. Test dependent variables separately <strong>and</strong> use<br />

separate combinations that test for specific dependencies.<br />

2. For each independent variable, decide which test cases would be interesting <strong>and</strong><br />

useful enough to be included in all-pairs combination. Typically such test cases<br />

are the ones, which when tested individually, the program is expected to give a<br />

reasonably acceptable outcome or in other words the program is expected to<br />

process or h<strong>and</strong>le them correctly. Test cases that were included in the equivalence<br />

class analysis table intentionally to see how the program mish<strong>and</strong>les them, also<br />

called error h<strong>and</strong>ling test cases, are not good choices for all-pairs combination.<br />

This is because including such test cases will render other acceptable pairs in the<br />

corresponding combination(s) in all-pairs table useless. Error h<strong>and</strong>ling cases<br />

should be tested separately <strong>and</strong> if required one might combine error h<strong>and</strong>ling test<br />

cases of multiple variables together to see how the program h<strong>and</strong>les multiple<br />

faults at the same time.<br />

3. Sort the independent variables in the descending order of the number of<br />

corresponding representatives or test cases chosen. Get the first two in the sorted<br />

list <strong>and</strong> assign the number of test case values they have to Max 1 <strong>and</strong> Max 2<br />

respectively.<br />

4. Give symbolic names to test cases of each variable. For example, represent the<br />

test cases of a variable ‘x’ as X1, X2…Xn<br />

5. No. of rows in your table will be (Max 1 x Max 2), which is the minimal number<br />

of combinations you will have with all-pairs technique. The total no. of rows will<br />

also include blank rows in between which will be in addition to the number of<br />

rows corresponding to combinations of test cases (Max1 x Max2). We might not<br />

be able to fit in all pairs of all variables in this minimal number of combinations,<br />

in which case, additional combinations might have to be added (more on this in<br />

step 12). For now, let us work with Max1 x Max2 being the number of<br />

combinations.<br />

6. No. of columns = total number of variables + 1 (to hold the test case number).<br />

“Test case#” goes in the cell in first row <strong>and</strong> first column.<br />

1<br />

These guidelines were adapted from “Lessons Learned in Software <strong>Testing</strong>” by Kaner, Bach <strong>and</strong><br />

Pettichord.<br />

© Sowmya Padmanabhan, 2003<br />

1


Appendix B: Guidelines for filling in “all-pairs combination”<br />

table (continued)<br />

7. The first row has the variable names (with the one with max test cases first <strong>and</strong><br />

the one with min test cases last). Each succeeding row (except blank rows) will<br />

contain a combination that addresses “total (total-1)/2” pairs where ‘total’ = total<br />

number of variables.<br />

8. We begin filling the table by filling in the column corresponding to first variable<br />

first. To do that, follow the following steps:<br />

a. Repeat the first test case value of the first variable as many times as is the<br />

value of Max 2 (number of test case values of second variable) in the first<br />

column. Call this set 1.<br />

b. Leave a blank row after the set in case you need to add extra test cases<br />

later.<br />

c. Similarly, repeat the second test case value of the first variable as many<br />

times as is the value of Max 2 in the first column starting from the row<br />

that is after the blank row succeeding the first set. Now you have set 2.<br />

d. Do the above with the remaining test case values of first variable. Leave a<br />

blank row after every set so that incase you need to add an extra test case<br />

here, you wouldn’t have to shift the rows up <strong>and</strong> down. By doing the<br />

above you will have filled in column corresponding to the first variable<br />

completely. Now, we have as many sets as the value of Max 1 is. You just<br />

now have to deal with the other variables. Please note that number of rows<br />

keep increasing progressively as you add blank rows. Make sure you don’t<br />

number the blank rows.<br />

9. The heuristic of filling in test case values of second variable (values in cells<br />

corresponding to second column) is to list the test case values of the second<br />

variable one after the other starting from value 1 <strong>and</strong> ending at last value in the<br />

column corresponding to second variable. By doing this for every set, you<br />

eventually will fill the column corresponding to the second variable completely.<br />

10. If there is a third variable then for the first set in the column corresponding to the<br />

third variable, list the test cases in the order, that is, first test case followed by the<br />

second, so on <strong>and</strong> so forth until you reach the last test case. If the number of test<br />

cases of the third variable is less than the number of test cases of the second then<br />

you will have at least one cell in the set that remains unfilled by the procedure<br />

described above. In such an event, just repeat the sequence of the set again until<br />

you have filled all cells in the set.<br />

11. By now, you will have filled in all the cells belonging to set 1 of the third<br />

variable. Now, start changing the order of the values for every successive set for<br />

the third variable. One way to do this is to imagine that the values are connected<br />

© Sowmya Padmanabhan, 2003<br />

2


Appendix B: Guidelines for filling in “all-pairs combination”<br />

table (continued)<br />

in a circular list. For the first set you enumerated the values starting from first <strong>and</strong><br />

then second until finally you reach the first (which you just skip). Now, for the<br />

next set start at the second value followed by the third value <strong>and</strong> so on <strong>and</strong> so<br />

forth. By doing so, you will completely fill the column corresponding to the third<br />

variable. The above described procedure for filling in columns corresponding to<br />

first, second <strong>and</strong> third variable ensures that all-pairs has been achieved for the first<br />

three variables.<br />

12. For each variable after the third one, if there is any, for every set, you have to<br />

order the test case values corresponding to the variable such that the final ordering<br />

of all sets corresponding to the variable, results in each value of the variable being<br />

paired with each value of every preceding variable. It might be required to<br />

backtrack if the current ordering makes it impossible to achieve the above<br />

mentioned end result. If, no matter what ordering you try <strong>and</strong> no matter how much<br />

you try to backtrack <strong>and</strong> redo the things, the end result (all-pairs) in not achieved<br />

then additional combinations might have to be added. Also note that it is possible<br />

that there is multiple occurrence of a pair of values of two variables since all-pairs<br />

technique only ensures that every value of a variable is combined with every<br />

value of every other variable at least once not only once but the former is the<br />

minimal requirement.<br />

© Sowmya Padmanabhan, 2003<br />

3


Appendix F: Day 1 Lecture (Introduction to <strong>Domain</strong><br />

<strong>Testing</strong> in Training Material)


Introduction to <strong>Domain</strong><br />

<strong>Testing</strong><br />

Sowmya Padmanabhan


Why do we need to test software?<br />

To find bugs. No matter how meticulously<br />

<strong>and</strong> carefully the underlying code of a<br />

software has been written, it will have bugs.<br />

To ensure that the software complies with<br />

it’s specifications.<br />

To ensure that the software does what is<br />

reasonably expected out of it.<br />

To ensure delivery of a quality product.<br />

© Sowmya Padmanabhan, 2003 2


Let’s test a simple program<br />

Here is a simple example from the paper on<br />

‘An approach to Program <strong>Testing</strong>’ by J. C.<br />

Huang:<br />

© Sowmya Padmanabhan, 2003 3


Analysis<br />

To assert that the output value Z assumes the<br />

correct value for all input values of X <strong>and</strong> Y, we<br />

have to test all possible assignment values of X<br />

<strong>and</strong> Y.<br />

Suppose that X <strong>and</strong> Y take integer values <strong>and</strong> the<br />

program is tested on a computer whose word size<br />

is 32 bits.<br />

What is the maximum integer value that the<br />

program can take?<br />

© Sowmya Padmanabhan, 2003 4


Analysis<br />

Maximum integer value that X or Y can<br />

take is 2 32<br />

Since the combination of X <strong>and</strong> Y yields Z,<br />

we have to test X <strong>and</strong> Y in combination.<br />

What is the total number of possible<br />

combinations of X <strong>and</strong> Y?<br />

© Sowmya Padmanabhan, 2003 5


Analysis<br />

The total possible combinations for X <strong>and</strong> Y<br />

is 2 32 x 2 32<br />

Do you know how long it will take to test for<br />

2 32 x 2 32 input combinations for X <strong>and</strong> Y?<br />

© Sowmya Padmanabhan, 2003 6


Analysis<br />

If we assume that the program takes about a<br />

millisecond to execute once, we will need more<br />

than 50 billion years to completely test this<br />

program!<br />

If testing a program as simple as this can lead to<br />

combinatorial explosion <strong>and</strong> make testing seem<br />

impossible, imagine what happens with normal<br />

commercial programs with hundreds of variables?<br />

© Sowmya Padmanabhan, 2003 7


What is <strong>Domain</strong> <strong>Testing</strong>?<br />

<strong>Domain</strong> testing is:<br />

one of several software testing techniques<br />

designed to help you find bugs in programs.<br />

a systematic approach for reducing an enormous<br />

test data set to few manageable test data subsets,<br />

<strong>and</strong> further reducing each of these sub-sets to few<br />

best representatives (best test cases).<br />

a proven way to manage risk <strong>and</strong> reduce the<br />

testing effort (time, money, labor, other<br />

resources).<br />

© Sowmya Padmanabhan, 2003 8


<strong>Domain</strong> testing-Terminology<br />

<strong>Domain</strong> <strong>Testing</strong>: a technique to systematically reduce<br />

the set of all possible values to few manageable subsets.<br />

In domain testing, we partition an input domain<br />

into equivalence classes <strong>and</strong> choose few test cases from<br />

each class.<br />

Input <strong>Domain</strong>: set of all possible values that can be<br />

ever inputted to an input variable.<br />

Partitioning: dividing a set into non-overlapping<br />

subsets, usually on the basis of some major property or<br />

characteristic.<br />

Equivalence Class: All members of an equivalence<br />

class are equivalent with respect to some risk, but the<br />

classification could be imperfect. This analysis is called<br />

equivalence class analysis.<br />

© Sowmya Padmanabhan, 2003 9


<strong>Domain</strong> testing-Terminology<br />

Boundary value analysis: This analysis helps<br />

us in selecting one or more best representatives<br />

from each equivalence class. These are values on<br />

the boundary <strong>and</strong> values just beyond the<br />

boundary values. The best representatives are<br />

the test cases.<br />

In domain testing, we partition an input<br />

domain into equivalence classes <strong>and</strong> choose a<br />

few test cases (typically boundaries) from each<br />

class.<br />

© Sowmya Padmanabhan, 2003 10


<strong>Domain</strong> testing-Terminology<br />

Risk: It is an assertion about how a program could<br />

fail.<br />

Test case: A test case is a combination of values<br />

of input variables of a program that is used to test<br />

the program against one or more risks.<br />

When considering one variable, every value that<br />

you would test the variable for, is a test case for<br />

that variable.<br />

© Sowmya Padmanabhan, 2003 11


Summary<br />

Our goal is to not only do effective testing<br />

but to reduce the testing effort, which<br />

includes cost, labor, time, etc…<br />

We will learn how domain testing can help<br />

us in achieving this goal.<br />

© Sowmya Padmanabhan, 2003 12


Appendix G: Day 2 Lecture (Day 2 Lecture in<br />

Training Material)


Session 2: <strong>Domain</strong> <strong>Testing</strong><br />

Sowmya Padmanabhan<br />

© Sowmya Padmanabhan, 2003<br />

1


<strong>Testing</strong> Numeric fields<br />

� We encounter numeric fields everyday everywhere.<br />

� Money, Bank account number, Credit card number,<br />

Student ID number, Number of hours you work in<br />

a week, Salary, Pay rate, Number of computers<br />

you own, Number of courses you have taken, Your<br />

bank balance, Number of calories consumed in a<br />

day, Number of bugs reported, Number of<br />

reservations, Time frame within which a satellite<br />

should be launched, Time to finish a project, so on<br />

<strong>and</strong> so forth are all examples of numeric fields.<br />

© Sowmya Padmanabhan, 2003<br />

2


<strong>Testing</strong> Integer fields<br />

� Example 1:<br />

An integer field/variable ‘x’ can take<br />

values in the range –99 <strong>and</strong> 99, the<br />

end-points being inclusive.<br />

Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary<br />

value analysis on this variable.<br />

© Sowmya Padmanabhan, 2003<br />

3


<strong>Testing</strong> Integer fields<br />

Example 1<br />

� Step 1:<br />

Represent this variable as a<br />

mathematical range expression.<br />

© Sowmya Padmanabhan, 2003<br />

4


<strong>Testing</strong> Integer fields<br />

Example 1<br />

� -99


<strong>Testing</strong> Integer fields<br />

Example 1<br />

� Step 2:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

6


<strong>Testing</strong> Integer fields<br />

Example 1<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the variable ‘x’.<br />

© Sowmya Padmanabhan, 2003<br />

7


<strong>Testing</strong> Integer fields<br />

Example 1<br />

� Step 3:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

8


<strong>Testing</strong> Integer fields<br />

Example 1<br />

� Failure to process values between –99<br />

<strong>and</strong> 99 correctly<br />

� Mish<strong>and</strong>ling of values less than –99<br />

� Mish<strong>and</strong>ling of values greater than 99<br />

There are other risks that we will consider later, but the ones<br />

listed here are the ones most often considered in domain<br />

testing.<br />

© Sowmya Padmanabhan, 2003<br />

9


<strong>Testing</strong> Integer fields<br />

Example 1<br />

Step 4:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

10


Variable(s) Equivalence<br />

Class(es)<br />

‘x’ All values from<br />

–99 to 99<br />

All values less<br />

than -99<br />

All values<br />

greater than 99<br />

Test cases Risks Notes<br />

-99, 99 1) Failure to<br />

process values<br />

between –99<br />

<strong>and</strong> 99<br />

correctly.<br />

2) Mish<strong>and</strong>ling<br />

of lower <strong>and</strong><br />

upper boundary<br />

values.<br />

-100 1) Mish<strong>and</strong>ling<br />

of values less<br />

than –99.<br />

2) Mish<strong>and</strong>ling<br />

of value just<br />

beneath the<br />

lower<br />

boundary.<br />

100 1) Mish<strong>and</strong>ling<br />

of values<br />

greater than 99.<br />

2) Mish<strong>and</strong>ling<br />

of value just<br />

beyond the<br />

upper<br />

boundary.


<strong>Testing</strong> Floating-point fields<br />

� Example 2:<br />

A floating-point field/variable ‘m’ can<br />

take values only between –14.09 <strong>and</strong><br />

99.99, excluding 99.99.<br />

Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary<br />

value analysis on this variable.<br />

© Sowmya Padmanabhan, 2003<br />

11


<strong>Testing</strong> Integer fields<br />

Example 2<br />

� Step 1:<br />

Represent this variable as a<br />

mathematical range expression.<br />

© Sowmya Padmanabhan, 2003<br />

12


<strong>Testing</strong> Integer fields<br />

Example 2<br />

� -14.09


<strong>Testing</strong> Integer fields<br />

Example 2<br />

� Step 2:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

14


<strong>Testing</strong> Integer fields<br />

Example 2<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the variable ‘m’.<br />

© Sowmya Padmanabhan, 2003<br />

15


<strong>Testing</strong> Integer fields<br />

Example 2<br />

� Step 3:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

16


<strong>Testing</strong> Integer fields<br />

Example 2<br />

� Failure to process values between<br />

–14.09 <strong>and</strong> 99.98 correctly<br />

� Mish<strong>and</strong>ling of values less than<br />

–14.09<br />

� Mish<strong>and</strong>ling of values greater than<br />

99.98<br />

There are other risks that we will consider later, but the ones<br />

listed here are the ones most often considered in domain<br />

testing.<br />

© Sowmya Padmanabhan, 2003<br />

17


<strong>Testing</strong> Integer fields<br />

Example 2<br />

Step 4:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

18


Variable(s) Equivalence<br />

Class(es)<br />

‘m’ All values from<br />

–14.09 to 99.98<br />

All values less<br />

than –14.09<br />

All values<br />

greater than<br />

99.98<br />

Test cases Risks Notes<br />

-14.09, 99.98 1) Failure to<br />

process values<br />

between –14.09<br />

<strong>and</strong> 99.98<br />

correctly.<br />

2) Mish<strong>and</strong>ling<br />

of lower <strong>and</strong><br />

upper boundary<br />

values.<br />

-14.08 1) Mish<strong>and</strong>ling<br />

of values less<br />

than –14.09.<br />

2) Mish<strong>and</strong>ling<br />

of value just<br />

beneath the<br />

lower<br />

boundary.<br />

99.99 1) Mish<strong>and</strong>ling<br />

of values<br />

greater than<br />

99.99.<br />

2) Mish<strong>and</strong>ling<br />

of value just<br />

beyond the<br />

upper<br />

boundary.


© Sowmya Padmanabhan, 2003<br />

19


Word Problems<br />

� Real world problems are rarely explicitly specified as<br />

the problem descriptions for Examples <strong>and</strong> Exercises<br />

1 <strong>and</strong> 2.<br />

� Real world problems present a scenario in natural<br />

language <strong>and</strong> it is our job to extract relevant<br />

information from it <strong>and</strong> translate that to symbolic<br />

information <strong>and</strong> apply the skills <strong>and</strong> knowledge we<br />

have to this symbolic information.<br />

� In mathematics, we attempt to bridge the gap<br />

between academic examples <strong>and</strong> real-world problems<br />

with word problems.<br />

© Sowmya Padmanabhan, 2003<br />

20


Word Problems<br />

� Example 3:<br />

SunTrust issues Visa credit cards with credit limits in<br />

the range of $400 to $40000. A customer is not to be<br />

approved for credit limits outside this range. A<br />

customer can apply for the card using an online<br />

application form in which one of the fields requires<br />

that the customer type in his/her desired credit limit.<br />

What variables could be involved in analysis of this<br />

group of facts? What variable do we know enough<br />

about to perform equivalence class analysis <strong>and</strong> then<br />

a boundary value analysis? Develop a series of tests<br />

by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis on this variable. Assume<br />

integer values.<br />

© Sowmya Padmanabhan, 2003<br />

21


Word Problems<br />

Example 3<br />

� Step 1:<br />

What variables could be involved<br />

in analysis of this group of facts?<br />

© Sowmya Padmanabhan, 2003<br />

22


Word Problems<br />

Example 3<br />

� Credit card, credit card number, credit<br />

limit, customer.<br />

© Sowmya Padmanabhan, 2003<br />

23


Word Problems<br />

Example 3<br />

� Step 2:<br />

What variable do we know<br />

enough about to perform<br />

equivalence class analysis <strong>and</strong><br />

then a boundary value analysis?<br />

© Sowmya Padmanabhan, 2003<br />

24


Word Problems<br />

Example 3<br />

� ‘credit-limit’<br />

© Sowmya Padmanabhan, 2003<br />

25


Word Problems<br />

Example 3<br />

� Step 3:<br />

Represent this variable as a<br />

mathematical range expression.<br />

© Sowmya Padmanabhan, 2003<br />

26


Word Problems<br />

Example 3<br />

� $400


Word Problems<br />

Example 3<br />

� Step 4:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

28


Word Problems<br />

Example 3<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the variable ‘credit-limit’.<br />

© Sowmya Padmanabhan, 2003<br />

29


Word Problems<br />

Example 3<br />

� Step 5:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

30


Word Problems<br />

Example 3<br />

� Failure to process credit limit requests<br />

between $400 <strong>and</strong> $40000 correctly<br />

� Failure to disapprove credit limit requests less<br />

than $400<br />

� Failure to disapprove credit limit requests<br />

greater than $40000<br />

� Mish<strong>and</strong>ling of negative credit limit requests<br />

There are other risks that we will consider later, but the ones<br />

listed here are the ones most often considered in domain<br />

testing.<br />

© Sowmya Padmanabhan, 2003<br />

31


Word Problems<br />

Example 3<br />

Step 6:<br />

Partition the input domain into<br />

equivalence classes based on the<br />

identified risks.<br />

© Sowmya Padmanabhan, 2003<br />

32


Variable(s) Equivalence<br />

Class(es)<br />

‘credit- All credit-limit<br />

limit’ requests<br />

between $400<br />

to $40000<br />

All credit-limit<br />

requests less<br />

than $400<br />

All credit-limit<br />

requests greater<br />

than $40000<br />

All negative<br />

credit-limit<br />

requests<br />

Test cases Risks Notes<br />

$400,<br />

$40000<br />

1) Failure to process credit-<br />

limit requests between<br />

$400 <strong>and</strong> $40000 correctly.<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong><br />

upper boundary values.<br />

$399 1) Failure to disapprove<br />

credit-limit requests less than<br />

$400<br />

2) Mish<strong>and</strong>ling of value just<br />

beneath the lower boundary.<br />

$40001 1) Failure to disapprove<br />

credit-limit requests greater<br />

than $40000<br />

-$400,<br />

-$40000<br />

2) Mish<strong>and</strong>ling of value just<br />

beyond the upper boundary.<br />

1) Mish<strong>and</strong>ling of negative<br />

credit-limit requests.<br />

Taking the absolute value of<br />

the negative credit-limit<br />

request <strong>and</strong> approving it.<br />

2) Mish<strong>and</strong>ling of upper <strong>and</strong><br />

lower boundary values.<br />

The<br />

program<br />

should<br />

be<br />

capable<br />

of<br />

correctly<br />

h<strong>and</strong>ling<br />

negative<br />

amounts


Word Problems<br />

� Example 4:<br />

The passing score for any course at ZLTech is<br />

60/100. If a student scores less than 60 for a<br />

course, the student gets an ‘F’ grade in the<br />

course .<br />

What variables could be involved in analysis of<br />

this group of facts? What variable do we know<br />

enough about to perform equivalence class<br />

analysis <strong>and</strong> then a boundary value analysis?<br />

Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value<br />

analysis on this variable. Assume integer values.<br />

© Sowmya Padmanabhan, 2003<br />

33


Word Problems<br />

Example 4<br />

� Step 1:<br />

What variables could be involved<br />

in analysis of this group of facts?<br />

© Sowmya Padmanabhan, 2003<br />

34


Word Problems<br />

Example 4<br />

� Student_name, student_number,<br />

passing_score, student_score,<br />

course_name, grade.<br />

© Sowmya Padmanabhan, 2003<br />

35


Word Problems<br />

Example 4<br />

� Step 2:<br />

What variable do we know<br />

enough about to perform<br />

equivalence class analysis <strong>and</strong><br />

then a boundary value analysis?<br />

© Sowmya Padmanabhan, 2003<br />

36


Word Problems<br />

Example 4<br />

� ‘student_score’<br />

© Sowmya Padmanabhan, 2003<br />

37


Word Problems<br />

Example 4<br />

� Step 3:<br />

Represent this variable as a<br />

mathematical range expression.<br />

© Sowmya Padmanabhan, 2003<br />

38


Word Problems<br />

Example 4<br />

� 60


Word Problems<br />

Example 4<br />

� Step 4:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

40


Word Problems<br />

Example 4<br />

� The input domain is the set of all<br />

possible values that can ever be inputted<br />

to the variable ‘student_score’.<br />

© Sowmya Padmanabhan, 2003<br />

41


Word Problems<br />

Example 4<br />

� Step 5:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

42


Word Problems<br />

Example 4<br />

� Failure to give a student F in a course with<br />

score less than 60<br />

� Assigning F to a student in a course with<br />

score 60 <strong>and</strong> greater.<br />

� Mish<strong>and</strong>ling of scores above 100<br />

� Mish<strong>and</strong>ling of negative scores.<br />

There are other risks that we will consider later, but the ones<br />

listed here are the ones most often considered in domain<br />

testing.<br />

© Sowmya Padmanabhan, 2003<br />

43


Word Problems<br />

Example 4<br />

Step 6:<br />

Partition the input domain into<br />

equivalence classes based on the<br />

identified risks.<br />

© Sowmya Padmanabhan, 2003<br />

44


Variable(s) Equivalence<br />

Class(es)<br />

‘student All scores 60<br />

score’ <strong>and</strong> greater<br />

All scores less<br />

than 60<br />

All scores<br />

greater than<br />

100<br />

All negative<br />

scores<br />

Test cases Risks Notes<br />

60, 100 1) Failure to correctly<br />

process scores 60 <strong>and</strong><br />

above, that is, failure<br />

to NOT assign a grade<br />

of ‘F’ to scores 60 <strong>and</strong><br />

above.<br />

2) Mish<strong>and</strong>ling of<br />

lower <strong>and</strong> upper<br />

boundary values.<br />

59 1) Failure to give a<br />

student ‘F’ grade in a<br />

course with score less<br />

than 60<br />

2) Mish<strong>and</strong>ling of<br />

value just beneath the<br />

lower boundary.<br />

101 1) Mish<strong>and</strong>ling of<br />

scores greater than 100<br />

2) Mish<strong>and</strong>ling of<br />

value just beyond the<br />

upper boundary value.<br />

-60 1) Mish<strong>and</strong>ling of<br />

negative amounts.<br />

Taking the absolute<br />

value of the negative<br />

score <strong>and</strong> declaring the<br />

grade as not ‘F’ when<br />

it should be ‘F’.<br />

2) Mish<strong>and</strong>ling of<br />

boundary value.<br />

What about<br />

bonus points<br />

that add up to<br />

make the score<br />

greater than<br />

100?<br />

What about<br />

negative<br />

scoring?


Word Problems<br />

� Example 5:<br />

The page setup function of a text editor allows a<br />

user to set the width of the page only in the<br />

range of 1 to 56 inches. The precision of the<br />

width is up to 30 places after the decimal point.<br />

What variables could be involved in analysis of<br />

this group of facts? What variable do we know<br />

enough about to perform equivalence class<br />

analysis <strong>and</strong> then a boundary value analysis?<br />

Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value<br />

analysis on this variable.<br />

© Sowmya Padmanabhan, 2003<br />

45


Word Problems<br />

Example 5<br />

� Step 1:<br />

What variables could be involved<br />

in analysis of this group of facts?<br />

© Sowmya Padmanabhan, 2003<br />

46


Word Problems<br />

Example 5<br />

� User, Page, Width.<br />

© Sowmya Padmanabhan, 2003<br />

47


Word Problems<br />

Example 5<br />

� Step 2:<br />

What variable do we know<br />

enough about to perform<br />

equivalence class analysis <strong>and</strong><br />

then a boundary value analysis?<br />

© Sowmya Padmanabhan, 2003<br />

48


Word Problems<br />

Example 5<br />

� ‘width’<br />

© Sowmya Padmanabhan, 2003<br />

49


Word Problems<br />

Example 5<br />

� Step 3:<br />

Represent this variable as a<br />

mathematical range expression.<br />

© Sowmya Padmanabhan, 2003<br />

50


Word Problems<br />

Example 5<br />

� 1


Word Problems<br />

Example 5<br />

� Step 4:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

52


Word Problems<br />

Example 5<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the variable ‘width’.<br />

© Sowmya Padmanabhan, 2003<br />

53


Word Problems<br />

Example 5<br />

� Step 5:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

54


Word Problems<br />

Example 5<br />

� Failure to correctly process the width values that lie<br />

between 1 inch <strong>and</strong> 56 inches<br />

� Failure to h<strong>and</strong>le up to 30 places after the decimal<br />

point<br />

� Mish<strong>and</strong>ling of more than 30 places after the decimal<br />

point.<br />

� Mish<strong>and</strong>ling of width values less than 1 inch<br />

� Mish<strong>and</strong>ling of width values greater than 56 inches<br />

� Mish<strong>and</strong>ling of negative width values<br />

There are other risks that we will consider later, but the ones listed<br />

here are the ones most often considered in domain testing.<br />

© Sowmya Padmanabhan, 2003<br />

55


Word Problems<br />

Example 5<br />

Step 6:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

56


Variable<br />

(s)<br />

‘width’<br />

Equivalence<br />

Class(es)<br />

All widths<br />

between 1 to<br />

56 inches<br />

All widths<br />

less than 1<br />

inch<br />

All widths<br />

greater than<br />

56 inches<br />

All negative<br />

widths<br />

All widths<br />

with more<br />

than 30<br />

decimal<br />

places after<br />

the decimal<br />

point.<br />

Test cases Risks Notes<br />

1.0000000000<br />

00000000000<br />

000000000,<br />

56.000000000<br />

00000000000<br />

0000000000,<br />

(30 places<br />

after decimal<br />

point)<br />

0.9999999999<br />

99999999999<br />

999999999<br />

(30 places<br />

after the<br />

decimal point)<br />

56.000000000<br />

00000000000<br />

0000000001<br />

(30 places<br />

after the<br />

decimal point)<br />

-1.0000<br />

00000000000<br />

00000000000<br />

0000,<br />

-56.000<br />

00000000000<br />

00000000000<br />

00000<br />

(30 places<br />

after the<br />

decimal point)<br />

1.0000000000<br />

00000000000<br />

0000000000<br />

(31 places<br />

after the<br />

decimal point)<br />

1) Failure to process width values that<br />

lie between 1 inch <strong>and</strong> 56 inches<br />

correctly.<br />

2) Failure to h<strong>and</strong>le up to 30 places<br />

after the decimal point.<br />

3) Mish<strong>and</strong>ling of lower <strong>and</strong> upper<br />

boundary values.<br />

1) Mish<strong>and</strong>ling of width values less<br />

than 1 inch<br />

2) Failure to h<strong>and</strong>le up to 30 places<br />

after the decimal point.<br />

3) Mish<strong>and</strong>ling of value just beneath<br />

the lower boundary.<br />

1) Mish<strong>and</strong>ling of width values greater<br />

than 56 inches<br />

2) Failure to h<strong>and</strong>le up to 30 places<br />

after the decimal point.<br />

3) Mish<strong>and</strong>ling of value just beyond<br />

the upper boundary.<br />

1) Mish<strong>and</strong>ling of negative values.<br />

Taking the absolute value of the<br />

negative width value <strong>and</strong> accepting it<br />

as an allowable width.<br />

2) Failure to h<strong>and</strong>le up to 30 places<br />

after the decimal point.<br />

4) Mish<strong>and</strong>ling of lower <strong>and</strong> upper<br />

boundary values.<br />

1) Mish<strong>and</strong>ling of more than 30 places<br />

after the decimal point.<br />

2) Mish<strong>and</strong>ling of value just beyond<br />

the upper boundary value.<br />

The<br />

program<br />

should<br />

be<br />

capable<br />

of<br />

correctly<br />

h<strong>and</strong>ling<br />

negative<br />

values.


© Sowmya Padmanabhan, 2003<br />

57


<strong>Testing</strong> multiple ranges<br />

� The problems that we have dealt with so far<br />

only had one range defined for a variable.<br />

� Often, you will encounter problems that are<br />

defined over multiple ranges.<br />

� Let us learn how to extend what we have<br />

learned so far <strong>and</strong> apply that to ranges that<br />

in turn are defined over multiple sub-ranges.<br />

© Sowmya Padmanabhan, 2003<br />

58


<strong>Testing</strong> multiple ranges<br />

� Example 6:<br />

According to Boris Beizer (Black-Box<br />

<strong>Testing</strong>, 1995), in 1993, IRS defined the<br />

following tax table:<br />

© Sowmya Padmanabhan, 2003<br />

59


<strong>Testing</strong> multiple ranges<br />

Example 6<br />

� Assume that there is an online program provided<br />

by IRS that lets a user enter his taxable income<br />

in a text field <strong>and</strong> in turn the program tells the<br />

user what the corresponding tax is.<br />

© Sowmya Padmanabhan, 2003<br />

60


<strong>Testing</strong> multiple ranges<br />

Example 6<br />

What variables could be involved in<br />

analysis of this group of facts? What<br />

variable do we know enough about to<br />

perform equivalence class analysis <strong>and</strong><br />

then a boundary value analysis? Develop<br />

a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary<br />

value analysis on this variable.<br />

© Sowmya Padmanabhan, 2003<br />

61


Word Problems<br />

Example 6<br />

� Step 1:<br />

What variables could be involved<br />

in analysis of this group of facts?<br />

© Sowmya Padmanabhan, 2003<br />

62


Word Problems<br />

Example 6<br />

� Taxable_income (tax_inc), Tax, User.<br />

© Sowmya Padmanabhan, 2003<br />

63


Word Problems<br />

Example 6<br />

� Step 2:<br />

What variable do we know<br />

enough about to perform<br />

equivalence class analysis <strong>and</strong><br />

then a boundary value analysis?<br />

© Sowmya Padmanabhan, 2003<br />

64


Word Problems<br />

Example 6<br />

� ‘tax_inc’<br />

© Sowmya Padmanabhan, 2003<br />

65


Word Problems<br />

Example 6<br />

� Step 3:<br />

Represent this variable as a mathematical<br />

range expression.<br />

© Sowmya Padmanabhan, 2003<br />

66


Word Problems<br />

Example 6<br />

© Sowmya Padmanabhan, 2003<br />

67


Word Problems<br />

Example 6<br />

� Step 4:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

68


Word Problems<br />

Example 6<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the variable ‘tax_inc’.<br />

© Sowmya Padmanabhan, 2003<br />

69


Word Problems<br />

Example 6<br />

� Step 5:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

70


Word Problems<br />

Example 6<br />

� Mish<strong>and</strong>ling of negative incomes<br />

� Mish<strong>and</strong>ling of zero taxable incomes<br />

� Failure to calculate the tax correctly for each of the<br />

income sub-ranges<br />

� Mish<strong>and</strong>ling of low <strong>and</strong> high boundaries of each of the<br />

sub-ranges<br />

� Mish<strong>and</strong>ling of values just beneath <strong>and</strong> beyond low <strong>and</strong><br />

high boundaries respectively for each of the sub-ranges<br />

� Mish<strong>and</strong>ling of non-numbers<br />

� Mish<strong>and</strong>ling of smallest <strong>and</strong> largest value at the system<br />

level, <strong>and</strong> beyond.<br />

© Sowmya Padmanabhan, 2003<br />

71


Word Problems<br />

Example 6<br />

Step 6:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

72


Variable Equivalence<br />

classes<br />

tax-inc<br />

$250,000<br />

max_number+1 2) Mish<strong>and</strong>ling of low <strong>and</strong> upper<br />

boundary values<br />

3) Mish<strong>and</strong>ling of extremely large<br />

numbers.<br />

4) Mish<strong>and</strong>ling of highest boundary<br />

value <strong>and</strong> value just beyond the<br />

highest boundary.<br />

See non-numbers Mish<strong>and</strong>ling of non-numbers<br />

table<br />

Negative<br />

incomes<br />

in the<br />

form of<br />

losses/<br />

debts are<br />

carried<br />

over to the<br />

next year<br />

Special<br />

case, nil<br />

taxable<br />

income


Analyzing non-numbers<br />

� Let us first review the concept of ASCII<br />

characters<br />

� What does ASCII st<strong>and</strong> for?<br />

© Sowmya Padmanabhan, 2003<br />

73


ASCII characters<br />

� ASCII, pronounced "ask-ee" is the acronym<br />

for ‘American St<strong>and</strong>ard Code for Information<br />

Interchange’.<br />

� Internally in the computer all characters are<br />

represented in ASCII format.<br />

� St<strong>and</strong>ard ASCII set: characters 0 to 127<br />

� Extended ASCII set: characters 128 to 255<br />

© Sowmya Padmanabhan, 2003<br />

74


St<strong>and</strong>ard ASCII<br />

The first 32 characters (0-31) are control codes.<br />

ASCII DISPLAY Description<br />

0 NUL Null<br />

1 SOH Start of heading<br />

2 STX Start of text<br />

3 ETX End of text<br />

4 EOT End of transmit<br />

5 ENQ Enquiry<br />

6 ACK Acknowledge<br />

7 BEL Audible bell<br />

8 BS Backspace<br />

9 HT Horizontal tab<br />

10 LF Line feed<br />

11 VT Vertical tab<br />

12 FF Form feed<br />

13 CR Carriage return<br />

14 SO Shift out<br />

15 SI Shift in<br />

16 DLE Data link escape<br />

17 DC1 Device control 1<br />

18 DC2 Device control 2<br />

19 DC3 Device control 3<br />

20 DC4 Device control 4<br />

21 NAK Neg. acknowledge<br />

22 SYN Synchronous idle<br />

23 ETB End trans. block<br />

24 CAN Cancel


25 EM End of medium<br />

26 SUB Substitution<br />

27 ESC Escape<br />

28 FS Figures shift<br />

29 GS Group separator<br />

30 RS Record separator<br />

31 US Unit separator<br />

32 SP Blank Space (Space Bar)<br />

ASCII DISPLAY<br />

33 !<br />

34 "<br />

35 #<br />

36 $<br />

37 %<br />

38 &<br />

39 '<br />

40 (<br />

41 )<br />

42 *<br />

43 +<br />

44 ,<br />

45 -<br />

46 .<br />

47 /<br />

48 0<br />

49 1<br />

50 2<br />

51 3


52 4<br />

53 5<br />

54 6<br />

55 7<br />

56 8<br />

57 9<br />

58 :<br />

59 ;<br />

60 <<br />

61 =<br />

62 ><br />

63 ?<br />

64 @<br />

65 A<br />

66 B<br />

67 C<br />

68 D<br />

69 E<br />

70 F<br />

71 G<br />

72 H<br />

73 I<br />

74 J<br />

75 K<br />

76 L<br />

77 M<br />

78 N<br />

79 O


80 P<br />

81 Q<br />

82 R<br />

83 S<br />

84 T<br />

85 U<br />

86 V<br />

87 W<br />

88 X<br />

89 Y<br />

90 Z<br />

91 [<br />

92 \<br />

93 ]<br />

94 ^<br />

95 _<br />

96 `<br />

97 a<br />

98 b<br />

99 c<br />

100 d<br />

101 e<br />

102 f<br />

103 g<br />

104 h<br />

105 i<br />

106 j<br />

107 k


108 l<br />

109 m<br />

110 n<br />

111 o<br />

112 p<br />

113 q<br />

114 r<br />

115 s<br />

116 t<br />

117 u<br />

118 v<br />

119 w<br />

120 x<br />

121 y<br />

122 z<br />

123 {<br />

124 |<br />

125 }<br />

126 ~<br />

127


Extended ASCII Characters<br />

Reference:<br />

http://www.telacommunications.com/nutshell/ascii.htm


ASCII characters<br />

� ASCII files:<br />

� are data or text files containing characters coded<br />

from ASCII character set.<br />

� can be used as a common denominator for data<br />

conversions. Two programs dealing with different<br />

data formats can exchange data by inputting <strong>and</strong><br />

outputting data in the form of ASCII files.<br />

� For more details visit:<br />

http://www.telacommunications.com/nutshell/ascii.htm<br />

© Sowmya Padmanabhan, 2003<br />

75


Why bother about ASCII<br />

characters in our analysis?<br />

� Consider the case of an integer field. This<br />

field should accept only values that contain<br />

digits 0-9 (ASCII 48-57) as the constituent<br />

characters.<br />

� Assume that the following is the<br />

corresponding pseudo code for the internal<br />

logic of this program:<br />

� if ASCII (char) >= 48 <strong>and</strong> ASCII (char)


Why bother about ASCII<br />

characters in our analysis?<br />

� Imagine what happens if the<br />

programmer messes up any of the<br />

following:<br />

� The relational operators (=)<br />

� The conditional values (48, 57)<br />

© Sowmya Padmanabhan, 2003<br />

77


Why bother about ASCII<br />

characters in our analysis?<br />

� Non-numbers will be also be accepted as valid<br />

inputs<br />

� if ASCII (char) = 57<br />

� if ASCII (char) >= 46 <strong>and</strong> ASCII (char) = 48 <strong>and</strong> ASCII (char) 48 <strong>and</strong> ASCII (char) = 48 <strong>and</strong> ASCII (char) < 57<br />

� if ASCII (char) >= 49 <strong>and</strong> ASCII (char) = 48 <strong>and</strong> ASCII (char)


Analyzing non-numbers<br />

Example 6<br />

� Identify the risks associated with inputting<br />

non-numbers in the Taxable Income field <strong>and</strong><br />

list the identified risks.<br />

© Sowmya Padmanabhan, 2003<br />

79


Analyzing non-numbers<br />

Example 6<br />

� Failure to process the values containing only digits 0-<br />

9 correctly<br />

� Mish<strong>and</strong>ling of characters just beneath <strong>and</strong> beyond<br />

the ASCII range for 0-9 (48-57 ASCII)<br />

� Mish<strong>and</strong>ling of commas<br />

� Mish<strong>and</strong>ling of characters just beneath <strong>and</strong> beyond<br />

the ASCII value for comma (,)<br />

� Mish<strong>and</strong>ling of decimal points<br />

� Mish<strong>and</strong>ling of characters just beneath <strong>and</strong> beyond<br />

the ASCII value for decimal point (.)<br />

� Mish<strong>and</strong>ling of dollar ‘$’ sign.<br />

� Mish<strong>and</strong>ling of characters just beneath <strong>and</strong> beyond<br />

the ASCII value for the dollar sign ($)<br />

© Sowmya Padmanabhan, 2003<br />

80


Analyzing non-numbers<br />

Example 6<br />

Partition the input domain into<br />

equivalence classes based on the<br />

risks identified.<br />

© Sowmya Padmanabhan, 2003<br />

81


Variable Equivalence<br />

classes<br />

tax-inc<br />

All numeric values<br />

having only digits<br />

0-9<br />

All numeric values<br />

containing one or<br />

more commas<br />

All values<br />

containing<br />

characters beneath<br />

or/<strong>and</strong> beyond the<br />

ASCII value for ‘,’<br />

(ASCII value 44)<br />

All numeric values<br />

containing decimal<br />

point(s)<br />

All values<br />

containing<br />

characters beneath<br />

or/<strong>and</strong> beyond the<br />

ASCII value for ‘.’<br />

(ASCII value 46)<br />

All numeric values<br />

containing the $<br />

sign.<br />

Test cases<br />

(Best<br />

representatives)<br />

1) An integer value<br />

containing 0 <strong>and</strong> 9<br />

1) A valid number<br />

that has at least one<br />

comma ($22,100)<br />

1) A value<br />

containing ‘+’<br />

(ASCII value 43),<br />

2) a value<br />

containing ‘–‘<br />

(ASCII value 45)<br />

1) A value<br />

containing one<br />

decimal point at the<br />

right place,<br />

2) A value<br />

containing two<br />

decimal points<br />

1) A value<br />

containing ‘-‘<br />

(ASCII value 45),<br />

2) A value<br />

containing ‘/’<br />

(ASCII value 47)<br />

1) A value<br />

containing one ‘$’<br />

preceding the very<br />

first character<br />

2) A value<br />

containing two $<br />

both preceding the<br />

first character<br />

3) A value<br />

containing one ‘$’<br />

after the very first<br />

character<br />

Risks Notes<br />

1) Failure to process the values<br />

containing only digits 0-9<br />

correctly<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong><br />

upper boundary values for the<br />

ASCII range for 0-9 which is<br />

ASCII 48-57<br />

1) Mish<strong>and</strong>ling of commas by<br />

considering it an invalid character<br />

<strong>and</strong> rejecting it.<br />

1) Mish<strong>and</strong>ling of characters just<br />

beneath <strong>and</strong> beyond the ASCII<br />

value for comma ‘,’<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath <strong>and</strong> beyond the lower <strong>and</strong><br />

upper boundaries respectively<br />

1) Mish<strong>and</strong>ling of one decimal<br />

point by considering it an invalid<br />

character <strong>and</strong> rejecting it.<br />

2) Failure to reject more than one<br />

decimal point in one numeric<br />

value.<br />

1) Mish<strong>and</strong>ling of characters just<br />

beneath <strong>and</strong> beyond the ASCII<br />

value for decimal point ‘.’<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath <strong>and</strong> beyond the lower <strong>and</strong><br />

upper boundaries respectively.<br />

1) Mish<strong>and</strong>ling of dollar ‘$’ sign<br />

by considering it a special<br />

character <strong>and</strong> rejecting it.<br />

2) Failure to reject two dollar<br />

signs in one numeric value.<br />

3) Failure to reject a value that<br />

has dollar sign at a position other<br />

than the position preceding the<br />

first character.


Variable Equivalence<br />

classes<br />

tax-inc<br />

All values<br />

containing<br />

characters beneath<br />

or/<strong>and</strong> beyond the<br />

ASCII value for<br />

‘$’ (ASCII value<br />

36)<br />

All values<br />

containing<br />

characters beneath<br />

or/<strong>and</strong> beyond the<br />

ASCII sub-range<br />

of 48-57 for digits<br />

0-9<br />

All values<br />

containing a space<br />

in between<br />

Test cases<br />

(Best<br />

representatives<br />

)<br />

1) A value<br />

containing ‘#’<br />

(ASCII value<br />

35),<br />

2) A value<br />

containing ‘%’<br />

(ASCII value<br />

37)<br />

A value<br />

containing ‘/’<br />

(ASCII value<br />

47),<br />

A value<br />

containing ‘:’<br />

(ASCII value<br />

58)<br />

A value<br />

containing a<br />

white space in<br />

between digits.<br />

($22, 001)<br />

Risks Notes<br />

1) Mish<strong>and</strong>ling of characters<br />

just beneath <strong>and</strong> beyond the<br />

ASCII value for the dollar<br />

sign ($)<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath <strong>and</strong> beyond the<br />

lower <strong>and</strong> upper boundaries<br />

respectively.<br />

1) Mish<strong>and</strong>ling of characters<br />

just beneath <strong>and</strong> beyond the<br />

ASCII range for 0-9 (48-57<br />

ASCII)<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath <strong>and</strong> beyond the<br />

lower <strong>and</strong> upper boundaries<br />

respectively<br />

1) Mish<strong>and</strong>ling of white<br />

space.<br />

Special case


© Sowmya Padmanabhan, 2003<br />

82


<strong>Testing</strong> String fields<br />

� We encounter String fields everyday<br />

everywhere.<br />

� First name, Last name, Course name, City<br />

name, Qualification, Degree, in fact any field<br />

that requires characters including non-digits<br />

as input (unless it is specified that the field<br />

needs strictly numeric values), are all<br />

examples of string fields.<br />

� Please note that a text field does not mean<br />

that it takes only string values.<br />

© Sowmya Padmanabhan, 2003<br />

83


<strong>Testing</strong> String fields<br />

� Example 7:<br />

A string variable ‘s’ has to have a letter<br />

for the first character; the rest of them<br />

can be any characters.<br />

Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary<br />

value analysis on this variable.<br />

© Sowmya Padmanabhan, 2003<br />

84


<strong>Testing</strong> String fields<br />

Example 7<br />

� Step 1:<br />

Represent this variable as a<br />

mathematical range expression.<br />

© Sowmya Padmanabhan, 2003<br />

85


<strong>Testing</strong> String fields<br />

Example 7<br />

� First character<br />

(A-Z)<br />

65


<strong>Testing</strong> String fields<br />

Example 7<br />

� Step 2:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

87


<strong>Testing</strong> String fields<br />

Example 7<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to variable ‘s’.<br />

© Sowmya Padmanabhan, 2003<br />

88


<strong>Testing</strong> String fields<br />

Example 7<br />

� Step 3:<br />

Identify the risks associated with the<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

89


<strong>Testing</strong> String fields<br />

Example 7<br />

� Failure to process strings correctly that have<br />

letters as their first character<br />

� Mish<strong>and</strong>ling of string values that have nonletters<br />

for the first character<br />

� Failure to process a string correctly that has<br />

characters from the st<strong>and</strong>ard ASCII set for<br />

the remaining characters<br />

� Mish<strong>and</strong>ling of characters that belong to the<br />

extended ASCII set<br />

© Sowmya Padmanabhan, 2003<br />

90


<strong>Testing</strong> String fields<br />

Example 7<br />

Step 4:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

91


Variable Equivalence<br />

classes<br />

‘s’<br />

All strings<br />

with a letter<br />

as the first<br />

character.<br />

(A-Z: ASCII<br />

code 65-90 or<br />

a-z: ASCII<br />

code 97-122)<br />

<strong>and</strong> the<br />

remaining<br />

characters are<br />

characters<br />

from the<br />

st<strong>and</strong>ard<br />

ASCII set.<br />

All strings<br />

with the first<br />

character<br />

being NOT a<br />

letter <strong>and</strong> the<br />

remaining<br />

characters<br />

from the<br />

st<strong>and</strong>ard<br />

ASCII set.<br />

All strings<br />

having at least<br />

one character<br />

corresponding<br />

to extended<br />

ASCII set<br />

(>127)<br />

Test case<br />

(Best representatives)<br />

A string having:<br />

•First character letter ‘A’<br />

• First character letter ‘Z’<br />

•First character Letter ‘a’<br />

• First character letter ‘z’<br />

For the above four test<br />

cases, the remaining<br />

characters are from the<br />

st<strong>and</strong>ard ASCII set.<br />

•First character any one of<br />

the four letters: ‘a’, ‘A’, ‘z’<br />

or ‘Z’ <strong>and</strong> the second<br />

character corresponding to<br />

ASCII code 0.<br />

•First character any one of<br />

the four letters: ‘a’, ‘A’, ‘z’<br />

or ‘Z’<br />

<strong>and</strong> the second character<br />

corresponding to ASCII<br />

code 127.<br />

A string having:<br />

•First character ‘@’<br />

• First character ‘[’<br />

•First character ‘.’<br />

• First character ‘{’<br />

A string having:<br />

• one of the characters<br />

corresponding to ASCII<br />

code 128 belonging to<br />

extended ASCII set.<br />

Risks Notes<br />

1) Failure to process strings<br />

correctly that have upper case<br />

letters as their first character <strong>and</strong><br />

characters from the st<strong>and</strong>ard<br />

ASCII set for the remaining<br />

characters.<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong> upper<br />

lower boundary values.<br />

3) Failure to process strings<br />

correctly that have lower case<br />

letters as their first character <strong>and</strong><br />

characters from the st<strong>and</strong>ard<br />

ASCII set for the remaining<br />

characters.<br />

4) Mish<strong>and</strong>ling of lower <strong>and</strong> upper<br />

lower boundary values.<br />

5) Failure to process strings<br />

correctly that have characters in<br />

the st<strong>and</strong>ard ASCII set.<br />

6) Mish<strong>and</strong>ling of lower <strong>and</strong> upper<br />

lower boundary values.<br />

1) Mish<strong>and</strong>ling of strings not<br />

having letters as their first<br />

character.<br />

2) Mish<strong>and</strong>ling of characters just<br />

beneath <strong>and</strong> beyond the lower<br />

<strong>and</strong> upper boundaries for the<br />

ASCII sub-ranges for lower <strong>and</strong><br />

uppercase letters respectively.<br />

1) Mish<strong>and</strong>ling of strings that have<br />

characters from the extended<br />

ASCII set.<br />

2) Mish<strong>and</strong>ling of value just<br />

beyond the upper boundary of<br />

st<strong>and</strong>ard ASCII set.


© Sowmya Padmanabhan, 2003<br />

92


St<strong>and</strong>ard ASCII<br />

The first 32 characters (0-31) are control codes.<br />

ASCII DISPLAY Description<br />

0 NUL Null<br />

1 SOH Start of heading<br />

2 STX Start of text<br />

3 ETX End of text<br />

4 EOT End of transmit<br />

5 ENQ Enquiry<br />

6 ACK Acknowledge<br />

7 BEL Audible bell<br />

8 BS Backspace<br />

9 HT Horizontal tab<br />

10 LF Line feed<br />

11 VT Vertical tab<br />

12 FF Form feed<br />

13 CR Carriage return<br />

14 SO Shift out<br />

15 SI Shift in<br />

16 DLE Data link escape<br />

17 DC1 Device control 1<br />

18 DC2 Device control 2<br />

19 DC3 Device control 3<br />

20 DC4 Device control 4<br />

21 NAK Neg. acknowledge<br />

22 SYN Synchronous idle<br />

23 ETB End trans. block<br />

24 CAN Cancel


25 EM End of medium<br />

26 SUB Substitution<br />

27 ESC Escape<br />

28 FS Figures shift<br />

29 GS Group separator<br />

30 RS Record separator<br />

31 US Unit separator<br />

32 SP Blank Space (Space Bar)<br />

ASCII DISPLAY<br />

33 !<br />

34 "<br />

35 #<br />

36 $<br />

37 %<br />

38 &<br />

39 '<br />

40 (<br />

41 )<br />

42 *<br />

43 +<br />

44 ,<br />

45 -<br />

46 .<br />

47 /<br />

48 0<br />

49 1<br />

50 2<br />

51 3


52 4<br />

53 5<br />

54 6<br />

55 7<br />

56 8<br />

57 9<br />

58 :<br />

59 ;<br />

60 <<br />

61 =<br />

62 ><br />

63 ?<br />

64 @<br />

65 A<br />

66 B<br />

67 C<br />

68 D<br />

69 E<br />

70 F<br />

71 G<br />

72 H<br />

73 I<br />

74 J<br />

75 K<br />

76 L<br />

77 M<br />

78 N<br />

79 O


80 P<br />

81 Q<br />

82 R<br />

83 S<br />

84 T<br />

85 U<br />

86 V<br />

87 W<br />

88 X<br />

89 Y<br />

90 Z<br />

91 [<br />

92 \<br />

93 ]<br />

94 ^<br />

95 _<br />

96 `<br />

97 a<br />

98 b<br />

99 c<br />

100 d<br />

101 e<br />

102 f<br />

103 g<br />

104 h<br />

105 i<br />

106 j<br />

107 k


108 l<br />

109 m<br />

110 n<br />

111 o<br />

112 p<br />

113 q<br />

114 r<br />

115 s<br />

116 t<br />

117 u<br />

118 v<br />

119 w<br />

120 x<br />

121 y<br />

122 z<br />

123 {<br />

124 |<br />

125 }<br />

126 ~<br />

127


Extended ASCII Characters<br />

Reference:<br />

http://www.telacommunications.com/nutshell/ascii.htm


Appendix H: Day 3 Lecture (Day 3 Lecture in<br />

Training Material)


Session 3: <strong>Domain</strong> <strong>Testing</strong><br />

Sowmya Padmanabhan<br />

© Sowmya Padmanabhan, 2003<br />

1


<strong>Testing</strong> multidimensional<br />

variables<br />

� What is meant by dimension of a<br />

variable?<br />

It is a particular way of looking at a variable<br />

based on some property of the variable.<br />

One-dimensional variable: There is only<br />

one way of analyzing such a variable.<br />

Multidimensional variable: There is more<br />

than one way of analyzing such a variable.<br />

© Sowmya Padmanabhan, 2003<br />

2


<strong>Testing</strong> multidimensional<br />

variables<br />

� You are given a bunch of numbers <strong>and</strong> are<br />

told to represent or classify them in terms of<br />

some property.<br />

� Then, one way to do this is to consider the<br />

‘bigness’ or ‘size’ property <strong>and</strong> arrange them<br />

from the number that has the least value to<br />

the number that has the biggest value.<br />

� What is the dimension here?<br />

© Sowmya Padmanabhan, 2003<br />

3


<strong>Testing</strong> multidimensional<br />

variables<br />

� The bigness or size property.<br />

� Now, we could also classify these as ‘integers’<br />

<strong>and</strong> ‘reals’ with everything that is just an<br />

integer in the integer category <strong>and</strong> the other<br />

floating-point or decimal numbers in the real<br />

category.<br />

� So, what is our dimension of<br />

classification here?<br />

© Sowmya Padmanabhan, 2003<br />

4


<strong>Testing</strong> multidimensional<br />

variables<br />

� It is data type.<br />

� A bunch of numbers with no uniformity likeonly<br />

integers, only decimals, only numbers<br />

greater that 1000 or only numbers less than -<br />

23 will be multi-dimensional <strong>and</strong> depending<br />

on what is required in your analysis, you<br />

might pick one or more or all dimensions that<br />

are relevant <strong>and</strong> base your analysis on them.<br />

© Sowmya Padmanabhan, 2003<br />

5


<strong>Testing</strong> multidimensional<br />

variables<br />

� If the variable is ‘students of FIT’ then there are many angles<br />

from which you could look at the values of this variable, which<br />

would consist of all students of FIT.<br />

� We could look at the students along the following dimensions:<br />

� Graduate or undergraduate level<br />

� For Graduates<br />

� Degree (Masters, PhD)<br />

� For undergraduates:<br />

� Year (Freshman, Sophomore, Junior <strong>and</strong> Senior)<br />

� Major (Computer Sciences, Software Engineering, Computer<br />

Engineering, Chemical Engineering, etc…)<br />

� <strong>and</strong> may more…<br />

Hence the variable ‘students of FIT’ is multi-dimensional.<br />

© Sowmya Padmanabhan, 2003<br />

6


General analysis of<br />

multidimensional numeric fields<br />

� Example 1:<br />

Given a numeric field/variable, find its<br />

general dimensions.<br />

Develop a series of tests by<br />

performing equivalence class analysis<br />

<strong>and</strong> boundary value analysis on each<br />

of the dimensions of this variable.<br />

© Sowmya Padmanabhan, 2003<br />

7


Multidimensional numeric fields<br />

Example 1<br />

� Step 1:<br />

Identify the general dimensions of<br />

the variable.<br />

© Sowmya Padmanabhan, 2003<br />

8


Multidimensional numeric fields<br />

Example 1<br />

� Length<br />

� Type of characters<br />

� Size (or Magnitude)<br />

© Sowmya Padmanabhan, 2003<br />

9


Multidimensional numeric fields<br />

Example 1<br />

� Step 2:<br />

Represent the variable as a<br />

mathematical range expression along<br />

each of the identified dimensions.<br />

© Sowmya Padmanabhan, 2003<br />

10


Multidimensional numeric fields<br />

Example 1<br />

� Length<br />

Min-allowed-length


Multidimensional numeric fields<br />

Example 1<br />

� Step 3:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

12


Multidimensional numeric fields<br />

Example 1<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the numeric variable.<br />

© Sowmya Padmanabhan, 2003<br />

13


Multidimensional numeric fields<br />

Example 1<br />

� Step 4:<br />

Identify the risks along each dimension<br />

of the variable.<br />

© Sowmya Padmanabhan, 2003<br />

14


Multidimensional numeric fields<br />

Example 1<br />

Length<br />

� Failure to process numeric values<br />

correctly that have their lengths within<br />

the allowed range<br />

� Mish<strong>and</strong>ling of numeric values that have<br />

their lengths outside the allowed range.<br />

© Sowmya Padmanabhan, 2003<br />

15


Multidimensional numeric fields<br />

Example 1<br />

Type of characters<br />

� Failure to process numeric values<br />

correctly that only have allowed<br />

characters<br />

� Mish<strong>and</strong>ling of numeric values that have<br />

characters other then the allowed ones<br />

© Sowmya Padmanabhan, 2003<br />

16


Multidimensional numeric fields<br />

Example 1<br />

Size<br />

� Failure to process numeric values<br />

correctly that are within the allowed<br />

range of sizes<br />

� Mish<strong>and</strong>ling of numeric values that are<br />

outside the allowed range of sizes<br />

© Sowmya Padmanabhan, 2003<br />

17


<strong>Testing</strong> numeric fields<br />

Example 1<br />

Step 5:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

18


© Sowmya Padmanabhan, 2003<br />

19


General analysis of<br />

multidimensional string fields<br />

� Example 2:<br />

Given a string field/variable, find its<br />

general dimensions.<br />

Develop a series of tests by<br />

performing equivalence class analysis<br />

<strong>and</strong> boundary value analysis on each<br />

of the dimensions of this variable.<br />

© Sowmya Padmanabhan, 2003<br />

20


Multidimensional string fields<br />

Example 2<br />

� Step 1:<br />

Identify the general dimensions of<br />

the variable.<br />

© Sowmya Padmanabhan, 2003<br />

21


Multidimensional string fields<br />

Example 2<br />

� Length<br />

� Type of characters<br />

© Sowmya Padmanabhan, 2003<br />

22


Multidimensional string fields<br />

Example 2<br />

� Step 2:<br />

Represent the variable as a<br />

mathematical range expression along<br />

each of the identified dimensions.<br />

© Sowmya Padmanabhan, 2003<br />

23


Multidimensional string fields<br />

Example 2<br />

� Length<br />

Min-allowed-length


Multidimensional string fields<br />

Example 2<br />

� Step 3:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

25


Multidimensional string fields<br />

Example 2<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the string variable.<br />

© Sowmya Padmanabhan, 2003<br />

26


Multidimensional string fields<br />

Example 2<br />

� Step 4:<br />

Identify the risks along each dimension<br />

of the variable.<br />

© Sowmya Padmanabhan, 2003<br />

27


Multidimensional string fields<br />

Example 2<br />

Length<br />

� Failure to process string values correctly<br />

that have their lengths within the<br />

allowed range<br />

� Mish<strong>and</strong>ling of string values that have<br />

their lengths outside the allowed range.<br />

© Sowmya Padmanabhan, 2003<br />

28


Multidimensional string fields<br />

Example 2<br />

Type of characters<br />

� Failure to process string values<br />

correctly that only have allowed<br />

characters<br />

� Mish<strong>and</strong>ling of string values that have<br />

characters other then the allowed ones<br />

© Sowmya Padmanabhan, 2003<br />

29


Multidimensional string fields<br />

Example 2<br />

Step 5:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

30


Multidimensional string fields<br />

� Example 3:<br />

ZLTech has a web-based mail system. A user has to<br />

enter his/her user name <strong>and</strong> password <strong>and</strong> then click<br />

on the Sign in button to log in <strong>and</strong> access his/her<br />

inbox. The user name can have five to fifteen<br />

characters. Also, only digits <strong>and</strong> lowercase characters<br />

are allowed for the user name.<br />

What variables could be involved in analysis of this<br />

group of facts? What variable do we know enough<br />

about to perform equivalence class analysis <strong>and</strong> then<br />

a boundary value analysis? Identify the relevant<br />

dimensions for this variable. Develop a series of tests<br />

by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis on each of the identified<br />

dimensions of this variable.<br />

© Sowmya Padmanabhan, 2003<br />

31


Multidimensional string fields<br />

Example 3<br />

� Step 1:<br />

What variables could be involved in<br />

analysis of this group of facts?<br />

© Sowmya Padmanabhan, 2003<br />

32


Multidimensional string fields<br />

Example 3<br />

User name, password, sign in button,<br />

mail server, inbox, user<br />

© Sowmya Padmanabhan, 2003<br />

33


Multidimensional string fields<br />

Example 3<br />

� Step 2:<br />

What variable do we know<br />

enough about to perform<br />

equivalence class analysis <strong>and</strong><br />

then a boundary value analysis?<br />

© Sowmya Padmanabhan, 2003<br />

34


Multidimensional string fields<br />

Example 3<br />

User name<br />

© Sowmya Padmanabhan, 2003<br />

35


Multidimensional string fields<br />

Example 3<br />

� Step 3:<br />

Identify the general dimensions of<br />

the variable.<br />

© Sowmya Padmanabhan, 2003<br />

36


Multidimensional string fields<br />

Example 3<br />

� Length<br />

� Type of characters<br />

© Sowmya Padmanabhan, 2003<br />

37


Multidimensional string fields<br />

Example 3<br />

� Step 4:<br />

Represent the variable as a<br />

mathematical range expression along<br />

each of the identified dimensions.<br />

© Sowmya Padmanabhan, 2003<br />

38


Multidimensional string fields<br />

Example 3<br />

� Length<br />

5


Multidimensional string fields<br />

Example 3<br />

� Step 5:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

40


Multidimensional string fields<br />

Example 3<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the user name variable.<br />

© Sowmya Padmanabhan, 2003<br />

41


Multidimensional string fields<br />

Example 3<br />

� Step 6:<br />

Identify the risks associated with each<br />

dimension of the variable.<br />

© Sowmya Padmanabhan, 2003<br />

42


Multidimensional string fields<br />

Example 3<br />

Length<br />

� Failure to process user names correctly<br />

that have their lengths within the allowed<br />

range<br />

� Mish<strong>and</strong>ling of user names that have their<br />

lengths outside the allowed range.<br />

© Sowmya Padmanabhan, 2003<br />

43


Multidimensional string fields<br />

Example 3<br />

Type of characters<br />

� Failure to process user names correctly<br />

that only have digits <strong>and</strong> lowercase<br />

letters<br />

� Mish<strong>and</strong>ling of user names that have<br />

characters other then the allowed ones<br />

© Sowmya Padmanabhan, 2003<br />

44


Multidimensional string fields<br />

Example 3<br />

Step 7:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

45


Multidimensional string fields<br />

Example 3<br />

Non-existent or existent user names<br />

� We need to make sure that the test cases<br />

in the equivalence class table address the<br />

following risks:<br />

� Failure to process valid user names (valid<br />

syntax) that exist in the database.<br />

� Mish<strong>and</strong>ling of user names that are valid in<br />

terms of the syntax but do not exist in the<br />

database.<br />

© Sowmya Padmanabhan, 2003<br />

46


<strong>Testing</strong> Enumerated fields<br />

� Range data type variable: A variable whose<br />

values lie in a range. A range variable is linearizable,<br />

that is, can be mapped on a number line. Boundary<br />

value analysis can be applied only to range data type<br />

variables.<br />

� We have dealt with range data types so far. But, we<br />

often encounter enumerated data types also.<br />

� Fields representing drop down combo boxes, lists,<br />

checkboxes, radio buttons, etc… are all examples of<br />

enumerated data types.<br />

© Sowmya Padmanabhan, 2003<br />

47


<strong>Testing</strong> Enumerated fields<br />

� Enumerated variable: A variable which<br />

take only a set of values/set of options.<br />

Boundary-value analysis usually cannot be<br />

applied to such variables.<br />

© Sowmya Padmanabhan, 2003<br />

48


<strong>Testing</strong> Enumerated fields<br />

� Example 4:<br />

In the online tax return form of some country, the field<br />

‘marital status’ has the following options available:<br />

� Single<br />

� Married<br />

� Married <strong>and</strong> separated<br />

� Divorced.<br />

Only one of the above options can be selected.<br />

Develop a series of tests by performing<br />

equivalence class analysis on this variable.<br />

© Sowmya Padmanabhan, 2003<br />

49


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

� Step 1:<br />

Can you represent this variable as a<br />

mathematical range expression?<br />

© Sowmya Padmanabhan, 2003<br />

50


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

� No. This is an enumerated type<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

51


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

� Step 2:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

52


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

� The input domain is the set of all<br />

possible values that can ever be<br />

inputted to the ‘marital status’ field.<br />

© Sowmya Padmanabhan, 2003<br />

53


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

� Step 3:<br />

Identify the risks associated with this<br />

variable.<br />

© Sowmya Padmanabhan, 2003<br />

54


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

� Failure to process tax return applications correctly that have the ‘Single’<br />

option selected<br />

� Failure to process tax return applications correctly that have the<br />

‘Married’ option selected<br />

� Failure to process the tax return applications correctly that have the<br />

‘Married <strong>and</strong> separated’ option selected<br />

� Failure to process the tax return applications correctly that have the<br />

‘Divorced’ option selected<br />

� Mish<strong>and</strong>ling of a choice which is outside the available set of options<br />

� An additional risk for enumerated fields allowing multiple selections is<br />

mish<strong>and</strong>ling of multiple options, which occurs when two or more<br />

options are selected. In this example, this risk could be stated as<br />

failure to not allow multiple selections.<br />

� Yet another risk for enumerated fields is mish<strong>and</strong>ling of tax return<br />

applications that have no option selected. In case of this example, this<br />

is a valid risk since it is not mentioned whether by default an option is<br />

selected or not.<br />

© Sowmya Padmanabhan, 2003<br />

55


<strong>Testing</strong> Enumerated fields<br />

Example 4<br />

Step 4:<br />

Partition the input domain into<br />

equivalence classes based on the risks<br />

identified.<br />

The tax return program will behave<br />

uniquely with respect to each of the<br />

options; hence each of these options<br />

represents an equivalence class.<br />

© Sowmya Padmanabhan, 2003<br />

56


© Sowmya Padmanabhan, 2003<br />

57


Identifying variables of a given<br />

program<br />

� You are made to sit down in front of a<br />

computer <strong>and</strong> told to test some live<br />

application/program.<br />

� How to you begin doing domain testing?<br />

© Sowmya Padmanabhan, 2003<br />

58


Identifying variables of a given<br />

program<br />

� First, you identify the various functions of the<br />

application.<br />

� Second, you take up each individual function <strong>and</strong><br />

identify the variables/fields of the function.<br />

� Third, you take up each variable <strong>and</strong> develop a series<br />

of tests for it by performing equivalence class <strong>and</strong><br />

boundary value analysis on it, just as we have been<br />

doing so far in all the examples we have seen <strong>and</strong><br />

the exercises you have solved.<br />

� Fourth, you perform combination testing of<br />

independent variables of the function <strong>and</strong> test<br />

dependent variables separately. We shall look at<br />

combination testing later.<br />

© Sowmya Padmanabhan, 2003<br />

59


Identifying variables of a given<br />

program<br />

� Let us look at few live application<br />

functions <strong>and</strong> try to identify the<br />

variables of each of the functions.<br />

© Sowmya Padmanabhan, 2003<br />

60


Identifying variables of a given<br />

program<br />

� Example 5:<br />

For each of the following dialog<br />

boxes, identify variables. For each<br />

variable, identify its data type<br />

<strong>and</strong> state whether it is an input or<br />

output variable.<br />

© Sowmya Padmanabhan, 2003<br />

61


Identifying variables of a given program<br />

Example 5a<br />

� When you open<br />

Microsoft<br />

PowerPoint, you<br />

are presented the<br />

following dialog<br />

window:<br />

© Sowmya Padmanabhan, 2003<br />

62


Identifying variables of a given program<br />

Example 5a<br />

� What are the input variables of this<br />

function?<br />

© Sowmya Padmanabhan, 2003<br />

63


Identifying variables of a given program<br />

Example 5a<br />

� Input variables<br />

� Create a new presentation using (radio buttons,<br />

enumerated)<br />

� Don’t show this dialog box again (checkbox,<br />

enumerated)<br />

� Open an existing presentation (non-editable list box,<br />

enumerated)<br />

© Sowmya Padmanabhan, 2003<br />

64


Identifying variables of a given program<br />

Example 5a<br />

� What are the output variables of<br />

this function?<br />

© Sowmya Padmanabhan, 2003<br />

65


Identifying variables of a given program<br />

Example 5a<br />

� Output variables<br />

No obviously visible output variables.<br />

© Sowmya Padmanabhan, 2003<br />

66


Identifying variables of a given program<br />

Example 5b<br />

� Internet Explorer,<br />

in the Favorites<br />

menu, clicking on<br />

the ‘Add a favorite’<br />

option brings up<br />

the following<br />

dialog box:<br />

© Sowmya Padmanabhan, 2003<br />

67


Identifying variables of a given program<br />

Example 5b<br />

� What are the input variables of this<br />

function?<br />

© Sowmya Padmanabhan, 2003<br />

68


Identifying variables of a given program<br />

Example 5b<br />

� Input variables<br />

� Make available offline (checkbox, enumerated)<br />

� Name (String field, range type)<br />

� Create in (Non-editable, drop-down combo box,<br />

enumerated)<br />

© Sowmya Padmanabhan, 2003<br />

69


Identifying variables of a given program<br />

Example 5b<br />

� What are the output variables of<br />

this function?<br />

© Sowmya Padmanabhan, 2003<br />

70


Identifying variables of a given program<br />

Example 5b<br />

� Output variables<br />

No obviously visible output variables.<br />

© Sowmya Padmanabhan, 2003<br />

71


© Sowmya Padmanabhan, 2003<br />

72


Developing test cases for given<br />

program functions<br />

� Example 6:<br />

For the ‘File Open’ function<br />

of the notepad program,<br />

identify its variables, the<br />

dimensions, data type along<br />

each dimension. Develop a<br />

series of test cases by<br />

performing equivalence<br />

class analysis <strong>and</strong><br />

boundary-value analysis on<br />

each of the variables. A<br />

screenshot of the function is<br />

provided on the right h<strong>and</strong><br />

side.<br />

© Sowmya Padmanabhan, 2003<br />

73


Developing test cases for given program functions<br />

Example 6<br />

� Step 1:<br />

Identify the function variables.<br />

© Sowmya Padmanabhan, 2003<br />

74


Developing test cases for given program functions<br />

Example 6<br />

Input variables<br />

� Look in<br />

� File name<br />

� Files of type<br />

� Encoding<br />

Output variable<br />

� Display of files<br />

© Sowmya Padmanabhan, 2003<br />

75


Developing test cases for given program functions<br />

Example 6<br />

� Step 2:<br />

Analyze the values taken by each<br />

variable<br />

� Let’s address the following three questions for<br />

each identified variable:<br />

� What kind of values does the variable take?<br />

� What are the characteristics of these values?<br />

� Is the variable multidimensional? What are the<br />

dimensions? Can you map the variable to st<strong>and</strong>ard<br />

data types like int, double, float, string, char, etc…<br />

along each of its dimensions?<br />

© Sowmya Padmanabhan, 2003<br />

76


Developing test cases for given program functions<br />

Example 6<br />

What kind of values does each<br />

of the variables of ‘File Open’<br />

function take?<br />

© Sowmya Padmanabhan, 2003<br />

77


Developing test cases for given program functions<br />

Example 6<br />

� ‘Look in’:<br />

� A drop-down combo box that lists the available sources of<br />

files (disk drives, etc…) <strong>and</strong> directories in each of them <strong>and</strong><br />

then the files in each of these directories.<br />

� ‘File Name’:<br />

� Word(s), Text.<br />

� ‘Files of type’:<br />

� A drop-down combo box that lists the types of files that can<br />

be opened with notepad program, which are ‘Text<br />

Documents (*.txt)’ <strong>and</strong> ‘All Files’.<br />

� ‘Encoding’:<br />

� A drop-down combo box that lists the different encoding<br />

available for the files to be opened which are ‘ANSI’,<br />

‘Unicode’, ‘Unicode big endian’ <strong>and</strong> ‘UTF-8’.<br />

© Sowmya Padmanabhan, 2003<br />

78


Developing test cases for given program functions<br />

Example 6<br />

What are the characteristics of<br />

these values?<br />

© Sowmya Padmanabhan, 2003<br />

79


Developing test cases for given program functions<br />

Example 6<br />

� ‘Look in’:<br />

� The structure of the list of options <strong>and</strong> the<br />

successive options in each of the options in<br />

this combo box is a directory structure.<br />

� Only one of the options available can be<br />

selected at a time.<br />

� The user cannot enter an external value for<br />

this field.<br />

© Sowmya Padmanabhan, 2003<br />

80


Developing test cases for given program functions<br />

Example 6<br />

� ‘File Name’:<br />

� Length: the file name could be of variable length<br />

depending on what file you are trying to open.<br />

� Constituent components are characters from the<br />

English alphabet, special characters, <strong>and</strong> any<br />

character on the keyword including space.<br />

� The text may or may not represent a file that is<br />

present in the currently selected directory, which<br />

was determined by the “Look in”.<br />

� The text could be an invalid file name, which<br />

means that the text does not abide by the rules<br />

set for representing a valid file name.<br />

© Sowmya Padmanabhan, 2003<br />

81


Developing test cases for given program functions<br />

Example 6<br />

� ‘Files of type’:<br />

� Only one of the two available options in<br />

this combo box can be selected which<br />

means they are mutually exclusive values.<br />

A mutually exclusive option field means if<br />

one option is “selected” then the other<br />

option has to be “unselected” <strong>and</strong> vice<br />

versa.<br />

� The user cannot enter an external value for<br />

this field.<br />

© Sowmya Padmanabhan, 2003<br />

82


Developing test cases for given program functions<br />

Example 6<br />

� ‘Encoding’:<br />

� Only one of the four available options in<br />

this combo box can be selected which<br />

means they are mutually exclusive values.<br />

A mutually exclusive option field means if<br />

one option is “selected” then the other<br />

option has to be “unselected” <strong>and</strong> vice<br />

versa.<br />

� The user cannot enter an external value for<br />

this field.<br />

© Sowmya Padmanabhan, 2003<br />

83


Developing test cases for given program functions<br />

Example 6<br />

� Is the variable multidimensional?<br />

What are the dimensions? Can you<br />

map the variable to st<strong>and</strong>ard data<br />

types like int, double, float, string,<br />

char, etc… along each of its<br />

dimensions?<br />

© Sowmya Padmanabhan, 2003<br />

84


Developing test cases for given program functions<br />

Example 6<br />

� ‘Look in’:<br />

� This is one-dimensional <strong>and</strong> the dimension is the storage<br />

location.<br />

� It is enumerated data type. For the purposes of our<br />

analysis, let’s assume that the ‘File Open’ function<br />

recognizes three drives corresponding to the hard disk,<br />

floppy <strong>and</strong> CD-ROM drives. Let’s call these drives drive1,<br />

drive2 <strong>and</strong> drive3 respectively.<br />

� ‘File Name’:<br />

� File name is multi-dimensional. The dimensions are length<br />

<strong>and</strong> type of characters.<br />

� Length can be considered as int data type.<br />

� The constituent characters can be considered as string<br />

data type.<br />

© Sowmya Padmanabhan, 2003<br />

85


Developing test cases for given program functions<br />

Example 6<br />

� ‘Files of type’:<br />

� This is one-dimensional.<br />

� Enumerated data type.<br />

� ‘Encoding’:<br />

� This is one-dimensional.<br />

� Enumerated data type.<br />

© Sowmya Padmanabhan, 2003<br />

86


Developing test cases for given program functions<br />

Example 6<br />

� Step 3:<br />

Can you represent each of these<br />

variables as a mathematical range<br />

expression?<br />

© Sowmya Padmanabhan, 2003<br />

87


Developing test cases for given program functions<br />

Example 6<br />

� Only ‘Look in’ can be represented as a mathematical range<br />

expression along each of its dimensions. The analysis is similar<br />

to the general analysis done on a string field.<br />

� Length<br />

Min-allowed-by-function


Developing test cases for given program functions<br />

Example 6<br />

� Step 4:<br />

Identify all the risks for this function.<br />

Do not forget to identify risks for each<br />

dimension of every variable.<br />

© Sowmya Padmanabhan, 2003<br />

89


Developing test cases for given program functions<br />

Example 6<br />

� Look In<br />

� Failure to open files existing in drive 1<br />

correctly<br />

� Failure to open files existing in drive 2<br />

correctly<br />

� Failure to open files existing in drive 3<br />

correctly<br />

� Mish<strong>and</strong>ling when opening of files from nonexistent<br />

drives or from drives that do not have<br />

any storage in them currently.<br />

© Sowmya Padmanabhan, 2003<br />

90


Developing test cases for given program functions<br />

Example 6<br />

� File Name<br />

� Length:<br />

� Failure to open files of allowable lengths correctly<br />

� Mish<strong>and</strong>ling of file names whose lengths are outside the<br />

allowable range.<br />

� Type of characters:<br />

� Failure to open files correctly that contain only<br />

characters that are allowed for file names in ‘File name’<br />

field.<br />

� Mish<strong>and</strong>ling of file names that contain non-allowed<br />

characters<br />

© Sowmya Padmanabhan, 2003<br />

91


Developing test cases for given program functions<br />

Example 6<br />

� Files of type<br />

� Failure to open files of the text type<br />

correctly.<br />

� Mish<strong>and</strong>ling of non-text files.<br />

© Sowmya Padmanabhan, 2003<br />

92


Developing test cases for given program functions<br />

Example 6<br />

� Encoding<br />

� Failure to open files in the encoding format<br />

of ANSI correctly<br />

� Failure to open files in the encoding format<br />

of Unicode correctly<br />

� Failure to open files in the encoding format<br />

of Unicode big endian correctly<br />

� Failure to open files in the encoding format<br />

of UTF-8 correctly<br />

© Sowmya Padmanabhan, 2003<br />

93


Developing test cases for given program functions<br />

Example 6<br />

� Step 5:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

94


Developing test cases for given program functions<br />

Example 6<br />

� The input domain of each variable is the<br />

set of all possible values that can ever<br />

be inputted to the variable.<br />

© Sowmya Padmanabhan, 2003<br />

95


Developing test cases for given program functions<br />

Example 6<br />

Step 6:<br />

Partition the input domain into<br />

equivalence classes based on risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

96


© Sowmya Padmanabhan, 2003<br />

97


Developing test cases for given<br />

program functions<br />

� Example 7:<br />

For the ‘Flip <strong>and</strong> Rotate’<br />

function of the Paint<br />

program, identify its<br />

variables, the dimensions,<br />

data type along each<br />

dimension. Develop a series<br />

of test cases by performing<br />

equivalence class analysis<br />

<strong>and</strong> boundary-value<br />

analysis on each of the<br />

variables. A screenshot of<br />

the function is provided on<br />

the right h<strong>and</strong> side.<br />

© Sowmya Padmanabhan, 2003<br />

98


Developing test cases for given program functions<br />

Example 7<br />

� Step 1:<br />

Identify the function variables.<br />

© Sowmya Padmanabhan, 2003<br />

99


Developing test cases for given program functions<br />

Example 7<br />

� Flip or rotate<br />

� Rotate by angle<br />

© Sowmya Padmanabhan, 2003<br />

100


Developing test cases for given program functions<br />

Example 7<br />

� Step 2:<br />

Analyze the values taken by each<br />

variable<br />

� Let’s address the following three questions for<br />

each identified variable:<br />

� What kind of values does the variable take?<br />

� What are the characteristics of these values?<br />

� Is the variable multidimensional? What are the<br />

dimensions? Can you map the variable to st<strong>and</strong>ard<br />

data types like int, double, float, string, char, etc…<br />

along each of its dimensions?<br />

© Sowmya Padmanabhan, 2003<br />

101


Developing test cases for given program functions<br />

Example 7<br />

What kind of values does each<br />

of the variables of ‘Flip <strong>and</strong><br />

rotate’ function take?<br />

© Sowmya Padmanabhan, 2003<br />

102


Developing test cases for given program functions<br />

Example 7<br />

� ‘Flip or rotate’:<br />

� Three options available in the form of radio<br />

buttons.<br />

� ‘Rotate by angle’:<br />

� Three options available in the form of radio<br />

buttons.<br />

© Sowmya Padmanabhan, 2003<br />

103


Developing test cases for given program functions<br />

Example 7<br />

What are the characteristics of<br />

these values?<br />

© Sowmya Padmanabhan, 2003<br />

104


Developing test cases for given program functions<br />

Example 7<br />

� ‘Flip or rotate’:<br />

� Only one of the options available can be<br />

selected at a time (mutually exclusive<br />

values).<br />

� The user cannot enter an external value for<br />

this field.<br />

© Sowmya Padmanabhan, 2003<br />

105


Developing test cases for given program functions<br />

Example 7<br />

� ‘Rotate by angle’:<br />

� Only one of the options available can be<br />

selected at a time.<br />

� The user cannot enter an external value for<br />

this field.<br />

� The selection of values of this field is<br />

possible only if ‘Rotate by angle’ was the<br />

option selected for ‘Flip or rotate’ field.<br />

© Sowmya Padmanabhan, 2003<br />

106


Developing test cases for given program functions<br />

Example 7<br />

� Is the variable multidimensional?<br />

What are the dimensions? Can you<br />

map the variable to st<strong>and</strong>ard data<br />

types like int, double, float, string,<br />

char, etc… along each of its<br />

dimensions?<br />

© Sowmya Padmanabhan, 2003<br />

107


Developing test cases for given program functions<br />

Example 7<br />

� ‘Flip or rotate’:<br />

� This is one-dimensional.<br />

� Enumerated data type.<br />

� ‘Rotate by angle’:<br />

� This is one-dimensional.<br />

� Enumerated data type.<br />

© Sowmya Padmanabhan, 2003<br />

108


Developing test cases for given program functions<br />

Example 7<br />

� Step 3:<br />

Can you represent each of these<br />

variables as a mathematical range<br />

expression?<br />

© Sowmya Padmanabhan, 2003<br />

109


Developing test cases for given program functions<br />

Example 7<br />

� No. All the variables are enumerated.<br />

© Sowmya Padmanabhan, 2003<br />

110


Developing test cases for given program functions<br />

Example 7<br />

� Step 4:<br />

Identify all the risks for this function.<br />

Do not forget to identify risks for each<br />

dimension of every variable.<br />

© Sowmya Padmanabhan, 2003<br />

111


Developing test cases for given program functions<br />

Example 7<br />

� Flip or rotate<br />

� Failure to flip the paint file horizontally<br />

� Failure to flip the paint file vertically<br />

� Failure to rotate the paint file<br />

© Sowmya Padmanabhan, 2003<br />

112


Developing test cases for given program functions<br />

Example 7<br />

� Rotate by angle<br />

� Failure to rotate the paint file by 90 o<br />

� Failure to rotate the paint file by 180 o<br />

� Failure to rotate the paint file by 270 o<br />

© Sowmya Padmanabhan, 2003<br />

113


Developing test cases for given program functions<br />

Example 7<br />

� Step 5:<br />

Determine what the input domain is.<br />

© Sowmya Padmanabhan, 2003<br />

114


Developing test cases for given program functions<br />

Example 7<br />

� The input domain of each variable is the<br />

set of all possible values that can ever<br />

be inputted to the variable.<br />

© Sowmya Padmanabhan, 2003<br />

115


Developing test cases for given program functions<br />

Example 7<br />

Step 6:<br />

Partition the input domain into<br />

equivalence classes based on risks<br />

identified.<br />

© Sowmya Padmanabhan, 2003<br />

116


© Sowmya Padmanabhan, 2003<br />

117


Variable Dimension Equivalence<br />

classes<br />

Numeric Length All values<br />

field<br />

having lengths<br />

in the range of<br />

Min-allowedlength<br />

to Maxallowed-length<br />

Type of<br />

Characters<br />

All values<br />

having lengths<br />

outside the<br />

allowed range<br />

All values<br />

containing<br />

allowed<br />

characters.<br />

0-9 for integer<br />

<strong>and</strong> floatingpoint<br />

values, <strong>and</strong><br />

an additional<br />

decimal point for<br />

floating-point<br />

values.<br />

All values<br />

containing at<br />

least one<br />

character that is<br />

NOT allowed.<br />

Test cases<br />

(Best representatives)<br />

A value having:<br />

1) Min-allowed-length<br />

2) Max-allowed-length<br />

These two are at the function<br />

level.<br />

A value having:<br />

1) Min-allowed-length -1<br />

2) Max-allowed-length + 1<br />

3) Zero length (if this is other<br />

than the min-allowed or minallowed-1)<br />

4) Max-length allowed by the<br />

system, if different from that<br />

of the function<br />

5) Max-length allowed by the<br />

system + 1, if different from<br />

that of the function.<br />

For integer <strong>and</strong> floating-point<br />

values:<br />

1) Value having 0 as one of<br />

the digits<br />

2) Value having 9 as one of<br />

the digits<br />

For only floating-point values:<br />

3) Value having one decimal<br />

point at right place<br />

For integer <strong>and</strong> floating-point<br />

values:<br />

1) Value having the character<br />

corresponding to one ASCII<br />

code just beneath the ASCII<br />

for 0.<br />

2) Value having the character<br />

corresponding to ASCII code<br />

just beyond the ASCII for 9.<br />

For only floating-point values:<br />

3) Value having more than<br />

one decimal point<br />

4) Value having a character<br />

corresponding to ASCII code<br />

just beneath the decimal point.<br />

5) Value having a character<br />

corresponding to ASCII code<br />

just beyond the decimal point.<br />

Risks<br />

1) Failure to process<br />

numeric values correctly,<br />

that have their lengths<br />

within the allowed range.<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Mish<strong>and</strong>ling of numeric<br />

values that have their<br />

lengths outside the allowed<br />

range.<br />

2) Mish<strong>and</strong>ling of values<br />

just beneath <strong>and</strong> beyond<br />

the lower <strong>and</strong> upper<br />

boundaries respectively.<br />

3) Mish<strong>and</strong>ling of too<br />

small, too long strings <strong>and</strong><br />

beyond, at the system level.<br />

1) Failure to process<br />

numeric values correctly,<br />

that have digits 0-9 <strong>and</strong> one<br />

decimal point for floatingpoint<br />

values.<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Mish<strong>and</strong>ling of values<br />

that have non-digits<br />

2) Mish<strong>and</strong>ling of values<br />

having more than one<br />

decimal point, in case of a<br />

floating-point field.<br />

3) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper <strong>and</strong> boundary<br />

values.


Variable Dimension Equivalence<br />

classes<br />

Numeric<br />

field<br />

Size All values<br />

within the size<br />

range of minallowed-value<br />

to maxallowed-value<br />

All values<br />

having sizes<br />

outside the<br />

allowed range<br />

Test cases<br />

(Best representatives)<br />

1) Min-allowed-value<br />

2) Max-allowed-value<br />

These two are at the function<br />

level.<br />

1) Min-allowed-value -1<br />

2) Max-allowed-value + 1<br />

3) Null<br />

4) Minimum possible number<br />

allowed to be entered in the<br />

field at the system level<br />

5) Maximum possible number<br />

allowed to be entered in the<br />

field at the system level<br />

6) Min-possible number - 1 at<br />

the system level.<br />

7) Max-possible number + 1<br />

at the system level<br />

Risks<br />

1) Failure to process<br />

numeric values correctly<br />

that are within the<br />

allowed range of sizes<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Mish<strong>and</strong>ling of numeric<br />

values that are outside the<br />

allowed range of size<br />

2) Mish<strong>and</strong>ling of values<br />

just beneath <strong>and</strong> beyond<br />

the lower <strong>and</strong> upper<br />

boundaries respectively.<br />

3) Mish<strong>and</strong>ling of values<br />

that are too small <strong>and</strong> too<br />

big at the system level <strong>and</strong><br />

even beyond.


Variable Dimension Equivalence<br />

classes<br />

String<br />

field<br />

Length All strings<br />

with lengths in<br />

the range of<br />

Min-allowedlength<br />

to Maxallowed-length<br />

Type of<br />

Characters<br />

All strings<br />

with lengths<br />

outside the<br />

allowed range<br />

All strings<br />

containing<br />

allowed<br />

characters<br />

All strings<br />

containing at<br />

least one<br />

character that<br />

is NOT<br />

allowed.<br />

Test cases<br />

(Best representatives)<br />

A string having:<br />

1) Min-allowed-length<br />

2) Max-allowed-length<br />

These two are at the<br />

function level.<br />

A string having:<br />

1) Min-allowed-length -1<br />

2) Max-allowed-length + 1<br />

3) Zero length string (if this<br />

is other than the minallowed<br />

or min-allowed-1)<br />

4) Max-length allowed by<br />

the system, if different from<br />

that of the function<br />

5) Max-length allowed by<br />

the system + 1, if different<br />

from that of the function.<br />

For each sub-range of<br />

allowed characters:<br />

1) String containing the<br />

character having the least<br />

corresponding ASCII value<br />

in the sub-range as one of its<br />

characters<br />

2) Value having the<br />

character having the highest<br />

corresponding ASCII value<br />

in the sub-range as one of its<br />

characters<br />

For each sub-range of<br />

allowed characters:<br />

1) A string containing the<br />

character corresponding to<br />

one ASCII code just beneath<br />

the one with the least ASCII<br />

in the sub-range<br />

2) A string containing the<br />

character corresponding to<br />

ASCII code just beyond the<br />

one with the highest ASCII<br />

code in the sub-range.<br />

3) A string containing the<br />

character corresponding to<br />

ASCII 128<br />

Risks<br />

1) Failure to process strings<br />

correctly, that have their<br />

lengths within the allowed<br />

range.<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong><br />

upper boundary values.<br />

1) Mish<strong>and</strong>ling of strings that<br />

have their lengths outside the<br />

allowed range.<br />

2) Mish<strong>and</strong>ling of lengths<br />

just beneath <strong>and</strong> beyond the<br />

lower <strong>and</strong> upper boundaries<br />

respectively.<br />

3) Mish<strong>and</strong>ling of too small,<br />

too long strings <strong>and</strong> beyond.<br />

1) Failure to process allowed<br />

characters correctly.<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong><br />

upper boundary values.<br />

1) Mish<strong>and</strong>ling of strings that<br />

contain non-allowed<br />

characters<br />

2) Mish<strong>and</strong>ling of values just<br />

beneath <strong>and</strong> beyond the<br />

lower <strong>and</strong> upper <strong>and</strong><br />

boundary values<br />

respectively.<br />

3) Mish<strong>and</strong>ling of characters<br />

from the extended ASCII set.


Variable Dimension Equivalence<br />

classes<br />

User name<br />

Length All values<br />

having lengths<br />

in the range of 5<br />

to 15<br />

Type of<br />

Characters<br />

All values<br />

having lengths<br />

outside the<br />

allowed range<br />

All values<br />

containing<br />

allowed<br />

characters<br />

All values<br />

containing at<br />

least one<br />

character that is<br />

NOT allowed.<br />

Test cases<br />

(Best representatives)<br />

A user name having length of:<br />

1) 5<br />

2) 15<br />

A user name having length of:<br />

1) 4<br />

2) 16<br />

3) 0<br />

4) Max-length at the system level<br />

5) Max-length + 1 at the system level<br />

Digits:<br />

A user name containing<br />

1) 0 (ASCII code 48)<br />

2) 9 (ASCII code 57)<br />

Lowercase characters:<br />

A user name containing<br />

1) a (ASCII code 97)<br />

2) z (ASCII code 122)<br />

Digits:<br />

A user name containing<br />

1) character with ASCII code 47<br />

2) character with ASCII code 58<br />

Lowercase characters:<br />

A user name containing<br />

1) a character with ASCII code 96<br />

2) a character with ASCII code 123<br />

3) character corresponding to ASCII<br />

128 of the extended ASCII set<br />

Risks<br />

1) Failure to process user<br />

names correctly, that<br />

have their lengths within<br />

the allowed range.<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary<br />

values.<br />

1) Mish<strong>and</strong>ling of user<br />

names that have their<br />

lengths outside the<br />

allowed range.<br />

2) Mish<strong>and</strong>ling of user<br />

names just beneath <strong>and</strong><br />

beyond the lower <strong>and</strong><br />

upper boundaries<br />

respectively.<br />

3) Mish<strong>and</strong>ling of too<br />

small, too long strings<br />

<strong>and</strong> beyond.<br />

1) Failure to process<br />

allowable characters<br />

correctly.<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary<br />

values.<br />

1) Mish<strong>and</strong>ling of user<br />

names that have nondigits<br />

2) Mish<strong>and</strong>ling of user<br />

names that contain<br />

characters that are NOT<br />

allowed.<br />

3) Mish<strong>and</strong>ling of values<br />

just beyond lower <strong>and</strong><br />

upper <strong>and</strong> boundary<br />

values respectively.<br />

4) Mish<strong>and</strong>ling of<br />

characters from the<br />

extended ASCII set.<br />

5) Mish<strong>and</strong>ling of value<br />

just beyond the upper<br />

boundary of the st<strong>and</strong>ard<br />

ASCII set.


Variable(s) Equivalence<br />

Class(es)<br />

‘Marital All applications<br />

status’ that have the<br />

‘Single’ option<br />

selected for marital<br />

status<br />

All applications<br />

that have the<br />

‘Married’ option<br />

selected for marital<br />

status<br />

All applications<br />

that have the<br />

‘Married <strong>and</strong><br />

separated’ option<br />

selected for marital<br />

status<br />

All applications<br />

that have the<br />

‘Divorced’ option<br />

selected for marital<br />

status<br />

All applications<br />

that have a value<br />

for marital status<br />

that is other than<br />

the four options<br />

available, which<br />

includes none.<br />

All applications<br />

that have multiple<br />

options selected.<br />

Test<br />

cases<br />

Risks Notes<br />

Single 1) Failure to process tax<br />

return applications correctly<br />

that have the ‘Single’ option<br />

selected<br />

Married 1) Failure to process tax<br />

return applications correctly<br />

that have the ‘Married’<br />

option selected<br />

Married<br />

<strong>and</strong><br />

separated<br />

1) Failure to process tax<br />

return applications correctly<br />

that have the ‘Married <strong>and</strong><br />

separated’ option selected<br />

Divorced 1) Failure to process tax<br />

return applications correctly<br />

that have the ‘Divorced’<br />

option selected<br />

1) Any<br />

option<br />

other<br />

than the<br />

four<br />

2) No<br />

option<br />

selected<br />

Two<br />

options<br />

selected<br />

at a time.<br />

1) Failure to NOT allow<br />

inputting an external value<br />

that is other than the<br />

available set of options.<br />

2) Mish<strong>and</strong>ling of tax return<br />

applications that have no<br />

option selected.<br />

Failure to NOT allow<br />

selection of multiple options<br />

The marital field<br />

might be a noneditable<br />

field like a<br />

bunch of radio<br />

buttons or a noneditable<br />

combo-box<br />

in which case<br />

selecting options<br />

outside of the<br />

available set of<br />

options will be<br />

impossible.<br />

The specification of<br />

this example states<br />

that multiple<br />

selections are not<br />

possible.


Look In<br />

Variable Equivalence<br />

classes<br />

Look In<br />

All files in<br />

drive1.<br />

All files in<br />

drive2.<br />

All files in<br />

drive3.<br />

All files in<br />

currently nonexistent<br />

drives<br />

or drives not<br />

having any<br />

storage in it<br />

currently or a<br />

corrupt drive.<br />

Test cases<br />

(Best representatives)<br />

A file existing in:<br />

1) drive 1, lowest level<br />

directory<br />

2) drive 1, highest level<br />

directory<br />

A file existing in:<br />

1) drive 2, lowest level<br />

directory<br />

2) drive 2, highest level<br />

directory<br />

A file existing in:<br />

1) drive 3, lowest level<br />

directory<br />

2) drive 3, highest level<br />

directory<br />

Any such drive can be the<br />

best representative<br />

Risks<br />

1) Failure to open files<br />

existing in drive 1 correctly<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong><br />

upper boundary values.<br />

1) Failure to open files<br />

existing in drive 2 correctly<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Failure to open files<br />

existing in drive 3 correctly<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Mish<strong>and</strong>ling opening of<br />

files from non-existent<br />

drives or from drives that<br />

do not have any storage in<br />

them currently.


Variable Dimension Equivalence<br />

classes<br />

File<br />

Name<br />

Length All values having<br />

lengths in the<br />

range of Minallowed-length-byfunction<br />

<strong>and</strong> Maxallowed-length-byfunction<br />

Type of<br />

Characters<br />

All values having<br />

lengths outside the<br />

allowed range<br />

All values<br />

containing only<br />

allowed characters<br />

Test cases<br />

(Best representatives)<br />

A file name having length of:<br />

1) Min-allowed-length-by-function<br />

(1)<br />

2) Max-allowed-length-by-function<br />

(215)<br />

A file name having length of:<br />

1) Min-allowed-length-by-function<br />

– 1 (0)<br />

2) Max-allowed-length-by-function<br />

+ 1 (216)<br />

5) 0 (this is same as the Minallowed-length-by-function<br />

- 1)<br />

4) Max-length at the system level<br />

(259)<br />

5) Max-length + 1 at the system<br />

level (260)<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII<br />

32-33:<br />

A file name that contains:<br />

1) the character (blank space)<br />

corresponding to ASCII<br />

32.<br />

2) the character (‘!’)<br />

corresponding to ASCII<br />

33.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII<br />

35-41:<br />

A file name that contains:<br />

3) the character (‘#’)<br />

corresponding to ASCII<br />

35.<br />

4) the character (‘)’)<br />

corresponding to ASCII<br />

41.<br />

Risks<br />

1) Failure to process<br />

values correctly, that<br />

have their lengths<br />

within the allowed<br />

range.<br />

2) Mish<strong>and</strong>ling of<br />

lower <strong>and</strong> upper<br />

boundary values.<br />

1) Mish<strong>and</strong>ling of<br />

values that have their<br />

lengths outside the<br />

allowed range.<br />

2) Mish<strong>and</strong>ling of<br />

values just beneath<br />

<strong>and</strong> beyond the lower<br />

<strong>and</strong> upper boundaries<br />

respectively.<br />

3) Mish<strong>and</strong>ling of too<br />

small <strong>and</strong> too long<br />

strings<br />

1) Failure to process<br />

allowable characters<br />

correctly.<br />

2) Mish<strong>and</strong>ling of<br />

lower <strong>and</strong> upper<br />

boundary values of<br />

each allowed ASCII<br />

range of characters.<br />

3) Failure to correctly<br />

process characters<br />

from the extended<br />

ASCII character set.


For ASCII sub-range of allowed<br />

groups of characters from ASCII 43-<br />

45:<br />

A file name that contains:<br />

5) the character (‘+’)<br />

corresponding to ASCII 43.<br />

6) the character (‘-’)<br />

corresponding to ASCII 45.<br />

A file name that contains:<br />

7) the character (‘.’)<br />

corresponding to ASCII 46 at<br />

a position other than the first<br />

position.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII 48-<br />

57:<br />

A file name that contains:<br />

8) the character (‘0’)<br />

corresponding to ASCII 48.<br />

9) the character (‘9’)<br />

corresponding to ASCII 57.<br />

A file name that contains:<br />

10) the character (‘;’)<br />

corresponding to ASCII 59.<br />

11) the character (‘-’)<br />

corresponding to ASCII 61.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII 64-<br />

91:<br />

A file name that contains:<br />

12) the character (‘@’)<br />

corresponding to ASCII 64.<br />

13) the character (‘[’)<br />

corresponding to ASCII 91.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII 93-<br />

123:


All values<br />

containing at least<br />

one character that<br />

is NOT allowed or<br />

a valid character in<br />

a position that is<br />

NOT allowed.<br />

A file name that contains:<br />

14) the character (‘]’)<br />

corresponding to ASCII 93.<br />

15) the character (‘{’)<br />

corresponding to ASCII 123.<br />

A file name that contains:<br />

16) the character corresponding<br />

to ASCII 128 of the extended<br />

ASCII character set.<br />

17) the character corresponding<br />

to ASCII 255 of the extended<br />

ASCII character set.<br />

A file name that contains:<br />

1) the character (Unit<br />

Separator) corresponding to<br />

ASCII 31.<br />

2) the character (“)<br />

corresponding to ASCII 34.<br />

3) the character (‘*’)<br />

corresponding to ASCII 42.<br />

4) the character (‘.’)<br />

corresponding to ASCII 46 in<br />

the first position.<br />

5) the character (‘/’)<br />

corresponding to ASCII 47.<br />

6) The character (‘:’)<br />

corresponding to ASCII 58.<br />

7) The character (‘’)<br />

corresponding to ASCII 62.<br />

9) The character (‘?’)<br />

corresponding to ASCII 63.<br />

10) The character (‘\’)<br />

corresponding to ASCII 92.<br />

11) The character (‘|’)<br />

corresponding to ASCII 124.<br />

1) Mish<strong>and</strong>ling of<br />

values that contain<br />

characters that are<br />

NOT allowed.<br />

2) Mish<strong>and</strong>ling of<br />

valid characters in<br />

positions that are not<br />

allowed.<br />

3) Mish<strong>and</strong>ling of<br />

values just beneath<br />

<strong>and</strong> beyond the<br />

lower <strong>and</strong> upper <strong>and</strong><br />

boundary values of<br />

each ASCII<br />

subrange of allowed<br />

characters.


Files of Type<br />

Variable Equivalence<br />

classes<br />

Files of<br />

Type<br />

Encoding<br />

Test cases<br />

(Best representatives)<br />

All text files A file:<br />

1) of text type<br />

All other file<br />

types<br />

Variable Equivalence<br />

classes<br />

Encoding<br />

All files being<br />

opened in<br />

ANSI<br />

encoding<br />

All files being<br />

opened in<br />

Unicode<br />

encoding<br />

All files being<br />

opened in<br />

Unicode big<br />

endian<br />

encoding<br />

All files being<br />

opened in<br />

UTF-8<br />

encoding<br />

A file:<br />

1) that is non-text type<br />

Test cases<br />

(Best representatives)<br />

Any file being opened in<br />

ANSI encoding.<br />

Any file being opened in<br />

Unicode encoding.<br />

Any file being opened in<br />

Unicode big endian<br />

encoding.<br />

Any file being opened in<br />

UTF-8 encoding.<br />

Risks<br />

1) Failure to open files of the<br />

text type correctly.<br />

1) Mish<strong>and</strong>ling of non-text<br />

type of files.<br />

Risks<br />

Failure to open files in the<br />

encoding format of ANSI<br />

correctly<br />

Failure to open files in the<br />

encoding format of Unicode<br />

correctly<br />

Failure to open files in the<br />

encoding format of Unicode<br />

big endian correctly<br />

Failure to open files in the<br />

encoding format of UTF-8<br />

correctly


Flip or rotate<br />

Variable Equivalence<br />

classes<br />

Flip or<br />

rotate<br />

All files that<br />

have the Flip<br />

horizontal<br />

option<br />

selected.<br />

All files that<br />

have the Flip<br />

vertical option<br />

selected.<br />

All files that<br />

have the<br />

Rotate by<br />

angle option<br />

selected.<br />

Test cases<br />

(Best representatives)<br />

1) Any file that has the ‘Flip<br />

horizontal’ option selected.<br />

1) Any file that has the ‘Flip<br />

vertical’ option selected.<br />

Any file that has the ‘Rotate<br />

by angle’ option selected<br />

with the following angle<br />

selected:<br />

1) 90 degrees<br />

2) 180 degrees<br />

3) 270 degrees<br />

Risks<br />

Failure to flip the paint file<br />

correctly in the horizontal<br />

direction<br />

Failure to flip the paint file<br />

correctly in the vertical<br />

direction<br />

Failure to rotate the paint<br />

image correctly by the<br />

specified angle.


Appendix I: Day 4 Lecture (Day 4 Lecture in<br />

Training Material - Original <strong>and</strong> Revised)


Session 4: <strong>Domain</strong> <strong>Testing</strong><br />

Sowmya Padmanabhan<br />

© Sowmya Padmanabhan, 2003<br />

1


<strong>Testing</strong> in combination-Why?<br />

� All variables will interact as they are part of<br />

one functional unit <strong>and</strong> they have to unite to<br />

achieve the duty that the functional unit is<br />

designated for. Hence most of these variables<br />

influence each other in some or the other<br />

way.<br />

� <strong>Testing</strong> variables in combination may reveal<br />

certain bugs that might not have been found<br />

by testing the variables in isolation.<br />

© Sowmya Padmanabhan, 2003<br />

2


All possible combinations testing<br />

� All possible combinations testing<br />

� Consider an example of a program (a simple GUI)<br />

that has 7 variables with 3, 2, 2, 2, 3, 2 <strong>and</strong> 2<br />

representatives respectively.<br />

If we were to test all possible combinations<br />

of test cases of the seven variables, what<br />

would the total number of combinations be?<br />

© Sowmya Padmanabhan, 2003<br />

3


All possible combinations testing<br />

� All possible combinations testing<br />

3x2x2x2x3x2x2 = 288 combinations<br />

which means 288 test cases-one test case<br />

corresponding to each combination!<br />

© Sowmya Padmanabhan, 2003<br />

4


All possible combinations testing<br />

� If the number of test cases is so huge<br />

for as few as 7 variables, imagine what<br />

happens in a typical commercial<br />

program where there are hundreds of<br />

variables. Yes, combinatorial explosion!<br />

� A solution to this problem is ‘All-pairs<br />

combination testing’ <strong>and</strong> is discussed<br />

next.<br />

© Sowmya Padmanabhan, 2003<br />

5


All-Pairs Combination <strong>Testing</strong><br />

� Many pairs are tested at the same time in one combination. Allpairs<br />

technique ensures all-pairs, that means that every value<br />

of a variable is combined with every value of every other<br />

variable at least once.<br />

� Only independent variables should be tested using all-pairs<br />

technique.<br />

� For each independent variable, only non-error h<strong>and</strong>ling test<br />

cases should be involved in all-pairs combination.<br />

� In particular, if there are n variables, then each combination<br />

generated by all-pairs combination has n x (n-1) / 2 pairs.<br />

� If we arrange all independent variables in the descending order<br />

of the number of acceptable (non-error h<strong>and</strong>ling) test cases<br />

they have <strong>and</strong> if max 1 <strong>and</strong> max 2 represent the first two<br />

variables in such an arrangement, the minimal number of<br />

combinations due to all-pairs combination technique is:<br />

No. of test cases (Max1) x No. of test cases (Max2)<br />

© Sowmya Padmanabhan, 2003<br />

6


All-Pairs Combination <strong>Testing</strong><br />

� You have to order the test case values corresponding<br />

to each succeeding variable such that the final<br />

ordering corresponding to the variable, results in<br />

each value of the variable being paired with each<br />

value of every preceding variable.<br />

� It might be required to backtrack (if other ordering is<br />

possible) if the current ordering makes it impossible<br />

to achieve the above mentioned end result.<br />

� If, no matter what ordering you try <strong>and</strong> no matter<br />

how much you try to backtrack <strong>and</strong> redo the things,<br />

the end result (all-pairs) in not achieved then<br />

additional combinations might have to be added.<br />

Refer Appendix B: Guidelines for filling in “all-pairs combination”<br />

table.<br />

© Sowmya Padmanabhan, 2003<br />

7


All-Pairs Combination <strong>Testing</strong><br />

� In our 7-variable example, assuming all seven<br />

variables are independent <strong>and</strong> all the test<br />

cases corresponding to each variable are<br />

acceptable (non-error h<strong>and</strong>ling test cases),<br />

what would the minimal number of<br />

combinations yielded by all-pairs combination<br />

technique be?<br />

© Sowmya Padmanabhan, 2003<br />

8


All-Pairs Combination <strong>Testing</strong><br />

� 3 x 3 = 9<br />

This is much lower than 288, which was<br />

due to all-possible combinations.<br />

� How many pairs would a single combination<br />

have for this example if we do all-pairs<br />

combination?<br />

© Sowmya Padmanabhan, 2003<br />

9


All-Pairs Combination <strong>Testing</strong><br />

� 7 x (7-1)/2 = 7 x 6/2 = 7 x 3 = 21.<br />

© Sowmya Padmanabhan, 2003<br />

10


All-Pairs Combination <strong>Testing</strong><br />

� Example 1:<br />

There are three variables x, y <strong>and</strong> z of<br />

some function. ‘x’ has 3 test cases<br />

corresponding to it, ‘y’ has 4 <strong>and</strong> ‘z’ has<br />

2 test cases corresponding to it.<br />

Develop a series of tests by performing allpairs<br />

combination on these variables. Assume<br />

independence of variables <strong>and</strong> assume that all<br />

test cases are acceptable (non-error h<strong>and</strong>ling<br />

test cases).<br />

© Sowmya Padmanabhan, 2003<br />

11


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

� Step 1:<br />

Arrange the variables in<br />

descending order of the number<br />

of test cases they have. Call the<br />

first two Max1 <strong>and</strong> Max2.<br />

© Sowmya Padmanabhan, 2003<br />

12


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

1. ‘y’ (4) – Max1<br />

2. ‘x’ (3) – Max2<br />

3. ‘z’ (2)<br />

© Sowmya Padmanabhan, 2003<br />

13


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

� Step 2:<br />

Give symbolic names to the test cases<br />

of each of the variables.<br />

© Sowmya Padmanabhan, 2003<br />

14


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

Variable Test cases<br />

y Y1, Y2, Y3, Y4<br />

x X1, X2, X3<br />

z Z1, Z2<br />

© Sowmya Padmanabhan, 2003<br />

15


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

� Step 3:<br />

Calculate the minimal number of allpairs<br />

combinations.<br />

© Sowmya Padmanabhan, 2003<br />

16


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

� No. of test cases (Max1) x No. of test<br />

cases (Max2) = 4*3 =12<br />

Contrast this with all possible combinations (4*3*2) = 24<br />

© Sowmya Padmanabhan, 2003<br />

17


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

Step 4:<br />

Determine the number of<br />

pairs in each combination.<br />

© Sowmya Padmanabhan, 2003<br />

18


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

� 3(3 – 1)/ 2 = 3 x 2 / 2 = 3<br />

© Sowmya Padmanabhan, 2003<br />

19


All-Pairs Combination <strong>Testing</strong><br />

Example 1<br />

Step 5:<br />

� Build the all-pairs combination<br />

table.<br />

© Sowmya Padmanabhan, 2003<br />

20


All-Pairs Combination <strong>Testing</strong><br />

� Example 2:<br />

There are four variables a, b, c <strong>and</strong> d of<br />

some function. Each variable has four<br />

test cases corresponding to it.<br />

Develop a series of tests by performing allpairs<br />

combination on these variables. Assume<br />

independence of variables <strong>and</strong> assume that all<br />

test cases are acceptable (non-error h<strong>and</strong>ling<br />

test cases).<br />

© Sowmya Padmanabhan, 2003<br />

21


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

� Step 1:<br />

Arrange the variables in<br />

descending order of the number<br />

of test cases they have. Call the<br />

first two Max1 <strong>and</strong> Max2.<br />

© Sowmya Padmanabhan, 2003<br />

22


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

1. ‘a’ (4) – Max1<br />

2. ‘b’ (4) – Max2<br />

3. ‘c’ (4)<br />

4. ‘d’ (4)<br />

© Sowmya Padmanabhan, 2003<br />

23


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

� Step 2:<br />

Give symbolic names to the test cases<br />

of each of the variables.<br />

© Sowmya Padmanabhan, 2003<br />

24


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

Variable Test cases<br />

a A1, A2, A3, A4<br />

b B1, B2, B3, B4<br />

c C1, C2, C3, C4<br />

d D1, D2, D3, D4<br />

© Sowmya Padmanabhan, 2003<br />

25


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

� Step 3:<br />

Calculate the minimal number of allpairs<br />

combinations.<br />

© Sowmya Padmanabhan, 2003<br />

26


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

� No. of test cases (Max1) x No. of test<br />

cases (Max2) = 4*4 =16<br />

Contrast this with all possible combinations (4*4*4*4) =<br />

256!<br />

© Sowmya Padmanabhan, 2003<br />

27


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

Step 4:<br />

Determine the number of<br />

pairs in each combination.<br />

© Sowmya Padmanabhan, 2003<br />

28


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

� 4(4 – 1)/ 2 = 4 x 3 / 2 = 6<br />

© Sowmya Padmanabhan, 2003<br />

29


All-Pairs Combination <strong>Testing</strong><br />

Example 2<br />

Step 5:<br />

� Build the all-pairs combination<br />

table.<br />

© Sowmya Padmanabhan, 2003<br />

30


© Sowmya Padmanabhan, 2003<br />

31


Application of all-pairs combination to<br />

real world applications<br />

� Example 3:<br />

Perform all-pairs combination<br />

testing on the variables of the<br />

‘File Open’ function of notepad<br />

program.<br />

© Sowmya Padmanabhan, 2003<br />

32


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Let’s review the equivalence class<br />

analysis done on the variables of ‘File<br />

Open’ function.<br />

© Sowmya Padmanabhan, 2003<br />

33


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Step 1:<br />

Select the variables that you want<br />

to combine using all-pairs.<br />

© Sowmya Padmanabhan, 2003<br />

34


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Look in<br />

� File name<br />

� Encoding<br />

� Files of type<br />

All input variables are independent, hence all of them can be<br />

used in all-pairs combination technique.<br />

© Sowmya Padmanabhan, 2003<br />

35


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Step 2:<br />

For each selected variable, select<br />

acceptable (non error-h<strong>and</strong>ling)<br />

test cases that you want to use in<br />

all-pairs.<br />

© Sowmya Padmanabhan, 2003<br />

36


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Look in (6 test cases, Test case# 1…6)<br />

� File Name (2 test cases, Test case# 1, 2) –<br />

the test cases corresponding to type of characters dimension<br />

will be tested separately since including them increases the<br />

number of combinations required in all-pairs by a huge amount.<br />

� Encoding (4 test cases, Test case#1, 2, 3 <strong>and</strong><br />

4)<br />

� Files of type (2 test cases, Test case#1 <strong>and</strong><br />

2)<br />

© Sowmya Padmanabhan, 2003<br />

37


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Step 3:<br />

Arrange the selected variables of<br />

‘File Open’ function in descending<br />

order of the number of test cases<br />

selected for each. Call the first<br />

two Max1 <strong>and</strong> Max2.<br />

© Sowmya Padmanabhan, 2003<br />

38


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Look in (6) – Max1<br />

� Encoding (4) – Max2<br />

� File Name (2)<br />

� Files of type (2)<br />

© Sowmya Padmanabhan, 2003<br />

39


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Step 4:<br />

Give symbolic names to the test cases<br />

of each of the variables.<br />

© Sowmya Padmanabhan, 2003<br />

40


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Variable Test cases<br />

Look In L1, L2…L6<br />

Encoding E1, E2, E3, E4<br />

File Name FN1, FN2<br />

Files of type FT1, FT2<br />

© Sowmya Padmanabhan, 2003<br />

41


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Step 5:<br />

Calculate the minimal number of allpairs<br />

combinations.<br />

© Sowmya Padmanabhan, 2003<br />

42


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� No. of test cases(Max1) x No. of test<br />

cases (Max2) = 6*4= 24<br />

Contrast this with all possible combinations (6*4*2*2) =<br />

96!<br />

© Sowmya Padmanabhan, 2003<br />

43


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

Step 6:<br />

Determine the number of<br />

pairs in each combination.<br />

© Sowmya Padmanabhan, 2003<br />

44


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� 4(4 – 1)/ 2 = 4 x 3/2 = 6<br />

© Sowmya Padmanabhan, 2003<br />

45


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

Step 7:<br />

� Build the all-pairs combination<br />

table.<br />

© Sowmya Padmanabhan, 2003<br />

46


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

� Error h<strong>and</strong>ling test cases are tested<br />

separately for each variable individually,<br />

to start with.<br />

� Error h<strong>and</strong>ling test cases of all the four<br />

variables can be combined to see what<br />

happens when multiple faulty variables<br />

interact. The following three are some<br />

of such possible combinations:<br />

© Sowmya Padmanabhan, 2003<br />

47


All-Pairs Combination <strong>Testing</strong><br />

Example 3<br />

© Sowmya Padmanabhan, 2003<br />

48


Application of all-pairs combination to<br />

real world applications<br />

� Example 4:<br />

Perform all-pairs combination<br />

testing on the variables of the<br />

‘Flip <strong>and</strong> Rotate’ function of<br />

paint program.<br />

© Sowmya Padmanabhan, 2003<br />

49


All-Pairs Combination <strong>Testing</strong><br />

Example 4<br />

� Let’s review the analysis done on the<br />

variables of ‘Flip <strong>and</strong> rotate’ function.<br />

© Sowmya Padmanabhan, 2003<br />

50


All-Pairs Combination <strong>Testing</strong><br />

Example 4<br />

� We actually have only one variable <strong>and</strong> the<br />

other is nested within the first. Hence there is<br />

no scope of performing any kind of<br />

combination.<br />

� We will have in all 5 test cases: 2<br />

corresponding to the first two options of ‘Flip<br />

or Rotate’ <strong>and</strong> 3 corresponding to (90, 180<br />

<strong>and</strong> 270 degrees) when the third option<br />

‘Rotate by angle’ is selected.<br />

© Sowmya Padmanabhan, 2003<br />

51


© Sowmya Padmanabhan, 2003<br />

52


Iteration 1:<br />

Test<br />

case#<br />

Y (4) X (3) Z (2)<br />

1. Y1<br />

2. Y1<br />

3. Y1<br />

4. Y2<br />

5. Y2<br />

6. Y2<br />

7. Y3<br />

8. Y3<br />

9. Y3<br />

10. Y4<br />

11. Y4<br />

12. Y4<br />

Iteration 2:<br />

Test<br />

case#<br />

Y (4) X (3) Z (2)<br />

1. Y1 X1<br />

2. Y1 X2<br />

3. Y1 X3<br />

4. Y2 X1<br />

5. Y2 X2<br />

6. Y2 X3<br />

7. Y3 X1<br />

8. Y3 X2<br />

9. Y3 X3<br />

10. Y4 X1<br />

11. Y4 X2<br />

12. Y4 X3


Iteration 3:<br />

Test<br />

case#<br />

Y (4) X (3) Z (2)<br />

1. Y1 X1 Z1<br />

2. Y1 X2 Z2<br />

3. Y1 X3 Z1<br />

4. Y2 X1 Z2<br />

5. Y2 X2 Z1<br />

6. Y2 X3 Z2<br />

7. Y3 X1<br />

8. Y3 X2<br />

9. Y3 X3<br />

10. Y4 X1<br />

11. Y4 X2<br />

12. Y4 X3<br />

Iteration 4:<br />

Test<br />

case#<br />

Y (4) X (3) Z (2)<br />

1. Y1 X1 Z1<br />

2. Y1 X2 Z2<br />

3. Y1 X3 Z1<br />

4. Y2 X1 Z2<br />

5. Y2 X2 Z1<br />

6. Y2 X3 Z2<br />

7. Y3 X1 Z1<br />

8. Y3 X2 Z2<br />

9. Y3 X3 Z1<br />

10. Y4 X1 Z2<br />

11. Y4 X2 Z1<br />

12. Y4 X3 Z2


Iteration 1:<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1<br />

2. A1<br />

3. A1<br />

4. A1<br />

5. A2<br />

6. A2<br />

7. A2<br />

8. A2<br />

9. A3<br />

10. A3<br />

11. A3<br />

12. A3<br />

13. D4<br />

14. D4<br />

15. D4<br />

16. D4<br />

Iteration 2:<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1<br />

2. A1 B2<br />

3. A1 B3<br />

4. A1 B4<br />

5. A2 B1<br />

6. A2 B2<br />

7. A2 B3<br />

8. A2 B4<br />

9. A3 B1<br />

10. A3 B2<br />

11. A3 B3<br />

12. A3 B4<br />

13. D4 B1<br />

14. D4 B2<br />

15. D4 B3<br />

16. D4 B4


Iteration 3:<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1<br />

2. A1 B2<br />

3. A1 B3<br />

4. A1 B4<br />

5. A2 B1<br />

6. A2 B2<br />

7. A2 B3<br />

8. A2 B4<br />

9. A3 B1<br />

10. A3 B2<br />

11. A3 B3<br />

12. A3 B4<br />

13. D4 B1<br />

14. D4 B2<br />

15. D4 B3<br />

16. D4 B4<br />

Iteration 4:<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1 C1<br />

2. A1 B2 C2<br />

3. A1 B3 C3<br />

4. A1 B4 C4<br />

5. A2 B1 C2<br />

6. A2 B2 C3<br />

7. A2 B3 C4<br />

8. A2 B4 C1<br />

9. A3 B1 C3<br />

10. A3 B2 C4<br />

11. A3 B3 C1<br />

12. A3 B4 C2<br />

13. D4 B1 C4<br />

14. D4 B2 C1<br />

15. D4 B3 C2<br />

16. D4 B4 C3


Iteration 5:<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1 C1 D1<br />

2. A1 B2 C2 D2<br />

3. A1 B3 C3 D3<br />

4. A1 B4 C4 D4<br />

5. A2 B1 C2 D3<br />

6. A2 B2 C3 D4<br />

7. A2 B3 C4 D1<br />

8. A2 B4 C1 D2<br />

9. A3 B1 C3 D2<br />

10. A3 B2 C4 D3<br />

11. A3 B3 C1 D4<br />

12. A3 B4 C2 D1<br />

13. D4 B1 C4<br />

14. D4 B2 C1<br />

15. D4 B3 C2<br />

16. D4 B4 C3<br />

No ordering of test cases in set four for variable‘d’ will yield all pairs of ‘d’ with other<br />

variables. Let us backtrack <strong>and</strong> redo sets two <strong>and</strong> three of variable‘d’.<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1 C1 D1<br />

2. A1 B2 C2 D2<br />

3. A1 B3 C3 D3<br />

4. A1 B4 C4 D4<br />

5. A2 B1 C2<br />

6. A2 B2 C3<br />

7. A2 B3 C4<br />

8. A2 B4 C1<br />

9. A3 B1 C3<br />

10. A3 B2 C4<br />

11. A3 B3 C1<br />

12. A3 B4 C2<br />

13. D4 B1 C4<br />

14. D4 B2 C1<br />

15. D4 B3 C2<br />

16. D4 B4 C3


Iteration 6:<br />

Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1 C1 D1<br />

2. A1 B2 C2 D2<br />

3. A1 B3 C3 D3<br />

4. A1 B4 C4 D4<br />

5. A2 B1 C2 D4<br />

6. A2 B2 C3 D1<br />

7. A2 B3 C4 D2<br />

8. A2 B4 C1 D3<br />

9. A3 B1 C3 D2<br />

10. A3 B2 C4 D3<br />

11. A3 B3 C1 D4<br />

12. A3 B4 C2 D1<br />

13. D4 B1 C4<br />

14. D4 B2 C1<br />

15. D4 B3 C2<br />

16. D4 B4 C3<br />

No ordering of test cases in set four for variable ‘d’ will yield all pairs of ‘d’ with all<br />

other variables. Even if we backtrack, we basically get stuck in the same combinations;<br />

this is because there are no more alternatives available. This means that we cannot fit<br />

all-pairs in sixteen combinations. Let us have the ordering in set four of variable ‘d’<br />

that makes all-pairs of ‘d’ with variable ‘c’, ‘b’ <strong>and</strong> ‘a’. After that let us add four<br />

additional combinations to take care of pairs of ‘d’ <strong>and</strong> ‘b’.


Test<br />

case#<br />

a (4) b (3) c (2) d (2)<br />

1. A1 B1 C1 D1<br />

2. A1 B2 C2 D2<br />

3. A1 B3 C3 D3<br />

4. A1 B4 C4 D4<br />

5. A2 B1 C2 D4<br />

6. A2 B2 C3 D1<br />

7. A2 B3 C4 D2<br />

8. A2 B4 C1 D3<br />

9. A3 B1 C3 D2<br />

10. A3 B2 C4 D3<br />

11. A3 B3 C1 D4<br />

12. A3 B4 C2 D1<br />

13. D4 B1 C4 D1<br />

14. D4 B2 C1 D2<br />

15. D4 B3 C2 D3<br />

16. D4 B4 C3 D4<br />

17. B1 D3<br />

18. B2 D4<br />

19. B3 D1<br />

20. B4 D2


Look In<br />

Variable Equivalence<br />

classes<br />

Look In<br />

All files in<br />

drive1.<br />

All files in<br />

drive2.<br />

All files in<br />

drive3.<br />

All files in<br />

currently nonexistent<br />

drive<br />

or drive not<br />

having any<br />

storage in it<br />

currently or<br />

corrupt drive.<br />

Test cases<br />

(Best representatives)<br />

A file existing in:<br />

1) drive 1, lowest level<br />

directory<br />

2) drive 1, highest level<br />

directory<br />

A file existing in:<br />

1) drive 2, lowest level<br />

directory<br />

2) drive 2, highest level<br />

directory<br />

A file existing in:<br />

1) drive 3, lowest level<br />

directory<br />

2) drive 3, highest level<br />

directory<br />

Any such drive can be the<br />

best representative<br />

Risks<br />

1) Failure to open files<br />

existing in drive 1 correctly<br />

2) Mish<strong>and</strong>ling of lower <strong>and</strong><br />

upper boundary values.<br />

1) Failure to open files<br />

existing in drive 2 correctly<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Failure to open files<br />

existing in drive 3 correctly<br />

2) Mish<strong>and</strong>ling of lower<br />

<strong>and</strong> upper boundary values.<br />

1) Mish<strong>and</strong>ling opening of<br />

files from non-existent<br />

drives or from drives that<br />

do not have any storage in<br />

them currently.


Variable Dimension Equivalence<br />

classes<br />

File<br />

Name<br />

Length All values having<br />

lengths in the<br />

range of Minallowed-length-byfunction<br />

<strong>and</strong> Maxallowed-length-byfunction<br />

Type of<br />

Characters<br />

All values having<br />

lengths outside the<br />

allowed range<br />

All values<br />

containing only<br />

allowed characters<br />

Test cases<br />

(Best representatives)<br />

A file name having length of:<br />

1) Min-allowed-length-by-function<br />

(1)<br />

2) Max-allowed-length-by-function<br />

(215)<br />

A file name having length of:<br />

3) Min-allowed-length-by-function<br />

– 1 (0)<br />

4) Max-allowed-length-by-function<br />

+ 1 (216)<br />

5) Max-length at the system level<br />

(259)<br />

6) Max-length + 1 at the system<br />

level (260)<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII<br />

32-33:<br />

A file name that contains:<br />

7) the character (blank space)<br />

corresponding to ASCII<br />

32.<br />

8) the character (‘!’)<br />

corresponding to ASCII<br />

33.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII<br />

35-41:<br />

A file name that contains:<br />

9) the character (‘#’)<br />

corresponding to ASCII<br />

35.<br />

10) the character (‘)’)<br />

corresponding to ASCII<br />

41.<br />

Risks<br />

1) Failure to process<br />

values correctly, that<br />

have their lengths<br />

within the allowed<br />

range.<br />

2) Mish<strong>and</strong>ling of<br />

lower <strong>and</strong> upper<br />

boundary values.<br />

1) Mish<strong>and</strong>ling of<br />

values that have their<br />

lengths outside the<br />

allowed range.<br />

2) Mish<strong>and</strong>ling of<br />

values just beneath<br />

<strong>and</strong> beyond the lower<br />

<strong>and</strong> upper boundaries<br />

respectively.<br />

3) Mish<strong>and</strong>ling of too<br />

small <strong>and</strong> too long<br />

strings<br />

1) Failure to process<br />

allowable characters<br />

correctly.<br />

2) Mish<strong>and</strong>ling of<br />

lower <strong>and</strong> upper<br />

boundary values of<br />

each allowed ASCII<br />

range of characters.<br />

3) Failure to correctly<br />

process characters<br />

from the extended<br />

ASCII character set.


For ASCII sub-range of allowed<br />

groups of characters from ASCII 43-<br />

45:<br />

A file name that contains:<br />

11) the character (‘+’)<br />

corresponding to ASCII 43.<br />

12) the character (‘-’)<br />

corresponding to ASCII 45.<br />

A file name that contains:<br />

13) the character (‘.’)<br />

corresponding to ASCII 46 at<br />

a position other than the first<br />

position.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII 48-<br />

57:<br />

A file name that contains:<br />

14) the character (‘0’)<br />

corresponding to ASCII 48.<br />

15) the character (‘9’)<br />

corresponding to ASCII 57.<br />

A file name that contains:<br />

16) the character (‘;’)<br />

corresponding to ASCII 59.<br />

17) the character (‘-’)<br />

corresponding to ASCII 61.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII 64-<br />

91:<br />

A file name that contains:<br />

18) the character (‘@’)<br />

corresponding to ASCII 64.<br />

19) the character (‘[’)<br />

corresponding to ASCII 91.<br />

For ASCII sub-range of allowed<br />

groups of characters from ASCII 93-<br />

123:


All values<br />

containing at least<br />

one character that<br />

is NOT allowed or<br />

a valid character in<br />

a position that is<br />

NOT allowed.<br />

A file name that contains:<br />

20) the character (‘]’)<br />

corresponding to ASCII 93.<br />

21) the character (‘{’)<br />

corresponding to ASCII 123.<br />

A file name that contains:<br />

22) the character corresponding<br />

to ASCII 128 of the extended<br />

ASCII character set.<br />

23) the character corresponding<br />

to ASCII 255 of the extended<br />

ASCII character set.<br />

A file name that contains:<br />

1) the character (Unit<br />

Separator) corresponding to<br />

ASCII 31.<br />

2) the character (“)<br />

corresponding to ASCII 34.<br />

3) the character (‘*’)<br />

corresponding to ASCII 42.<br />

4) the character (‘.’)<br />

corresponding to ASCII 46 in<br />

the first position.<br />

5) the character (‘/’)<br />

corresponding to ASCII 47.<br />

6) The character (‘:’)<br />

corresponding to ASCII 58.<br />

7) The character (‘’)<br />

corresponding to ASCII 62.<br />

9) The character (‘?’)<br />

corresponding to ASCII 63.<br />

10) The character (‘\’)<br />

corresponding to ASCII 92.<br />

11) The character (‘|’)<br />

corresponding to ASCII 124.<br />

1) Mish<strong>and</strong>ling of<br />

values that contain<br />

characters that are<br />

NOT allowed.<br />

2) Mish<strong>and</strong>ling of<br />

valid characters in<br />

positions that are not<br />

allowed.<br />

3) Mish<strong>and</strong>ling of<br />

values just beneath<br />

<strong>and</strong> beyond the<br />

lower <strong>and</strong> upper <strong>and</strong><br />

boundary values of<br />

each ASCII<br />

subrange of allowed<br />

characters.


Files of Type<br />

Variable Equivalence<br />

classes<br />

Files of<br />

Type<br />

Encoding<br />

Test cases<br />

(Best representatives)<br />

All text files A file:<br />

1) of text type<br />

All other file<br />

types<br />

Variable Equivalence<br />

classes<br />

Encoding<br />

All files being<br />

opened in<br />

ANSI<br />

encoding<br />

All files being<br />

opened in<br />

Unicode<br />

encoding<br />

All files being<br />

opened in<br />

Unicode big<br />

endian<br />

encoding<br />

All files being<br />

opened in<br />

UTF-8<br />

encoding<br />

A file:<br />

1) that is non-text type<br />

Test cases<br />

(Best representatives)<br />

Any file being opened in<br />

ANSI encoding.<br />

Any file being opened in<br />

Unicode encoding.<br />

Any file being opened in<br />

Unicode big endian<br />

encoding.<br />

Any file being opened in<br />

UTF-8 encoding.<br />

Risks<br />

1) Failure to open files of the<br />

text type correctly.<br />

1) Mish<strong>and</strong>ling of non-text<br />

type of files.<br />

Risks<br />

Failure to open files in the<br />

encoding format of ANSI<br />

correctly<br />

Failure to open files in the<br />

encoding format of Unicode<br />

correctly<br />

Failure to open files in the<br />

encoding format of Unicode<br />

big endian correctly<br />

Failure to open files in the<br />

encoding format of UTF-8<br />

correctly


All-Pairs Combination table for ‘File Open’ function of Notepad program<br />

Iteration 1<br />

Test<br />

case#<br />

LI (6) E(4) FN (2) FT(2)<br />

1. LI1 E1 FN1<br />

2. LI1 E2 FN2<br />

3. LI1 E3 FN1<br />

4. LI1 E4 FN2<br />

5. LI2 E1 FN2<br />

6. LI2 E2 FN1<br />

7. LI2 E3 FN2<br />

8. LI2 E4 FN1<br />

9. LI3 E1 FN1<br />

10. LI3 E2 FN2<br />

11. LI3 E3 FN1<br />

12. LI3 E4 FN2<br />

13. LI4 E1 FN2<br />

14. LI4 E2 FN1<br />

15. LI4 E3 FN2<br />

16. LI4 E4 FN1<br />

17. LI5 E1 FN1<br />

18. LI5 E2 FN2<br />

19. LI5 E3 FN1<br />

20. LI5 E4 FN2<br />

21. LI6 E1 FN2<br />

22. LI6 E2 FN1<br />

23. LI6 E3 FN2<br />

24. LI6 E4 FN1


Iteration 2<br />

Test<br />

case#<br />

LI (6) E(4) FN (2) FT(2)<br />

1. LI1 E1 FN1 FT1<br />

2. LI1 E2 FN2 FT2<br />

3. LI1 E3 FN1 FT1<br />

4. LI1 E4 FN2 FT2<br />

5. LI2 E1 FN2 FT1<br />

6. LI2 E2 FN1 FT2<br />

7. LI2 E3 FN2 FT1<br />

8. LI2 E4 FN1 FT2<br />

9. LI3 E1 FN1 FT2<br />

10. LI3 E2 FN2 FT1<br />

11. LI3 E3 FN1 FT2<br />

12. LI3 E4 FN2 FT1<br />

13. LI4 E1 FN2 FT1<br />

14. LI4 E2 FN1 FT2<br />

15. LI4 E3 FN2 FT1<br />

16. LI4 E4 FN1 FT2<br />

17. LI5 E1 FN1 FT1<br />

18. LI5 E2 FN2 FT2<br />

19. LI5 E3 FN1 FT1<br />

20. LI5 E4 FN2 FT2<br />

21. LI6 E1 FN2 FT2<br />

22. LI6 E2 FN1 FT1<br />

23. LI6 E3 FN2 FT2<br />

24. LI6 E4 FN1 FT1


Flip or rotate<br />

Variable Equivalence<br />

classes<br />

Flip or<br />

rotate<br />

All files that<br />

have the Flip<br />

horizontal<br />

option<br />

selected.<br />

All files that<br />

have the Flip<br />

vertical option<br />

selected.<br />

All files that<br />

have the<br />

Rotate by<br />

angle option<br />

selected.<br />

Test cases<br />

(Best representatives)<br />

1) Any file that has the ‘Flip<br />

horizontal’ option selected.<br />

2) Any file that has the ‘Flip<br />

vertical’ option selected.<br />

Any file that has the ‘Rotate<br />

by angle’ option selected<br />

with the following angle<br />

selected:<br />

3) 90 degrees<br />

4) 180 degrees<br />

5) 270 degrees<br />

Risk<br />

Failure to flip the paint file<br />

correctly in the horizontal<br />

direction<br />

Failure to flip the paint file<br />

correctly in the vertical<br />

direction<br />

Failure to rotate the paint<br />

image correctly according<br />

to the angle specified.


Appendix J: Day 2 Exercises (Day 2 Exercises in<br />

Training Material)


Day 2 Exercises<br />

Date: ____________ Student#: ___________<br />

Integer fields<br />

1. An integer field/variable ‘q’ can take values only between –1255 <strong>and</strong> -1,<br />

excluding the end points. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

a. Represent this variable as a mathematical range expression. What<br />

kind of a range is this?<br />

b. What is the input domain?<br />

c. Next, identify the risks associated <strong>and</strong> list the identified risks.


d. Partition the input domain into equivalence classes based on risks<br />

identified.<br />

Variable(s) Equivalence<br />

Class(es)<br />

Test cases Risks Notes


Floating-point fields<br />

2. A floating-point field/variable ‘u’ can take values only between –19.999<br />

<strong>and</strong> 20.999, the end-points being inclusive. The precision is 3 decimal<br />

places after the decimal point. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

a. Represent this variable as a mathematical range expression. What<br />

kind of a range is this?<br />

b. What is the input domain?<br />

c. Next, identify the risks associated <strong>and</strong> list the identified risks.


d. Partition the input domain into equivalence classes based on risks<br />

identified.<br />

Variable(s) Equivalence<br />

Class(es)<br />

Test cases Risks Notes


Word problems for numeric fields<br />

3. Any new course at ZLTech, once approved by the corresponding academic<br />

department, has to be registered with the registration <strong>and</strong> admissions<br />

department. The registration can be done using an online registration form.<br />

Of the many details that need to be provided in the form, one of them is the<br />

number of credits the course is worth. A course at ZLTech can only be<br />

worth between 3 <strong>and</strong> 6 credits. What variables could be involved in analysis<br />

of this group of facts? What variable do we know enough about to perform<br />

equivalence class analysis <strong>and</strong> then a boundary value analysis? Develop a<br />

series of tests by performing equivalence class analysis <strong>and</strong> boundary value<br />

analysis on this variable.<br />

a. What variables could be involved in analysis of this group of facts?<br />

b. What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis?<br />

c. Represent this variable as a mathematical range expression. What<br />

kind of a range is this?<br />

d. What is the input domain?<br />

e. Next, identify the risks associated <strong>and</strong> list the identified risks.


f. Partition the input domain into equivalence classes based on risks<br />

identified.


4. The minimum balance required in any checking account at Washington<br />

Mutual Bank is $50. If a customer’s balance in his/her checking account<br />

drops below $50, the account is charged a penalty of $29. The precision of<br />

the balances is calculated up to 2 decimal places after the decimal point.<br />

What variables could be involved in analysis of this group of facts? What<br />

variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Assume integer values<br />

a. What variables could be involved in analysis of this group of facts?<br />

b. What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis?<br />

c. Represent this variable as a mathematical range expression. What<br />

kind of a range is this?<br />

d. What is the input domain?<br />

e. Next, identify the risks associated <strong>and</strong> list the identified risks.


f. Partition the input domain into equivalence classes based on risks<br />

identified.


5. An online application can run on an Internet connection whose connection<br />

speed is from 100kbps to 100mbps. The application is not capable of<br />

functioning correctly at other speeds. What variables could be involved in<br />

analysis of this group of facts? What variable do we know enough about to<br />

perform equivalence class analysis <strong>and</strong> then a boundary value analysis?<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis on this variable.<br />

a. What variables could be involved in analysis of this group of facts?<br />

b. What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis?<br />

c. Represent this variable as a mathematical range expression. What<br />

kind of a range is this?<br />

d. What is the input domain?<br />

e. Next, identify the risks associated <strong>and</strong> list the identified risks.


f. Partition the input domain into equivalence classes based on risks<br />

identified.


6. The Login function of an online e-mail system requires that user enter the<br />

user name <strong>and</strong> password <strong>and</strong> click on the Log in button within 5 minutes. If<br />

the time taken by a user is not within 5 minutes the Login page times out<br />

<strong>and</strong> refreshes, which means the user has to enter the information all over<br />

again. Develop a series of tests for the Login function with respect to the<br />

time constraint presented. Please note that the values in the fields ‘User<br />

name’ <strong>and</strong> ‘password’ are irrelevant for this analysis. Also assume that<br />

millisecond is the smallest unit of measurement of time for the Login<br />

function.<br />

a. What variables could be involved in analysis of this group of facts?<br />

b. What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis?<br />

c. Represent this variable as a mathematical range expression. What<br />

kind of a range is this?<br />

d. What is the input domain?<br />

e. Next, identify the risks associated <strong>and</strong> list the identified risks.


f. Partition the input domain into equivalence classes based on risks<br />

identified.


Problems with multiple ranges<br />

7. A grade calculator program takes a score for a course as input <strong>and</strong> outputs<br />

the corresponding grade. The grade is determined on the basis of the<br />

following:<br />

8.<br />

Score range Grade<br />

90.00


d. Next, identify the risks associated <strong>and</strong> list the identified risks.


e. Partition the input domain into equivalence classes based on risks<br />

identified.


Non-Numbers<br />

Identify the risks associated with inputting non-numbers in the ‘Score’ field <strong>and</strong> list<br />

the identified risks.<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong> boundary<br />

value analysis on the ‘Grade Calculator’ program with respect to non-numbers.


String variables/fields<br />

8. An income field accepts a string as input. The first character needs to the<br />

dollar character ‘$’ <strong>and</strong> the others have to be digits (0-9). The string can also<br />

have commas <strong>and</strong> a decimal point. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

a. Represent the income string variable as mathematical range<br />

expression(s).<br />

b. What is the input domain?<br />

c. Next, identify the risks associated <strong>and</strong> list the identified risks.


d. Partition the input domain into equivalence classes based on risks<br />

identified.


Appendix K: Day 3 Exercises (Day 3 Exercises in<br />

Training Material)


Day 3 Exercises<br />

Date: ____________ Student#: ______________<br />

PLEASE TYPE ALL YOUR ANSWERS USING AN AVAILABLE TEXT EDITOR (MS WORD)<br />

Multidimensional variables<br />

General analysis of multidimensional numeric fields<br />

1. Delta Airlines provides its customers with a Delta Skymile number to<br />

enable them to earn points for every flight they take with Delta. A Skymile<br />

number is a 10-digit numeric value. The minimum Skymile number that can<br />

be assigned to a customer is 1000000000 <strong>and</strong> the maximum is 9999955590.<br />

Delta Airlines also provides an online program by which a Delta Airlines<br />

customer can enter his/her Skymile number <strong>and</strong> access his/her travel history<br />

with Delta <strong>and</strong> corresponding skymiles earned.<br />

2.<br />

3.<br />

4.<br />

5.<br />

6.<br />

7.<br />

8.<br />

9.<br />

10.<br />

11. What variables could be involved in analysis of this group of facts? What<br />

variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Identify the relevant dimensions for<br />

this variable. Develop a series of tests by performing equivalence class<br />

analysis <strong>and</strong> boundary value analysis on each of the identified dimensions<br />

of this variable.<br />

12.<br />

a. What variables could be involved in analysis of this group of facts?<br />

b. What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis?<br />

c. Identify the relevant dimensions of the variable


d. Represent the variable as a mathematical range expression along<br />

each of the identified dimensions.<br />

e. What is the input domain?<br />

f. Next, identify the risks associated with each of the dimension <strong>and</strong><br />

list the identified risks.


g. Partition the input domain into equivalence classes based on<br />

dimensions <strong>and</strong> corresponding risks identified.


2. ZLTech has a web-based mail system. A user has to enter his/her user name<br />

<strong>and</strong> password <strong>and</strong> then click on the Log in button to log in <strong>and</strong> access his/her<br />

inbox. The password can have six to nine characters. Also, only underscores<br />

‘_’, except as the first character, <strong>and</strong> uppercase letters are allowed for the<br />

password. What variables could be involved in analysis of this group of facts?<br />

What variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Identify the relevant dimensions for this<br />

variable. Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis on each of the identified dimensions of this variable.<br />

h.<br />

a. What variables could be involved in analysis of this group of<br />

facts?<br />

b. What variable do we know enough about to perform equivalence<br />

class analysis <strong>and</strong> then a boundary value analysis?<br />

c. Identify the general dimensions of the variable<br />

d. Represent the variable as a mathematical range expression along<br />

each of the identified dimensions.


e. What is the input domain?<br />

f. Next, identify the risks associated with each of the dimension<br />

<strong>and</strong> list the identified risks.


g. Partition the input domain into equivalence classes based on<br />

dimensions <strong>and</strong> corresponding risks identified.


Enumerated fields<br />

3. In the online bug-tracking system of Neon Technology, a user can report<br />

bugs related to any product the company makes. One of the functions of the<br />

bug-tracking system is the bug-reporting function. This function, apart from<br />

other fields, has a non-editable combo-box field called ‘bug-severity’ that<br />

can take one of the following available input choices, with 1 meaning least<br />

severe <strong>and</strong> 5 meaning the most:<br />

• 1<br />

• 2<br />

• 3<br />

• 4<br />

• 5<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis, if applicable, on the bug-severity field.


Identifying variables of a given program<br />

4. For each of the following programs/functions, identify its variables; it’s data<br />

type <strong>and</strong> state whether the variable is input or output.<br />

a. In the Microsoft PowerPoint application, in the Insert menu,<br />

choosing the ClipArt option brings up the following dialog box:


. In Internet Explorer, in the File menu, choosing the ‘Save As’ option<br />

brings up the following dialog box:


c. In Microsoft Excel application, in the Format menu, choosing the ‘Cells’ option<br />

brings up the following dialog box:


Alignment


Font


Border


Patterns


Protection


d. The following is a screenshot of the ‘sign-up’ form for free Yahoo mail:


Analyzing given programs/functions <strong>and</strong> developing a series of test cases for each<br />

of the variables<br />

5. For the ‘Find Next’ function of the Notepad program, whose screenshot is<br />

shown below, identify its variables, the dimensions, data type along each<br />

dimension <strong>and</strong> develop a series of test cases by performing equivalence class<br />

analysis <strong>and</strong> boundary-value analysis on each of the variables.<br />

i. Identify the variables in this function.<br />

ii. Analyze the values taken by each of the variables.<br />

1. What kind of values does the variable take?<br />

•<br />

•<br />

•<br />

•<br />

2.


2. What are the characteristics of these values?


3. Is the variable multidimensional? What are the dimensions? Can you<br />

map the variable to st<strong>and</strong>ard data types like int, double, float, string,<br />

char, etc… along each of its dimensions?


iii. Can you represent each of the variables as a mathematical range<br />

expression?


iv. Next, identify the risks associated with respect to each variable<br />

along each of its dimensions <strong>and</strong> list the identified risks.


v. Build the equivalence class tables.


6. For the ‘Insert Table’ function of Microsoft Word application, whose screenshot<br />

is shown below, identify its variables, the dimensions, data type along each<br />

dimension <strong>and</strong> develop a series of test cases by performing equivalence class<br />

analysis <strong>and</strong> boundary-value analysis on each of the variables.<br />

i. Identify the variables in this function.


ii. Analyze the values taken by each of the variables.<br />

1. What kind of values does the variable take?<br />

•<br />

•<br />

•<br />

•<br />

2.<br />

2. What are the characteristics of these values?


3. Is the variable multidimensional? What are the dimensions? Can you<br />

map the variable to st<strong>and</strong>ard data types like int, double, float, string,<br />

char, etc… along each of its dimensions?


iii. Can you represent each of the variables as a mathematical range<br />

expression?


iv. Next, identify the risks associated with respect to each variable along each<br />

of its dimensions <strong>and</strong> list the identified risks.


v. Build the equivalence class tables.


Appendix L: Day 4 Exercises (Day 4 Exercises in<br />

Training Material - Original <strong>and</strong> Revised)


Day 4 Exercises<br />

Date: ____________ Student#: ______________<br />

All-pairs combination<br />

USE MS EXCEL/MS WORD TO CONSTRUCT ALL-PAIRS COMBINATION TABLE<br />

FOR EACH EXERCISE<br />

1. There are five variables l, m, n, o <strong>and</strong> p of some function. ‘l’ has 2 test cases<br />

corresponding to it, ‘m’ has 4, ‘n’ has 3, ‘o’ has 5 <strong>and</strong> ‘p’ has 2 test cases<br />

corresponding to it. Develop a series of combination tests on these five<br />

variables by performing all-pairs combination on them. Show all iterations.<br />

Assume all variables are independent <strong>and</strong> also assume that none of the test<br />

cases are error-h<strong>and</strong>ling test cases.<br />

i. Arrange the variables in descending order of the number of test<br />

cases they have. Call the first two Max1 <strong>and</strong> Max2.<br />

ii. Give symbolic names to the test cases of each of the variables.<br />

iii. Calculate the minimal number of all-pairs combinations.


iv. Determine the number of pairs in each combination:<br />

v. Build the all-pairs combination table.


2. There are five variables a, b, c, d <strong>and</strong> e of some function. Each variable has<br />

three test cases corresponding to it. Develop a series of combination tests on<br />

these five variables by performing all-pairs combination on them. Show all<br />

iterations. Assume all variables are independent <strong>and</strong> also assume that none of<br />

the test cases are error-h<strong>and</strong>ling test cases.<br />

i. Arrange the variables in descending order of the number of test cases they<br />

have. Call the first two Max1 <strong>and</strong> Max2.<br />

ii. Give symbolic names to the test cases of each of the variables.<br />

iii. Calculate the minimal number of all-pairs combinations.<br />

iv. Determine the number of pairs in each combination:


v. Build the all-pairs combination table.


Application of all-pairs combination to real application functions <strong>and</strong> identifying<br />

dependency relationships<br />

3. Develop a series of combination tests on the variables of the ‘Find Next’<br />

function of the Notepad program by performing all-pairs combination on<br />

them. Use MS Excel/ MS Word to build your all-pairs combination table.<br />

i. Indicate what variables you would select for doing all-pairs<br />

combination. Justify your selection.<br />

ii. Indicate which test cases of the chosen variables you will use for<br />

doing all-pairs. Justify your selection.<br />

iii. Show all iterations. Give relevant comments when you backtrack <strong>and</strong><br />

redo any ordering.<br />

Discuss the relationships that exist between variables, if any, <strong>and</strong> give<br />

examples of how you would test them.


4. Develop a series of combination tests on the variables of the ‘Insert table’<br />

function of MS Word application by performing all-pairs combination on<br />

them. Use MS Excel/ MS Word to build your all-pairs combination table.<br />

i.Indicate what variables you would select for doing all-pairs<br />

combination. Justify your selection.<br />

ii.Indicate which test cases of the chosen variables you will use for doing<br />

all-pairs. Justify your selection.<br />

iii.Show all iterations. Give relevant comments when you backtrack <strong>and</strong><br />

redo any ordering.<br />

Discuss the relationships that exist between variables, if any, <strong>and</strong> give<br />

examples of how you would test them.


Appendix M: Paper-Based Tests (Test A <strong>and</strong> Test B<br />

in Training Material)


<strong>Domain</strong> <strong>Testing</strong>-Test A 1<br />

(100 points)<br />

Date: ________________ Student# ________________<br />

1. An integer field/variable ‘i’ can take values in the range –999 <strong>and</strong> 999, the<br />

end-points being inclusive. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Analyze only the dimension that is explicitly specified here. 10 points<br />

1<br />

Extra blank pages that were provided to the learners for solving the exercise questions have been<br />

deleted.


2. A floating-point field/variable ‘f’ can take values only between –70.000 <strong>and</strong><br />

70.000, the left-end being inclusive <strong>and</strong> the right end being exclusive. The<br />

precision is 3 places after the decimal point. Develop a series of tests by<br />

performing equivalence class analysis <strong>and</strong> boundary value analysis on this<br />

variable. Analyze only the dimension that is explicitly specified here.<br />

10 points


3. A string field/variable ‘s’ can take only upper <strong>and</strong> lower case letters, from<br />

the English alphabet. Develop a series of tests by performing equivalence<br />

class analysis <strong>and</strong> boundary value analysis on this variable. Analyze only<br />

the dimension that is explicitly specified here. 10 points


4. In an online airlines reservation system there is a year combo-box field that<br />

has the following options available:<br />

• 2003<br />

• 2004<br />

• 2005<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis, if applicable, on this field. 10 points


5. The screenshot of the ‘Login’ function of Yahoo messenger application<br />

program is shown below. For this ‘Login’ function, identify its variables.<br />

For each variable, determine the data type of each of the variables <strong>and</strong> state<br />

whether the variables are input or output. 5 points


6. There are five variables ‘l’, ‘m’, ‘n’, ‘o’ <strong>and</strong> ‘p’ in some function. ‘l’, ‘m’,<br />

‘n’ <strong>and</strong> ‘o’ have five test cases each <strong>and</strong> ‘p’ has two test cases. How many<br />

total combinations of test cases are possible for these five variables? How<br />

many minimal combinations does all-pairs combination technique yield?<br />

How many pairs will each combination have if all-pairs combination<br />

technique is used? Develop a series of combination tests on these five<br />

variables by performing all-pairs combination on them. Show all iterations.<br />

Give relevant comments when you backtrack <strong>and</strong> redo any ordering. Please<br />

have separate table for each re-ordering. 10 points<br />

How many total combinations of test cases are possible for these five<br />

variables?<br />

How many minimal combinations does all-pairs combination technique<br />

yield?<br />

How many pairs will each combination have if all-pairs combination<br />

technique is used?<br />

Develop a series of combination tests on these five variables by performing<br />

all-pairs combination on them.


7. An I-20 VISA 2 program for international students of a school lets a student<br />

know the status of his/her application for a new I-20 by entering his/her<br />

corresponding VISA number. The VISA number is a 16-digit numeric value<br />

with no dashes or commas or spaces in between. The minimum allowed<br />

VISA number that a student could have ever have been assigned is<br />

1000009999000000 <strong>and</strong> the maximum is 9999955590999800.<br />

What variables could be involved in analysis of this group of facts? What<br />

variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Develop a series of tests by performing<br />

equivalence class <strong>and</strong> boundary value analysis on this variable. 15 points<br />

2<br />

The name of the I-20 VISA program has been changed to something more generic <strong>and</strong> nonspecific<br />

than before.


8. Bank ‘X’ 3 has started a new savings account program, which allows<br />

customers to earn interest based on their savings account balance. The<br />

interest is calculated using the following table:<br />

Balance range Interest that can be earned<br />

$5000.00


9. ZLTech has a web-based student records system. A student has to enter<br />

his/her social security number in the text field provided for it <strong>and</strong> then click<br />

on the Sign in button to log in <strong>and</strong> access his/her records, which include<br />

courses taken by the student so far <strong>and</strong> the corresponding grades.<br />

The social security number can have only eleven characters. The first three<br />

characters have to be digits, then a hyphen <strong>and</strong> then two more digits, a<br />

hyphen <strong>and</strong> finally four digits; no other characters whatsoever are allowed<br />

to be entered for the social security number field.<br />

What variables could be involved in analysis of this group of facts? What<br />

variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

15 points


<strong>Domain</strong> <strong>Testing</strong>-Test B 1<br />

(100 points)<br />

Date: ________________ Student# ________________<br />

1. An integer field/variable ‘i’ can take values in the range –1000 <strong>and</strong> 1000,<br />

the end-points being exclusive. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Analyze only the dimension that is explicitly specified here. 10 points<br />

1 1<br />

Extra blank pages that were provided to the learners for solving the exercise questions have been<br />

deleted.


2. A floating-point field/variable ‘f’ can take values only between –50.00 <strong>and</strong><br />

49.99, both end-points being inclusive. The precision is 2 places after the<br />

decimal point. Develop a series of tests by performing equivalence class<br />

analysis <strong>and</strong> boundary value analysis on this variable. Analyze only the<br />

dimension that is explicitly specified here. 10 points


3. A string field/variable ‘s’ can take upper <strong>and</strong> lower case letters from the<br />

English alphabet, <strong>and</strong> digits. Develop a series of tests by performing<br />

equivalence class analysis <strong>and</strong> boundary value analysis on this variable.<br />

Analyze only the dimension that is explicitly specified here. 10 points


4. DVD Collections, Inc. has a shopping website where a user can purchase<br />

DVDs. For checking out, a user needs to enter his/her credit card number<br />

<strong>and</strong> the type of the credit card, which is a combo-box field having the<br />

following options available:<br />

• American Express<br />

• VISA<br />

• MasterCard<br />

• Discover<br />

Develop a series of tests by performing equivalence class analysis <strong>and</strong><br />

boundary value analysis, if applicable, on the ‘type of credit card’<br />

variable/field. 10 points


5. The screenshot of an online length or distance unit converter program is<br />

provided below. The program takes an input value for length <strong>and</strong> the<br />

corresponding unit of measurement <strong>and</strong> outputs the corresponding<br />

equivalent value for the output unit of measurement chosen by the user.<br />

Identify the variables of the unit converter program, the data type of each of<br />

the variables <strong>and</strong> state whether the variables are input or output. 5 points<br />

Length or distance<br />

Input<br />

1 inches<br />

Output<br />

0.000016 miles (UK <strong>and</strong> US)


6. There are four variables ‘a’, ‘b’, ‘c’ <strong>and</strong> ‘d’ in some function. All the four<br />

variables have five test cases each. How many total combinations of test<br />

cases are possible for these four variables? How many minimal<br />

combinations does all-pairs combination technique yield? How many pairs<br />

will each combination have if all-pairs combination technique is used?<br />

Develop a series of combination tests on these four variables by performing<br />

all-pairs combination on them. Show all iterations. Give relevant comments<br />

when you backtrack <strong>and</strong> redo any ordering. Please have separate table for<br />

each re-ordering. 10 points<br />

How many total combinations of test cases are possible for these four<br />

variables?<br />

How many minimal combinations does all-pairs combination technique<br />

yield?<br />

How many pairs will each combination have if all-pairs combination<br />

technique is used?<br />

Develop a series of combination tests on these four variables by performing<br />

all-pairs combination on them.


7. Creative Technologies offers its employees the opportunity to attend<br />

conferences <strong>and</strong> training that helps in the enhancement of their skill set <strong>and</strong><br />

in turn the company’s profits. The company requires that an employee use<br />

the company’s reimbursement system to report expenses. The system has an<br />

expense report function that has various fields like employee ID, meal<br />

expenses, travel expenses, training/conference registration expenses,<br />

miscellaneous expenses <strong>and</strong> total expenditure. The company reimburses the<br />

employees up to $5,000. All expense-related fields require entering of only<br />

whole numbers, which means that the user should round each expense to the<br />

nearest whole number <strong>and</strong> then enter this number in the corresponding field.<br />

What variables could be involved in analysis of this group of facts? What<br />

variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Develop a series of tests by performing<br />

equivalence class <strong>and</strong> boundary value analysis on this variable. 2 15 points<br />

2 This question erroneously appeared as question nine in the original test.


8. XYZ 3 credit cards offer a ‘cash-back’ award program. After a customer<br />

spends a particular amount of money, s/he receives a cash back award,<br />

according to the following table:<br />

Amount spent range Cash back that can be earned<br />

$1000.00


9. The INS 4 of some country has an online application that lets international<br />

students check the status of their work authorization application in the<br />

United States. Upon applying for work authorization, every student is given<br />

a ticket number, which is an 11-character value. Every ticket number<br />

consists of digits <strong>and</strong> uppercase letters, with a letter in the fourth <strong>and</strong> eighth<br />

position. The other characters have to be strictly digits.<br />

What variables could be involved in analysis of this group of facts? What<br />

variable do we know enough about to perform equivalence class analysis<br />

<strong>and</strong> then a boundary value analysis? Develop a series of tests by performing<br />

equivalence class <strong>and</strong> boundary value analysis on this variable. 5<br />

15 points<br />

4 The phrase ‘INS’ has been changed to ‘INS of some country’ to make it more general.<br />

5 This question erroneously appeared as question seven in the original test.


Appendix N: Performance Test (Performance Test in<br />

Training Material - Original <strong>and</strong> Revised)


Performance Test (Original)<br />

Date: __________________ Student#_______________<br />

For the Page Setup function of Microsoft PowerPoint application, whose screenshot is<br />

provided below, develop a series of tests for this function by performing equivalence<br />

class <strong>and</strong> boundary value analysis on it.<br />

Instruction:<br />

1. Please type all your answers using an available text editor (MS Word) <strong>and</strong>/or<br />

MS Excel in your computer <strong>and</strong> e-mail all your files to spadmana@fit.edu.<br />

2. Name each file starting with your student number, for example,<br />

Stuent#_EqClassTable.doc, Student#_All-Pairs.doc <strong>and</strong><br />

Student#_Dependency.doc.<br />

Checklist:<br />

Make sure you include the following in your analysis:<br />

a. List of variables; indicate input or output, their dimensions <strong>and</strong> the data<br />

type they map to.<br />

b. Equivalence class table(s) that shows the complete equivalence class <strong>and</strong><br />

boundary value analysis for the feature under test.<br />

c. All-pairs combination table.<br />

d. List of dependency risks (at least 3).<br />

e. Illustration of how you could test the dependency risks listed, using the<br />

combinations (test cases) present in the all-pairs combination table by<br />

mapping a dependency risk to one or more available combination(s) in the<br />

all-pairs combination table constructed by you. Make sure you list the<br />

corresponding combination(s) <strong>and</strong> the test case number(s) beneath each<br />

dependency risk.


Performance Test (Revised)<br />

(100 points)<br />

Date: __________________ Student#_______________<br />

For the Page Setup function of Microsoft PowerPoint application, whose screenshot is<br />

provided below, develop a series of tests for this function by performing equivalence<br />

class <strong>and</strong> boundary value analysis on it.<br />

Instructions:<br />

1. Please type all your answers using an available text editor (MS Word) <strong>and</strong>/or<br />

MS Excel in your computer <strong>and</strong> e-mail all your files to<br />

sowmya_testing_a2529@yahoo.com.<br />

2. Name each file starting with your student number, for example,<br />

Stuent#_EqClassTable.doc, Student#_All-Pairs.doc <strong>and</strong><br />

Student#_Relationships.doc.<br />

Checklist:<br />

Make sure you include the following in your analysis:<br />

a. List of variables; indicate input or output, their dimensions <strong>and</strong> the data<br />

type they map to.<br />

b. Equivalence class table(s) that shows the complete equivalence class <strong>and</strong><br />

boundary value analysis for the function under test.<br />

c. All-pairs combination.<br />

i. Indicate what variables you would select for doing all-pairs<br />

combination. Justify your selection.<br />

ii. Indicate which test cases of the chosen variables you will use for<br />

doing all-pairs. Justify your selection.<br />

iii. Show all iterations. Give relevant comments when you backtrack<br />

<strong>and</strong> redo any ordering.<br />

d. Discuss the relationships that exist between variables, if any, <strong>and</strong> give<br />

examples of how you would test them.


Appendix O: Questionnaires (Day 1-Day 5<br />

Questionnaires in Training Material)


Date: _________________<br />

Evaluation of <strong>Domain</strong> <strong>Testing</strong> Training<br />

Day 1<br />

Please take a moment to complete this questionnaire. Your response will help me improve my training.<br />

1. How would you rate the overall clarity of today’s lecture? Excellent Good Fair Poor<br />

2. How would you rate the overall clarity of the pretest? Excellent Good Fair Poor<br />

3. How would you rate your overall satisfaction with today’s lecture? Excellent Good Fair Poor<br />

4. How would you rate your overall satisfaction with the pretest? Excellent Good Fair Poor<br />

5. How would you rate today’s session in terms of how interesting it was? Excellent Good Fair Poor<br />

6. Rate your confidence when answering the questions on the pretest. Excellent Good Fair Poor<br />

7. Was enough time given to solve the pretest?<br />

More than enough Enough Little short of enough Very less time provided<br />

8. Were too many or too less questions included in the pretest?<br />

Too many questions Enough Little short of enough Very less questions<br />

9. How would you rate your competence in doing domain testing? Excellent Good Fair Poor<br />

10. What was the most useful part of today’s session?<br />

11. What did you like best about today’s session?


12. What was the least useful part of today’s session?<br />

13. What other information would you like to see added to today’s lecture <strong>and</strong> test?<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

15. Would you like to suggest specific improvements to the pretest?


Date: _________________<br />

Evaluation of <strong>Domain</strong> <strong>Testing</strong> Training<br />

Day 2<br />

Please take a moment to complete this questionnaire. Your response will help me improve my training.<br />

1. How would you rate the overall clarity of today’s lecture? Excellent Good Fair Poor<br />

2. How would you rate the overall clarity of today’s exercises? Excellent Good Fair Poor<br />

3. How would you rate your overall satisfaction with today’s lecture? Excellent Good Fair Poor<br />

4. How would you rate your overall satisfaction with today’s exercises? Excellent Good Fair Poor<br />

5. How would you rate today’s session in terms of how interesting it was? Excellent Good Fair Poor<br />

6. Rate your confidence when solving exercises. Excellent Good Fair Poor<br />

7. Was enough feedback provided for the exercises?<br />

More than enough Enough Little short of enough Very less<br />

8. Was enough time given to solve the exercises?<br />

More than enough Enough Little short of enough Very less time provided<br />

9. What was the most useful part of today’s session?<br />

10. What did you like best about today’s session?


11. What was the least useful part of today’s session?<br />

12. What other information would you like to see added to today’s lecture?<br />

13. What other information would you like to see added to today’s exercises?<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

15. Would you like to suggest specific improvements to today’s exercises?


Date: _________________<br />

Evaluation of <strong>Domain</strong> <strong>Testing</strong> Training<br />

Day 3<br />

Please take a moment to complete this questionnaire. Your response will help me improve my training.<br />

1. How would you rate the overall clarity of today’s lecture? Excellent Good Fair Poor<br />

2. How would you rate the overall clarity of today’s exercises? Excellent Good Fair Poor<br />

3. How would you rate your overall satisfaction with today’s lecture? Excellent Good Fair Poor<br />

4. How would you rate your overall satisfaction with today’s exercises? Excellent Good Fair Poor<br />

5. How would you rate today’s session in terms of how interesting it was? Excellent Good Fair Poor<br />

6. Rate your confidence when solving exercises. Excellent Good Fair Poor<br />

7. Was enough feedback provided for the exercises?<br />

More than enough Enough Little short of enough Very less<br />

8. Was enough time given to solve the exercises?<br />

More than enough Enough Little short of enough Very less time provided<br />

9. What was the most useful part of today’s session?<br />

10. What did you like best about today’s session?


11. What was the least useful part of today’s session?<br />

12. What other information would you like to see added to today’s lecture?<br />

13. What other information would you like to see added to today’s exercises?<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

15. Would you like to suggest specific improvements to today’s exercises?


Date: _________________<br />

Evaluation of <strong>Domain</strong> <strong>Testing</strong> Training<br />

Day 4<br />

Please take a moment to complete this questionnaire. Your response will help me improve my training.<br />

1. How would you rate the overall clarity of today’s lecture? Excellent Good Fair Poor<br />

2. How would you rate the overall clarity of today’s exercises? Excellent Good Fair Poor<br />

3. How would you rate your overall satisfaction with today’s lecture? Excellent Good Fair Poor<br />

4. How would you rate your overall satisfaction with today’s exercises? Excellent Good Fair Poor<br />

5. How would you rate today’s session in terms of how interesting it was? Excellent Good Fair Poor<br />

6. Rate your confidence when solving exercises. Excellent Good Fair Poor<br />

7. Was enough feedback provided for the exercises?<br />

More than enough Enough Little short of enough Very less<br />

8. Was enough time given to solve the exercises?<br />

More than enough Enough Little short of enough Very less time provided<br />

9. What was the most useful part of today’s session?<br />

10. What did you like best about today’s session?


11. What was the least useful part of today’s session?<br />

12. What other information would you like to see added to today’s lecture?<br />

13. What other information would you like to see added to today’s exercises?<br />

14. Would you like to suggest specific improvements to today’s lecture?<br />

15. Would you like to suggest specific improvements to today’s exercises?


Date: _________________<br />

Evaluation of <strong>Domain</strong> <strong>Testing</strong> Training<br />

Day 5<br />

Please take a moment to complete this questionnaire. Your response will help me improve my training.<br />

1. How would you rate the overall training in terms of how interesting it was? Excellent Good Fair Poor<br />

2. How would you rate your overall satisfaction with the training? Excellent Good Fair Poor<br />

3. How would you rate the overall clarity of the posttest? Excellent Good Fair Poor<br />

4. How would you rate your overall satisfaction with the posttest? Excellent Good Fair Poor<br />

5. Rate your confidence when answering the questions on the posttest. Excellent Good Fair Poor<br />

6. Was enough time given to solve the posttests?<br />

More than enough Enough Little short of enough Very less time provided<br />

7. Were too many or too less questions included in the posttests?<br />

Too many questions Enough Little short of enough Very less questions<br />

8. How would you rate your competence in doing domain testing? Excellent Good Fair Poor<br />

9. How likely is it that you will recommend this training to somebody else?<br />

Very likely Likely Less likely Not likely<br />

10. What was the most useful part of this training?<br />

11. What did you like best about the training?


12. What was the least useful part the training?<br />

13. What other information would you like to see added to or deleted from today’s tests?<br />

14. Would you like to suggest specific improvements to the posttests?<br />

15. Would you like to suggest specific improvements to the training?


Appendix P: Instructional Objectives


Basic Instructional Objectives:<br />

Instructional Objectives<br />

1. Ability to analyze simple integer fields/variables, defined in terms of range<br />

of values, do equivalence class analysis <strong>and</strong> boundary value analysis on<br />

them.<br />

2. Ability to analyze simple floating-point fields/variables, defined in terms of<br />

range of values, do equivalence class analysis <strong>and</strong> boundary value analysis<br />

on them.<br />

3. Ability to analyze simple string fields/variables, defined in terms of range<br />

of values, <strong>and</strong> equivalence class analysis <strong>and</strong> boundary value analysis on<br />

them.<br />

4. Ability to analyze simple enumerated variables/fields.<br />

5. Ability to analyze variables with multiple sub-ranges <strong>and</strong> do equivalence<br />

class analysis <strong>and</strong> boundary value analysis on them.<br />

6. Ability to analyze variables along one dimension.<br />

7. Ability to analyze variables along multiple dimensions.<br />

8. Ability to analyze non-numbers for strictly numeric values.<br />

9. Ability to analyze characters in terms of ASCII.<br />

10. Ability to do identify variables of a given function/program/application <strong>and</strong><br />

classify them as input or output variables.<br />

11. Ability to identify independent <strong>and</strong> dependent variables of a function.<br />

12. Ability to identify dependency relationships of the dependent variables.<br />

13. Ability to do all-pairs combination on a given set of variables.<br />

14. Ability to calculate the total number of possible combinations (total number<br />

of test cases) of all fields of a function/program.<br />

15. Ability to look at a program or function, identify variables/fields, determine<br />

the kind of values each takes, determine the dimensions of each variable,<br />

<strong>and</strong> do equivalence class analysis <strong>and</strong> boundary-values analysis along each<br />

of the dimensions, if applicable.<br />

Higher Order Objectives (HO)<br />

1. Ability to recognize patterns <strong>and</strong> generalize<br />

2. Ability to translate verbal form of specification to symbolic form for<br />

problem solving.<br />

3. Ability to develop a list of risks from a spec<br />

4. Ability to map risks to test cases.<br />

These higher order objectives are co-requisites of many of the above listed basic<br />

instructional objectives, which means that these are to be achieved in parallel with<br />

many of the basic instructional objectives.


Appendix Q: Bloom’s Taxonomy of Learning<br />

Outcomes


Bloom’s Taxonomy<br />

The following table has been retrieved from http://www.coun.uvic.ca/learn/program/hndouts/bloom.html<br />

1. Knowledge • observation <strong>and</strong> recall of information<br />

• knowledge of dates, events, places<br />

• knowledge of major ideas<br />

• mastery of subject matter<br />

• Question Cues:<br />

list, define, tell, describe, identify, show, label, collect, examine, tabulate,<br />

quote, name, who, when, where, etc.<br />

2. Comprehension • underst<strong>and</strong>ing information<br />

• grasp meaning<br />

• translate knowledge into new context<br />

• interpret facts, compare, contrast<br />

• order, group, infer causes<br />

• predict consequences<br />

• Question Cues:<br />

summarize, describe, interpret, contrast, predict, associate, distinguish,<br />

estimate, differentiate, discuss, extend<br />

3. Application • use information<br />

• use methods, concepts, theories in new situations<br />

• solve problems using required skills or knowledge<br />

• Questions Cues:<br />

apply, demonstrate, calculate, complete, illustrate, show, solve, examine,<br />

modify, relate, change, classify, experiment, discover


4. Analysis • seeing patterns<br />

• organization of parts<br />

• recognition of hidden meanings<br />

• identification of components<br />

• Question Cues:<br />

analyze, separate, order, explain, connect, classify, arrange, divide,<br />

compare, select, explain, infer<br />

5. Synthesis • use old ideas to create new ones<br />

• generalize from given facts<br />

• relate knowledge from several areas<br />

• predict, draw conclusions<br />

• Question Cues:<br />

combine, integrate, modify, rearrange, substitute, plan, create, design,<br />

invent, what if?, compose, formulate, prepare, generalize, rewrite<br />

6. Evaluation • compare <strong>and</strong> discriminate between ideas<br />

• assess value of theories, presentations<br />

• make choices based on reasoned argument<br />

• verify value of evidence<br />

• recognize subjectivity<br />

• Question Cues<br />

assess, decide, rank, grade, test, measure, recommend, convince, select,<br />

judge, explain, discriminate, support, conclude, compare, summarize


Appendix R: Traceability Matrices: Mapping<br />

Assessment Items to Instructional Objectives


Day 2 Examples<br />

Day 3 Examples<br />

Traceability Matrices – Mapping Assessment Items to Instructional Objectives<br />

Example Level 1 HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 2 3, 4 √ √<br />

2. 2 3, 4 √ √<br />

3. 3 2, 3, 4 √ √ √<br />

4. 3 2, 3, 4 √ √ √<br />

5. 3 2, 3, 4 √ √ √<br />

6. 4 2, 3, 4 √ √ √ √ √ √<br />

7. 2 3, 4 √ √ √<br />

Example Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 5 1, 3, 4 √ √ √ √<br />

2. 5 1, 3, 4 √ √ √<br />

3. 4 2, 3, 4 √ √ √ √<br />

4. 2 2, 3, 4 √ √ √<br />

5. 2 1 √<br />

6. 5 1,2,3,4 √ √ √ √ √<br />

7. 5 1,2,3,4 √ √ √<br />

1<br />

The level of difficulty of the questions is based on Bloom’s Taxonomy of Learning Outcomes, which is described in ‘Appendix Q: Bloom’s<br />

Taxonomy of Learning Outcomes’.


Day 4 Examples<br />

Example Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 3 1 √ √ √ √<br />

2. 3 1 √ √ √ √<br />

3. 5 1, 2 √ √ √ √<br />

4. 5 1, 2 √ √ √ √<br />

Day 2 Exercises<br />

Example Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 2 3, 4 √ √<br />

2. 2 3, 4 √ √<br />

3. 3 2, 3, 4 √ √ √<br />

4. 3 2, 3, 4 √ √ √<br />

5. 5 2, 3, 4 √ √ √<br />

6. 5 2, 3, 4 √ √ √<br />

7. 5 3, 4 √ √ √ √ √<br />

8. 3 1,2,3,4 √ √ √<br />

Day 3 Exercises<br />

Example Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 5 1, 3, 4 √ √ √ √<br />

2. 5 1, 3, 4 √ √ √ √<br />

3. 2 2, 3, 4 √ √ √<br />

4. 2 1 √<br />

5. 5 1,2,3,4 √ √ √ √ √<br />

6. 5 1,2,3,4 √ √ √ √ √


Day 4 Exercises<br />

Example Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 3 1 √ √ √ √<br />

2. 3 1 √ √ √ √<br />

3. 5 1, 2 √ √ √ √<br />

4. 5 1, 2 √ √ √ √<br />

Test A/Test B<br />

Test Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

Question<br />

1. 2 3, 4 √ √<br />

2. 2 3, 4 √ √<br />

3. 2 3, 4 √ √ √<br />

4. 2 2, 3, 4 √ √ √<br />

5. 2 1 √<br />

6. 3 1 √ √ √ √<br />

7. 5 1,2,3,4 √ √ √ √<br />

8. 4 1, 2, 3, 4 √ √ √ √ √ √<br />

9. 4 1, 2, 3, 4 √ √ √ √<br />

Performance Posttest<br />

Test<br />

Question<br />

Level HOO IG1 IG2 IG3 IG4 IG5 IG6 IG7 IG8 IG9 IG10 IG11 IG12 IG13 IG14 IG15<br />

1. 5 1, 2, 3, 4 √ √ √ √ √ √ √ √ √ √ √ √


Appendix S: Training Schedule: Examples,<br />

Exercises <strong>and</strong> Tests Timings


Training Schedule<br />

Day Instructional Item (s) Time allotted<br />

(minutes)<br />

1 Introductory Lecture on <strong>Domain</strong> <strong>Testing</strong> 30<br />

Pretest 90<br />

2, Morning Day 2 Lecture: Example 1 10<br />

Day 2 Lecture: Example 1 5<br />

Day 2 Exercises: #1 10<br />

Day 2 Exercises : #2 10<br />

Day 2 Lecture: Example 3 5<br />

Day 2 Lecture: Example 4 5<br />

Day 2 Lecture: Example 5 5<br />

Day 2 Exercises : #3 10<br />

Day 2 Exercises : #4 10<br />

Day 2 Exercises: #5, #6 (Group Discussion) 10<br />

2, Afternoon Day 2 Lecture: Example 6.1 15<br />

Discussion on ASCII 10<br />

Day 2 Lecture: Example 6.2 10<br />

Day 2 Lecture: Example 7 10<br />

Day 2 Exercises: #7.1 15<br />

Day 2 Exercises: #7.2 10<br />

Exercise 8 15<br />

3, Morning Day 3 Lecture: Example 1 15<br />

Day 3 Exercises: #1 15<br />

Day 3 Lecture: Example 2 10<br />

Day 3 Lecture: Example 3 10<br />

Day 3 Exercises: #2 15<br />

Day 3 Lecture: Example 3 10<br />

Day 3 Exercises: #3 15<br />

Day 3 Lecture: Example 5 5<br />

Day 3 Exercises: #4 20<br />

3, Afternoon Day 3 Lecture: Example 6 20<br />

Day 3 Lecture: Example 7 10<br />

Day 3 Exercises: #5 40<br />

Day 3 Exercises: #6 50<br />

4, Morning Day 4 Lecture: Example 1 15<br />

Day 4 Exercises: #1 30<br />

Day 4 Lecture: Example 2 15<br />

Day 4 Exercises: #2 30<br />

4, Afternoon Day 4 Lecture: Example 3 15<br />

Day 4 Lecture: Example 4 30<br />

Day 4 Exercises: #3 15<br />

Day 4 Exercises: #4 30<br />

5, Morning Paper-Based Posttest 90<br />

5, Afternoon Performance Test 90


Appendix T: Student Application for Research<br />

Involving Human Subjects


STUDENT APPLICATION RESEARCH INVOLVING HUMAN SUBJECTS<br />

Name: Sowmya Padmanabhan Date: April 29, 2003<br />

Major: Computer Sciences Course: Masters Thesis<br />

Title of Project: <strong>Domain</strong> <strong>Testing</strong><br />

Directions: Please provide the information requested below (please type). Use a continuation sheet<br />

if necessary, <strong>and</strong> provide appropriate supporting documentation. Please sign <strong>and</strong> date this form <strong>and</strong><br />

then return it to your major advisor. You should consult the university's document "Principles,<br />

Policy <strong>and</strong> Applicability for Research Involving Human Subjects" prior to completing this form.<br />

Copies may be obtained from the Office of the Vice President for Research.<br />

1. List the objectives of the proposed project.<br />

• Develop <strong>and</strong> evaluate materials for improving the teaching of “domain testing,” a<br />

software testing technique that is routinely taught in Florida Tech’s software testing<br />

courses.<br />

• Use the instructional materials <strong>and</strong> the evidence of their effectiveness /<br />

ineffectiveness as part of my thesis.<br />

• Enhance the testing course <strong>and</strong> publish the enhancements at our testingeducation.org<br />

website <strong>and</strong> in journals associated with computer science education, in order to assist<br />

other faculty to improve their testing courses.<br />

2. Briefly describe the research project design/methodology.<br />

An experiment will last for approximately 15 hours. We are unsure how the time will be divided.<br />

We may divide the experiment into five 3-hour sub-sessions spread across five days or two 8-hour<br />

sessions or some other combination. We will determine these details in pilot studies that (typically)<br />

use volunteers, such as students who do research in our lab.<br />

The essence of the project design is that<br />

� We will provide the student with a mix of oral <strong>and</strong> written instruction on how to do some<br />

task within domain testing.<br />

o An example of a task is to identify the range of values that a function can (in theory)<br />

accept as input, <strong>and</strong> then to construct a set of tests to check whether the function can<br />

in fact process those values correctly <strong>and</strong> can in fact h<strong>and</strong>le out-of-range values in a<br />

sensible way.<br />

� Then we will provide the student with sample exercises to work through, that we have<br />

designed to give the student practice in the skills needed to do the task well.<br />

� Then we will test the student on her or his skills<br />

� After we have trained students in this way on several tasks, we will put this together into<br />

summary assignments <strong>and</strong> tests to see how they h<strong>and</strong>le the full task.<br />

To evaluate the results of the experiments, we will have some context-setting at the start of the<br />

experiment <strong>and</strong> some results analysis left to do at the end:<br />

� Everyone will get a demographic questionnaire


� Some subjects may get a learning styles questionnaire or another questionnaire related to<br />

subject characteristics (such as Myers-Briggs)<br />

� Everyone will take a pre-test that will give us an indication of the skills they already have in<br />

the type of tasks we are teaching.<br />

� After they go through the training, everyone will take a post-test that will check their<br />

mastery of the skills / tasks.<br />

� At the end of a subject’s training, the subject will fill out a post-test questionnaire that tells<br />

us their subjective impressions of the experiment.<br />

3. Describe the characteristics of the subject population, including number, age, sex, etc.<br />

An open invitation to students of Florida Tech who have CSE 1001/1002 or equivalent <strong>and</strong> MTH<br />

2051. Outsiders who have software testing background might also be recruited.<br />

• Anticipated number: 20-60 (20 initially plus 10 for pilot studies)<br />

• Age Range: 19 <strong>and</strong> above<br />

• Sex: Male or female; gender doesn’t matter<br />

• Ethnic background: doesn’t matter<br />

• Health status: not obviously ill<br />

• Use of special classes (pregnant women, prisoners, etc…): N/A -- We will not<br />

reject women just because they are pregnant. We are not recruiting specifically for<br />

subject characteristics other than a minimum level of computing background <strong>and</strong> age<br />

of maturity.<br />

4. Describe any potential risks to the subjects -- physical, psychological, social, legal, etc. <strong>and</strong><br />

assess their likelihood <strong>and</strong> seriousness.<br />

The usual minor risks associated with working <strong>and</strong> sitting in a classroom or conference<br />

room for several hours.<br />

5. Describe the procedures you will use to maintain confidentiality for your research subjects<br />

<strong>and</strong> project data. What problems, if any, do you anticipate in this regard?<br />

We will not be using any personal data collected like name, etc… in my thesis or elsewhere.<br />

Subjects will be assigned numbers, which they will use on all materials they h<strong>and</strong> in. We will keep<br />

a list matching subject name <strong>and</strong> number, primarily for auditing purposes. We will keep this list in<br />

an offsite file (Kaner’s house) <strong>and</strong> will not share it with others unless they have a lawful need to<br />

know. We explain this in the consent form.<br />

6. Describe your plan for obtaining informed consent (attach proposed form).<br />

Florida Tech IRB: 2/96<br />

Consent will be sought using the attached “consent form”.<br />

7. Discuss what benefits will accrue to your subjects <strong>and</strong> the importance of the knowledge that<br />

will result from your study.<br />

• Training that is relevant to the participant’s field of interest.<br />

• Pay by the hour (typically $150 for the experiment or $10 per hour)


8. Explain how your proposed study meets the criteria for exemption from Institutional<br />

Review Board review.<br />

The following protocol applies to my research that should be exempted, because it meets the<br />

criterion:<br />

1. Research conducted in established or commonly accepted educational settings, involving<br />

normal educational practices, such as:<br />

i. research on regular <strong>and</strong> special education instructional strategies, or<br />

ii. research on the effectiveness of or the comparison among instructional techniques,<br />

curricula, or classroom management methods.<br />

I underst<strong>and</strong> Florida Institute of Technology's policy concerning research involving human subjects<br />

<strong>and</strong> I agree:<br />

1. to accept responsibility for the scientific <strong>and</strong> ethical conduct of this research study.<br />

2. to obtain prior approval from the Institutional Review Board before amending or altering<br />

the research protocol or implementing changes in the approved consent form.<br />

3. to immediately report to the IRB any serious adverse reactions <strong>and</strong>/or unanticipated<br />

effects on subjects which may occur as a result of this study.<br />

4. to complete, on request by the IRB, a Continuation Review Form if the study exceeds its<br />

estimated duration.<br />

Signature Sowmya Padmanabhan Date April 29, 2003<br />

This is to certify that I have reviewed this research protocol <strong>and</strong> that I attest to the scientific merit of<br />

the study, the necessity for the use of human subjects in the study to the student's academic<br />

program, <strong>and</strong> the competency of the student to conduct the project.<br />

Major Advisor _____________________________ Date _______________<br />

This is to certify that I have reviewed this research protocol <strong>and</strong> that I attest to the scientific merit of<br />

this study <strong>and</strong> the competency of the investigator(s) to conduct the study.<br />

Academic Unit Head __________________________Date ______________<br />

IRB Approval _______________________________ Date ______________<br />

Name<br />

______________________________________________<br />

Title


Appendix U: Consent Form


CONSENT FORM: DOMAIN TESTING EXPERIMENT BY SOWMYA PADMANABHAN<br />

We are seeking your participation in a research project in which we are developing instructional<br />

materials for teaching testing skills. We will use data from this experiment to improve Florida<br />

Tech’s software testing courses <strong>and</strong> we will publish the results for use by other software testing<br />

teachers <strong>and</strong> researchers.<br />

If you agree to participate, we may ask you to attend one or more lectures, read materials,<br />

complete practice exercises, <strong>and</strong> take written tests at various points in the study.<br />

When you do an exercise or take a test, you will fill out an answer sheet. To preserve your<br />

privacy, you will identify yourself on answer sheets with an experimenter-assigned number. You<br />

might review answers written by other students <strong>and</strong> they might review your answers.<br />

You may be assigned to work on an exercise with another student, <strong>and</strong> if so, each of you will fill<br />

out your own answer sheet.<br />

The experiment will require several hours of your participation. If you cannot participate for all of<br />

the scheduled hours, please do not begin this experiment. We cannot use partial data <strong>and</strong> we<br />

cannot compensate you for partial participation.<br />

We will split the experiment into sessions, which will last between 15 <strong>and</strong> 18 hours.<br />

We estimate that your participation will require sessions of __ hours<br />

each.<br />

Participants in most of the phases of this work will be paid. Some of our colleagues will serve as<br />

volunteers during the exploratory phases of the experiment <strong>and</strong> will not be paid.<br />

You will be paid $__ for your participation in this study.<br />

You will be paid at the completion of your role in the experiment (all sessions assigned to you).<br />

We can afford to pay you only if you attend all the assigned sessions <strong>and</strong> complete the required<br />

assignments/exercises/quizzes. We cannot use your data if you skip any session.<br />

If we have to terminate your role in the experiment prematurely because of an error that we made<br />

in running the experiment, we will pay you for the time you have spent in the experiment to date<br />

of termination, at a rate of $10 per hour, rounded up to the nearest whole hour.<br />

Your participation will not subject you to any physical pain or risk. We do not anticipate that you<br />

will be subject to any stress or embarrassment.<br />

We will ask you to fill out one or more questionnaires that give us demographic information<br />

about you <strong>and</strong>/or that give us insight into how you learn.<br />

Your name will not be recorded on any answer sheet. You will be assigned an anonymous code<br />

number. You will use that code number on your answer sheet. Your responses will be tracked<br />

under that code number, not under your name. Any reports about this research will contain only<br />

data of an anonymous or statistical nature. Your name will not be used.<br />

For auditing purposes, the experimenter will keep a list of all people who participated in the<br />

experiment <strong>and</strong> the anonymous code assigned to them. That list might be reviewed by the student<br />

experimenter, Sowmya Padmanabhan, the project’s Principal Investigator, Cem Kaner, or by<br />

anyone designated by the Florida Institute of Technology or an agency of the Government of the<br />

United States, including the National Science Foundation, as having such legitimate<br />

administrative interests in the project as analysis of the treatment of the subjects, the legitimacy of<br />

the data, or the financial management of the project. We will file this list in a place we consider


safe <strong>and</strong> secure <strong>and</strong> take what we consider to be reasonable measures to protect its confidentiality.<br />

We will treat it with the same (or greater) care as we would treat our own confidential materials.<br />

Any questions you have regarding this research may be directed to the experimenter (Sowmya<br />

Padmanabhan) or to Cem Kaner at Florida Tech's Department of Computer Sciences, 321-674-<br />

7137. Information involving the conduct <strong>and</strong> review of research involving humans may be<br />

obtained from the Chairman of the Institutional Review Board of the Florida Institute of<br />

Technology, Dr. Ronald Hansrote at 321-674-8120.<br />

Your signature (below) indicates that you agree to participate in this research <strong>and</strong> that:<br />

• You have read <strong>and</strong> underst<strong>and</strong> the information provided above.<br />

• You underst<strong>and</strong> that participation is voluntary <strong>and</strong> that refusal to participate will involve<br />

no penalty or loss of benefits to which you are otherwise entitled; <strong>and</strong>,<br />

• You underst<strong>and</strong> that you are free to discontinue participation at any time without penalty<br />

or loss of benefits to which you are otherwise entitled except that you won’t be entitled to<br />

be paid for the experiment since you did not attend all the sessions.<br />

____________________________________________ ____________________<br />

Participant Date<br />

I have explained the research procedures in which the subject has consented to participate.<br />

____________________________________________<br />

Experimenter Date<br />

____________________


Appendix V: Call for Participation: First Version


Research on Software <strong>Testing</strong> <strong>Education</strong><br />

Call for participants<br />

($10/hr, 5-15 hours)<br />

My thesis research involves developing instructional material for some widely used<br />

software testing technique. Participants in my experiment will be paid $10/hr to study the<br />

software testing technique, while I study how effective my materials are at helping them<br />

learn.<br />

I need up to 40 participants in total, including people:<br />

• now (negotiable hours)<br />

• in late June, 2003 (12-15 hours)<br />

• in mid-July, 2003 (12-15 hours)<br />

Students from Florida Tech, Brevard Community College or elsewhere are welcome so<br />

long as they meet the following pre-requisites:<br />

• completion of two semesters of programming (equivalent to Florida Tech’s CSE<br />

1001 <strong>and</strong> 1002)<br />

• completion of a course in Discrete Math (equivalent to Florida Tech’s CSE 2051)<br />

• have not taken any software testing course before<br />

Please contact me immediately at spadmana@fit.edu or 321-674-7395 <strong>and</strong> let me know if<br />

you would be interested in participating in these training sessions. Once you contact me,<br />

we can talk further about specific details.<br />

Looking forward to hearing from you soon…<br />

Thanks,<br />

Sowmya Padmanabhan.


Appendix W: Call for Participation: Revised<br />

Version (after pilot studies)


Software <strong>Testing</strong> <strong>Education</strong> Research<br />

Revised Call for participants<br />

($10/hr, 18 hours)<br />

My thesis research involves developing instructional<br />

material for some widely used software testing<br />

technique. Participants in my experiment will be<br />

paid $10/hr to study the software testing technique,<br />

while I study how effective my materials are at<br />

helping them learn.<br />

I have had many enthusiastic responses to my<br />

previous call for participation <strong>and</strong> the sessions in<br />

the last week of June <strong>and</strong> the first three two in<br />

July have been filled. I now need up to 4<br />

participants for the following weeks:<br />

• July 14-18, 2003 (18 hours)<br />

• July 21-25, 2003 (18 hours)<br />

• July 28-Aug 1, 2003 (18 hours)<br />

Students from Florida Tech, Brevard Community<br />

College or elsewhere are welcome as long as they<br />

meet the following pre-requisites:<br />

•completion of at least two programming courses(C,<br />

C++, or Java)<br />

•completion of a course in Discrete Math (equivalent<br />

to Florida Tech’s CSE 2051) <strong>and</strong>/or completion of<br />

calc 1, 2 <strong>and</strong> 3 <strong>and</strong>/or completion of courses in<br />

probability, statistics <strong>and</strong> set theory.<br />

•have not taken any software testing course before<br />

Please contact me at spadmana@fit.edu or 321-674-<br />

7395 <strong>and</strong> let me know if you would be interested in<br />

participating in these training sessions. Once you<br />

contact me, we can talk further about specific<br />

details.<br />

Thanks,<br />

Sowmya Padmanabhan.


Appendix X: Performance Tests’ Evaluation Report<br />

by Dr. Cem Kaner


Analysis of Performance Test Results for Sowmya Padmanabhan's Thesis Data<br />

Cem Kaner, J.D., Ph.D.<br />

January 30, 2004<br />

This memo summarizes my notes on the results of two experiments conducted by Sowmya<br />

Padmanabhan in the summer of 2003. I am the research advisor for that work.<br />

Three of us, James Bach, Pat McGee <strong>and</strong> I, have done this analysis. I have discussed analysis<br />

criteria <strong>and</strong> results with both McGee <strong>and</strong> Bach. Their analyses have influenced my analysis to<br />

some degree, <strong>and</strong> I have somewhat influenced their analysis. My primary influence on them was<br />

in helping them develop their performance criterion. The evaluation criterion that I laid out for<br />

them is this:<br />

Compare the results from this Performance Test to the results that you would<br />

expect from a tester who claimed to have a year's experience <strong>and</strong> who claimed to<br />

be good at domain testing.<br />

All three of us have substantial testing experience, <strong>and</strong> have interviewed, hired <strong>and</strong> supervised<br />

testers. All of us have our own sense of what we would expect from a 1-year tester, <strong>and</strong> we also<br />

differ in the details of how we would do a domain testing analysis. We also recognize that there<br />

are different approaches to domain testing <strong>and</strong> that our goal was to determine whether this<br />

person looked reasonably experienced <strong>and</strong> whether the work looked reasonably sound.<br />

I am confident that our discussions influenced how we articulated our conclusions, but did not<br />

influence our conclusions. Each of us was independently uncomfortable with the results.<br />

I analyzed two experiments' results. Experiment 1's subjects had been mis-instructed on all-pairs<br />

testing. Additionally, the wording of some of the Experiment 1 questions was confusing.<br />

Accordingly, I am ignoring the Experiment 1 data on combination testing.<br />

The students took this as an open book exams. They had lecture notes, checklists, <strong>and</strong> other<br />

materials available. The lecture notes <strong>and</strong> h<strong>and</strong>outs presented a series of concepts associated with<br />

domain testing, <strong>and</strong> then boiled the concepts down into step-by-step procedures.<br />

Overview<br />

Student performance was remarkably consistent. They approached the task in the same order,<br />

identified the same variables, analyzed <strong>and</strong> discussed them in essentially the same way,<br />

presented the results in extremely similar tables, <strong>and</strong> made the same mistakes.<br />

Overall, I think that the students learned the procedures well, but didn't learn domain testing<br />

well.<br />

The answers are both more <strong>and</strong> less than I would expect from a 1-year experienced tester.<br />

• The tables are tidy <strong>and</strong> well-structured. Each variable is analyzed in terms of several<br />

dimensions. The all-pairs analyses of the Experiment 2 students look OK.<br />

• The students' descriptions of risks are uninsightful <strong>and</strong> largely redundant with the tests.


• If one student had provided a given answer, I might have been impressed with it. However,<br />

the stereotyping of the answers is very pronounced, suggesting that they are following a<br />

procedure (such as a checklist) or working directly from an example, rather than thinking<br />

through what they are doing. For example, the students provide the same dimensions <strong>and</strong><br />

they miss the same dimensions.<br />

• The students missed issues of interaction, they failed to consider these dimensions in terms<br />

of output effects, <strong>and</strong> they failed to consider the boundaries implicated by a critical<br />

boundary-related error message.<br />

• In terms of presentation, these charts are better than I would expect from one-year testers.<br />

• In terms of content <strong>and</strong> insight, I would expect better from an experienced tester.<br />

Now for the details:<br />

Analysis of the Results<br />

This breaks down into several sections:<br />

• List of variables; indicate input or output, their dimensions <strong>and</strong> the data type they map to.<br />

• Discuss the relationships that exist between variables, if any, <strong>and</strong> give examples of how<br />

you would test them.<br />

• Equivalence class table(s) that shows the complete equivalence class <strong>and</strong> boundary value<br />

analysis for the function under test.<br />

• All-pairs combination.<br />

o Indicate what variables you would select for doing all-pairs combination. Justify<br />

your selection.<br />

o Indicate which test cases of the chosen variables you will use for doing all-pairs.<br />

Justify your selection.<br />

o Show all iterations. Give relevant comments when you backtrack <strong>and</strong> redo any<br />

ordering.<br />

List of variables; indicate input or output, their dimensions <strong>and</strong> the<br />

data type they map to.<br />

List of variables:<br />

• I see 7 variables, highly interrelated:<br />

o Slides Sized For<br />

o Width<br />

o Height<br />

o Number slides from<br />

o Orientation of slides<br />

o Orientation of Notes, h<strong>and</strong>outs & outline


o Help (? Key)<br />

• All of the subjects identified the first 6 variables. None of them considered Help. None<br />

identified any other variables.<br />

Input or Output: The first six variables are both input <strong>and</strong> output variables. On the input side,<br />

you enter or select a value (that's the input). On the output side, the value of the variable controls<br />

how the program displays <strong>and</strong> prints slides.<br />

• All of the subjects identified these six variables as input variables or they made no explicit<br />

identification <strong>and</strong> then treated the variables (in the equivalence class table) as input<br />

variables.<br />

• Only 2 subjects, JLT11S4 <strong>and</strong> JL1418S2, explicitly identified any variables as output.<br />

Neither of these actually analyzed the output variables. Their equivalence class table dealt<br />

only with the input-related issues for these variables. One additional subject, JL28A1S4,<br />

mentioned output tests (for example, s/he said of # of slides that an error could be failure<br />

to print the slides correctly) but s/he listed all variables only as input variables <strong>and</strong> s/he<br />

didn't explore the output-related risks in any detail.<br />

• If I put the "width" variable in front of 10 experienced testers, especially if I asked them to<br />

identify output variables, I would expect several, perhaps all, to deal with at least one or<br />

two output dimensions associated with this variable. I interpret the subjects' failure to<br />

consider the output issues involved with these variables as partially due to their<br />

inexperience <strong>and</strong> partially due to negative transfer from a course that focused primarily on<br />

analysis of input variables.<br />

Dimensions: The question is, what should we vary to test this variable?<br />

Here's an example:<br />

• Slides Sized For<br />

o It is both an input <strong>and</strong> an output variable. You select a value (input) but that value<br />

controls how the program displays <strong>and</strong> prints slides. If you change this with an<br />

existing presentation, you may change the font size of the existing slides.<br />

o Has only two obvious dimensions, as an input variable. One dimension is the<br />

enumerated list. The other is the side effect impact on the other variables (height,<br />

width, etc.) As an output variable, it changes a lot of things, such as default font<br />

size, the font sizes of existing text, the default scaling of the slide on the screen,<br />

the ability of the attached printer to print the slide.<br />

• To test the input variable, one obvious dimension involves the value that the program<br />

appears to be requesting. Examples:<br />

o the Slides Sized For variable is enumerated. One "dimension" is the set of all<br />

values in the enumerated list.<br />

o the Width variable is floating point. The dimension runs from smaller Widths to<br />

larger Widths. It appears to run from 1 to 56 inches.<br />

• There are other aspects of the input variable that are orthogonal to the identified<br />

dimension. For example, for the width:


o You could type more or less quickly<br />

o You could make more or fewer edits of the field<br />

o You could type letters, digits, or non-alphanumeric characters<br />

o You could type between 1 <strong>and</strong> many characters, such as 1 or 1.2345678. There<br />

are some potentially interesting games to play with this, like how it h<strong>and</strong>les many<br />

leading zeros or many leading spaces or many digits before instead of after the<br />

decimal or how many decimal points, etc.<br />

• If I put the "width" variable in front of 10 experienced testers, I doubt that all 10 would<br />

identify character set <strong>and</strong> number of characters as additional dimensions to test. All of the<br />

subjects identified these. Either they have all learned to be very thorough, or they are<br />

following the same script. In fact, these three were the dimensions identified in the course<br />

lecture notes as dimensions of the numeric fields. Rather than learning that these were<br />

examples, students seemed to have learned that they were the exhaustive list. For example,<br />

none of subjects suggested time or edits as input dimensions. Only one subject, JL2125S4,<br />

suggested a "dimension" off the beaten path—s/he made two test cases with more than one<br />

decimal point, but treated these as isolated tests, not as a distinct dimension.<br />

• To test the output variable, I have several dimensions. Here are a few:<br />

o Changing slide size changes the font size on existing slides. The font size can<br />

range from tiny to huge.<br />

o Changing slide size changes the set of printers that I can print on. I can print a<br />

really big slide on a big plotter, but only a very small slide on a small photo<br />

printer.<br />

o Depending on the printer selected, if I attempt to set a slide size that exceeds the<br />

printable area, I get an error message: The current page size exceeds the printable<br />

area of the paper in the printer. Click Fix to automatically fit the page to the<br />

paper. Click Cancel to return to the Page Setup dialog box. Click OK to continue<br />

with the current page size. (NOTE: This is the wording on the Macintosh.<br />

Messages <strong>and</strong> parameter limits are slightly different on Windows machines, but<br />

the issues <strong>and</strong> my conclusions are all the same.) A paper size is either smaller than<br />

the printable area (no error message) or larger (error message <strong>and</strong> if you print or<br />

print preview, you don't get the full slide.)<br />

o None of the subjects identified any of these dimensions or any others like them.<br />

Discuss the relationships that exist between variables, if any, <strong>and</strong><br />

give examples of how you would test them.<br />

This question was asked only in Experiment 2. Experiment 1 had a question with similar intent<br />

but was too confusingly worded. I have only considered the data from Experiment 2.<br />

None of the 5 subjects "discussed" anything. They started by identifying certain variables as<br />

related <strong>and</strong> then show a table that lists specific values. This (subject a2529s5) is typical:


Orientation of Slides is dependent upon Width, Height <strong>and</strong><br />

Width, Height are dependent upon Slides sized for. The<br />

tests are as follows:<br />

Test Case # Slides<br />

sized for<br />

1 On screen<br />

show<br />

2 On screen<br />

show<br />

3 Letter<br />

paper<br />

4 Letter<br />

paper<br />

5 Ledger<br />

paper<br />

6 Ledger<br />

paper<br />

Width Height Orientation<br />

of slides<br />

7.5 10 Portrait<br />

10 7.5 L<strong>and</strong>scape<br />

7.5 10 Portrait<br />

10 7.5 L<strong>and</strong>scape<br />

9.99 13.32 Portrait<br />

13.32 9.99 L<strong>and</strong>scape<br />

7 A3 paper 10.5 14 Portrait<br />

8 A3 paper 14 10.5 L<strong>and</strong>scape<br />

9 A4 paper 7.5 10.83 Portrait<br />

10 A4 paper 10.83 7.5 L<strong>and</strong>scape<br />

11 B4 paper 8.88 11.84 Portrait<br />

12 B4 paper 11.84 8.88 L<strong>and</strong>scape<br />

13 B5 paper 5.88 7.84 Portrait<br />

14 B5 paper 7.84 5.88 L<strong>and</strong>scape<br />

15 35mm<br />

slides<br />

16 35mm<br />

slides<br />

7.5 11.25 Portrait<br />

11.25 7.5 L<strong>and</strong>scape<br />

17 Overhead 7.5 10 Portrait<br />

18 Overhead 10 7.5 L<strong>and</strong>scape<br />

19 Banner 1 8 Portrait<br />

20 Banner 8 1 L<strong>and</strong>scape<br />

21 Custom 8.17 10.67 Portrait<br />

22 Custom 10.67 8.17 L<strong>and</strong>scape


There's no rationale for these tests. It is particularly incongruous to see this type of table after<br />

seeing an equivalence class chart that emphasized risk. Every test case in that chart was tied to a<br />

purported risk. This chart ignores risk completely.<br />

From an experienced tester, I would either expect to see both sets of test cases justified or<br />

designed in terms of risks or I neither.<br />

I interpret this oddity as follows:<br />

• The students were trained to include a risk column in their equivalence class charts. Their<br />

risk analyses in those charts are unimpressive, but the charts follow the form of a risk<br />

analysis. In contrast, I don't think that it was drilled into the students that a chart like this<br />

(I'll call it a relationship test chart) needs a risk analysis, <strong>and</strong> so the students didn't supply<br />

one. If the students had adopted the notion of risk as a way of thinking about test design,<br />

they would have used it <strong>and</strong> talked about it when creating the relationship test chart.<br />

• Given that all of the students operated in the same way, I don't see this as an idiosyncrasy<br />

of one tester. Instead, I conclude that the students are following a set format rather than<br />

thinking about risk (or perhaps about much of anything).<br />

Another oddity in all five answers was a fifth section. The performance test called for four parts:<br />

Checklist:<br />

Make sure you include the following in your analysis:<br />

a. List of variables; indicate input or output, their<br />

dimensions <strong>and</strong> the data type they map to.<br />

b. Equivalence class table(s) that shows the complete<br />

equivalence class <strong>and</strong> boundary value analysis for<br />

the feature under test.<br />

c. All-pairs combination table.<br />

d. Discuss the relationships that exist between variables<br />

<strong>and</strong> give examples of how you would test them.<br />

All five subjects provided a table like the following. This particular one is from A259S3. A<br />

259S5 has some additional text, but no additional explanation of the test cases <strong>and</strong> no discussion<br />

of risk.<br />

Combination of Error h<strong>and</strong>ling test cases<br />

# Test<br />

Case<br />

S W H O<br />

1 Custom 0 0 Portrait<br />

2 Custom 1 57 L<strong>and</strong>scape<br />

3 Custom 0 57 Portrait


Perhaps this is in response to the "relationships" question (though in 2 of the 5 cases, it was<br />

explicitly labeled as Part E (a2529s1) or part 5 (a2529s5)<br />

Equivalence class table(s) that shows the complete equivalence class<br />

<strong>and</strong> boundary value analysis for the function under test.<br />

The equivalence class tables were similar across all subjects.<br />

• All of the subjects included the enumerated variables in the equivalence class tables. This<br />

makes little sense. The individual values are all "classes" of size 1. The risk descriptions<br />

associated with these individual items are information-free, for example " Failure of Slides<br />

sized for Letter" or " Failure to display the right slide" listed beside each possible value for<br />

"Slide Sized For." This reflects a weakness in the instructional materials. Students were<br />

encouraged to h<strong>and</strong>le enumerated variables in exactly this way, up to <strong>and</strong> including risk<br />

statements like "1) Failure to process option 1 correctly" <strong>and</strong> "1) Mish<strong>and</strong>ling of values<br />

outside the enumerated list of values" (Course materials, AppendixA.doc).<br />

• The analyses for all of the other variables also marched through the table in lockstep,<br />

virtually the same analysis by every tester, using almost the same order of cases, the same<br />

verbose risk descriptions, etc. as each other <strong>and</strong> as the course notes.<br />

It's hard to comment on this work.<br />

If one individual drew this table <strong>and</strong> filled it in this way, I'd probably be impressed. The tables<br />

are tidy <strong>and</strong> organized. The enumerated fields add noise, but if we ignore those, the analyses of<br />

the integer <strong>and</strong> floating point fields make it appear as though the person is thinking creatively.<br />

Whether or not these particular tests are likely to expose a bug is less interesting than the fact<br />

that the tester is thinking beyond the literal wording of the problem.<br />

The illusion evaporates when you see all of the answers together, <strong>and</strong> then review the course<br />

notes. The two additional dimensions (number of characters <strong>and</strong> treatment of nondigits) are<br />

prefabricated responses, laid out specifically in the course <strong>and</strong> applied mechanically. When I<br />

look for other evidence of creativity, I see none. Here are a few examples of things that I would<br />

expect from a sample of moderately experienced testers who claimed to have some experience<br />

with domain testing:<br />

• If I was considering the number of characters we could enter into a field, I'd paste several<br />

variations of a huge number of characters, such as 65533 0's (or spaces) followed by a 1.<br />

(If that yielded any response, I'd go to 2^32 characters or more.)<br />

• I don't think it's unreasonable for the tester to make a working assumption that the<br />

empirical limits on the variable (how many characters it accepted in testing) are the<br />

intended limits, but I would expect the tester to raise the issue, recognize the uncertainty<br />

involved, <strong>and</strong> try to check it or note that this should be checked.<br />

• Even if the instructions hadn't instructed the tester to consider output variables, it is<br />

common (<strong>and</strong> highly desirable) to check the result of a test. For example, when you set the<br />

page size, you don't know whether it has been correctly set until you try to use the new


page size, perhaps via print or print preview or display with the rulers set. Doing this<br />

simple check with a large page size could have exposed the font size changes, the display<br />

scale changes, <strong>and</strong> other effects of page setup.<br />

• The subjects were doing the performance test using their computers. To discover that 56"<br />

was the maximum page size, I assume that they had to actually try large numbers,<br />

including 56. But when you try 56, you get the page size error message. This should alert<br />

any tester that there is a new boundary <strong>and</strong> a new set of equivalences to explore.<br />

• In checking the maximum on Slide Number (9999), I would have used this as a starting<br />

number <strong>and</strong> then created a presentation with at least two slides (so that we cross 10000 as<br />

a slide number.)<br />

All-pairs combination.<br />

The subjects in the first experiment were mis-instructed on all-pairs <strong>and</strong> the question was not<br />

easily understood. Therefore I consider only the results of Experiment 2. Subjects could pick<br />

different variables, so I'll address the 5 subjects' answers individually.<br />

The subjects justified their selections of variables by choosing variables they considered<br />

independent. The justification essentially was, "These are independent, therefore they are what<br />

we want." On a time limited exam, I think that's good enough.<br />

None of the subjects justified their test case selections. As in so many other ways, we see an<br />

emphasis on mechanical selection (causing selection of way too many test cases), rather than<br />

thinking through what tests would satisfy the desired criteria. Asked to describe their thinking,<br />

they are silent.<br />

The working tester is dealing with variables <strong>and</strong> combinations more complex than these. The<br />

performance test was more complex than the course examples but much less complex than most<br />

of the things the testers will actually test. A tester who cannot extend what she is doing beyond a<br />

set of pre-specified routines to simple situations, <strong>and</strong> who cannot explain <strong>and</strong> justify what she is<br />

doing, will not survive in a practitioners' environment.


1. Indicate what variables you would select for doing all-pairs<br />

combination. Justify your selection.<br />

2. Indicate which test cases of the chosen variables you will use for<br />

doing all-pairs. Justify your selection.<br />

3. Show all iterations. Give relevant comments when you backtrack<br />

<strong>and</strong> redo any ordering.<br />

Subject A2529S1<br />

• Picked 3 variables: Slides Sized For, Slide Number <strong>and</strong> Notes Orientation. The subject<br />

mistakenly believed that Slide Orientation was determined by Slide Sized For – actually<br />

for each size, you can specify portrait or l<strong>and</strong>scape.<br />

• For the values of Slides Sized For, the subject used the 11 enumerated values. But one of<br />

these is Custom, which allows the full range of sizes. This is where the boundary cases (1"<br />

x 1" <strong>and</strong> 56" x 56") can be entered. If you're interested in testing slide size, these are<br />

certainly two key cases to include. If I was to test the full enumerated set, I'd include the 2<br />

custom values, for 12 cases total.<br />

• For the values of Starting Slide Number, the subject specified 6 values.<br />

o One test required an (unspecified) 1 digit number; another an (unspecified) 4 digit<br />

number<br />

o One test required an (unspecified) test that included a 1; another an unspecified<br />

number that included 9<br />

o One test required 1; another required 9999.<br />

o Clearly, 1 <strong>and</strong> 9999 meet the other requirements, so there are 2 cases to test here,<br />

not 6.<br />

• For the values of Notes Orientation, there are 2 cases, as the subject specified.<br />

• Conclusions to this point:<br />

o This subject is working mechanically without thinking about the variables being<br />

tested.<br />

o No one with work experience in this type of testing would do this, because if they<br />

had ever done it, they would have realized how much time they were wasting<br />

when they tested from this matrix.<br />

o Additionally, the failure to realize that 1x1 <strong>and</strong> 56x56 are interesting cases here<br />

suggests to me that boundary analysis doesn't come naturally to this subject.<br />

o This final piece of work would lock down my conclusion that this subject doesn't<br />

have the underst<strong>and</strong>ing that I would expect of a tester with a year of practical<br />

experience with domain testing.


• Using the variables that this subject used, I would have a combination involving {12<br />

cases} x {2 cases} x {2 cases}, which would have resolved into a trivially easy to solve<br />

24-case all-pairs matrix.<br />

• The subject's analysis involves an {11} x {6} x {2} matrix, which reduces to a trivially<br />

easy 66-case table. The subject carried out this mechanical task correctly.<br />

Subject A2529S2<br />

• This subject's 4 variables were<br />

Width [Test case # 1,2,6,7,8,9,13,14] == [w1, w2 ….w8]<br />

Height [Test case # 1,2,6,7,8,9,13,14] == [h1, h2 …. H8]<br />

Slides From [Test case # 1,2,6,7,11,12] == [s1,s2 …. S6]<br />

Notes, h<strong>and</strong>outs <strong>and</strong> outline [Test case # 1,2] == [n1,n2]<br />

• For Width, I could meet the 8 criteria with three cases, 1, 56., <strong>and</strong> 9.0123<br />

• For Height, I could meet the 8 criteria with the same three values<br />

• For Start Slides From, the second case is strange because it says you can enter 32<br />

characters into this field. You can only enter 4. If we correct 32 to 4, two cases 0 <strong>and</strong> 9999<br />

cover the 6 criteria<br />

• For Notes orientation, I would use the same two values.<br />

• As with A2592S1, I conclude to this point:<br />

o This subject is working mechanically without thinking about the variables being<br />

tested.<br />

o No one with work experience in this type of testing would spec this many test<br />

cases, because if they had ever done it, they would have realized how much time<br />

they were wasting when they tested from this matrix.<br />

• This subject didn't have the chance to blow the same boundaries (1x1 <strong>and</strong> 56x56) as<br />

A2592S1, but a domain tester is constantly looking for ways to cut the number of tests to<br />

run from an unreasonable number—the subject specifies 64 tests—down to a reasonable<br />

set of representatives. I can meet the tester's criteria with a matrix of 9 tests rather than<br />

64.<br />

• Given an all-pairs task involving {8} x {8} x {6} x {2} values, construction of the 64case<br />

matrix is a routine, easy, mechanical task. The subject did it correctly.<br />

Subject A2529S3<br />

• This subject's 4 variables were<br />

Width [TC# 1,2,9,10,11,18,19] => [W1,W2,W3,W4,W5,W6,W7]<br />

Height [TC# 1,2,9,10,11,18,19] =>[H1,H2,H3,H4,H5,H6,H7]<br />

Orientation of Notes, h<strong>and</strong>outs <strong>and</strong> outlines [TC# 1, 2] =>[O1,O2]<br />

Number slides from. [#TC 1, 2, 9, 10, 15, 16] => [N1, N2, N3, N4,N5,N6]


• For width <strong>and</strong> height, you can satisfy the 7 criteria (each) with 1, 56., <strong>and</strong> 9.0123 (3 tests<br />

rather than 7 for each variable)<br />

• For Number slides, you can satisfy the 6 criteria with 0 <strong>and</strong> 9999 (two tests)<br />

• The comments <strong>and</strong> conclusions that applied to A2529S2 apply here in the same way.<br />

Subject A2529S4<br />

• This subject's 4 variables were<br />

Width [TC# 1,2,7,8,9,15,17] => [W1,W2,W3,W4,W5,W6,W7]<br />

Height [TC# 1,2,7,8,9,15,17] =>[H1,H2,H3,H4,H5,H6,H7]<br />

Orientation of Notes, h<strong>and</strong>outs <strong>and</strong> outlines [TC# 1, 2] =>[O1,O2]<br />

Number slides from. [#TC 1, 2, 7, 8, 11, 12] => [s1, s2, s3, s4,s5,s6]<br />

• For width <strong>and</strong> height, you can satisfy the 7 criteria (each) with 1, 56., <strong>and</strong> 9.0123 (3 tests<br />

rather than 7 for each variable)<br />

• For Number slides, you can satisfy the 6 criteria with 0, 1 <strong>and</strong> 9999 (three tests). There<br />

should be only two tests, but the subject misidentified the lower boundary as 1 instead of<br />

0.<br />

• The comments <strong>and</strong> conclusions that applied to A2529S2 <strong>and</strong> A2529S3 apply here in the<br />

same way.<br />

Subject A2529S5<br />

• The subject's analysis, <strong>and</strong> my comments, are the same as for A2529S1.<br />

Evaluation of the Results of the Thesis Experiment<br />

In Padmanabhan's proposal defense, we (the advisory committee) agreed that it was important<br />

for Padmanabhan to obtain a positive result. That is, she was to demonstrate that she understood<br />

domain testing well enough, <strong>and</strong> instructional design well enough, that she could effectively<br />

teach novice testers how to do domain testing.<br />

The performance test results convince me that Padmanabhan failed in this ultimate objective.<br />

However, I think she failed in an interesting way <strong>and</strong> that the materials she developed <strong>and</strong> the<br />

process she followed to develop the materials are of barely sufficient quality to satisfy the<br />

requirements for a Master's thesis.<br />

I say "barely sufficient quality" because many of my objections to the subjects' performance<br />

apply to Padmanabhan's Answer Key:<br />

• Enumerated variables are tabled the same way you would table variables that you can<br />

perform equivalence class analysis on<br />

• Width, height, <strong>and</strong> starting number are analyzed in the same stereotyped ways, the limits<br />

discovered through testing are treated as the known-to-be-correct limits


• In the all-pairs analysis, 7 values are used for width (<strong>and</strong> height) instead of the 3 that<br />

would satisfy the 7 criteria <strong>and</strong> 6 values are used for Starting Number instead of 2.<br />

The good news is that the subjects were able to generate the same answers that Padmanabhan<br />

considered correct. The bad news is that the subjects' approach was so mechanical that they<br />

generated these answers.<br />

In a recent review of the domain testing literature (Teaching domain testing: A status report. In<br />

press, Proceedings of the Conference on Software Engineering <strong>Education</strong> & Training 2004,<br />

Norfok, VA: March, 2004), I noted that the descriptions of domain testing in books <strong>and</strong> articles<br />

written for practitioners generally provided worked examples that readers were expected to<br />

generalize from, simple explanations, <strong>and</strong>/or lists of heuristic rules for determining what values<br />

were equivalent.<br />

In my opinion, the instructional materials developed by Padmanabhan are consistent with the<br />

field's most common presentation style for domain testing. She took their approach, did a more<br />

thorough job of presenting it to students, <strong>and</strong> obtained reasonable results when she asked<br />

questions that involved straightforward application of what she had taught. The specific results<br />

could certainly be improved on, but I don't think that those problems are at the heart of the<br />

learning problems faced by the subjects when they tried to transfer their knowledge to the<br />

performance test.<br />

The performance test that we designed is a test of the student's ability to generalize <strong>and</strong> transfer<br />

what they learned in the classroom to a more complex real-life example. Her students failed.<br />

Up to this point, I had tried teaching domain testing many times (perhaps 100 teachings of<br />

variations of my Black Box <strong>Testing</strong> course), <strong>and</strong> was able to look at student performance on<br />

assignments or in-class exercises in perhaps 20 of those teachings. I have been generally<br />

disappointed with the results, especially with results from novice testers. In the university<br />

courses, most students eventually figured out how to use the technique (I think), but it keeps<br />

taking a surprisingly long time. I had expected that we could solve this problem with more<br />

exercises, more examples, more drill in the use of the technique <strong>and</strong> more oral presentation of the<br />

reasoning behind the exercises, examples <strong>and</strong> drill.<br />

Padmanabhan's course takes the approach that I was using (<strong>and</strong> that is common in the literature<br />

<strong>and</strong> in other instructor's courses) to a higher level. Her teaching is more thorough, has more<br />

examples, <strong>and</strong> more formative assessment.<br />

The lesson that I take from her results is not that she didn't do a good enough job, but that failure<br />

despite the acceptable job that she did indicates that we need to rethink the teaching strategy in<br />

common use. I think that the modern literature on mathematics education, focusing on how to<br />

build higher-order underst<strong>and</strong>ing rather than procedural knowledge, can provide a good<br />

foundation for the next generation of course (<strong>and</strong> course-related experimentation), but I think<br />

that's the subject for another thesis.


Appendix Y: Performance Tests’ Evaluation Report<br />

by James Bach


Analysis of Student Performance in <strong>Domain</strong> <strong>Testing</strong><br />

My name is James Bach. I am a testing consultant <strong>and</strong> trainer. I've been in the computing<br />

field for 21 years. About 8 years of that time I spent as a working test manager.<br />

I was asked to analyze the performance of five people ("student testers") who had been<br />

instructed in a particular technique of domain testing. My goal was to comment on how<br />

the performance of these testers compares to the performance I would expect from a<br />

typical working software tester ("working testers") with 1-2 years experience in the field,<br />

working under competent supervision for an organization that expects them to test<br />

productively.<br />

General Notes On My Critique<br />

I did not witness the training the students received. I don't know what were the exact<br />

definitions <strong>and</strong> examples they were trained in. Hence, to compare their behavior to the<br />

things I would expect from testers who work for me may or may not be relevant to this<br />

exercise.<br />

It's not clear from the instructions how far the analysis should be taken. It may be<br />

reasonable for students to assume that page setup in PowerPoint is a relatively low risk<br />

feature, such that a highly detailed analysis would be overkill. On the other h<strong>and</strong>, if the<br />

exercise is intended to showcase the skills of the student in analyzing even a very<br />

important feature, it may be appropriate for them to do a more thorough job than would<br />

normally occur in the field for a page setup dialog box. Therefore, I'm not sure whether to<br />

criticise the students for glossing over details or reward them for pragmatic brevity. I'll<br />

make comments both ways.<br />

Definitions<br />

Equivalence class: a set of tests or test data that are equivalent with respect to some<br />

theory of risk. In other words, with respect to a type of problem we have in mind, we<br />

expect that every test represented in an equivalence class would reveal that problem, or<br />

fail to reveal it. If we believe some would reveal it <strong>and</strong> others not, that wouldn't be an<br />

equivalence class. An equivalence class may also be called a partition.<br />

<strong>Domain</strong>: a set of related tests or test data that might be partitionable into equivalence<br />

classes.<br />

Variable: anything that can vary in the product's state or environment. Unless the product<br />

code is self-modifying, code is not normally considered a variable.


Expectations<br />

The analysis of domains <strong>and</strong> dimensions may be based on product specifications,<br />

programmer interviews, or empirical observation of product behavior (exploratory<br />

testing)-- preferrably all three, since problems may be identified by analyzing<br />

inconsistencies among the three sources.<br />

� Working testers always use empirical observation of the product, regardless of<br />

whether they also used specifications or interviews, except in cases where<br />

observation is not feasible.<br />

� Working testers often avoid making strong claims about domains <strong>and</strong> dimensions<br />

unless they have multiple sources or other evidence that justifies a strong claim. In<br />

other words, if a tester observes that a field can take numbers up to 50, that does not<br />

necessarily mean that 50 is a correct boundary. Perhaps the boundary is supposed to<br />

be 64 <strong>and</strong> the tester is simply seeing a bug. On the other h<strong>and</strong>, if there is<br />

corroborating evidence to support an inference about the boundary (perhaps 50<br />

corresponds to the number of states in the United States), that can provide a basis<br />

for inferring the boundaries of a particular domain.<br />

� Working testers routinely identify <strong>and</strong> test interactions among variables as part of<br />

this kind of analysis.<br />

� Working testers often mention sources <strong>and</strong> limitations of their analyses.<br />

� Working testers avoid needless redundancy in test documentation.<br />

� Working testers avoid documenting the obvious, unless in the belief that the<br />

information may be forgotten under pressure.<br />

� Working testers create documentation that is reasonably useful as an aid to testing,<br />

or as a product for an reasonably anticipated client.<br />

� Considering that domain analysis is a heuristic process that relies on the imagination<br />

<strong>and</strong> technical knowledge of the tester, I expect different working testers to produce<br />

analyses that are similar, but vary in level of detail <strong>and</strong> in occasional particulars.<br />

Critique of Analysis<br />

Part A of the instructions stated "List of variables; indicate input or output, their<br />

dimensions <strong>and</strong> the data type they map to." I see that each student has listed some<br />

variables <strong>and</strong> indicated input or output, <strong>and</strong> guessed a data type. See appendix A for my<br />

answer to this question, which also answers part D <strong>and</strong> some of part B of the performance<br />

test.<br />

My analysis is more detailed than any of the students’ answers. Though some of the ideas<br />

I provided were included by the students in their equivalence class tables, many of them<br />

weren’t. This is not in itself a problem. I spent about four hours to arrive at my answer,<br />

<strong>and</strong> I believe it is more elaborate than anyone would routinely expect from a working


tester with a couple years experience. But it is an example of the kinds of thinking I do<br />

expect from a working tester.<br />

I have not specifically produced the equivalence class tables called for in the exercise.<br />

However, my analysis of the variables provides most of the information required for<br />

those tables.<br />

Observations of the students’ answers:<br />

� I don't see anything in the students’ answers (except for student4) that goes to the<br />

question of dimension.<br />

� I don’t see any output variables in the student answers.<br />

� I don’t see any interactions among variables noted. Though this wasn’t specifically<br />

called for in the instructions, I believe this is an important aspect of the skill of the<br />

working tester. Many aspects of products are not laid out for testers directly, but<br />

must be inferred mental models of the product that form in the normal course of<br />

learning a product.<br />

� I don’t see any issues or questions noted, or commentary on the sources <strong>and</strong><br />

limitations of their analyses.<br />

� In almost every case, the risks provided by the students added no information over<br />

<strong>and</strong> above the description of the corresponding equivalence class. Notice that in my<br />

analysis, I identified one list of “domain-defining risks” for each variable, <strong>and</strong> no<br />

separate list of equivalence classes. This is because in most cases, I felt a separate<br />

list would add nothing to the analysis.<br />

� The click help function was not mentioned in any of their analyses. Click help is<br />

functionally identical to an enumerated menu of options. Just because the interface<br />

is different does not seem to me a reason to exclude it from our testing.<br />

� The “custom” setting applies the dimensions of the printable area of the current<br />

printer, but this relationship is not noted in any of the student analyses. This may<br />

indicate that the students did not review the online help, nor perform enough of an<br />

exploration of this function.<br />

� Because the students apparently used only empirical observation to perform their<br />

analyses, their analyses are basically tautological. They each determined that the<br />

input length limit for the numeric fields is 31, apparently because that is how the<br />

software behaves. But a length of 31 is inconsistent with the obvious limits of those<br />

functions—clearly PowerPoint is not designed to h<strong>and</strong>le slides that are a billion<br />

trillion trillion inches wide or tall. So, it seems more reasonable to question the 31<br />

character limit than to enshrine it permanently in the test cases.<br />

� The consistency among the answer sheets for each student suggests that the students<br />

either collaborated with each other to produce their answers, or that they were<br />

instructed in a very specific formula of domain testing. I don’t believe domain<br />

testing is usefully reduced to a formula. I believe successful working testers show<br />

more variation in their work, because of natural variations in the experiences,<br />

temperament, exploration, knowledge, <strong>and</strong> contexts of thinking people. The lack of


variation suggests that these factors may not have been present in the thought<br />

processes of the students, <strong>and</strong> therefore that the method they used was not very<br />

powerful.<br />

� There is a great deal of redundancy in the students’ answer tables. I think this may<br />

be due to the nature of the equivalence class table format, which I believe they were<br />

required to use as a template. It’s a typical problem with templates that they may<br />

force the practitioner to say in elaborate or stilted ways what could be said more<br />

economically in a different format. One of the behaviors I expect to see from testers<br />

who work for me is to reformat documents for efficiency, even if that means<br />

customizing a template. After all, the job of testing is not to create documents just<br />

for their own sake.<br />

� Some of the risks identified by the students indicate a lack of insight about the<br />

nature of the technology under test. For instance, student #1 suggested using<br />

characters that are on either side of the ASCII code range for numeric digits. That<br />

kind of test made sense in 1985, but it seems unlikely that the programmers of<br />

PowerPoint are still writing their own input filter routines based on ASCII code<br />

signposts in an IF statement. Modern languages provide more sophisticated libraries<br />

<strong>and</strong> constructs to perform filtering on input. I think a much better test would be to<br />

paste in every possible character code. This is fairly easy to do <strong>and</strong> would trigger<br />

many more kinds of faults in the filtering code.<br />

� The instructions use words like "justify" <strong>and</strong> "discuss". I saw nothing in the<br />

students' answers (except for student #5, who provided a minimal justification for<br />

allpairs variables) that I believe a reasonable person would consider justification or<br />

discussion.<br />

� Regarding the allpairs tables, I don't know what is meant by "iteration" in the<br />

sentence "Show all iterations." When I look at the work I don't see iterations, as<br />

such, but apparently a series of tables, each a strict subset of the next. If that's what<br />

"iteration" means, then I don't see the point of iterating. There seems to have been<br />

no evolution in the thinking behind the tables.<br />

Conclusion<br />

I expect more insight, product knowledge, <strong>and</strong> imagination from a serious tester who had<br />

more than a few months of experience working for a company that cared about doing<br />

good testing. So, I would not say that this work is strong evidence that the students have<br />

been brought to an equivalent of a tester with 1 or 2 years experience.


APPENDIX A<br />

In this analysis, I used online help <strong>and</strong> empirical observation of the product. I had no access to a specification or any other<br />

authoritative source of information about the domains. I recommend that we get the programmer/designer/product manager to review<br />

this.<br />

I included domain risks in this outline because it seemed more natural to do that than to create a separate table. Notice that many of the<br />

domain-defining risks I have identified are vague in some way (e.g. no identification of the specific nature of a potential failure). They<br />

are vague because I don’t have detailed technical information or experiences with this product that would allow me to be any more<br />

specific.<br />

This document is crudely formatted because I find that more elaborate formatting lowers the probability that I will update it as new<br />

information emerges. Normally, I would maintain this in a text editor with no formatting at all beyond indents <strong>and</strong> line breaks.<br />

"???" denotes an issure or question to be investigated further.<br />

Input Variables<br />

Slides Sized For<br />

Type: Enumerated<br />

Default: On-screen Show<br />

Values: [??? These are the values are observed in the product; not corroborated by information in any spec or help file.]<br />

(presets)<br />

On-screen Show [??? Is there a functional difference between this <strong>and</strong> Letter?)<br />

Letter Paper (8.5x11 in)<br />

Ledger Paper (11x17 in)


A3 Paper (297x420 mm) [greatest area & greatest width & greatest height]<br />

A4 Paper (210x297 mm)<br />

B4 (ISO) Paper (250x353 mm)<br />

B5 (ISO) Paper (176x250 mm) [least width]<br />

35mm Slides<br />

Overhead<br />

Banner [least area & least height]<br />

(customer set)<br />

Custom<br />

<strong>Domain</strong>-Defining Risks:<br />

Customer set <strong>and</strong> preset dimensions may fail in different ways or under different conditions.<br />

Preset size with the least/greatest height, least/greatest width, or least/greatest area, may fail in different ways or<br />

under different conditions.<br />

A different size may be used than the one set.<br />

Size used for print may not match size used for display.<br />

A particular size may cause crash or data loss.<br />

A particular size may cause a specific related function to fail (such as text display on a slide).<br />

A particular size may not be available on the current printer.<br />

A particular size may not properly set Width <strong>and</strong> Height fields.<br />

Width<br />

Type: Floating Point Numeric Data Entry w/Incrementer Buttons<br />

Units: inches [??? is this configurable?]<br />

Dimensions: [??? except for max value, these dimensions are observed but not corroborated by any spec or help file]<br />

allowable characters: 0-9 <strong>and</strong> decimal point<br />

min characters: 0<br />

max characters: 2 [??? the product appears to accept 31, not 2. But 31 character length is inconsistent<br />

with a maximum value of 56]<br />

apparent max characters: 31 [although 31 seems like an incorrect limit, it is still empirically a limit]<br />

max value: 56<br />

min value: 1


esolution:<br />

incrementer buttons: .1<br />

direct input: .01 [??? Are hundredths actually processed?]<br />

<strong>Domain</strong>-Defining Risks:<br />

The incrementer may decrement or increment past min/max boundaries.<br />

The incrementer may decrement or increment improperly when user enters an incorrect or out of range value.<br />

The incrementer may fail after more than a particular number of increments.<br />

More than 2 characters may be accepted.<br />

Less than or equal to 2 characters <strong>and</strong> more than 0 characters may be rejected.<br />

More than 31 characters may trigger some kind of failure.<br />

A tenth of an inch resolution may not be properly rendered.<br />

A hundredth of an inch resolution may not be properly rendered.<br />

Illegal characters may be typable or pastable.<br />

Height<br />

[appears to have same exact dynamics as Width]<br />

Slides Numbered From<br />

Type: Integer Numeric Data Entry w/Incrementer Buttons<br />

Default: 1<br />

Units: N/A<br />

Dimensions:<br />

allowable characters: 0-9<br />

min characters: 0<br />

max characters: 4 [??? the product accepts 31, not 4. But 31 character length is inconsistent with<br />

a maximum value of 9999]<br />

apparent max characters: 31 [although 31 seems like an incorrect limit, it is still empirically a limit]<br />

max value: 9999


min value: 0 [??? the product accepts a minimum of 1, but some page numbering schemes start with zero,<br />

so this seem like a bug]<br />

<strong>Domain</strong>-Defining Risks:<br />

The incrementer may decrement or increment past min/max boundaries.<br />

The incrementer may decrement or increment improperly when user enters an incorrect or out of range value.<br />

The incrementer may fail after more than a particular number of increments.<br />

More than 4 characters may be accepted.<br />

Less then or equal to 4 characters <strong>and</strong> more than 0 characters may be rejected.<br />

More than 31 characters may trigger some kind of failure.<br />

Illegal characters may be inputable or pastable.<br />

Slide Orientation<br />

Type: Enumerated<br />

Default: L<strong>and</strong>scape<br />

Values:<br />

L<strong>and</strong>scape<br />

Portrait<br />

<strong>Domain</strong>-Defining Risks:<br />

A different orientation may be used than the one set.<br />

Orientation used for print may not match orientation used for display.<br />

Notes, H<strong>and</strong>outs & Outline Orientation<br />

Type: Enumerated<br />

Default: Portrait<br />

Values:<br />

L<strong>and</strong>scape<br />

Portrait<br />

<strong>Domain</strong>-Defining Risks:


A different orientation may be used than the one set.<br />

Orientation used for print may not match orientation used for display.<br />

Click-Help/Widget [this displays help hints for each widget on the dialog box]<br />

Type: Enumerated<br />

Default: N/A<br />

<strong>Domain</strong>-Defining Risks:<br />

The help tip displayed may not correspond to the widget selected.<br />

Output Variables:<br />

[The following output variables are so directly representative of inputs that there seems to be no need to analyze them further]<br />

Actual Printed/Displayed Slide Size<br />

Actual Printed/Displayed Page Orientation<br />

Actual Printed/Displayed Page Numbers<br />

Slide Orientation Icons<br />

Print Preview Display<br />

Dimensions <strong>and</strong> Display of Text <strong>and</strong> Objects on a Slide<br />

[This output variable is related in part to page setup <strong>and</strong> in part to many inputs that have nothing to do with page setup.]<br />

Type: Various elements of height, width, aspect ratio <strong>and</strong> font size.<br />

Values: Varies with object type.<br />

<strong>Domain</strong>-Defining Risks:<br />

Object sizes may be shrink or be made unrecognizable when page dimensions are changed.<br />

Objects may not be rendered correctly in conjunction with extreme page dimensions.


Printable Area<br />

Type: Numeric width <strong>and</strong> height<br />

Values: Varies with printer br<strong>and</strong>/model <strong>and</strong> settings.<br />

<strong>Domain</strong>-Defining Risks:<br />

Printing may fail when a large preset size is printed to a smaller printable area.<br />

Printing may fail when a small preset size is printed to a very large printable area.<br />

An extreme-sized print area may not be represented properly when "Custom" is selected.<br />

A printable area with a height or width greater than 56 may cause failure when "Custom" is selected.<br />

The printable area of a st<strong>and</strong>ard printer may not be properly represented when "Custom" is selected.<br />

The printable area of a photo printer may not be properly represented when "Custom" is selected.<br />

The printable area of a plotter (or other large printer) may not be represented when "Customer" is selected.<br />

Interactions:<br />

Height/width ratio (aspect ratio) vs. Dimensions <strong>and</strong> Display of Text <strong>and</strong> Objects on a Slide<br />

Dimensions:<br />

min aspect ratio: 1/56<br />

max aspect ratio: 56<br />

sizes/positions of objects: varies with object type<br />

<strong>Domain</strong>-Defining Risks:<br />

An extreme aspect ratio may cause display/print problems.<br />

Aspect ratio vs. portrait/l<strong>and</strong>scape<br />

<strong>Domain</strong>-Defining Risks:<br />

Switching between portrait <strong>and</strong> l<strong>and</strong>scape may change the aspect ratio of displayed/printed objects.<br />

Switching between portrait <strong>and</strong> l<strong>and</strong>scape may fail to switch width <strong>and</strong> height parameters.<br />

At extreme aspect ratios, switching between portrait <strong>and</strong> l<strong>and</strong>scape may cause display/print problems.


Slides orientation vs. notes orientation<br />

Values: orientations match or do not match<br />

<strong>Domain</strong>-Defining Risks:<br />

Non-matching orientations may lead to display/print problems on one or the other.<br />

Slides numbered from vs. number of slides to print<br />

Values: 1 to some value greater than 9999 [??? precise upper limit not known; probably irrelevant]<br />

<strong>Domain</strong>-Defining Risks:<br />

Printing/disaply may fail if (numbered from) + (slides to print) is LESS THAN OR EQUAL TO 9999<br />

Printing/disaply may fail if (numbered from) + (slides to print) is GREATER THAN 9999<br />

State-based interactions:<br />

A particular page setup setting may fail when preceded by a certain other setting.<br />

Example:<br />

1. place text objects on a slide.<br />

2. set height=56, width=1, press ok.<br />

3. change to width=56, press ok.<br />

4. change to height=5, width=5, press ok.<br />

5. text size has been reset to super tiny.<br />

6. Repeat steps 2-4.<br />

7. text size has been reset to impossibly tiny (font size = 0).<br />

<strong>Domain</strong>-Defining Risks:<br />

Preset may fail when following custom.<br />

Custom may fail when following preset.<br />

Particular preset may fail when following particular other preset<br />

Extreme dimensions may fail when following other extremes


<strong>Domain</strong>s described above may also have problems related to interactions with any of these<br />

functions:<br />

field editing functions in dialog box<br />

home<br />

end<br />

text insertion<br />

text deletion<br />

copy/cut/paste<br />

tab<br />

dialog buttons<br />

ok<br />

cancel<br />

print<br />

slides<br />

notes<br />

h<strong>and</strong>outs<br />

save<br />

save as...<br />

save as web page<br />

display<br />

normal<br />

slide show<br />

slide sorter view<br />

master view<br />

editing<br />

current printer<br />

document formats<br />

animation<br />

live links <strong>and</strong> buttons


localized versions of Windows<br />

alternative alphabets<br />

double-byte character sets<br />

alternate measurement systems


Appendix Z: Performance Tests’ Evaluation Report<br />

by Pat McGee


Report on experiment on teaching<br />

specific testing techniques.<br />

Pat McGee<br />

2 January 2004<br />

Subjects<br />

There were 18 subjects in the first group. To date, I have only received<br />

files for 17 of them. The files for the 18 th subject seem to have gone<br />

missing. There were five subjects in the second group.<br />

Identification of variables<br />

Of those 17 subjects in the first group, 12 attempted to answer the<br />

dimension question, 12 attempted to answer the type question, <strong>and</strong> 9<br />

attempted to answer the direction question.<br />

Of the second group, all five attempted to answer the all three of those<br />

questions. Three of them answered the dimensions question in part b, but not<br />

in part a.<br />

On the dimension <strong>and</strong> type question, it looked to me like the subjects<br />

exhibited poor test-taking behavior. The subjects that answered these<br />

questions mostly answered them correctly. I don't see any reason to believe<br />

that these subjects were taught poorly.<br />

On the direction question, just over half the subjects in the first group<br />

attempted to answer it at all. Of those, all but two subjects identified all the<br />

fields as inputs. Two of the subjects identified some but not all of the<br />

input/output fields as outputs. Of those two, one was in each of the first two<br />

sessions. None identified any fields as input/output.<br />

In the second group, all five identified all the variables as input only.<br />

From this, I conclude that this was not taught well. It seems to have<br />

been taught somewhat better in the first two sessions than the three after<br />

that.<br />

Equivalence class <strong>and</strong> boundary value analysis<br />

I believe that the problem presented was somewhat different from the<br />

simple cases presented in the training. The problem presented had four interrelated<br />

controls which basically represented a 2-D space with special points.<br />

McGeeReport v1.doc 1 03 January 2004 09:01


The material presented in training was mostly about 1-D spaces. So, in many<br />

respects, this problem was a good test in that it required performance at level<br />

6 of Bloom's taxonomy.<br />

Unfortunately, none of the subjects made this conceptual leap. They<br />

tried to treat the problem as if it were two independent 1-D spaces. This led<br />

them to propose tests that I thought were not very powerful.<br />

They did well on the outside boundaries of each dimension, since these<br />

could be tested independently. They did well on the enumerated variables,<br />

correctly identifying each value as something they needed to test.<br />

<strong>Testing</strong> the numeric inputs showed some conceptual problems. Almost<br />

all of the students tested the inputs for field lengths of 5 <strong>and</strong> 32. Nowhere in<br />

the documentation that I saw claimed either one as a limit. The program<br />

seems to enforce 5 as a limit, but whether this is according to any<br />

specification or not, I can't tell. I think this was an invented limit because<br />

they couldn't deal with the concept of an unknowable limit.<br />

When dealing with experienced testers, I think it is a good thing to<br />

write test cases as specifications of constraints that the test cases must fit. I<br />

expect experienced testers to be able to generate good test cases from<br />

specifications. However, when dealing with inexperienced testers, I don't<br />

have that same expectation. Until I see some test cases that they generate<br />

from a specification, I don't know whether a specific person underst<strong>and</strong>s<br />

enough about what makes a test case good to generate good ones.<br />

Many of the subjects wrote more generic specifications for test cases<br />

instead of generating specific values. So, without more data, I can't tell<br />

whether they did this knowing how to translate that into good test cases, or<br />

whether they did it because they didn't know how to write good test cases<br />

<strong>and</strong> could figure out some specifications.<br />

Only one (1) subject wrote test cases with almost all test cases having<br />

specific values. Six (6) wrote them with most values specific, while fifteen<br />

(15) wrote them with few values specific.<br />

For the seven who wrote at least mostly test cases with specific values<br />

instead of specifications, the test cases were good. For the fifteen who didn't,<br />

I have no way of knowing whether they could actually generate good test<br />

cases for those specifications.<br />

McGeeReport v1.doc 2 03 January 2004 09:01


All-pairs analysis<br />

The results of the all-pairs analysis of the first subjects showed that they<br />

did not underst<strong>and</strong> this very well at all. Sowmya rewrote the training<br />

materials for this <strong>and</strong> presented it to several new subjects. The analysis of<br />

the all-pairs question for these five subjects follows.<br />

There are several parts of the problem of generating an all-pairs table.<br />

First, identify a reasonable set of variables to test. Second, correctly perform<br />

the mechanics of generating the all-pairs table.<br />

I believe that a good all-pairs table for this problem would have four<br />

variables, <strong>and</strong> require two different sets of all-pairs<br />

I believe that a good all-pairs test for this problem would have two<br />

distinct all-pairs tables. This is because several of the variables are mutually<br />

interdependent <strong>and</strong> cannot be tested separately. Splitting these four mutually<br />

interdependent variables into two sets gives the two tables. One set could use<br />

the width <strong>and</strong> height, the other set could use the Sized <strong>and</strong> the Orientation:<br />

Slides. These would be combined with the two independent variables:<br />

Orientation: Notes, <strong>and</strong> Number of Slides.<br />

None of the subjects analyzed the problem this way. All analyzed it as<br />

if several interdependent variables were independent, even though this is<br />

false to fact.<br />

Two subjects made other errors in the analysis. One didn't test custom<br />

sizes. Another had only three independent variables, not four.<br />

Given the analysis that they did, all of the subjects generated all-pairs<br />

tables that were completely or mostly correct. One subject got the first three<br />

iterations correct, then completely messed up the fourth iteration. Another<br />

generated a table that was completely wrong, but the error was probably a<br />

bad copy-<strong>and</strong>-paste for the first variable. (For that variable, all values listed<br />

were the same.) Making a very reasonable correction to this answer would<br />

lead to it being completely correct.<br />

Dependencies<br />

Of the five subjects in the second group, all answered this by detailing<br />

the dependencies, but not how to test them. This could be poor test-taking<br />

skills, but I think it is more likely that the subjects didn't know how to<br />

answer the question of testing the dependencies.<br />

McGeeReport v1.doc 3 03 January 2004 09:01


Question e<br />

All the subjects in the second group answered this question, but I did<br />

not have the question, so I cannot tell whether the answers were correct or<br />

not.<br />

General impression<br />

Overall, I did not get the impression that any of these subjects<br />

understood the material well enough to apply it to a new situation. I believe<br />

that they mostly could apply these techniques to situations that were very<br />

similar to the examples they had been trained on. In terms of Bloom's<br />

Taxonomy, I believe they learned the material mostly at level 3<br />

(Application.)<br />

McGeeReport v1.doc 4 03 January 2004 09:01

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!