Engineering
SOFTWARE TESTING
(DYNAMIC) BLACK BOX
TESTING
Equivalence Partitioning is a black-box testing method that divides the input domain of a
program into classes of data from which test cases can be derived
An ideal test case single handedly uncovers a class of errors e.g incorrect processing of all
character data that might otherwise require many cases to be executed before the general
error is observed.
Equivalence Partitioning strives to define the test case that uncovers classes of errors, there by
reducing the total number of test cases that must be developed.
An equivalence class represents a set of valid or invalid states for input conditions.
Equivalence Class Partitioning Testing
If an input condition specifies a range one valid and two invalid equivalence
classes are defined.
If an input condition specifies a specific value one valid and two invalid
equivalence classes are defined.
If an input condition specifies a member of a set one valid and one invalid
equivalence class are defined.
If an input condition is Boolean, one valid and one invalid class are defined.
Boundary Value Testing
The term first originates from a class project at the University of Wisconsin
1988 although similar techniques have been used in the field of quality
assurance, where they are referred to as robustness testing or negative
testing.
Omission Testing
Omission Testing (also called Missing Case Testing):
A study by Sherman on a released Microsoft product reported that 30% of client reported
defects were caused by missing cases.
Other studies show than an average of 22 to 54% of all client reported defects are caused by
missing cases.
Null Case Testing
Null Testing: (a specific case of Omission Testing, but triggers defects extremely often)
Exposes defects triggered by no data or missing data.
Often triggers defects because developers create programs to act upon data, they
don’t think of the case where the project may not contain specific data types
INCREMENTAL INTEGRATION
Big Bang Approach
In this approach, all or most of the developed modules are coupled together to form a
complete software system or major part of the system and then used for integration
testing.
The Big Bang method is very effective for saving time in the integration testing process.
However, the major drawback of Big Bang Integration is to find the actual location of
error.
Incremental Integration
TOP DOWN INTEGRATION
Top Down Testing is an approach to integrated testing where the top integrated modules
are tested and the branch of the module is tested step by step until the end of the
related module.
Incremental Integration
TOP DOWN INTEGRATION
Top down integration is performed in a series of steps:
1. The main control module is used as test driver and stubs are substituted for all components directly subordinate to the
main module.
2. Depending on the integration approach selected (depth-first or breadth-first) subordinates stubs are replaced one at a
time with actual components.
4. On completion of each set of tests another stub is replaced with actual component.
5. Regression testing may be conducted to make sure that new errors have not been introduced.
Incremental Integration
Bottom Test B, E, F
Layer Test F
Tests
Test
A, B, C, D,
Test D,G E, F, G
Test G
Test A,B,C, D
Top Test A
Layer
Tests
Load Testing
Load testing is the process of putting demand on a system or device and measuring its
response. Load testing is performed to determine a system’s behavior under both
normal and anticipated peak load conditions.
It helps to identify the maximum operating capacity of an application as well as any
bottlenecks and determine which element is causing degradation.
Example: Using automation software to simulate 500 users logging into a web site and performing end-
user activities at the same time.
Example: Typing at 120 words per minute for 3 hours into a word processor.
While an application is running, suddenly restart the computer, and afterwards check the validness of the
application's data integrity.
While an application is receiving data from a network, unplug the connecting cable. After some time, plug
the cable back in and analyze the application's ability to continue receiving data from the point at which
the network connection disappeared.
Restart the system while a browser has a definite number of sessions. Afterwards, check that the browser is
able to recover all of them.
Re-executes some or all existing test cases to exercise code that was tested in a previous release
or previous test cycle.
Performed when previously tested code has been re-linked such as when:
The probability of changing the program correctly on the first try is only 50% if the change involves
10 or fewer lines of code.
The probability of changing the program correctly on the first try is only 20% if the change
involves around 50 lines of code.
When testing a program to determine if a change has introduced errors in the unchanged code,
you are performing “regression testing.”
All black box test design methods apply to both progressive and regressive testing. Eventually, all
your “progressive” tests should become “regression” tests.
The Testing Group performs a lot of Regression Testing because most Landmark development
projects are adding enhancements (new functionality) to existing programs. Therefore, the existing
code (code that did not change) must be regression tested.
Re- test - Retesting means we testing only the certain part of an application again and
not considering how it will effect in the other part or in the whole application.
Regression Testing - Testing the application after a change in a module or part of the
application for testing that is the code change will affect rest of the application.
Smoke Testing
Smoke testing refers to physical tests made to closed systems of pipes to test for leaks. By
metaphorical extension, the term is also used for the first test made after assembly or repairs to a
system, to provide some assurance that the system under test will not catastrophically fail.
Smoke testing is non-exhaustive software testing, ascertaining that the most crucial functions of a
program work, but not bothering with finer details. The term comes to software testing from a
similarly basic type of hardware testing, in which the device passed the test if it didn't catch fire
the first time it was turned on. A daily build and smoke test is among industry best practices
advocated by the IEEE (Institute of Electrical and Electronics Engineers).
Smoke Testing
Software Testing done to ensure that whether the build can be accepted for through
software testing or not. Basically, it is done to check the stability of the build received
for software testing.
In software industry, smoke testing is a shallow and wide approach whereby all areas
of the application without getting into too deep, is tested.