Notes 006

advertisement
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

1 Testing


Lewis “Software Testing and Continuous Quality Improvement”
Kaner, Falk and Nguyen, “Testing Computer Software”
1.1 White/Black/Gray Box Testing
This is one dimension to classify testing methods.
 White or Clear or Crystal Box Testing – Testing that is based on full knowledge of the code,
architecture, or implementation.
 Black Box Testing – Testing that assumes NO knowledge of code, architecture or
implementation.
 Gray Box Testing – Testing with only partial knowledge of implementation. This knowledge
may include possible algorithms that were used to implement but not the specific code, etc.

Generally, on all but trivial systems, the development of test cases can be a infinite process.
How much time we spend developing test cases is based on an economic decision. We try
to test:
o the most important functionality,
o reduce the risk of shipping defects, and
o reduce the impact of dangerous defects.
2 Levels at which we can test
2.1 Unit Testing







Unit tests are often time part of detailed design documents.
The tests often are reviewed by a Testing Organization,
Running the tests are often the responsibility of the development team,
Sometime test harnesses or simulators are necessary perform unit testing,
Test Stubs – minimal function implementations to check the logic of calling functions and
interfaces between calling and called functions.
Test Harness – code is written to simulate parts of a system that are not yet functional or to
stress code harder than can be could normally be done by hand.
When proof of passing a test is available, the unit software can be released for integrating
into Subsystems.
©2011 Mike Rowe

Page 1
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


Since some knowledge of code may be necessary, this is generally White Box testing.
Sometimes, low-level requirements (specifications) are detailed enough that these tests can
be run without knowledge of the code – this would then be Black Box testing.
2.2 Subsystem Testing




Rather than dealing with individual classes we are dealing with groups of classes. It is
smaller than the entire system.
At a subsystem level we are often testing Abstract Data Types (ADT) and classes. ADTs are
non-classes, but like classes encapsulate and hide the details of the implementation; thus,
limiting the level of detail with which testing that can be done. Often must treat a
subsystem as a Black Box. Encapsulating code limits what program elements we have
access to for testing.
We may require Test Harnesses to drive an entire subsystem or simulate other subsystems
on which the tested subsystem is dependent.
Black Box testing if the test harnesses can be developed without knowledge of the code, if
we need knowledge of the code to develop these we are dealing with white box testing.
2.3 Integration Testing




The incremental testing of a system as subsystems are sequentially added. It is more than
subsystem testing and less than System Level Testing.
We generally do have implementation knowledge of the subsystems. Integration testing
determines how well subsystems play together.
Tests the interfaces among subsystems.
Need knowledge of the architecture to drive subsystems and sets of subsystems, thus White
Box testing
2.4 System Level Testing





System Level testing involves testing only after the system is completely integrated. Some
tests require all/most parts of a system to be in place before they can be implemented.
System tests are generally done at the user’s level. Due to the OO and/or ADT construction
of subsystems, system level testing is hard to do anything other than functional testing.
Tests should cover all User Cases and/or requirements.
Tests should cover non-specified events. If a user might possible hit a keyboard with a fly
swatter we should see what happens, (This is type of testing is technically known as “Fly
swatter testing methods” – just kidding). The system should handle unexpected events.
See Exception Test Cases below.
Often defects found at the system level are the hard to isolate. This is because we dealing
with a large body of code rather than a smaller body.
©2011 Mike Rowe

Page 2
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


Black Box testing.
2.5 Normal v. Exception Test Cases



Defining and testing the “sunny-day” of a system is often very easy and can sometimes be
done exhaustively.
Testing all possible exceptions can be a more formidable task and is often a combinatorially
impossible to test all possible sets of “rainy-day” inputs. We may not be able to test all
combinations “before the sun burns out”.
Generally Black Box testing.
2.6 Regression Testing






