Cs498dm Software Testing Darko Marinov January 22, 2008.

Slides:



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

Testing and Quality Assurance
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 18, 2008.
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.
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 )
IS 421 Information Systems Management James Nowotarski 16 September 2002.
Introduction to Software Testing
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.
Software Testing Content Essence Terminology Classification –Unit, System … –BlackBox, WhiteBox Debugging IEEE Standards.
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.
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.
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.
Testing : A Roadmap Mary Jean Harrold Georgia Institute of Technology Presented by : Navpreet Bawa.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
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.
CS527: (Advanced) Topics in Software Engineering -- Software Testing, Debugging, Analysis, Analytics – Course Logistics Tao Xie ©D. Marinov, T. Xie.
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.
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 28, 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.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Cs498dm Software Testing Darko Marinov January 24, 2008.
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.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
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.
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.
CS223: Software Engineering Lecture 25: Software Testing.
Testing Integral part of the software development process.
Cs498dm Software Testing Darko Marinov January 24, 2012.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Cs498dm Software Testing Darko Marinov January 26, 2012.
Software Development.
Software Engineering (CSI 321)
Cs498st Software Testing Tao Xie.
Software Testing Introduction CS 4501 / 6501 Software Testing
Verification and Testing
Applied Software Implementation & Testing
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, Validation, and Acceptance Testing
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 22, 2008

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 –Insructor: Darko –TA: Vilas

Administrative Info FAQ: 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 refactoring engine 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

“Assignment” Did you sign up on Wiki Did you receive s on the list Did you try out Eclipse/NetBeans? –Which refactorings did you try?

“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 Occasional candies to encourage your participation and discussion in lectures –Used to be a part of grade but not any more

Several Warm-Up Topics Your opinion about the guest lecture? –Do you want to have more of them? My report from the Workshop on Teaching Software Testing (WTST 7) –No technique is perfect –Abstraction/modeling is important Think of various ways that software could break –Testing for testers vs. testing for developers Do you look at source code while testing?

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) –We’ll look mostly at techniques used in practice

“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?

Your Interests Testing methods and methodology (*2) Writing good/correct test cases (*3) Better/more effective testing (*5) Working with testers/developers (*2) Relationship of testing and development cycle Improve development (*4) Software verification and (test) automation (*2) Job skills (*3) (short-term or long-term?) Please update me as we go through the course

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

Next Lecture Thursday, January 24, 3:30pm, 1304 SC –Example Interactive Testing Session Test some refactoring It should be fun We can learn from mistakes as we go We will learn some testing terminology Assignments –Really sign up on Wiki –Really try out Eclipse and/or NetBeans