Lecture 1: Introduction.

Slides:



Advertisements
Similar presentations
Introduction to Software Testing Chapter 1 Model-Driven Test Design Paul Ammann & Jeff Offutt
Advertisements

Test process essentials Riitta Viitamäki,
Verification and Validation
System Integration Verification and Validation
Model-Driven Test Design Based on the book by Paul Ammann & Jeff Offutt Jeff Offutt Professor, Software Engineering.
CITS5501 Software Testing and Quality Assurance Testing – Introduction Material from Introduction to Software Testing, ed 2, Ammann & Offutt.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
1 Basic Definitions: Testing What is software testing? Running a program In order to find faults a.k.a. defects a.k.a. errors a.k.a. flaws a.k.a. faults.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Testing an individual module
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
1 Software Testing and Quality Assurance Lecture 1 Software Verification & Validation.
Paul Ammann & Jeff Offutt
High Level: Generic Test Process (from chapter 6 of your text and earlier lesson) Test Planning & Preparation Test Execution Goals met? Analysis & Follow-up.
Introduction to Software Testing
Verification and Validation
Test Design Techniques
TEST CASE DESIGN Prepared by: Fatih Kızkun. OUTLINE Introduction –Importance of Test –Essential Test Case Development A Variety of Test Methods –Risk.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Dr. Pedro Mejia Alvarez Software Testing Slide 1 Software Testing: Building Test Cases.
Introduction to Software Testing Paul Ammann & Jeff Offutt Updated 24-August 2010.
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation.
Software Waterfall Life Cycle Requirements Construction Design Testing Delivery and Installation Operations and Maintenance Concept Exploration Prototype.
An Introduction to MBT  what, why and when 张 坚
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
CPIS 357 Software Quality & Testing
Introduction Telerik Software Academy Software Quality Assurance.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Chapter 12: Software Testing Omar Meqdadi SE 273 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
Overview of Software Testing 07/12/2013 WISTPC 2013 Peter Clarke.
 CS 5380 Software Engineering Chapter 8 Testing.
Software Testing Testing types Testing strategy Testing principles.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Today’s Agenda  HW #1  Finish Introduction  Input Space Partitioning Software Testing and Maintenance 1.
Software Construction Lecture 18 Software Testing.
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
Verification and Validation Assuring that a software system meets a user's needs.
Chapter 12: Software Inspection Omar Meqdadi SE 3860 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Introduction to Software Testing. OUTLINE Introduction to Software Testing (Ch 1) 2 1.Spectacular Software Failures 2.Why Test? 3.What Do We Do When We.
Design - programming Cmpe 450 Fall Dynamic Analysis Software quality Design carefully from the start Simple and clean Fewer errors Finding errors.
Testing. Today’s Topics Why Testing? Basic Definitions Kinds of Testing Test-driven Development Code Reviews (not testing) 1.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Chapter 1 Software Engineering Principles. Problem analysis Requirements elicitation Software specification High- and low-level design Implementation.
Chapter 12: Software Testing Omar Meqdadi SE 273 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Introduction to Software Testing Model-Driven Test Design and Coverage testing Paul Ammann & Jeff Offutt Update.
Introduction to Software Testing Maili Markvardt.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
CS223: Software Engineering Lecture 25: Software Testing.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVIII. Software Testing.
Paul Ammann & Jeff Offutt
Software Testing.
CSC 480 Software Engineering
Software Testing Introduction CS 4501 / 6501 Software Testing
Test Automation CS 4501 / 6501 Software Testing
Paul Ammann & Jeff Offutt
Verification and Validation Overview
Introduction to Software Testing Chapter 2 Model-Driven Test Design
Software testing strategies 2
Test Automation CS 4501 / 6501 Software Testing
(some of) My Research Engineering is about getting technology to do what it does well so humans can do what they do well Jeff Offutt Professor of Software.
Presentation transcript:

Lecture 1: Introduction. DD2459 Software Reliability Karl Meinke karlm@nada.kth.se Lecture 1: Introduction.

Course Material This course is mainly about software testing We cover the whole testing activity We emphasize test design as a practical skill We consider classical and modern approaches to testing We don’t have time to cover everything! We might consider reliability models.

Course Format 7 lectures – fundamental theory + math 7 exercise classes: alternate weeks 1 week practical instructions 1 week practical lab work Labs are mini projects (3 points) Work in pairs Build or use existing tools Short take-home exam (4.5 points)

Course Material Amman and Offut, Introduction to Software Testing, Cambridge University Press, 2008. Jorgensen, Software Testing: a Craftsman’s Approach, Auerbach Publications, 2008.

What is Testing? Black-box testing Load Testing Regression testing Random testing Functional testing Pairwise testing Unit testing Alpha/Beta testing Integration testing Acceptance testing System testing Performance testing Usability testing

Some Definitions? “Testing can show the presence of bugs but not their absence” (Dijkstra). Testing concerns the design, execution and subsequent analysis of individual test cases to evaluate a system. Testing concerns dynamic code execution (in situ) rather than static analysis Testing has different goals according to one’s level of test maturity.

