Software Quality Assurance (SQA) Software Quality Assurance

Similar documents
Software Testing Strategies. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Verification and Validation. Verification and validation

Testing. Unit, integration, regression, validation, system. OO Testing techniques Application of traditional techniques to OO software

Three General Principles of QA. COMP 4004 Fall Notes Adapted from Dr. A. Williams

INTRODUCTION TO SOFTWARE ENGINEERING

Software Testing CS 408

Verification and Validation

Verification and Validation

Software Testing. Software Testing

Quote by Bruce Sterling, from: A Software Testing Primer, Nick Jenkins

Topics in Software Testing

Chapter 11, Testing. Using UML, Patterns, and Java. Object-Oriented Software Engineering

Testing & Debugging TB-1

Software Testing. Minsoo Ryu. Hanyang University. Real-Time Computing and Communications Lab., Hanyang University

Object-Oriented Software Engineering Conquering Complex and Changing Systems. Chapter 9, Testing

Software Quality Assurance. David Janzen

Terminology. There are many different types of errors and different ways how we can deal with them.

10. Software Testing Fundamental Concepts

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/10/2015

Verification Overview Testing Theory and Principles Testing in Practice. Verification. Miaoqing Huang University of Arkansas 1 / 80

Software Engineering Fall 2014

Chapter 9. Software Testing

Software Engineering (CSC 4350/6350) Rao Casturi

Part 5. Verification and Validation

Write perfect C code to solve the three problems below.

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering

Testing. Outline. What is this? Terminology. Erroneous State ( Error ) Algorithmic Fault

Software Testing CS 408. Lecture 11: Review 2/20/18

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.

Software Testing Interview Question and Answer

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process

MONIKA HEINER.

Verification and Validation

Verification and Validation

Testing Process and Methods. CS 490MT/5555, Spring 2017, Yongjie Zheng

SOFTWARE ENGINEERING SOFTWARE VERIFICATION AND VALIDATION. Saulius Ragaišis.

Chapter 9 Quality and Change Management

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt

Regression testing. Whenever you find a bug. Why is this a good idea?

Chap 2. Introduction to Software Testing

Pearson Education 2007 Chapter 9 (RASD 3/e)

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Software Testing Strategies. Software Engineering: A Practitionerʼs Approach, 7/e by Roger S. Pressman

Lecture 15 Software Testing

Introduction to Dynamic Analysis

1. Introduction and overview

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

Testing: Test design and testing process

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Program Correctness and Efficiency. Chapter 2

Implementation and Integration

Testing! The material for this lecture is drawn, in part, from! The Practice of Programming (Kernighan & Pike) Chapter 6!

Test Driven Development

TESTING. Overview Slide 6.2. Testing (contd) Slide 6.4. Testing Slide 6.3. Quality issues Non-execution-based testing

Lesson 4: Bug Reporting and STLC

Software Engineering

The Importance of Test

TSW Reliability and Fault Tolerance

Program Verification! Goals of this Lecture! Words from the Wise! Testing!

Digitized Engineering Notebook

Testing! The material for this lecture is drawn, in part, from! The Practice of Programming (Kernighan & Pike) Chapter 6!

Chapter 10. Testing and Quality Assurance

Chapter 2.6: Testing and running a solution

Finding Firmware Defects Class T-18 Sean M. Beatty

Course: Advanced Software Engineering. academic year: Lecture 14: Software Dependability

An Introduction to Systematic Software Testing. Robert France CSU

Regression Tes+ng. Midterm Wednesday Oct. 26, 7:00-8:30pm Room 142

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing.

Reading assignment: Reviews and Inspections

XVIII. Software Testing. Laurea Triennale in Informatica Corso di Ingegneria del Software I A.A. 2006/2007 Andrea Polini

Introduction To Software Testing. Brian Nielsen. Center of Embedded Software Systems Aalborg University, Denmark CSS

Object-Oriented Software Engineering Practical Software Development using UML and Java

Informatics 43 Introduction to Software Engineering Final Exam Spring, 2015

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Page 1. Reading assignment: Reviews and Inspections. Foundations for SE Analysis. Ideally want general models. Formal models

Software Quality. Richard Harris

Faculty of Engineering Kasetsart University

Computer Science and Software Engineering University of Wisconsin - Platteville 9-Software Testing, Verification and Validation

From designing to coding

UNIT I TESTING BASICS

Midterm Wednesday Oct. 27, 7pm, room 142

Basics of Software Testing-I UNIT I Software Testing. Software is used in many applications of the real world. Some of the examples are

