Quality Assurance – Part II: Software Testing in a DSD Lian Yu The School of Software and Microelectronics Peking University No.24 Jinyuan RD, Beijing.

Slides:



Advertisements
Similar presentations
Software Testing Techniques
Advertisements

Software Testing Technique. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves.
SOFTWARE TESTING. Software Testing Principles Types of software tests Test planning Test Development Test Execution and Reporting Test tools and Methods.
Verification and Validation
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Software Engineering Introduction and Overview RA402 jcmtCSE1320 Intermediate Programming Essence and Accident Inherent Difficulties –Complexity –Conformity.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
November 2005J. B. Wordsworth: J5DAMQVT1 Design and Method Quality, Verification, and Testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Introduction to Software Testing
Types and Techniques of Software Testing
Software Testing & Strategies
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Chapter 13 & 14 Software Testing Strategies and Techniques
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
System/Software Testing
Verification and Validation Yonsei University 2 nd Semester, 2014 Sanghyun Park.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
CMSC 345 Fall 2000 Unit Testing. The testing process.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing The bearing of a child takes nine months, no matter how many women are assigned. Many.
1 Testing Course notes for CEN Outline  Introduction:  terminology and philosophy  Factors that influence testing  Testing techniques.
Lecture 11 Testing and Debugging SFDV Principles of Information Systems.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Software Testing Testing types Testing strategy Testing principles.
Software Testing The process of operating a system or component under specified conditions, observing and recording the results, and making an evaluation.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
Black-box Testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Testing Techniques Software Testing Module ( ) Dr. Samer Hanna.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Testing. System/Software Testing Error detection and removal determine level of reliability well-planned procedure - Test Cases done by independent.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Software Quality Assurance and Testing Fazal Rehman Shamil.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
SOFTWARE TESTING SOFTWARE TESTING Presented By, C.Jackulin Sugirtha-10mx15 R.Jeyaramar-10mx17K.Kanagalakshmi-10mx20J.A.Linda-10mx25P.B.Vahedha-10mx53.
SOFTWARE TESTING. SOFTWARE Software is not the collection of programs but also all associated documentation and configuration data which is need to make.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
Software Testing. SE, Testing, Hans van Vliet, © Nasty question  Suppose you are being asked to lead the team to test the software that controls.
Defect testing Testing programs to establish the presence of system defects.
1 Software Testing. 2 What is Software Testing ? Testing is a verification and validation activity that is performed by executing program code.
Testing Integral part of the software development process.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVIII. Software Testing.
Software Testing.
Software Testing.
Rekayasa Perangkat Lunak Part-13
Software Testing Techniques
Software Engineering (CSI 321)
Software Testing An Introduction.
Chapter 13 & 14 Software Testing Strategies and Techniques
UNIT-IV ECS-602 Software engineering PART-I
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Introduction to Software Testing
Verification and Validation Unit Testing
Software testing.
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Testing “If you can’t test it, you can’t design it”
Software Testing.
Chapter 7 Software Testing.
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Presented by KARRI GOVINDA RAO ,
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

Quality Assurance – Part II: Software Testing in a DSD Lian Yu The School of Software and Microelectronics Peking University No.24 Jinyuan RD, Beijing , P. R. China

2 Topics Objectives of software testing Principles and testability Test case design Type of testing Testing strategy Validation testing and system testing Software Testing in a DSD (open questions)

Testing Objectives [Myers79]: Software Testing is the process of executing a program or system with the intent of finding errors. – A good test case is one that has a high probability of finding an as-yet undiscovered error – A successful test is one that uncovers an as-yet undiscovered error [Hetzel88]: It involves any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.

4 What is Testing and What is Not? Testing is a process for finding semantic or logical errors Testing is not aimed to find syntactic (symbolic) errors Testing can reveal the presence of errors, NOT their absence. Can you tell the differences between testing, debugging and compilation debugging?

5 Why Software Testing? No single verification technique is sufficient to find all categories of errors, especially in large, complex systems. For example, review and inspection are not adequate because they do not execute the program. Can you test a car without driving it? Why we need testing: – Instrumentation systems & appliances coded in assembly/machine language ===> costly to repair – Process control systems failure is politically unacceptable & economically undesirable. – Military systems involve risk of human life. $ per statement, higher for “complete treatment.” – Safety - Critical Health Care Systems.

6 Software Testing in Practice Testing amounts to 40% -- 80% of total development costs – 40% for information systems – 80% for real time embedded systems On one occasion the average cost of a field detected bug was US$15,000 (1991). Testing receives the least attention and often not enough time and resources. The testers are often forced to abandon testing efforts because changes have been made. Testing is (usually) at the end of the development cycle and is often left with little time because other activities have been late

7 Software Testing in Practice Most companies’ new hires are testers. Most testing work is manually testing the software system; help from tools is still limited. In many cases, testing is not performed by using systematic testing methods or techniques. Because no systematic methods or techniques are used, testing is not effective. Sometimes there are “conflicts of interest” between testers and developers.

8 Benefits of Software Testing Benefits : – Conscious of need for error-free software – Ensure the more flagrant kinds of errors will be detected (this is not really true; maybe the more obvious kinds of errors) – As a backup to design reviews, structured walk through, etc. (not a backup – studies show that testing and reviews in practice detect different kinds of errors) – A framework to apply new SQA techniques Much more effective than programmers’ casual testing : – Most Programmers: 20-50% c1 coverage – >= 85% c1 coverage would be adequate to discover 90% of the errors (U.S. Air Force requirement on JAVS, )

9 C0 and C1 Coverage C0 coverage: # of statement tested # of statement in Program C1 coverage: # segment tested # total segments in program (Define segment) Segment: e.g., statements, conditions, methods, paths, def-use, states, transitions,

10 The Psychology of Testing Bad feelings about testing: – a dirty business – dumb work/menial work – headache undertaking – under-funded & too much work – too little time & under pressure – no good tools – not rigorous, systematic – no generally accepted principles – requires a critic’s mentality – destructive work

11 Verfication, Validation, Testing & Debugging Testing: attempts to uncover program errors. Debugging: follows successful testing and attempts to remove program errors. Verification: “are we building the product right?” Validation: “are we building the right product?” Testing is a pragmatic approach to Software Quality Assurance (SQA). Program correctness proof is a theoretical approach (to SQA).

12 Verfication, Validation, Testing & Debugging Testing is aimed at proving that errors exist; it cannot assert that a program is error free. Program correctness proofs attempt to prove that a program is free from errors. Once proved, the program is correct forever. (assuming the environment doesn’t change) A combination of the above two is symbolic execution. This technique executes programs using symbolic values and the rules developed by program correctness proof. What about model checking?

13 Testing Principles All tests should be traceable to customer’s requirements Tests should be planned long before testing begins 80% of the bugs are likely to be traceable to 20% of program components Testing should begin “in the small” and progress toward to testing “in the large” Exhaustive testing is impossible To be more effective, testing should be conducted by an independent third party

14 Test Case Design White-box testing – knowing the internal workings of a product focus on the program’s structure and internal logic test cases are designed according to the structure and internal logic – well-known techniques Statement testing: test cases are designed to execute every statement Basic path testing: test cases are designed to exercise the control flow paths of a program Condition testing: test cases are designed to exercise each outcome of a condition Data flow testing: test cases are designed to test data elements’ define and use relationships

15 Test Case Design Black-box testing – Knowing the functional specification focus on functional requirements test cases are designed to test the functionality of the program

16 Test Case Design – Well-known black-box testing techniques boundary value analysis: test cases are derived according to the boundary values of variables – data invariance provides a useful tool here causal-effect analysis: test cases are derived according to the stimuli and responses and input output relationships equivalence partitioning: partition the input and output domains into disjoint areas and test cases are designed according to the partitions What about operational profile testing? Regression testing?

17 Software Testing Strategies integrate software test case design methods into a well-planned sequence of steps a road map for testing – test planning, test case design, – test execution, – result evaluation – how much effort and time – resources required testing strategies must be customizable testing strategies must support planning and management

18 Test Categories Unit Testing: testing at the individual module level, functions, modules, classes, etc. Integration Testing: testing the interfaces among the modules or components. Validation Testing: test according to customer’s functional requirements. System Testing – Recovery Testing – Security Testing – Stress Testing – Performance Testing – Regression testing

19 Software Testing Budget Size of testing budget: expressed in terms of x% of total SW development costs. in terms of system size: $x per statement. compute in terms of productivity of the test team in terms of time: planned & spent.

Software Testing in DSD What are the new issues related to quality in DSD? What kinds of quality assurance techniques can still be used in DSD? DSD provides both opportunity and difficulty in testing – Testing can be performed by a remote group that closely mimics the real users – Test cases must be specified precisely so that there are no ambiguities caused by natural language misunderstanding – With widely separated locations, testing can go on at one location after another location has completed coding – 24 hour development What existing testing techniques can be used? And what are the new techniques that should be introduced? – Process – Methodologies and Techniques – Tools

References [Beizer90] Boris Beizer, Software Testing Techniques. Second edition [Beizer95] Beizer, Boris, Black-box Testing: techniques for functional testing of software and systems. Publication info: New York : Wiley, c1995. ISBN: Physical description: xxv, 294 p.: ill. ; 23 cm. [Hetzel88] Hetzel, William C., The Complete Guide to Software Testing, 2nd ed. Publication info: Wellesley, Mass. : QED Information Sciences, ISBN: Physical description: ix, 280 p. : ill ; 24 cm.