Beruflich Dokumente
Kultur Dokumente
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.
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?
Q&A: Why not test a program to show that it doesn't contain errors?
Q&A: Given your argument for the existence of an ITG, what is the role of the developer in software testing?
Exhaustive Testing
Selective Testing
Testing Principles
Q&A: Why are you so concerned about covering all independent paths?
Path Testing
Cyclomatic Complexity
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: 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?
Equivalence Partitioning
Q&A: Can we use data objects or classes as a guide for defining equivalence classes?
Q&A: You haven't mentioned regression testing. Can you provide a few comments?
Q&A: What modules would make the best candidates for this activity?
Q&A: What is the benefit of using the integration strategies you just described?
Validation Testing
System Testing
Debugging Techniques
Backtracking