Chapter 22: Software Testing Strategies
What is antibugging?
- a characteristic of desirable design where error conditions are anticipated and the appropriate error-handling paths are established
What is thread-based testing?
- a form of integration testing that integrate the set of classes required to respond to one input or event for the system
What is system testing?
- testing focused on the software in tandem with other elements - verifies that all elements work together properly and overall system function is achieved
What is regression testing?
- testing re-executes a subset of previous tests to ensure that the addition of new modules have not propagated unintended consequences or behaviors
What is smoke testing?
- testing strategy that frequently assesses a project - intended for time-critical projects
What is sensitivity testing?
- testing that attempts to uncover data combinations of valid inout classes that may cause instability or improper processing
What is security testing?
- testing that attempts to verify that protection mechanisms built into a system will protect it from improper penetration
What is stress testing?
- testing that executes a system in a way that demands resources in abnormal quantities, frequencies, or volume
What is deployment (configuration) testing?
- testing that exercises the software in various environments in which it is to operate in addition to installation procedures
What is performance testing?
- testing that tests the run-time performance of software within the context of an integrated system to determine if they conform to performance requirements
What are the challenges associated with OO unit testing?
- testing the method at the lowest level is not sufficient, as that method may be inherited from a distant superclass - the methods must be tested at all points along the inheritance chain
What are the types of classes of test cases in a regression test suite?
- tests that exercises all software functions - tests that focus on software likely to be affected by change - tests that focus on the changed components
What is fault tolerance?
- the ability for a system to resume processing in the event that a particular processing action fails - the ability for a system to resume processing within a specific period of time
What is bottom-up integration testing?
- the construction/testing of software from the lowest-level (atomic) components in the program structure
What is breadth-first integration?
- the integration of components directly below each level
What is depth-first integration?
- the integration of components on a major control path of the program structure
What is tested first in unit testing?
- the modules interface (to ensure data flows in and out of the module properly)
What is debugging?
- the process of removing errors that cause a software error or defect
What is verification?
- the set of tasks that ensure that software correctly implements a specific function
What is the role of the designer in system security?
- to make penetration cost more than the value of the information that will be obtained
What does validation testing focus on?
- user-visible actions - user-recognizable output
What is the broader area that software testing falls under?
- verification and validation
What is use-based testing?
- a form of integration testing where classes that use server classes are tested (independent classes using server classes) - later, dependent classes (ones that use independent classes) are tested
What is clustering?
- a form of testing in which a cluster of collaborating classes (from CRC model) is exercised by designing test cases that attempt to uncover errors in those collaborations
What is a deficiency list?
- a list of specifications from which the system has deviated, found during validation testing
What is a driver?
- a main program that accepts test-case data and passes that data to the module to be tested
What is a configuration review?
- a part of the validation process that attempts to ensure that all elements of the software configuration have been properly developed, are cataloged, and have the necessary detail to bolster the support activities
What is testing?
- a set of activities that can be planned in advance and conducted systematically
What is validation?
- a set of tasks that ensure that the software that is built is traceable to customer requirements
What is recovery testing?
- a system test that forces the software to fail in a variety of ways and verifies that recovery is proper performed
What is an independent test group (ITG)?
- a team whose responsibility is to uncover errors - works closely with software developer - an active participant in analysis/design - reports to a SQA organization which helps reduce/eliminate conflict of interest
What is an alpha test?
- a test performed by an end-user in a controlled environment at the developer site, typically with the developer present
What is a beta test?
- a test performed by an end-user in an end-user, uncontrolled site/environment without the developer present
What is customer acceptance testing?
- a variation on beta-testing when custom software is delivered to a customer under contract
What is in a build?
- all data files, libraries, reusable modules, and engineered components that are required to implement 1+ product functions
What is top-down integration testing?
- an incremental approach starting from the main program (main control module) and traversed downward in a DFS or BFS approach
Where are errors likely to occur?
- at the boundaries (min/max) of things such as loops and data structures
When does validation testing occur?
- at the culmination of integration testing
What is the location of decisions in well-factored programs?
- at upper levels of the program hierarchy
What are three debugging strategies?
- brute force - backtracking - cause elimination (by induction/deduction)
What is the equivalent of traditional unit testing in OO unit testing?
- class testing
What are stubs?
- code that replaces modules that are invoked by the component to be tested
What are the risks that occur at interfaces?
- data loss - unintended consequences - adverse effect on another module - incorrect result from various subfunctions
What is cause elimination?
- data related to the error occurrence are organized to isolate potential causes
What is the scope change of software testing over time?
- early testing: single components or small groups of components - later testing: system-wide testing
What direction does testing flow from in a spiral?
- from the innermost part (unit testing) to outermost (system testing)
What are clusters (builds)?
- groupings of low-level components that perform a specific software subfunction
What testing is the software developer responsible for?
- individual units/components - integration testing
What are the benefits of smoke testing?
- integration risk is minimized - the quality of the end product is improved - error diagnosis and correction are simplified - progress is easier to assess
What is brute force debugging?
- look at all the information outputted from the system and hope that you find a clue
What top-down integration verifies early on in the testing process?
- major control or decision points
What is the smallest testable unit in OO unit testing?
- methods
What is interfacing?
- putting individual modules together
What describes all user-visible attributes of the software?
- software requirements specification
What is backtracking?
- source code is traced backwards until the cause is found
What must be incorporated into any testing strategy?
- test planning - test-case design - test execution - resultant data collection - evaluation
What is validation testing?
- testing focused on ensuring that the software built matches the initial requirements
What is unit testing?
- testing focused on individual units of software implemented in the source code - testing specific paths in a component's control structure to ensure maximum coverage and error detection - internal processing logic and data structures are tested
What is integration testing?
- testing focused on the design and construction of the software architecture - a systematic technique for constructing the software architecture while concurrently conducting tests to uncover interfacing errors