Rerunning suites of generally automated tests.
Primarily used on released systems that are undergoing maintenance. Regression testing
helps ensure that working software has not been significantly broken.
“The average bug needs to be fixed twice in the lifespan of a system”, Robin (USDATA
1996).
Regression testing is often automated, some places there is an automatic nightly build,
install, regression test, and defect reports sent ready for the software teams each morning.
This strategy makes fixing defects easy, as, if it worked one day but didn’t the next you can
easily isolate what has changed.
Regression test suites are often augmented as new ways to break a system are discovered.
In verifying that you have fixed a defect, you generate a test. When done, add this test to
your regression suite.
Generally Black Box testing.
2.7 Inspections and Walkthroughs





Inspections, reviews and walkthroughs can start at the very beginning of a project with
review of requirements and use cases and continue through developed code and test cases.
They can range from informal individual “desk reviews” to formal “peer reviews” where
people meet around a table and go through an artifact line by line. Architects and
Designers review designs, domain experts review requirements and use cases,
programmers review code.
Although the process varies, it is are generally effective at spotting defects and weaknesses
in documents, designs and code before testing is possible.
Common problem involves keeping the review process constructive and not offending the
egos of the author(s).
Side benefit is that reviewers can learn new tricks from seeing other peoples’ tricks.
©2011 Mike Rowe

Page 3
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


White Box testing.
3 Input Coverage Testing


Often it is combinatorially impossible to test all possible input values for even one variable.
AMD’s AM3 socket has over 941 pins. If only 200 of these pins can be used for input we
have 200 binary input variables, or 2 to the 200th input combinations (1.6E+60). If we can
do a test every nanosecond it will take only 5E+43 years to do all tests.
o

The age of the universe, in physics, is the time elapsed between the Big Bang and the
present day. Current observations suggest that this is about 13.7 billion years (1.37E+10),
with an uncertainty of about +/-200 million years.
Systematic testing methods are different ways of breaking down impossible large domains
into manageable chunks.
3.1 Equivalence Classes based input testing






Often input values can be segregated into subsets, based on assumed expected outcomes.
o This helps cut down on the total number of tests needed to “cover” this input.
o Weakness is that we are making an assumption on equivalence of values.
We can look at each input variable and group its inputs into sets called equivalence classes,
and make the assumption that all members of a class will behave identically in a system.
o For instance if we are reading voltages (an infinite domain) and the nominal range is
between +4.5 to + 6.0 volts, inclusive.
Nominal subclasses
o Any value between +4.5v to + 6.00v should function identically, thus we can test
 Exactly 4.5 v
 Exactly 6.0 v
Exception subclasses (these should fail), test
o Exactly +4.49v
o Exactly +6.01v
Other cases of interest for which we might have special processing include:
o +0.01 to +4.49v (low voltage processing)
o +6.01 to +20.0 volts (high voltage processing)
o +20.01 to +130v (very high voltage processing)
o >+200v -- (really really high voltage processing)
o 0.00 v -- (total loss in continuity processing)
o -0.01 to –20.00 v – (reverse polarity processing)
We can test one or two values in each of the subclasses and assume that all other values of
that subclass will behave the same. This cuts down on the number of values that we need
to test for one input variable, without HOPEFULLY sacrificing coverage.
©2011 Mike Rowe

Page 4
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


We may have 10, 100 or 1000’s of such input variables. Even if we produce equivalence
subclasses for each of input variables, we may not be able to test all combinations of all
input variables subclasses.
3.1.1 Boundary Testing


This is a means of limiting the number of test cases by selecting only the edges of each
equivalent class. We demonstrated this above.
o We select two values as close to an edge as we can get, one above and one below
the edge.
In the above example if one of the edges is at 4.5v (the lowest value accepted), we want to
test 4.500v and 4.499v. 4.500 v should pass and 4.499v should fail. We don’t need to test
other values above or below these values.
3.1.2 All-Pairs methods



