Cs498dm Software Testing Darko Marinov January 24, 2012.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

Verification and Validation
Testing and Quality Assurance
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
System Analysis and Design (SAD )
Software Testing and Quality Assurance
Software Testing and Quality Assurance: Introduction and Terminology
Introduction to Software Testing
Verification and Validation
What Exactly are the Techniques of Software Verification and Validation A Storehouse of Vast Knowledge on Software Testing.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Slide 6.1 CHAPTER 6 TESTING. Slide 6.2 Overview l Quality issues l Nonexecution-based testing l Execution-based testing l What should be tested? l Testing.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
March 13, 2001CSci Clark University1 CSci 250 Software Design & Development Lecture #15 Tuesday, March 13, 2001.
1. Topics to be discussed Introduction Objectives Testing Life Cycle Verification Vs Validation Testing Methodology Testing Levels 2.
Balancing Practices: Inspections, Testing, and Others JAXA scenario (formal method) Masa Katahira Japanese Space Agency.
Software Testing Sudipto Ghosh CS 406 Fall 99(Also used later) November 2, 1999.
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.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 23, 2011.
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.
Testing : A Roadmap Mary Jean Harrold Georgia Institute of Technology Presented by : Navpreet Bawa.
Instructor: Peter Clarke
Verification and Validation Overview References: Shach, Object Oriented and Classical Software Engineering Pressman, Software Engineering: a Practitioner’s.
Software Testing Course Shmuel Ur
Cs498dm Software Testing Darko Marinov January 15, 2008.
1 New Development Techniques: New Challenges for Verification and Validation Mats Heimdahl Critical Systems Research Group Department of Computer Science.
Overview of Formal Methods. Topics Introduction and terminology FM and Software Engineering Applications of FM Propositional and Predicate Logic Program.
Cs498dm Software Testing Darko Marinov January 22, 2008.
Chapter 13: Regression Testing Omar Meqdadi SE 3860 Lecture 13 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
1 Introduction to Software Engineering Lecture 1.
This chapter is extracted from Sommerville’s slides. Textbook chapter
Cs498dm Software Testing Darko Marinov January 17, 2012.
Chapter 12: Software Inspection Omar Meqdadi SE 3860 Lecture 12 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
EE422C Software Design and Implementation II Vallath Nandakumar Fall 2015.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Test Case Designing UNIT - 2. Topics Test Requirement Analysis (example) Test Case Designing (sample discussion) Test Data Preparation (example) Test.
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
Software Quality Assurance and Testing Fazal Rehman Shamil.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
Dynamic Testing.
Software Engineering Lecture 8: Quality Assurance.
Winter 2007SEG2101 Chapter 121 Chapter 12 Verification and Validation.
Cs498dm Software Testing Darko Marinov January 27, 2009.
This chapter is extracted from Sommerville’s slides. Textbook chapter 22 1 Chapter 8 Validation and Verification 1.
Whole Test Suite Generation. Abstract Not all bugs lead to program crashes, and not always is there a formal specification to check the correctness of.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 24, 2010.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
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. SE, Testing, Hans van Vliet, © Nasty question  Suppose you are being asked to lead the team to test the software that controls.
SOFTWARE TESTING AND QUALITY ASSURANCE. Software Testing.
Introduction to Software Testing (2nd edition) Chapter 5 Criteria-Based Test Design Paul Ammann & Jeff Offutt
Cs498dm Software Testing Darko Marinov January 26, 2012.
Software Engineering (CSI 321)
Cs498st Software Testing Tao Xie.
Software Testing Introduction CS 4501 / 6501 Software Testing
Verification and Testing
Verification and Validation Overview
BASICS OF SOFTWARE TESTING Chapter 1. Topics to be covered 1. Humans and errors, 2. Testing and Debugging, 3. Software Quality- Correctness Reliability.
Software Engineering EE422C.
Introduction to 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 Verification and Validation
Software Verification and Validation
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 26, 2008.
Software Verification and Validation
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Darko Marinov February 5, 2009
Presentation transcript:

cs498dm Software Testing Darko Marinov January 24, 2012

Course Overview Introduction to software testing –Systematic, organized approaches to testing –Based on models and coverage criteria –Testing is not (only) about finding “bugs” –Improve your testing (and development) skills Teaching staff –Instructor: Darko –No TA

