SOFTWARE TESTING STANDARDS A Tutorial Software testing is the process of testing the functionality and correctness of software by running it. Software testing is usually performed for one of two reasons: (1) defect detection, and (2) reliability estimation [1]. The problem of applying software testing to defect detection is that software can only suggest the presence of flaws, not their absence (unless the testing is exhaustive). The problem of applying software testing to reliability estimation is that the input distribution used for selecting test cases may be flawed. Software systems have evolved into the most complex artifacts ever created by humans. This has exacerbated the problems of testing software systems. So, people at standard organizations have come up with myriad number of testing standards that help testers maintaining quality of the system. ISO definition of a standard says: “Document, established by consensus and approved by a recognized body, that provides, for common and repeated use, rules, guidelines or characteristics for activities or their results, aimed at the achievement of the optimum degree of order in a given context” [2]. 1 Why do we need testing standards?
software sector
Testing standard is beneficial to both the client and the developer of software systems. Unfortunately, there is no single software-testing standard that testers can adhere to. As will be shown, there are many standards that touch upon software testing, but many of these standards overlap and may contain to be contradictory requirements. Perhaps worse, there are large gaps in the coverage of software testing by standards, such as integration testing [3], where no useful standard exists at all. The rationale of testing standards is to define what constitutes an adequate proof that the units tested are an accurate representation of their specification. The motivation of testing standards is to ensure that the purpose of testing is met in a systematic way. Some of the prominent testing standards and their features are discussed in the following sections of this document. 2. Stages of the development of International Standards[4]: An International Standard is the result of an agreement between the member bodies of ISO. International Standards are developed by ISO technical committees (TC) and subcommittees (SC) by a six-step process: · Stage 1: Proposal stage: Propose the need of the standard. · Stage 2: Preparatory stage: A group is set up. · Stage 3: Committee stage: A consensus is reached and a draft international standard is submitted. · Stage 4: Enquiry stage: Voting and comment is sought. · Stage 5: Approval stage: a final yes/no is made. · Stage 6: Publication stage: A final standard is published. If a document with a certain degree of maturity is available at the start of a standardization project, for example a standard developed by another organization, it is possible to omit certain stages. There are many testing standards. IEC and ISO are international standards. 3. OVERVIEW OF A FEW STANDARDS: 3.1 The intent of the
This standard specifies the form and content of the following set of documents. {mosgoogle} a) A Test Plan describes the scope, approach, resources, and schedule of testing activities. It specifies the items to be tested, the features to be tested, the features not to be tested, the testing tasks to be performed, the personnel responsible for each task, the staffing and training needed and the risks and contingencies. b) A Test Design Specification identifies the features to be covered by the design and its associated tests. It also identifies the test cases and test procedures and describes the feature pass/fail criteria. c) A Test Case Specification documents the actual values used for input along with the anticipated outputs. A test case also identifies any constraints on the test procedures resulting from use of that specific test case. Test cases are separated from test designs to allow for use in more than one design and to allow for reuse in other situations. d) A Test Procedure Specification describes steps required to operate the system and exercise test cases in order to implement the associated test design. Test procedures are separated from test-design specifications as they are intended to be followed step by step and should not have extraneous detail. e) A Test Log is used to record what occurred during test execution. f) A Test Incident Report describes any event that occurs during testing which requires further investigation. The events such as defects, requests for enhancements are included in this report. g) A Test Summary report summarizes the testing activities associated with one or more test design specifications. 3.2. BS 7925-2 A Component Testing Standard [6]: BS 7925-2 is defines a generic test process, test case design techniques and coverage measures for use in component testing. Objective: The main objective of this standard is to define how well a software component was tested by dynamic testing. The intention was to start with component testing and and then to produce further standards to gradually build a framework of software testing standards. 3.2.1.Contents of BS 7925-2: The standard consists of two parts: (i) The Normative Part This must be satisfied to comply with the standard. The Normative Part consists of the following phases: 1. Scope This defines the objectives specifying the process for dynamic component testing and techniques for design and measurement of the testing. The functional techniques apply to all the processes written in any language and that white box testing is restricted to testing of components in procedural languages. 2.Normative References and Definitions BS 7925 is intended to be the first of a number of software testing standards and hence a single standard of software testing terminology was included to support the framework of all the standards under it. 3.Process: At the project level there must be: a) A project component test plan that requires the specification of dependencies between component tests and their sequence. b) A Project Component Test strategy which requires the specification of the following: · The test case design techniques (exhaustive). · The criterion for test completion (exhaustive) · The degree of independence of testers · The approach to component testing like isolation, top down, bottom up etc. · The test environment like including both hardware and software · The test process for the software component testing The sequence of activities defined by the generic test process must be followed for each test case.Each component tested must have a specification from which it is possible to derive the expected outcome for a given set of inputs. The specific requirements for each of the individual activities in the generic test process are described as follows. The generic model [7] for test process is as specified by the standard is · Component Test Planning o Specify how the component test strategy and project test plan apply to this component and test plan, listing any exceptions. · Component Test Specification o Specify test inputs for each test, selected using a test design technique o Specify the expected outcomes for each test in advance o Document the point of each test o All test cases shall be repeatable · Component Test Execution o Each test case in the test specification shall be run. · Component Test Recording o Check and record the results of each test o Analyse the reasons for failure to subsequently allow the removal of the fault. o Record the test coverage achieved o Record the test configuration. · Checking the Component Test Completion: o Check whether the test completion criterion is satisfied. 4.Relation with other standards: It would align with ISO 9000 series of quality assurance standards, which require software developers to use software testing standards. (ii) The Informative Annexes part This provides informational support to the normative part by providing examples and advice. 3.3 Flight Software Unit Test Standard:[8] NASA requirements for unit tests of flight software requirements. a) Clear demonstration that the unit is implemented correctly. b) Execution of every statement in the unit including all branches in the conditional s statements. c) Boundary Value Testing: Each conditional branch in the unit should be executed with data at each side of the boundary of the condition and with data away from the boundary on each side. d) All operations that might cause erroneous execution should be tested explicitly. e) All parameters and inputs to functions should be tested with nominal values and the extreme values. f) Unit test shall not require any changes to the module source code. If a preprocessor is used, exactly the same preprocessor values should be set for the final release and unit test builds. g) Unit tests should be repeatable and they should produce identical results on each run. h) Unit tests should run without user interaction to the maximum possible extent. i)If input data files are used by the unit test, they shall be treated as source code for the purpose of configuration management. Such input data files should be in human readable form; if this is not possible, a separate tool shall be provided to generate the actual test input files from some human readable form. j)Distinct elements of input vectors and matrices should have distinct values in order to catch indexing errors. k) When the order of inputs to an operation matters, the inputs should have distinct values to catch order errors. l) Unit tests should be compiled with the target compiler, using the same configuration switches as the final target build, and run on the target hardware. There should be documentation of which targets the unit has been tested on. 4. Detailed description of |
Monday, February 4, 2008
SOFTWARE TESTING STANDARDS
Posted by Mustafeez at 9:43 PM
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment