5.7 Test Plans
A test plan prescribed various kinds of activities that will be performed to demonstrate that the software product meets its requirements.
There are four types of tests that a software product must satisfy: functional tests, performance tests, stress tests, and structural tests. Functional tests and performance tests are based on the requirements specifications; they are designed to demonstrate that the system satisfies its requirements. Therefore, the test plan can be only as good as the requirements, which in turn must be phrased in quantified, testable terms.
Functional test cases specify typical operating conditions, typical input values, and typical expected results.
Performance tests should be designed to verify response time (under various loads), execution time, throughput, primary and secondary memory utilization, and traffic rates on data channels and communication links. Performance tests will often indicate processing bottlenecks to be addressed during system testing and tuning.
It is particularly important that the expected results of each test be specified prior to system implementation and actual testing.
Stress tests are designed to overload a system in various ways. The purposes of stress testing are to determine the limitations of the system and, when the system fails, to determine the manner in which the failure is manifest.
Structural tests are concerned with examining the internal processing logic of a software system. The goal of structural testing is to traverse a specified number of paths through each routine in the system to establish thoroughness of testing.
5.8 Milestones, walkthroughs, and inspections
The two major milestones during software design are the Preliminary Design Review (PDR) and the Critical Design Review (CDR).
The major goal of PDR is to demonstrate that the externally observable characteristics and architectural structure of the product will satisfy the customer’s requirements. Functional characteristics, performance attributes, external interfaces, user dialogues, report formats, exception conditions and exception handling, product subsets, and future enhancements to the product should all be reviewed during the PDR.
Introduction
The primary goal of implementation is to write source code and internal documentation so that conformance of the code to its specifications can be easily verified, and so that debugging, testing, and modification are eased.
6.1 Structured coding techniques
The goal of structured coding is to linearize control flow through a computer program so that the execution sequence follows the sequence in which the code is written.
6.1.1 Single entry, single exit constructs
A modified version of the Bohm-Jacopini theorem can be stated as follows: Any single entry, single exit program segment that has all statements on some path from the entry to the exit can be specified using only sequencing, selection, and iteration.
A sufficient set of single entry; single exit constructs for specifying control flow in algorithms is:
6.4.3 Internal documentation
Table 6.3: Typical format of subprogram and compilation unit prologues
Name of author:
Date of compilation:
Function(s) performed:
Algorithms used:
Author/date/purpose of modifications:
Parameters and modes:
Input assertion:
Output assertion:
Global variables:
Side effects:
Major data structures:
Calling routines:
Called routines:
Timing constraints:
Exception handling:
Assumptions:
Table 6.4 Commenting conventions
8.1 Quality Assurance
Quality assurance is “a planned and systematic pattern of all actions necessary to provide adequate confidence that the item or product conforms to established technical requirements.” (IEE83)
Topics in a Software Quality Assurance Plan include (BUC79):
9.1 Enhancing maintainability during development
Table 9.1 Development activities that enhance software maintainability
9.2 Managerial aspects of software maintenance
Change request processing can be described by the following algorithm:
—-
Project Legacy