James A. Whittaker, Florida Institute of Technology IEEE Software 17(1), pp. 70-79, Jan-Feb 2000 Avital Braner Basic Seminar of Software Engineering Hebrew University 2009
Software testing
The process of executing a software system to determine whether it matches its specification and executes in its intended environment. When the user reports a bug:
The user executed untested code The order in which statements were executed in actual use differed from that during testing The user applied a combination of untested input values The user’s operating environment was never tested
The Testing Process
To get a clearer view of some of software testing’s inherent difficulties, we can approach testing in four phases:
Modeling the Software’s Environment Modeling the Software’s Environment Selecting Test Scenarios Selecting Test Scenarios Running and Evaluating Test Scenarios Running and Evaluating Test Scenarios Measuring testing progress Measuring testing progress
Phase 1: Modeling the Software’s Environment
Testers must identify and simulate the interfaces that a software system uses and enumerate the inputs that can cross each interface. Four common interfaces are as follows:
1. 2. 3. 4. Human interfaces Software interfaces File system interfaces Communication interfaces
Phase 1: Modeling the Software’s Environment
Testers must understand the user interaction that falls outside the control of the software under test: Deletes a file that another user has open A device gets rebooted in the middle of a stream of communication Two software systems compete for duplicate services from an API
Phase 1: Modeling the Software’s Environment
Testers face two difficulties:
1. select values for any variable input 2. decide how to sequence inputs
The boundary value partitioning technique - selecting single values for variables at or around boundaries
Phase 1: Modeling the Software’s Environment
In