Object Oriented Testing: An Overview

Slides:



Advertisements
Similar presentations
Unit-V testing strategies and tactics.
Advertisements

Design by Contract.
Object Oriented Testing and Test-Driven Development
Unit Testing in the OO Context(Chapter 19-Roger P)
Software Engineering Object Oriented Testing James Gain
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Introduction To System Analysis and Design
Object-oriented Testing SIM3302. Objectives To cover the strategies and tools associated with object oriented testing  Analysis and Design Testing 
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Introduction to Software Testing
Types and Techniques of Software Testing
Software Testing & Strategies
Software Engineering Lecture 13 Software Testing Strategies 1.
Chapter 13 & 14 Software Testing Strategies and Techniques
Introduction To System Analysis and design
System Testing There are several steps in testing the system: –Function testing –Performance testing –Acceptance testing –Installation testing.
Programinės Įrangos Testavimo Strategijos
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Testing. Recap Software testing – Why do we do testing? – When it is done? – Who does it? Software testing process / phases in software testing.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
1 Object-Oriented Testing CIS 375 Bruce R. Maxim UM-Dearborn.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
Software Quality Assurance Lecture #8 By: Faraz Ahmed.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 13b: Software Testing Strategies Software Engineering: A Practitioner’s Approach, 6/e Chapter.
SOFTWARE TESTING STRATEGIES CIS518001VA : ADVANCED SOFTWARE ENGINEERING TERM PAPER.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
1 Software Engineering Muhammad Fahad Khan Software Engineering Muhammad Fahad Khan University Of Engineering.
1 Chapter 7 Software Testing Strategies. 2 Software Testing Testing is the process of exercising a program with the specific intent of finding errors.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Software Construction Lecture 18 Software Testing.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
Chapter : 19 Testing Object-Oriented Applications.
LECTURE 19 23/11/15 Software Quality and Testing.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Software Engineering Saeed Akhtar The University of Lahore.
Software Testing and Quality Assurance 1. What is the objectives of Software Testing?
Chapter 24 객체지향 응용프로그램 테스팅 Testing Object-Oriented Applications 임현승 강원대학교 Revised from the slides by Roger S. Pressman and Bruce R. Maxim for the book.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Chapter 9 Object Oriented Testing. Objectives lTo cover the strategies and tools associated with object oriented testing  Analysis and Design Testing.
1 Lecture 15: Chapter 19 Testing Object-Oriented Applications Slide Set to accompany Software Engineering: A Practitioner’s Approach, 7/e by Roger S. Pressman.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Capturing Requirements. Questions to Ask about Requirements 1)Are the requirements correct? 2)Consistent? 3)Unambiguous? 4)Complete? 5)Feasible? 6)Relevant?
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Engineering By Germaine Cheung Hong Kong Computer Institute Lecture 7.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 14b: Software Testing Techniques Software Engineering: A Practitioner’s Approach, 6/e Chapter.
VI SEM CSE UNIT IV SOFTWARE ENGINEERING PROJECT MANAGEMENT TESTING STRATEGIES By Mr. Vaibhav V. Bhujade DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING DMIETR,
OBJECT-ORIENTED TESTING. TESTING OOA AND OOD MODELS Analysis and design models cannot be tested in the conventional sense. However, formal technical reviews.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Requirement Elicitation Review – Class 8 Functional Requirements Nonfunctional Requirements Software Requirements document Requirements Validation and.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
Testing Integral part of the software development process.
Software Testing Strategies for building test group
Software Engineering: A Practitioner’s Approach, 6/e Chapter 13 Software Testing Strategies copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Chapter 13 & 14 Software Testing Strategies and Techniques
Introduction to Software Testing
Chapter 24 Testing Object-Oriented Applications
Lecture 09:Software Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Chapter 19 Testing Object-Oriented Applications
Chapter 10 – Software Testing
Chapter 19 Testing Object-Oriented Applications
Chapter 17 Software Testing Strategies.
Software Testing Strategies
Chapter 13 & 14 Software Testing Strategies and Techniques 1 Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Presentation transcript:

Object Oriented Testing: An Overview Based on Larman, chapter 21

Can we do better?

Object-Oriented Testing When should testing begin? Validation still uses conventional black box methods Analysis and Design: (assumes such models…) Testing begins by evaluating the OOA and OOD models How do we test OOA models (requirements and use cases)? How do we test OOD models (class and sequence diagrams)? Structured walkthroughs, prototypes Formal reviews of correctness, completeness and consistency This is what TDD wants to AVOID!! Bubbles do not crash… (Meyer) Code: How does OO make testing different from procedural programming? Concept of a ‘unit’ broadens to the notion of a class Integration/Cluster testing is thread/scenario driven

Testing Analysis and Design Models Syntactic correctness: Is UML notation used correctly? Semantic correctness: Does the model reflect the real world problem? Is UML used as intended by its designers? Is the design complete (capturing all the classes and operations in UML diagrams) and understandable? Testing for consistency: An inconsistent model has representations in one part that are not reflected in other portions of the model