Why testing and analysis. Software Testing. A framework for software testing. Outline. Software Qualities. Dependability Properties

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

Quality Assurance in Software Development

Software Engineering: Theory and Practice. Verification by Testing. Test Case Design. Tom Verhoeff

The Fundamental Testing Process in Practical or Company environment

Software Engineering Testing and Debugging Testing

! Is often referred to as verification and validation (V&V).

Chapter 8. Achmad Benny Mutiara

Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code. Feasibility of Testing to Code (contd)

QUIZ #5 - Solutions (5pts each)

Software Testing and Maintenance

Software Engineering Theory. Lena Buffoni (slides by Kristian Sandahl/Mariam Kamkar) Department of Computer and Information Science

Testing Objectives. Successful testing: discovers previously unknown errors

Manuel Oriol, CHCRC-C, Software Testing ABB

Tutorial 1 Answers. Question 1

Software Testing. An Overview

Transcription:

Software Quality Assurance (SQA) Software Quality Assurance Use of analysis to validate artifacts requirements analysis design analysis code analysis and testing Technical/Document reviews Control of changes configuration management

Costs of Poor Quality Increased cost to find and fi problems Increased cost to distribute modifications Increased customer support Product liability Failure in the marketplace Failure of the system Terminology correctness reliability testing debugging failure fault/defect error verification validation V&V IV&V

Terminology correctness--software (artifact) is consistent with its specification specification could be wrong or incomplete rarely is the specification correct rarely is software correct reliability-- (high) probability that the software conforms to its specification usually a statistical measure based on past performance e.g., mean time to failure need to know operational profile But, frequently not known Terminology (continued) testing--eecute the software on selected test cases evaluate the results (test oracle) evaluate performance evaluate ease of use testing can demonstrate the presence of bugs but can never prove their absence can rarely rely on ehaustive testing how should you select test cases? how do you know when to stop testing?

Testing is a sampling technique Terminology (Continued) failure-- an erroneous result produces incorrect outputs fails to meet a real-time constraint fault--the cause of one or more failures error -- incorrect concept e.g., design error, logic error debugging--the process of finding the cause of a failure and finding a way to fi the associated faults (without introducing additional faults)

Terminology (Continued) verification -- the process of proving, using mathematical reasoning, that a program is consistent with its specification validation -- the processes associated with demonstrating that the software performs reasonably well V&V -- verification and validation IV&V - independent V&V IV&V Psychologically difficult for programmers to test their own code thoroughly Inherently want to believe that it works and try to demonstrate this If the programmers had thought of all the devious cases that could arise, then these would be reflected in the program Want someone who is motivated to find problems Want someone who has fresh insight into how to eercise the system But, QA is often under pressure not to find problems so that a product can be released on time

Different kinds of testing unit testing-- test individual components use test stubs and drivers integration testing--combine components and test them big bang testing incremental integration build up to subsystems system testing--test whole system acceptance testing--testing to determine if the product will be accepted Different kinds of testing (continued) regression testing--retesting after some aspect of the system has been changed determine "old" test cases that must be re-eecuted determine what new test cases are required play and capture technology for UI centric systems

Different kinds of testing (continued) black bo or functional testing testing based on specifications white bo or structural testing testing based on looking at the artifact need to do both black bo and white bo testing Testing is hard work Typically 50% of software development effort goes to testing Up to 85% for life critical software Objectives Epose errors Good test case is one with a high probability of finding a new failure Successful test case is one that finds a new type of failure

Ehaustive testing Ehaustive testing requires testing all combination of input values Sorting an array of size 10 containing one each of 1..10 has 10! input combinations (3,628,800 cases) Testing usually sparsely samples the input space

Testing can: Uncover failures Show specifications are met for specific test cases Be an indication of overall reliability cannot: Prove that a program is fault-free or correct Testing Principles 80% of all errors will likely occur in 20% of the modules Ehaustive testing is not possible Each test case should be chosen to maimize likelihood of finding a failure Testing should also be done by someone other than the developers developers do original testing SQA (or IV&V) does independent testing usually black bo testing

Quality must be an on-going concern Can't build quality into software after the fact Tests should be planned long before testing begins requirements --> test plans --> functional test cases design --> enhanced test plans --> functional and structural test cases code --> enhanced structural (and functional) test cases maintenance --> enhanced functional and structural test cases Debugging Find the cause of a failure and fies it Debugging is difficult because Symptom may appear long after the fault occurs May be difficult to reproduce the symptom Symptom may be intermittent, indicating a timing or load dependent problem Unit testing (and incremental integration testing) simplifies debugging during development because it helps localize faults