Administrative Info Deliverables –No exams: no final, no midterm –Five problem sets (5*15%) and a project (25%) Project: proposal, two reports, hopefully bug reports Project is on testing a piece of JPF Undergrads must be registered for 3 hours –For more, you can do an independent study –If interested in research on testing, contact me Juniors: ask for permission if you didn’t

“Assignments” Did you receive s on the list Did you try to find the textbook? Did you try out JPF? Course will use Java –If you’re not familiar, please review some intro

“Prizes” Potential categories –The “buggiest” bug found in the course Hardest to find, most important, realistic case study –Most bugs found or tests generated Not the best measures of testing effort

This Lecture: Introduction (Cont’d) Why look for bugs? What are bugs? Where they come from? How to detect them? Topics that will be covered in the course Related topics that will not be covered

“Bugs” in IEEE Fault –Incorrect lines of code Error –Faults cause incorrect (unobserved) state Failure –Errors cause incorrect (observed) behavior Not used consistently in literature!

Correctness and Quality Common (partial) properties –Segfaults, uncaught exceptions –Resource leaks –Data races, deadlocks –Statistics based Specific properties –Requirements –Specification

Traditional Waterfall Model Requirements Analysis Design Checking Implementation Unit Testing Integration System Testing Maintenance Regression Testing We will look at general techniques, applicable in several phases of testing

Phases (1) Requirements –Specify what the software should do –Analysis: eliminate/reduce ambiguities, inconsistencies, and incompleteness Design –Specify how the software should work –Split software into modules, write specifications –Checking: check conformance to requirements, using for example conformance testing

Phases (2) Implementation –Specify how the modules work –Unit testing: test each module in isolation Integration –Specify how the modules interact –Integration testing: test module interactions –System testing: test the entire system Maintenance –Evolve software as requirements change –Regression testing: test changes

Testing Effort Reported to be >50% of development cost [e.g., Beizer 1990] Microsoft: 75% time spent testing –50% testers who spend all time testing –50% developers who spend half time testing

When to Test The later a bug is found, the higher the cost –Orders of magnitude increase in later phases –Also the smaller chance of a proper fix Old saying: test often, test early New methodology: test-driven development (write tests even before writing code)

Software is Complex Malleable Intangible Abstract Solves complex problems Interacts with other software and hardware Not continuous

Software Still Buggy Folklore: 1-10 (residual) faults per 1000 nbnc lines of code (after testing) Consensus: total correctness impossible to achieve for complex software –Risk-driven finding/elimination of faults –Focus on specific correctness properties

Approaches to Detecting Bugs Software testing Model checking (Static) program analysis …

Software Testing Dynamic approach Run code for some inputs, check outputs Checks correctness for some executions Main questions –Test-suite adequacy (coverage criteria) –Test-input generation –Test oracles

Other Testing Questions Selection Minimization Prioritization Augmentation Evaluation Fault Characterization … Testing is not (only) about finding faults!

Current Status Testing remains the most widely used approach to finding bugs –Validation: are we building the right system? –Verification: are we building the system right? Testing is gaining importance with test-first development and increased reliability needs A lot of research on testing (part of mine too) –This course is not about research

“Schools” of Software Testing Bret Pettichord described four schools –Analytic (a branch of CS/Mathematics) –Factory (a managed process) –Quality (a branch of quality assurance) –Context-Driven (a branch of development) This course focuses on artifacts, not process Do you want a guest speaker from industry?

Topics Related to “Finding Bugs” How to “eliminate bugs” (localize faults)? –Debugging How to “prevent bugs”? –Programming language design –Software development processes How to “show absence of bugs”? –Theorem proving –Model checking, program analysis

Testing Topics to Cover Test coverage and adequacy criteria –Graph, logic, input domains, syntax-based Test-input generation Test oracles Model-based testing Testing software with structural inputs Test automation Testing in your domain of interest?

Summary of the Introduction Eliminate bugs to save lives and money “Bugs” may mean faults, errors, failures Several approaches for detection: software testing, model checking, static analysis… Software testing is the most widely used approach for validation and verification –We will cover systematic approaches to testing, based on coverage criteria for various models –Testing is not (only) about revealing faults