28-06-2013, 01:06 PM
Introduction to Software Testing
Software.pdf (Size: 484.1 KB / Downloads: 81)
Introduction
This document contains some basic concepts and definitions about software testing. It has been
written for studying a part of the Software Engineering Project course at my University. It is
composed by a summary of the intersection of more than 10 different sources, all of which are
cited. If you feel that some contents of this publication belong to your intellectual property and it is
not cited, please contact the author who is willing to correct any mistake.
The first part of the paper focuses on the definition of the most important key aspects of software
testing. Then some information about input partitioning are given. What follows is a research about
code coverage and two useful and famous tools, Control-flow coverage and Data-flow analysis. A
complete example on using those tools is then given. The second half of the document also contains
the definition of the most important software testing practices.
Software Testing
Software Testing is an empirical investigation conducted to provide stakeholders with information
about the quality of the product or service under test, with respect to the context in which it is
intended to operate. Software Testing also provides an objective, independent view of the software
to allow the business to appreciate and understand the risks at implementation of the software. Test
techniques include, but are not limited to, the process of executing a program or application with the
intent of finding software bugs. It can also be stated as the process of validating and verifying that a
software program/application/product meets the business and technical requirements that guided its
design and development, so that it works as expected and can be implemented with the same
characteristics.
White-Box Testing
White box testing (a.k.a. clear box testing, glass box testing, transparent box testing, translucent box
testing or structural testing) uses an internal perspective of the system to design test cases based on
internal structure. It requires programming skills to identify all paths through the software. The
tester chooses test case inputs to exercise paths through the code and determines the appropriate
outputs.3
• You have complete access on the source code of the program
• The flow of computation can be observed
• Problem of code coverage of the tests
Equivalence Partitioning
Equivalence partitioning is a software testing technique that divides the input data of a software unit
into partition of data from which test cases can be derived. In principle, test cases are designed to
cover each partition at least once. This technique tries to define test case that uncovers classes of
errors, thereby reducing the total number of test cases that must be developed.4