Cloud Testing

Only available on StudyMode
  • Download(s) : 106
  • Published : April 2, 2013
Open Document
Text Preview
What Is Software Testing? And Why Is It So Hard?
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 deciding how to sequence inputs, testers define a model. The most common model: a graph or state diagram. Other popular models: regular expressions and grammars, tools from language theory. Less-used models: stochastic processes and genetic algorithms.

Phase 1: Modeling the Software’s Environment
In deciding how to sequence inputs, testers define a model. Text Editor Example: The most common model: Filemenu.Open state diagram. a graph or filename* (ClickOpen | ClickCancel) Other popular models: regular expressions and grammars, tools from language theory. Less-used models: stochastic processes and genetic algorithms.

Phase 2: Selecting Test Scenarios
There are infinite number of test scenarios, but only a subset can be applied. Testers strive for coverage : covering code statements covering inputs

But if code and input coverage were sufficient, released products would have very few bugs execution paths input sequences

Phase 2: Selecting Test Scenarios
the best possible test data adequacy criteria
the set that will find the most bugs typical use scenarios

Text Editor Example:
Typical use: editing and formatting. However, to find bugs, a more likely place to look is in the harder-to-code features, like figure drawing and table editing.

Phase 2: Selecting Test Scenarios
Execution path test criteria:
Control Flow
Set of tests that cause each source statement to be executed at least once. Set of tests that cause each branching structure to be evaluated with each of its possible values.

Dataflow
Set of tests that cause each data structure to be initialized and then subsequently used.

Fault Seeding
Set of tests that expose each of the seeded faults.

Phase 2: Selecting Test Scenarios
Input domain test criteria
Simple coverage
Select a set of tests that contain each physical input. Select a set of tests that cause each interface control to be stimulated.

The discrimination criterion
Select a set of tests that have the same...
tracking img