This is a strategy for maximizing coverage of input combinations while minimizing the
number of tests performed.
Let us assume each input variable has 5 equivalence classes of inputs.
o Input variable A contains the set of inputs {a1, a2, a3, a4 and a5}
o Input variable B contains the set of inputs {b1, b2, b3, b4 and b6}
o And so on for as many input variable as we have.
If we have 2 input variables A and B, and each input has 5 subclasses. For this we will need
25 test cases to cover all combinations.
o Compute total combinations of v variables with i inputs each is i to the v power
o iv
Variable A
Variable B
b1
b2
b3
b4
b5

a1
a1
a1
a1
a1
a1
a2
x
x
x
x
x
b1
b2
b3
b4
b5
a2
a2
a2
a2
a2
a3
x
x
x
x
x
b1
b2
b3
b4
b5
a3
a3
a3
a3
a3
a4
x
x
x
x
x
b1
b2
b3
b4
b5
a4
a4
a4
a4
a4
a5
x
x
x
x
x
b1
b2
b3
b4
b5
a5
a5
a5
a5
a5
x
x
x
x
x
b1
b2
b3
b4
b5
If we have 3 input variables (A, B, and C) we have a total of (5 to the 3rd ) 125 combinations.
o But, if we just test all combinations of pairs: A – B (25 combinations), A – C (25
combinations), and B – C (25 combinations) we only have 75 combinations.
o For the 25 Combinations of A-B we randomly select values of C. Likewise, for A-C we
select random values for B, and for B-C we select random values of A.
o This strategy provides a savings of 50 test cases.
©2011 Mike Rowe

Page 5
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

o It is missing the complete coverage of three-way interactions of A-B-C and we
assume that by randomizing on non-paired variable we minimize the impact of
missing the three-way interactions.

If we have 5 input variables (A, B, C, D and E) we have (5 to the 5th) or 3125 combination,
o But if we test all pairs we only have 250 cases to test (25 for each of A—B, A—C, A—
D, A—E, B—C, B—D, B—E, C—D, C—E, and D—E).

If we have 10 input variables we have a total of (5 to the 10th) 9,765,625 combinations.
o But, we have p! / (q! * (p – q)!) This means p items taken q at a time.
o With 10 items taken 2 at a time we have 10! / (2! * 8!) = 45 pairs, each pair has a
25 combinations, or 45 * 25 tests = 1,125 total tests.
o This is a savings of 9,764,200 test cases.
If we have 20 input variables (5 to the 20th) or 95,367,431,640,625 combinations
o 20! / (2! * 18!) = 190 pairs, each pair has 25 combinations, 190 * 25 = 4,750 tests.


The larger the number of input variables, the larger the savings in using All Pairs Testing.
Number
of Input
Variables
2
3
5
10
20
Equivalence
Classes per
input
5
5
5
5
5
Total Combinations
All Pairs
Combinations
% of tests savings
25
125
3125
9,765,625
95,367,431,640,625
25
3 * 25 = 75
10 * 25 = 250
45 * 25 = 1,125
190 * 25 = 4,750
0%
40%
92%
98.848%
99.999999%
3.1.3 Computing probability of catching a failure


Let’s say we have 10 variables A, B, C, D, E, F, G, H, I and J each with 5 inputs.
o We have 5 to the 10th combinations , iv , or 9,765,625 total test combination.
Let say there is one defect in the system and it occurs when we have both i5 and j5. What is
the probability of detecting this defect if we only have time to run one random combination
of inputs?
o Total combinations of inputs: 5 to the 10th = 9,765,625 total test combination.
o Each combination of A, B, C, D, E, F, G, and H with the combination of i5 and j5
will fail:
 There are 5 to the 8th combinations of A, B, C, D, E, F, G and H or 390,625
o The probability of randomly drawing the defective test case is 390,625 / 9,765,625 =
0.0399693824
©2011 Mike Rowe

Page 6
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality



What would be the probability of detecting a defect if we didn’t hit a defect the first time and
could randomly select a second test case to run.
o The first would be 0.0399693824 (see above).
o The second would be 390,625 / 9,765,624 = 0.040000004….
This is as far as we will go with this topic
3.2 Broken Box Testing

This is a form of “gray-box” testing. With knowledge of algorithms, but not necessarily
knowledge of the exact implementation, we select input values that will exercise different
conditions of the algorithms that were possibly used in the code.

Some algorithms have known weaknesses, for instance polynomial methods of estimating
probabilities “wiggles” at the tails. We use data values at the tails to see if algorithms
remain stable.
o Example: some easily implemented algorithms for estimating probability given zscores use polynomials. These may give very inaccurate values at the tails.
3.3 Alpha and Beta testing or some call it “Let the customer test it “

Alpha testing generally occurs at a point when all of the major features, but perhaps not all
of the minor features are working. At least one system-level testing pass has been made.
There may be known critical defects in the system. The code is sent to a very limited
number of “friendly” users who test it under real-world conditions, but not maybe truly
production-level environments.

Beta testing generally occurs at a point when all major and minor features have been
implemented and few if any major defects (but possibly some minor defects) exist.

Major benefit of Alpha and Beta testing is that your system will be tested by many more
people than you could test in house and in many different real-world ways that you cannot
simulate in your test lab.

It is important that Alpha and Beta testing users are carefully. We need to be certain that
they will
o actually install and use the software
o represent a diverse set of users

Apple and Microsoft currently have two very different philosophies on Beta testing. Apple
does very little and very private Beta testing. Microsoft has many, huge and very public Beta
tests.
©2011 Mike Rowe

Page 7
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

o Apple prefers the marketing hype associated with releasing a product that has been
kept secret. In some products this has resulted in major flaws not being discovered
till well after the product was released.
o Microsoft prefers getting information out and also having defects discovered before a
production release occurs. Sometimes a buggy or sluggish product gets bad press
before it is released. But at least MS has a chance to respond to this press before the
final release.
3.4 Structural Testing and Structural Coverage Analysis

From A Practical Tutorial on Modified Condition/ Decision Coverage, By Kelly J. Hayhurst,
Dan S. Veerhusen (from Cedar Rapids), John J. Chilenski, Leanna K. Rierson; NASA/TM-2001210876

Structural Coverage Analysis has the purpose of determining which code structures were or
were not exercised by requirements-based testing (RBT) procedures.

Structural Testing is the process of exercising software with test cases written, which are
based on knowledge of the source code (and NOT the requirements).

Both methods require absolute knowledge of the implemented code, thus they are Clear
Box testing techniques.

We do Structural Testing to identify errors in implementation. For instance if we have the
statement:
o If (z == 2) OR (y > 1) Then . . .
What tests can be run to determine if we screwed up and rather than using and OR we used
an AND.


Generally, your code needs to be instrumented to show coverage
3.4.1 Function Level Coverage

Testing to make sure that each function is executed. Easy to “do it yourself”
instrumentation.
// put at function entry point(s).
cout << “Entering function foo” << endl;
// put at function exit point(s)
cout << “Exiting function foo” << endl;

