100 likes | 107 Views
Explore software testing, reliability, and fault avoidance techniques. Learn terminology, testing concepts, and fault detection strategies in software development.
E N D
CEN 4010 Class 23 – 11/15 Testing Overview Software Reliability Techniques Testing Concepts
Overview of Testing - Terminology • Software testing is the process of operating software under specified conditions, observing or recording the results and making an evaluation of some aspect of the software. • Software – all artifacts generated during the development process. (IEEE/ANSI std 610.12-1990) CEN 4010 Class 23 - 11/15
Overview of Testing - Terminology • Testing – An activity during which developers find differences between the system and its models by executing the system (or parts of it) with sample input data sets. • Testing involves unit testing, integration testing, system testing, and usability testing. • Reliability is a measure of success with which the observed behavior of a system conforms to the specification of its behavior. CEN 4010 Class 23 - 11/15
Terminology cont • Software reliability is the probability that a s/w system will not cause the failure of the system for specified time under specified conditions (IEEE Std 982-1989). • Failure – is the manifested inability of a system or component to perform a required function within specified limits, i.e., incorrect output or abnormal termination of a program. • Fault(defect or bug) – is the mechanical or algorithmic cause of a failure. • Error – a human action that produces a software fault. (Binder 2000) CEN 4010 Class 23 - 11/15
Terminology cont • Test case – is a set of inputs and expected results that exercises a component with the purpose of causing failures and detecting faults. • Test stub – a partial implementation of a component on which the tested component depends. • Test driver – is a partial implementation of a component that depends on the tested component. i.e., a test driver simulates the tested component’s environment. CEN 4010 Class 23 - 11/15
Software Reliability Techniques There are many techniques for increasing the reliability of a software system: • Fault avoidance • Fault detection • Fault tolerance CEN 4010 Class 23 - 11/15
Fault Avoidance Techniques • Fault avoidance techniques try to detect faults statically i.e., without relying on the execution of system models, in particular source code. • Fault Avoidance Techniques: • Development methodologies • Configuration management • Verification techniques CEN 4010 Class 23 - 11/15
Fault Avoidance Techniques cont • Development methodologies • unambiguous representation of requirements, • the use of data abstraction and data encapsulation, • minimizing the couple between subsystems and maximizing cohesion, • the early definition of subsystem interfaces, • capture of rationale for maintenance activities. Traceability of the use case model i.e., the use case driven approach to software development. CEN 4010 Class 23 - 11/15
Fault Avoidance Techniques cont • Configuration management • Avoids faults caused by undisciplined change in the system models. • Verification • Attempts to find faults before any execution of the system. • Not in a mature enough state that it can be applied to assure the quality of large complex systems. • Assumes requirements are correct - used to create pre- and post-conditions CEN 4010 Class 23 - 11/15
Fault Avoidance Techniques cont • Verifies an operation by showing that if the precondition is true before the operation and postcondition is true after the operation then the operation is correct. • Sometimes it is hard to correctly state the pre- and post-conditions. CEN 4010 Class 23 - 11/15