Testing: Who 3, What 4, Why 1, When 2, How 5 Lian Yu, Peking U. Michal Young, U. Oregon.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
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. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
SOFTWARE TESTING. Software Testing Principles Types of software tests Test planning Test Development Test Execution and Reporting Test tools and Methods.
Verification and Validation
Testing and Quality Assurance
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Practical Testing Techniques. Verification and Validation Validation –does the software do what was wanted? “Are we building the right system?” –This.
1 Software Engineering Lecture 11 Software Testing.
Verification and Validation: A Quick Introduction 1-2 Lectures.
Informatics 43 – April 30, What is a test case? An input to a system, and the correct output. An “input” may be complex. Example: – What is an input.
SE 555 Software Requirements & Specification Requirements Validation.
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
(c) 2007 Mauro Pezzè & Michal Young Ch 10, slide 1 Functional testing.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Project Documentation and its use in Testing JTALKS.
 What is Software Testing  Terminologies used in Software testing  Types of Testing  What is Manual Testing  Types of Manual Testing  Process that.
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
1 Functional Testing Motivation Example Basic Methods Timing: 30 minutes.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
BY: GARIMA GUPTA MCA FINAL YEAR WHAT IS SOFTWARE TESTING ? SOFTWARE TESTING IS THE PROCESS OF EXECUTING PROGRAMS OR SYSTEM WITH THE INTENT.
Extreme Programming Software Development Written by Sanjay Kumar.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
Software Systems Verification and Validation Laboratory Assignment 3 Integration, System, Regression, Acceptance Testing Assignment date: Lab 3 Delivery.
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.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
Software Testing. What is Software Testing? Definition: 1.is an investigation conducted to provide stakeholders with information about the quality of.
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Testing -- Part II. Testing The role of testing is to: w Locate errors that can then be fixed to produce a more reliable product w Design tests that systematically.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Testing Process By: M. Muzaffar Hameed.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
LOGO TESTING Team 8: 1.Nguyễn Hoàng Khánh 2.Dương Quốc Việt 3.Trang Thế Vinh.
CS223: Software Engineering Lecture 4: Software Development Models.
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.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 Phase Testing. Janice Regan, For each group of units Overview of Implementation phase Create Class Skeletons Define Implementation Plan (+ determine.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Syndicate Members: 1. GC Muhammad Uzair 2. GC Umer Naveed Malik.
Software Testing.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Software Engineering (CSI 321)
Software Testing.
Software Testing.
Software engineering – 1
Some Simple Definitions for Testing
Lecture 09:Software Testing
CSE 303 Concepts and Tools for Software Development
Baisc Of Software Testing
Software Verification, Validation, and Acceptance Testing
Software Testing “If you can’t test it, you can’t design it”
OBJECTIVE QUALITY ASSURANCE TESTS TESTING STRATEGIES
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Think about your view of QA
Chapter 10: Testing and Quality Assurance
Chapter 1: Creating a Program.
Presentation transcript:

Testing: Who 3, What 4, Why 1, When 2, How 5 Lian Yu, Peking U. Michal Young, U. Oregon

Why Test Stupid question? But we need to be clear about goals before we can make reasoned choices regarding the other questions, who, what, when, and how We test to avoid costs – Cost of defects in the final product – Costs during software development

What about measurement? We can also test to measure the quality of software Is it good enough to release? Should we fix it or replace it? Different goals, different approaches (put this aside for the moment...)

Errrors, Detection, and Repairs Basic observation: – Cost of a defect grows quickly with time between making an error and fixing it Step function as defects cross scope walls: From programmer to sub-team, from close colleagues to larger team, from module to system, from developers to independent testers and from development to production “Early” errors are the most costly Misunderstanding of requirements, architecture that does not support a needed change,...

When As early as possible – Reduce the gap between making an error and fixing it Ideally to “immediate”... which we call “prevention” or “syntactic checking”, and involves deep changes in process and notations Throughout development – People make mistakes in every activity, so every work product must be tested as soon as possible

What Narrow view: Testing is executing a program and comparing actual results to expected results Wider view: “Testing” is shorthand for a variety of activities: anything we can do to check for defects. Dynamic program testing is the most common activity when the artifact is program code Other activities include reviews, analysis of models, automated checks. We usually need several.

Choosing What For every work product, we ask: How can I find defects as early as possible – Ex: How can I find defects in software architecture before we’ve designed all the modules? How can I find defects in my module code before it’s integrated into the system? Divide and conquer What properties can be checked automatically? What properties can be (effectively) tested dynamically? How can I make reviews cost-effective?

Verification and Validation: Divide and Conquer Validation vs Verification Are we building the right product? Are we building it right? Crossing from judgment to precise, checkable correctness property. Verification is at least partly automatable, validation is not Correctness is a relation between spec and implementation To make a property verifiable (testable, checkable,...) we must capture the property in a spec

Divide and Conquer: Usability Real requirement: The product must be usable. Users with characteristics XXX should learn to use it effectively within 30 minutes, and should thereafter complete task T within S seconds with error rate E. Hard and expensive (but important) to test. We probably can’t test it after every trivial change to the product. Divide and conquer: Validate the user interface design. Verify the user interface implementation: Is it consistent with the design? Does it validate any of the (precisely stated!) guidelines?

Testing: Who (from Why and When) Different goals, different actors Usability example: Validating the UI design is an expensive activity requiring expertise in usability, best carried out in a usability lab. Verifying compliance to UI design should be simple and mostly automatable, carried out by developers and development testers. Measuring reliability is yet another goal, best carried out by an independent team. When: Now Timeliness often constrains responsibility, e.g., unit testing is carried out by developers (but perhaps reviewed by others)

Who (in a distributed team) Cost of a defect rises dramatically at architectural and sub-team boundaries It’s cheap for me to fix the bug I just created in my module. It’s much, much more expensive to find, understand, and fix a bug in a module made by my teammate who is sleeping 3000 miles away. => Test cases are part of good module interface designs => Module tests should be thorough and completed before a module (or revision) becomes part of the baseline used by others

The Long When Test execution is just one part of testing And it needs to be a very cheap, automated part, because we should re-test the program over and over as it evolves Test design can often be done much earlier Example: Part of a good system design is devising acceptance test cases. Test design is also a test of specifications Is this specification precise, or ambiguous? Can I effectively check whether an implementation satisfies it?

Example: Test design from (module interface) specification Method: Compute vertical stripes » From a set of user-drawn rectangles on the display, return a list of shrinkable stripes such that: Each stripe is entirely within the range of x values in the map No two vertical stripes are adjacent For any point x within the bounds of the map, either x is between the low and high values of one of the rectangles, or x is within one of the stripes, but not both. Signature: List getVStripes(Rect mapArea, List ) Test cases?

How (from why, who, when, what) Black box: Test design is part of designing good specifications This will change specs, in a good way. Factoring validation from verification is particularly hard, but particularly cost-effective as it leverages and focuses expensive human judgment White (or glass) box: Test design from program design Executing every statement or branch does not guarantee good tests, but omitting a statement is a bad smell.

More! Testing and process refinement: Effective organizations track and classify defects. What do we typically get wrong? Which bugs cost us most? What causes them? How can we cost-effectively prevent or detect them? Testing and incentive structures: It’s easy to accidentally create perverse incentives, e.g., to turn in modules on schedule with latent bugs. If the incentive structure is broken, nothing else will work. Review techniques, automatizaton,...

Plug