You are on page 1of 3

Software Testing

Testing is the final filter in a sequence of activities that we call software quality assurance. The goal of the testing
activity, stated bluntly, is to find as many errors as possible before the user of the software finds them.

It is also true that software testing serves other purposes. We can use testing: to determine whether a program
component meets its requirements; as the basis for a construction or integration strategy for large systems; and
to explore the run-time performance of an application.

To accomplish its primary goal (finding errors) or any of its secondary purposes, software testing must be applied
in a systematic fashion. A testing strategy should be defined as part of the software project plan. Specific testing
tactics should be executed by practitioners who have testing responsibility. In this Essential Software
Engineering component, we'll develop the concepts necessary to understand software testing and then present
the strategy and tactics that are required to accomplish effective testing.

Software testing is one of the most challenging and important tasks in the software engineering process. And
yet, many software developers give it short shrift. They test in an ad hoc manner, looking past testing toward
release of the application or product. In many cases, project delivery pressures foster this attitude, but a lack of
knowledge of testing strategies and tactics is also a contributing factor. In this ESE component, we'll attempt to
increase your level of testing knowledge.

Module 6-1: Software Testing Concepts. Discusses the objectives of testing, the limitations that
software engineers face, and the different organizations that become involved in the testing process.

Module 6-2: Test Case Design Methods. Presents both white-box and black-box testing methods.
These methods result in the design of test cases that have a high probability of finding errors.

Module 6-3: Testing Strategies. Presents a systematic strategy for conducting testing as the software
is constructed, validated, and delivered.

Module 6-1 Testing Concepts Software Quality & Testing


Q&A: Why shouldn't you use testing as a safety net?

Q&A: What is the difference between errors and defects in SQA?

Q&A: Do defects found by the developer count in determining the value of D in computation of DRE?

Q&A: Where do we begin counting the value for E when we compute DRE?

Software Testing: Objective

Q&A: Why not test a program to show that it doesn't contain errors?

Who Tests the Software?

Q&A: Why does this conflict of interest exist?


Q&A: Given the psychological conflict of interest, who should test the software?

Q&A: Given your argument for the existence of an ITG, what is the role of the developer in software testing?

Exhaustive Testing

Q&A: Why is exhaustive testing doomed to fail?

Selective Testing

Testing Principles

Testing Concepts: Summary

Module 6-2 Test Case Design Methods Test Case Design


White Box Testing

Q&A: Why are you so concerned about covering all independent paths?

Path Testing

Q&A: Why is it important to know the value of cyclomatic complexity?

Cyclomatic Complexity

Q&A: How would you select the subset?

Q&A: Are the four test cases sufficient as a set of test cases for the algorithm?

Q&A: How does one determine the cyclomatic complexity of a case statement?

Q&A: It seem that basis path testing is time consuming. Should we apply it to every module?

Q&A: I'm a bit unclear on the way we should implement basis path testing. Any comments?

Loop Testing

Q&A: Why test the loop in this way?

Q&A: What information do testers need it conduct white box testing?

Q&A: When should we begin test case design work?

Q&A: Couldn't we simply test [the design] rather than the source code?

Q&A: Couldn't we use reviews more heavily and eliminate the need for testing methods?

Black Box Testing

Equivalence Partitioning
Q&A: Can we use data objects or classes as a guide for defining equivalence classes?

Boundary Value Analysis

Q&A: You haven't mentioned regression testing. Can you provide a few comments?

Q&A: When can we begin black box testing?

Test Case Design: Summary

Module 6-3 Software Testing Strategies Testing Strategies


Unit Testing

Q&A: What modules would make the best candidates for this activity?

Q&A: Why are worker modules easy to test?

Q&A: But would we also want to unit test controller modules?

Q&A: Why keep drivers and stubs?

Q&A: Do we unit test every module in a system?

Integration Testing Strategies

Q&A: Which method is most effective and why?

Q&A: What is the benefit of using the integration strategies you just described?

High Order Testing

Validation Testing

System Testing

Alpha & Beta Testing

Debugging: A Diagnostic Process

Q&A: Why is debugging so time-consuming?

Debugging Techniques

Brute Force Debugging

Backtracking

Induction & Deduction

Debugging: Final Thoughts