Fundamentals of Testing

Similar documents
3C05: Unified Software Development Process

Introduction to Computers and Programming. Testing

Testing Introduction. IEEE Definitions

Regression Testing Based on Comparing Fault Detection by multi criteria before prioritization and after prioritization

Software Development: The Waterfall Model

Basic Testing Concepts and Terminology

Chapter 8 Software Testing

Advancements in the V-Model

Software Testing. Knowledge Base. Rajat Kumar Bal. Introduction

SA Tool Kit release life cycle

Software Test and Analysis in a Nutshell

CS 451 Software Engineering Winter 2009

CDC UNIFIED PROCESS PRACTICES GUIDE

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Sample Exam Syllabus

Software Quality Testing Course Material

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Software Verification and Validation

Testing Tools Content (Manual with Selenium) Levels of Testing

Software Testing Lifecycle

Software Testing. Quality & Testing. Software Testing

ISTQB Certified Tester. Foundation Level. Sample Exam 1

Metrics in Software Test Planning and Test Design Processes

Software Engineering Reference Framework

Software testing. Objectives

Chapter 11, Testing, Part 2: Integration and System Testing

Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification

Software Testing Tutorial

Software Testing Interview Questions

Continuous Integration, Delivery and Deployment. Eero Laukkanen T Software Testing and Quality Assurance P

Comparing Agile Software Processes Based on the Software Development Project Requirements

Software Test and Analysis in a Nutshell 資 科 系 林 偉 川

End-to-End Testing. Helping our Customers improve quality and reduce costs

Appendix H Software Development Plan Template

Aspects of Software Quality Assurance in Open Source Software Projects: Two Case Studies from Apache Project

Manual Testing Online Training Concepts : Software Testing Manual Module 1: Testing fundamentals. Introduction:

Static Analysis of Dynamic Properties - Automatic Program Verification to Prove the Absence of Dynamic Runtime Errors

in a Nutshell (c) 2007 Mauro Pezzè & Michal Young Ch 1, slide 1

Levels of Software Testing. Functional Testing

Logistics. Software Testing. Logistics. Logistics. Plan for this week. Before we begin. Project. Final exam. Questions?

An Analysis on Objectives, Importance and Types of Software Testing

Managing Agile Projects in TestTrack GUIDE

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

Special Union for the International Registration of Marks (Madrid Union)

Commercialization Life Cycle

Web Application Regression Testing: A Session Based Test Case Prioritization Approach

Building Reusable Testing Assets for a Product Line

ABSTRACT. would end the use of the hefty 1.5-kg ticket racks carried by KSRTC conductors. It would also end the

Following is a discussion of the Hub s role within the health insurance exchanges, the results of our review, and concluding observations.

How To Improve Software Quality

Verification and Validation of Software Components and Component Based Software Systems

Service Delivery Module

CHAPTER 1 INTRODUCTION

Project Risk Management: IV&V as Insurance for Project Success

Managing Small Software Projects - An Integrated Guide Based on PMBOK, RUP, and CMMI

Specification and Analysis of Contracts Lecture 1 Introduction

The Theory of Software Testing

Software Engineering. Software Testing. Based on Software Engineering, 7 th Edition by Ian Sommerville

Software Development Best Practices

Static Analysis Best Practices

Know or Go Practical Quest for Reliable Software

Effective Software Security Management

Waters Software Development Life Cycle

Personal Software Process (PSP)

Software Test Plan (STP) Template

Test Automation Process

a new generation software test automation framework - CIVIM

Testhouse Training Portfolio

Release Management Within Open Source Projects

Jukka Mannila KEY PERFORFORMANCE INDICATORS IN AGILE SOFTWARE DEVELOPMENT

An Overview of Quality Assurance Practices in Agile Methodologies

Software Engineering Question Bank

Software Development Methodologies

Implementation of ANSI/AAMI/IEC Medical Device Software Lifecycle Processes.

Atomate Development Process. Quick Guide

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Lean Software Development


Quality Management. Lecture 12 Software quality management

FSW QA Testing Levels Definitions

Codeless Test Automation for Web Apps

Test-Driven Development. SC12 Educator s Session November 13, 2012

Testing and Scrum. Agenda. Fall 2007 Scrum Gathering

Software Project Models

Software Engineering I: Software Technology WS 2008/09. Integration Testing and System Testing

