Saturday, July 16, 2011

The Art of Software Testing by Glenford Myers : Chapter 8

The author discusses about testing tools and other techniques in this chapter. The test case design has not been automated but significant advancements have been made in automating other aspects of the testing process. Some of the tools are:
  • Module driver tools: It provides a language to express test cases to test a module. The author mentions three advantages of such tool:
    1. The language reduces the effort required and standardizes the form of test cases.
    2. Rerun of test cases is easy when a correction is made to the module
    3. The automatic verification of results forces the programmer to state explicitly the expected output.
  • Static flow analysis tools: They analyze control flow and data flow of the program, they can detect following errors:
    • Variable with an undefined value
    • Variables with assigned values that are never used
    • Unreachable code
    • Inconsistent interfaces among modules
      • ACES, FACES, AUDIT, RXVP and DAVE are examples of this kind of tools.
  • Test coverage monitors: Coverage monitors are tools that monitor the subject program during execution to provide statistics to determine whether the statement-coverage and decision-coverage criteria have been met.
  • Mathematical proof of program correctness: The proof of program correctness tries to demonstrate that the program is error free. The author provides references to method of inductive assertions, predicate transformers, subgoal induction, computation induction, structural induction and intermittent assertions.
  • Program correctness provers: The goal is to create a program that, takes as input another program and its input and output assertions, attempt to prove the subject program correct.
  • Symbolic Execution: It is a hybrid between program testing and correctness provers. The subject program is executed symbolically. 
  • Test Data Generators: The author talks about several tools that generate test data to meet a specific criterion by analyzing a program's logic flow.
  • Environmental Simulators: These are useful when testing in actual environment cannot be done, test conditions are hard to create in real environment etc...
  • Sneak Circuit Analysis: 
  • Virtual Machines: They provide multiple programs impression that each is executing in separate standalone machine.
  • Testing Mathematical Software
  • Interactive Debugging Tools: The author discuss about EXDAMS, ISMS and CAPS.
  • Compiler Debugging Aids: Compilers can contain debugging features added to the language such as
    • Ability to designate any arbitrary statements as debugging statements and to activate and deactivate at compilation or run time.
  • Program State Monitors: It monitors a program during execution, watching for the arrival of a certain predefined conditions and/or collecting data that would be useful during debugging such as first, last, minimum and maximum of each assignment statement, minimum and maximum values of each do-loop control variable etc...
The author then discusses about software error studies, software error data-collection and predictive models.  The author then provides some statistics on testing experiments and the results. The author then provides some findings on debugging experiments.

The author discusses how computer architecture or hardware design can help debugging by providing features not present in the current computer design.

No comments:

Post a Comment