Can use macros ( #define ... ) to implement these.
©2011 Mike Rowe

Page 8
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

3.4.2 Statement Coverage


Determines which statements are executed by test cases.
If we have the following code:
If (x > 1) AND (y == 0) Then
z=z/x
If (z == 2) OR (y > 1) Then
z=z+1
o If we select the input values x = 2 and y = 0 and z = 4 then every code statement is
covered.
o If we select x = 0 and y = 0 then inner parts of each of the Ifs are not covered.

Statement Coverage requires more sophisticated tools to instrument and analyze. Rational
PureCoverage is one such tool.
3.4.3 Decision Coverage





Used to exercise conditionals (IF, Switches, etc.)
Determines whether all decision options/paths in the code have been exercised. For
instance an IF statement makes two decisions (True or False). To have Decision coverage
we must execute both the True and False Decisions branches.
If we have the following code:
If (z == 2) OR (y > 1) Then
z=z+1
We will need two sets of inputs to have to cover the two decisions
o Case 1: (z == 2) OR (y > 1) True when z = 2 and y = {anything} results in the True
Decision
o Case 2: (z == 2) OR (y > 1) False when z = 3 and y = 0 results in the False Decision
The above results in full Decision coverage.
3.4.4 Condition Coverage




Used to exercise conditionals (IF, Switches, etc.)
Condition coverage tests to see if each condition of the inputs is covered but not
necessarily each decision is covered.
If we have the following code:
If (z == 2) OR (y > 1) Then
z=z+1
We have two Boolean Conditions,
o Condition A := (z == 2)
o Condition B := (y > 1)
o We will need two sets of inputs to cover the set Conditions of A and B, namely
©2011 Mike Rowe

Page 9
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


 A is both (True and False) and
 B is both (True and False),
o This is satisfied by A,B of {T,F} and A,B of {F,T}. For instance,
 Case 1: A := True when z = 2 and B := False when y = 0
 Case 2: A := False when z = 3 and B := True when y = 42
o The above results in full Condition coverage.
We do not need to cover all combinations of conditions of A,B of {F,F}, {F,T}, {T,F} and {T,T}.
We just need to cover A being both T and F and B being both T and F.
3.4.5 Condition/Decision Coverage






Condition/Decision Coverage combines the requirements of both Condition and Decision
coverages, in that we must test
If we have the following code:
If (z == 2) OR (y > 1) Then
z=z+1
both Decisions of
o IF  True and
o IF  False; and
each Condition we must test for both sets of conditions
o A  {True and False} and
o B  {True and False}.
The Decision can be tested with the input of z and y such that AB is TT and AB is FF, for
instance
o Case 1: (z = 2; y = 2)  Condition (AB = TT) and Decision IFT
o Case 2: (z = 0; y = 0)  Condition (AB = FF) and Decision IF F
We do not need to cover all combinations of conditions of A,B of {F,F}, {F,T}, {T,F} and {T,T}.
We just need to cover the conditions of A and B, A being both T and F and B being both T
and F, and the decision of IF -> T and F.
3.4.6 Modified Condition / Multiple Decision Coverage (MC/DC)
MC/DC enhances the Condition/Decision Coverage testing by requiring each Condition (A,
B) to independently influence the Decision (True or False). There are eight conditions that
must be meet to ensure MC/DC
1
2
3
4
For ORed condition
A v B
A v B == True
// true decisions
A v B == False // false decisions
A == True
// condition
A == False
// condition
©2011 Mike Rowe

Page 10
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

5
6
7
8
1
2
3
4
5
6
7
8
B == True
// condition
B == False
// condition
Show that each condition independently affect the decision
A v False == A v B
B v False == A v B
For ANDed Condition
A ^ B
A ^ B == True // true decisions
A ^ B == False // false decisions
A == True
// condition
A == False
// condition
B == True
// condition
B == False
// condition
Show that each condition independently affect the decision
A ^ True == A ^ B
B ^ True == A ^ B


This can be shown to require n + 1 test cases for a Decision of n-inputs.
If we have the following code:
If (z == 2) OR (y > 1) Then
z=z+1

IF DECISION TRUE
o If A = T and B = F  Then IF Decision  True // See # 3, 6, 1 and 7 above
o If A = F and B = T  Then IF Decision  True // See # 4, 5, 1 and 8 above
o The above two sets of conditions verify that conditions A and B independently
influence the IF Decision when the Decision is True
 In more detail, The True IF Decision is not dependent only on Condition A
being True and Condition B being False; and the True IF Decision is not
dependent only on Condition B being True and Condition A is False.
IF DECISION FALSE
o We also must exercise the False Decisions of the IF;
o If A = F and B = F  Then IF Decision  False // see # 2 above
o Note we do not need to test Condition A = True and Condition B = True as we have
already established that if either Condition A is True or Condition B is True we
produce a True IF Decision.
Here we have three test cases, two that are needed to exercise conditions for the True
Decision and one case (the only case possible) to exercise the False Decision.



This level of coverage is required for the Avionics DO 178-B Standard for Level A software
testing.
©2011 Mike Rowe

Page 11
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

o Level A is for the most critical systems – systems that if they were to fail would
result in a high probability of an airplane crashing.
3.4.7 Multiple Condition Coverage

This requires testing each possible combination of inputs of Conditions.
o If there are n binary conditions then this requires 2n input combinations, for AB we
need conditions of TT, TF, FT, and FF.
o If there are three condition we need input combinations: FFF, FFT, FTF, FTT, TFF, TFT,
TTF, and TTT.
3.5 CRUD Testing

Object: Create, Read, Update and Delete

Matrix indicating how processes or modules use specific objects
Object
A
B
C
D
Process
1
CRUD
R
U
C
2
RU
R
R
3
RU
R
4
D
CU
C
RU
5
D
6
D
D

Matrix to track the testing of objects usage.
Create
Read
Object
A
1
B
C
D
Update
Delete
3.6 Oracles – Truth tellers


Sometimes expected results are hard to define and you need to have an expert or some
other system be an oracle for expected results.
Oracles could be a previous version of a system, for instance if we are doing version 2.0 of a
word processor, the fonts should look just like version 1.0 unless otherwise specified. Or, it
could be some industry leading Word Processor – if it works like MS Word it must be
correct!
©2011 Mike Rowe

Page 12
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


Sometimes there are domain experts that need to look at something, for instance an
airplane simulation must be “flown” by some pilots that are experienced with the aircraft
that it is simulating to determine if the necessary degree of realism is there.
3.7 Random Testing
Profile the inputs that users actually make. Randomly generate input based on this profile.
Oracles are difficult to identify in this type of testing.
Benefits are that the inputs are not biased by the tester or developer.
4 More testing
4.1 Usability




Gather people similar to your target end users
Study how they use the product.
Perhaps conduct focus groups to discuss the usability of a product.
Some usability data can be gathered from Alpha and Beta testing, but it is generally never as
good as that data gotten from actually watching a user.
4.2 Mainstream Usage Tests


Use the system the way that you would expect your users will – do some real work with it.
See what happens.
If you don’t know how your users will be using a product, collect some scenarios. Don’t get
too detailed in the scenarios as this will provide some “wandering your way through” the
system as you use it.
4.3 Load: volume, soak, stress, and storage tests
4.3.1 Volume tests:


Study the largest tasks the program can deal with. Feed a compiler a huge program, a word
processor a huge file to manipulate, long sustained rates of I/O, etc.
Also study the smallest tasks, look at what happens when empty files are sent to process.
Look for overflows of storage, memory leaks.
©2011 Mike Rowe

Page 13
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

4.3.2 Soak Test:

Run the system at normal load for a long time.

Monitor system resources, is the system leaking memory, disk, queue length, overheating,
data bandwidth, etc.
4.3.3 Stress tests:


Test a programs response to burst rate activity.
o Start with a small load.
o Ramp it up until the program fails.
o How fast can a word processor accept input before it loses data, how many calls per
second can a telephone switch process before it starts dropping service (the Mother
Day scenario),
Run the system till the wings fall off. Hit a system with increasing levels of input until it fails.
Monitor resources to see what the failure points are (CPU, disk throughput, memory,
communications, etc.)

It is important to understand maximum capacity of a real-world system before it is
deployed. Go to Dick’s on a Friday late afternoon or Saturday morning when they are really
busy. You notice that the P.O.S. system does not to a good job of keeping up with the load.

Storage tests – This can be done as part of Stress testing.
o How does a program function with varying amounts of main memory and disk?
o Will a program function well enough on a minimally configured machine. Monitor
swap or paging space.
4.4 Background Tests

Programs that run in on multitasking environments need to be tested while other typical
programs are active. Need to make sure program is not starved for memory, cpu, disk or
communications.
4.5 Error Recover tests


Test to make sure the system handles and recovers from common failures.
Make sure the system is tested for each type of error listed in the user manual.
©2011 Mike Rowe

Page 14
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality

4.6 Security Tests




This will be based on the type of system and environment in which it runs.
How easy can an unauthorized user gain access to the system?
If some unauthorized person gains access and/or control, how much damage can be done?
See examples about hacking Pacemakers and Spoofing GPS receivers.
TheLadders.com [jobs@TechnologyLadder.com]
4.7 Compatibility and Conversion Tests



Compatibility – checks the way one product works with another.
They may both use the same file,
May communicate with each other,

Forward compatibility – old products can handle newer files/program versions; this is
generally NOT expected.

Backward compatibility – newer products can work with older files/program versions; this
is very desirable.

Multiplatform – programs that run on multiple OS, DBs, hardware, etc. should be
compatible to the degree advertised.
There are many kinds of compatibility that may be claimed, and these should be stated
explicitly in requirements.

©2011 Mike Rowe

Page 15
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality


Conversion – if a program is not directly compatible is there an intermediate program
available to convert data into a form that can work. This happens when database scheme
or file formats change between versions.
4.8 Configuration Tests

A program must run on a wide range of computers. Even on the same brand of computer
there may be different configurations of memory, printers, bios, dlls, or other peripherals.
A program should work well on common configurations of computers.
4.9 Installability and Serviceability






Installation is generally the user’s first exposure to a software product. If it is not a good
experience it may taint the user’s opinion forever.
Installation – does the install program successfully help configure the program to match the
h/w and s/w environment.
Is the install easy (Grandma test). How long does it take an inexperienced user to install the
program.
Can an experienced user customize an install to optimize it for special needs. How long
does it take to customize.
What problems can a user get into.
Check for necessary, h/w, s/w, configurations before the install gets going. It is better to fail
early than to fail late in a process.
4.10 Port Testing







After a system has been ported to another platform there are several areas to test (this is a
non-exhaustive list).
Overall functionality – use a regression test suite
Keyboard handling – press every key sequence to make sure that they behave the same.
Terminal/monitor handling – does the program look the same on various monitors
available for the different system. What about different resolutions? What can we expect
for minimum or maximum resolutions. Example: X-windows v. Win
Sign-on screens, version and system identification – has the program id version number,
etc been changed in ALL places to represent the port.
Disks – does it handle different file systems that are available on the ported system. Check
all media, hard disk, floppies, ZIPs, memory sticks, shared file servers, etc.
Operating system error handling – what happens in normal operating system program
situations, for example disk full. Blues screens are not created equally.
©2011 Mike Rowe

Page 16
02/10/2016 8:03 AM
Notes_006_Types of Testing
SE 3730 / CS 5730 – Software Quality







Installation procedure – generally the install for a different environment/OS will be radically
different. Need to make sure that it configures all needed resources for the new
environment.
Compatibility – if your program was compatible with program_X on its originally
environment and program_X has been ported, is your ported program still compatible with
program_X. May need to document around this type of a situation.
Interface style – platforms have widely different interface environments (Mac, Windows
NT, XP, …, HP-UX, Solaris, Linux, etc.). The program should look like it was designed for that
environment and not just an after thought.
Security – are there known weaknesses that should be checked.
License Management / anti-piracy – Protection of code from piracy is system dependent.
Ask the programmers what they needed to change.
©2011 Mike Rowe

Page 17
02/10/2016 8:03 AM
Download