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: The course “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: 1. Determine if this course appears to be consistent with your interests and background. 2. Describe, in general terms, the scope of the course. 3. Describe how your performance in the course will be evaluated. Key Points: 1. Students taking this course should have already completed of an upper division undergraduate or graduate-level software engineering survey course (such as CEN 3031/5035), or have comparable professional 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, objectoriented programming principles, & discrete math. 2. Course grades will be based solely on two 90 minute exams. 3. Exams assume a thorough understanding of the problem sets and their solutions. 2 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 machinebased 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: 1. Describe the role, importance, and basic forms of V&V. 2. Define “testing” from several different perspectives. 3. Explain why testing cannot, in general, guarantee an error-free program. 4. Describe a number of different testing approaches, levels, types, and principles. Key Points: 1. The V&V activities considered in this course involve three basic approaches: human-based testing, formal correctness proofs, and machine-based testing 2. Testers should approach their work with the intent of finding errors. 3. 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.). 4. 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. 5. Only exhaustive testing can guarantee program correctness. Unfortunately, this generally impossible to achieve. 6. The costs of software errors can increase exponentially with time between injection and discovery. Thus, early detection is critical. 3 7. 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: 1. Myers, The Art of Software Testing, John Wiley & Sons, 1979, pp. 4-16, "The Psychology and Economics of Program Testing." 2. 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 1. Regression testing involves executing tests that have already been executed without revealing an error. Explain the purpose of this. 2. What is the principal distinction between Alpha testing and Beta testing? 3. Briefly describe the difference between Black-Box and WhiteBox program testing. 4. 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.) a. an appropriate definition of the word "testing" b. the distinction between white-box and black-box testing c. the recognition that test cases must be written for invalid and unexpected, as well as valid and expected, input conditions d. the observation that the probability of the existence of more errors in a section of a program is proportional to the number of errors already found in that section e. the necessity that a definition of the expected output or result be a part of every test case 5. What is “benchmarking”?