Independent Test and Evaluation

Die wichtigsten Use Cases für MISRA, HIS, SQO, IEC, ISO und Co. - Warum Polyspace DIE Embedded Code-Verifikationslösung ist.

Automation can dramatically increase product quality, leading to lower field service, product support and

CDC UNIFIED PROCESS JOB AID

Techniques and Tools for Rich Internet Applications Testing

Outline. Definitions. Course schedule

Safety Risk Management in RT: A Software Manufacturer Perspective

Software Certification and Software Certificate Management Systems

THE APPLICATION OF THE PARETO PRINCIPLE IN SOFTWARE ENGINEERING.

Search Algorithm in Software Testing and Debugging

Software Process Training

Smarter Balanced Assessment Consortium. Recommendation

MOBILE APPLICATION TESTING ENGINEER

To introduce software process models To describe three generic process models and when they may be used

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Transcription:

Fundamentals of Testing Software Reliability and Testing - Barbara Russo SERG - Laboratory of Empirical Software Engineering 1 Goal of testing Testing is the process of executing a program with the intent of finding errors Glen Myers 2

Testing Software testing is the process of analysing a software item to detect the differences between existing and required conditions (i.e., bugs) and to evaluate the features of the software item IEEE definition 3 Limits of software testing Program testing can be used to show the presence of bugs, but never to show their absence! Dijkstra, 1969 4

Limits of software testing If a failure is detected then the software is a failure software, but If no failure has been detected we cannot say that the software is correct Exhaustive testing is not feasible, but we can compute the probability that no failures occur in a given interval of time > software reliability Cmpe 310 Winter 2001 5 Limits of software testing Beware of bugs in the above code; I have only proved it correct, not tried it Knuth, 1977 We need to test for confidence not for proof of correctness 6

Exhaustive testing 1 2 3 4 5 Assume there are 5 20 possible different execution flows. If we execute one test per millisecond, it would take 3.170 years to test this program!! Loop < 20X Cmpe 310 Winter 2001 7 The Peculiarity of Testing Testing is the process of executing a program with the intent of finding an error A good test case has a high probability of finding an as-yet undiscovered error A successful test is one that uncovers an as-yet undiscovered error Cmpe 310 Winter 2001 8

Testing Costs for debugging and recall of product Loss of customers faith in company Effective test building Uncovering as many defects as possible with minimum amount of time and effort Is all of this feasible? 9 Basic questions When does testing start? When does it complete? What techniques should be applied during software development to get acceptable quality at acceptable cost? How can we assess the readiness of a product to release? How can we control the quality of a product to release? 10

When does testing start? When does it complete? Testing activities are spread all over the development process There are several techniques at different stages of the process Different techniques involve different stakeholders 11 When does testing start? When does it complete? 12

What techniques should be applied during Feasibility study to understand and select appropriate techniques Verification to lead development according to requirements Validation to check product against users' expectations 13 What techniques should be applied during software development? Techniques depend on quality, cost, scheduling, resources No one technique" Effectiveness for different classes of faults to capture Applicability at different stages of the project (early stage artefacts cannot be tested with automated tools) Techniques can have different goals (to understand the coverage or to detect faults) Trade-off cost and assurance, e.g, focus on key few properties 14

What techniques should be applied during software development? Feasibility study includes Tentative architectural design to modularise the work and identify properties that can be verified in different subsystems Draft plan to break projects into incremental deliveries preliminary decisions about test and analysis techniques 15 How can we assess the readiness of a product to be released? For example, with measurement: Availability: e.g., daily down time Time Between Failures: days between two consecutive failures Defect slippage: number of defects remaining in the product 16

How can we assess the readiness of a product to be released? How: alpha testing: performed by users in a controlled environment. Capture operational proles decide by the organisation beta testing: performed by users in a their own environment. Capture different operational profiles 17 How can we control the quality of successive releases? Major revisions also called point releases : the full quality process is repeated including beta testing and regression testing Small revisions also called patch releases : revisions to incorporate bug fixing. Characterised by fast/automated testing. Subset of regression testing. In Open Source Software we might have milestones, release candidates, and major releases 18

How can we control the quality of successive releases? 19 How can the development process be improved? Data collection across projects for modelling and prediction, e.g., faults and their severity or priority Team/Personal Software Process (Humphrey) 20