1
Lectures 1 and 2
Course Overview and Introduction to V&V
Welcome to CEN 4072/6070, Software Testing and Verification! The focus this week is to convey some basic course information (“Course Overview”) and to introduce some basic V&V (Verification and Validation) techniques, concepts, and terminology. You will also be introduced to some important principles concerning the psychology and economics of program testing via a classic reading from Glenford Myers, The Art of Software Testing.A second reading from Edward Kit, Software Testing in the Real World: Improving the Process, will introduce some important ideas concerning testing process maturity.
Course Overview
Context:
Thecourse “syllabus” is presented in the form of a lecture. Course objectives, prerequisites, required readings, topics, grading, and exercises are covered.
Purpose:
To familiarize students with what to expect from this course, and what will be expected of them.
Competency Objectives:
At the end of this lesson, you will be able to:
- Determine if this course appears to be consistent with your interests and background.
- Describe, in general terms, the scope of the course.
- Describe how your performance in the course will be evaluated.
Key Points:
- Students taking this course should have already completed of an upper division undergraduate or graduate-levelsoftware engineering survey course (such as CEN 3031/5035), or have comparableprofessional experience. (Off-campus EDGE students currently employed as software professionals automatically meet this requirement.). Students should also have programming experience using a high-level language (C, C++, Java, etc.), and have basic knowledge of algorithms, data structures, object-oriented programming principles, & discrete math.
- Course grades will be based solely on two exams and five quizzes.
- Quizzes focus, in part, on the Problem Sets and their solutions.
Introduction to V&V
Context:
A basic introduction to “Verification & Validation” (V&V) is presented: the types of activities involved; their role in software engineering. Evolving attitudes about testing; testing approaches, levels, costs, and limitations; process improvement.
Purpose:
This lecture sets the stage for the major topics of the course: human-based testing (e.g., reviews and inspections), formal correctness proofs, and machine-based testing. Some important principles and terminology related to testing in general are also covered.
Competency Objectives:
At the end of this lesson, you will be able to:
- Describe the role, importance, and basic forms of V&V.
- Define “testing” from several different perspectives.
- Explain why testing cannot, in general, guarantee an error-free program.
- Describe a number of different testing approaches, levels, types, and principles.
Key Points:
- The V&V activities considered in this course involve three basic approaches: human-based testing, formal correctness proofs, and machine-based testing
- Testers should approach their work with the intent of finding errors.
- Black-box testing is based solely on the analysis of requirements; white-box testing is based on the analysis of an element’s internal logic (design, code, etc.).
- Testing usually begins with functional (black-box) tests, supplemented by structural (white-box) tests, working from the unit level toward the system level with one or more integration steps.
- Only exhaustive testing can guarantee program correctness. Unfortunately, this generally impossible to achieve.
- The costs of software errors can increase exponentially with time between injection and discovery. Thus, early detection is critical.
- Software engineers should be knowledgeable of all V&V techniques, and should be able to employ and assess the effectiveness of those techniques appropriate to their responsibilities.
Reading Assignment:
- Myers, The Art of Software Testing, John Wiley & Sons, 1979, pp. 4-16, "The Psychology and Economics of Program Testing."
- Kit, Software Testing in the Real World: Improving the Process, Addison-Wesley, 1995, pp. 3-13, "Part I, Software testing process maturity."
Self-Check Quiz Questions
- Regression testing involves executing tests that have already been executed without revealing an error. Explain the purpose of this.
- What is the principal distinction between Alpha testing and Beta testing?
- Briefly describe the difference between Black-Box and White-Box program testing.
- Glenford Myers ("The Psychology and Economics of Program Testing") argues that the "...the most important single thing that one can learn about testing" concerns: (Circle one only.)
- an appropriate definition of the word "testing"
- the distinction between white-box and black-box testing
- the recognition that test cases must be written for invalidand unexpected, as well as valid and expected, input conditions
- the observation that the probability of the existence of more errors in a section of a program is proportional to thenumber of errors already found in that section
- the necessity that a definition of the expected output orresult be a part of every test case
5. What is “benchmarking”?