Coupon Accepted Successfully!


Software Testing

After the software system is coded into a deliverable product, testing strategies are used to validate system requirements.  Testing strategies are designed to detect errors in the system.  Debugging is the process of finding the source of the errors for correction. Exhaustive testing is impractical. Therefore, no matter how much testing is done, it is never known with certainty if all bugs have been detected.  Since testing is a process of detecting the presence of errors, the absence of all errors cannot be guaranteed by the testing process.  A high percentage of project resources are expended on the testing phase. Testing usually proceeds in two phases, first at the component level sometimes called unit testing.  Unit testing is followed by integration testing in which increasingly larger groups of components are tested culminating in the total system.  Unit testing is usually done by the developer and integration testing by an independent test group.  Testing strategies for conventionally designed software differ somewhat from those for object-oriented systems.


Conventional software

Conventional software unit testing focuses on execution paths through component program logic with the goal of maximizing error detection by path coverage; whereas integration testing usually involves input and output values.


Object-oriented software:  unit testing is done with classes, whose definition involves not only internal program logic but also attributes and operations as well as communication and collaboration.  Operations must be tested in the context of a class. Two approaches to integration testing of object-oriented systems are common, thread-based and use-based testing.  The thread-based approach tests the set of classes that respond to a given system input or event.  Use-based testing begins with by testing classes that are relatively independent of all others and continues in stages with each stage defined by the addition of a layer of dependent classes until the entire system is encompassed.


After unit and integration testing, the entire system is tested in accordance with customer requirements.  This final testing phase is usually called validation testing and includes alpha and beta tests.  Alpha tests are performed at the developer site and beta tests occur later at end user sites.  Final release of the software is scheduled after the beta tests are complete.


Product Metrics for Software


The use of objective measures of software development products as an empirical measure of quality is somewhat controversial in the software engineering community.  Some say that our lack of basic understanding of software justifies delaying the development and use of such metrics.  However, many metrics are available to help assess and guide analysis, design, source code development and testing.  Some examples are given below:


Analysis:  overall system size metric defined as a function of information in the analysis model.

Design:  component level metrics that measure complexity

Source code:  length metric defined in term of lines of code (LOC).

Testing:  coverage of the program as a directed graph


Test Your Skills Now!
Take a Quiz now
Reviewer Name