IEEE SWEBOK 2004 Testing is an activity performed for evaluating product quality, and for improving it, by identifying defects and problems … Software testing consists of the dynamic verification of the behavior of a program on a finite set of test cases, suitably selected from the usually infinite executions domain, against the expected behavior. www.swebok.org

How to study? Bewildering variety of themes Try to find similarities of approach Reusable concepts and techniques E.g. graph models and coverage models Focus on functional (behavioural) testing Focus on test design Use lab work to focus our studies

The Price of Failure NIST report (2002) – inadequate testing costs USA alone $22 - $59 billion dollars annually Improved testing could half this cost Web application failures Financial services $6.5 million per hour Credit card sales applications $2.4 million per hour Symantec: most security vulnerabilities due to software errors.

NASA Mars lander (1999) due to an integration error Ariane 5 explosion – exception handling bug, due to outdated requirement. $370 million Toyota brakes: dozens dead, thousands of crashes Therac-25 radiation machine: three dead Major failures: Mars polar lander, Intel’s pentium bug

Airbus 319 – fly-by-wire concept Loss of autopilot, flight deck lighting, primary flight and navigation displays!

USA Northeast Blackout 2003 Financial losses of $6 Billion USD Alarm system in the energy management system failed due to a software error Operators were not informed of the power overload in the system

Conclusions Software is a skin that surrounds our civilisation (Amman and Offut) We need software to be reliable Testing is main method to assess reliability Testing is becoming more important Resources (manpower) for testing increases linearly Complexity of software increases exponentially Automated testing is inevitable

(Traditional) Test Activities – 4 Types Test design Criteria based Human based Test automation Test execution Test evaluation Need different skills, background knowledge, education and training.

1.a. Test Design – Criteria based Design test values to satisfy coverage criteria or other engineering goal Testing is a search problem, coverage measures search effort Most technical and demanding job of all Needs skills in Discrete math Programming Testing Traditional Computer Science Degree

1.b. Test Design – Human based Design test values based on domain knowledge of program and human knowledge of testing Criteria based approaches can be blind to situations Requires knowledge of domain, testing and user interfaces No traditional CS required

Human-based (cont) Background in the software domain is essential Empirical background is helpful (biology, psychology etc) A logic background is helpful (law, philosophy, math) Work is experimental and intellectually stimulating.

2. Test Automation Embed test values into executable scripts Straightforward programming Small pieces, simple algorithms Junit, JBehaviour Needs little theory Little boring Who determines and embeds the expected outputs? What if system is non-deterministic?

3. Test Execution Run tests on the SUT and record results Easy and trivial if tests automated Very junior personnel Test executors must be careful and meticulous with book-keeping (e.g. time of day error?) A test is an experiment in the real world.

4. Test Evaluation Evaluate outcome of testing and report to developers Test report Psychological problems – blame etc Test goals must be clear to assist debugging

Other Activities Test management: policy, group structure, integration with development, budget, scheduling. Test maintenance: test reuse, repositories, historical data, statistics, regression testing. Test documentation: Document “why” criteria Ensure traceability to requirements or architectural models. Evolve with the product.

The ”V” model of Testing Test cases User Requirements Acceptance testing Test cases Software Requirements System testing Test cases Architecture Design Integration testing Test cases Detailed design & Coding Unit Testing The ”V” model of Testing Integrates testing with waterfall lifecycle Time

Test Maturity Model (TMM) Level 0: no difference between testing and debugging Level 1: purpose is to show software works Level 2: purpose is to show software fails Level 3: purpose is to reduce risk of use Level 4: purpose is a mental discipline for quality.

Formal Definitions Software Fault: a static defect in software Software Error: an incorrect internal state manifesting a fault Software Failure: External incorrect behaviour wrt requirements. Patient has a symptom of thirst (3), doctor finds high blood glucose (2), doctor diagnoses diabetes (1)

Test Failure: execution resulting in failure Debugging: process of locating fault from failure Test case values: input values needed to complete execution of the SUT Expected results: results that should be produced iff SUT meets its requirements

Prefix (setup) values: input necessary to bring SUT to an appropriate state to receive test case values Postfix (teardown) values: input needed to be sent after the test case values Verification values: needed to recover the results Exit values: needed to terminate or return to a stable state.

Defn: Test Case Test Case: the test case values, setup values, teardown values and expected values needed for one observation of the SUT. Test Suite: a set of test cases.

Coverage Test requirement: A specific (structural) element r of an SUT that a test case must cover. Examples: paths, branches, variable values. Coverage Criterion: a set of rules that impose test requirements on a test suite. Coverage: Given a set R of test requirements coming from a criterion C, a test suite T satisfies C iff for each r  R there exists at least one t  T which satisfies r.

Varieties of System Under Test Procedural (C code, FORTRAN, etc) Precondition and postcondition Reactive (ATM machine, fly-by-wire) “always on” - event driven behaviour Real-time (soft/hard) Communications protocol Numerical (approximately correct) Object-oriented (class and method invariants) Distributed system (non-deterministic) GUI, user event generation must be simulated