Testing the Class Model Revisit the Use Cases, CRC cards and UML class model. Check that all collaborations are properly represented. Inspect the description of each CRC index card to make sure a delegated responsibility is part of the collaborator’s definition. Example: in a point of sale system. A read credit card responsibility of a credit sale class is accomplished if satisfied by a credit card collaborator Invert connections to ensure that each collaborator asked for a service is receiving requests from a reasonable source

Criteria for Completion of Testing When are we done testing? (Are we there yet?) How to answer this question is still a research question One view: testing is never done… the burden simply shifts from the developer to the customer Or: testing is done when you run out of time or money Or use a statistical model: Assume that errors decay logarithmically with testing time Measure the number of errors in a unit period Fit these measurements to a logarithmic curve Can then say: “with our experimentally valid statistical model we have done sufficient testing to say that with 95% confidence the probability of 1000 CPU hours of failure free operation is at least 0.995”

Strategic Issues: A Non-Agile Viewpoint Issues for a successful software testing strategy: Specify product requirements long before testing commences For example: portability, maintainability, usability Do so in a manner that is unambiguous and quantifiable Understand the users of the software, with use cases Develop a testing plan that emphasizes “rapid cycle testing” Get quick feedback from a series of small incremental tests Build robust software that is designed to test itself Use assertions, exception handling and automated testing tools. Conduct formal technical reviews to assess test strategy and test cases - “Who watches the watchers?” Are these ideas completely abandoned by Agile methods?

Testing OO Code Class tests Integration tests System Validation tests

[1] Class (Unit) Testing Smallest testable unit is (an instance of) a class Test each operation: BB (interface) and WB (coverage) Approach: Test each method (and constructor) within a class Test the state behavior (attributes) of the class using valid intra-class sequences of methods: Kirani & Tsai 1994: Method Sequence Specification Arnold & Corriveau 2012: contract scenarios How is class testing different from conventional testing? Conventional testing focuses on input-process-output, whereas class testing focuses on each method, then designing sequences of methods to exercise states of a class

Class Test Case Design Identify each test case uniquely - Associate test case explicitly with the class and/or method to be tested State the purpose of the test Each test case should contain: A list of messages and operations that will be exercised as a consequence of the test A list of exceptions that may occur as the object is tested A list of external conditions for setup (i.e., changes in the environment external to the software that must exist in order to properly conduct the test) Supplementary information that will aid in understanding or implementing the test Automated unit testing tools facilitate these requirements

Challenges of Class Testing Encapsulation: Difficult to obtain a snapshot of a class without building extra methods which display the classes’ state Inheritance and polymorphism: Each new context of use (subclass) requires re-testing because a method may be implemented differently (polymorphism). Other unaltered methods within the subclass may use the redefined method and need to be tested White box tests: Basis path, condition, data flow and loop tests can all apply to individual methods, but don’t test interactions between methods. These techniques will be discussed later.

Random Class Testing Identify methods applicable to a class Define constraints on their use – e.g. the class must always be initialized first Identify a minimum test sequence – an operation sequence that defines the minimum life history of the class Generate a variety of random (but valid) test sequences – this exercises more complex class instance life histories Example: An account class in a banking application has open, setup, deposit, withdraw, balance, summarize and close methods The account must be opened first and closed on completion Open – setup – deposit – withdraw – close Open – setup – deposit –* [deposit | withdraw | balance | summarize] – withdraw – close. Generate random test sequences using this template

[2] Integration Testing OO does not have a hierarchical control structure so conventional top-down and bottom-up integration tests have little meaning: Some do advocate random integration testing… Integration applies three different incremental strategies: Thread-based testing: integrates classes required to respond to one input or event Use-based testing: integrates classes required by one use case Cluster testing: integrates classes required to demonstrate one collaboration (feature??)

[3] System Testing System Testing: Other Types of System-Level Tests: Once Use Cases have been tested individually (which includes their inter-scenario relationships), use the UC diagram to test UC interrelationships!! This is often forgotten (along with the UC diagram): yet it’s crucial! Other Types of System-Level Tests: Recovery testing: how well and quickly does the system recover from faults Security testing: verify that protection mechanisms built into the system will protect from unauthorized access (hackers, disgruntled employees, fraudsters) Stress testing: place abnormal load on the system Performance testing: investigate the run-time performance within the context of an integrated system Regression testing

Acceptance testing, anyone?

[4] Validation Testing Are we building the right product? Validation succeeds when software functions in a manner that can be reasonably expected by the customer. Focus on user-visible actions and user-recognizable outputs Purely black box as previously stated Apply: Use-case scenarios from the software requirements spec Black-box testing to create a deficiency list Acceptance tests through alpha (at developer’s site) and beta (at customer’s site) testing with actual customers