Issues in Object-Oriented Testing - Testing Extravaganza Weekend

21
Introduction Overview of Object Orientated Unit Testing Implications of Object Oriented Testing Summary Issues in Object-Oriented Testing Testing Extravaganza Weekend James Gawn 02.12.2006 James Gawn Issues in Object-Oriented Testing

Transcript of Issues in Object-Oriented Testing - Testing Extravaganza Weekend

Page 1: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Issues in Object-Oriented TestingTesting Extravaganza Weekend

James Gawn

02.12.2006

James Gawn Issues in Object-Oriented Testing

Page 2: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

What am I going to talk about?The Object Orientated Paradigm

What am I going to talk about?

I A little background of object orientated programming

I Unit testing issuesI Implications various object orientated properties:

I Composition and EncapsulationI InheritanceI Polymorphism

I Levels of object orientated testing

I A quick round up

James Gawn Issues in Object-Oriented Testing

Page 3: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

What am I going to talk about?The Object Orientated Paradigm

The Object Orientated Paradigm

I Started way back in 1960’s with PDP-1 System from MIT

I Smalltalk in the 1980’s influnced the introduction of the ideaof inheritance

I Became more widely used in 1990’s with advent of C++

I Promised to make code reuse easier

I Unfortunately does introduce a new set of issues for testing

I Treats programming as a series of co-operating objects,opposed to collections of functions

James Gawn Issues in Object-Oriented Testing

Page 4: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Units in an object orientated system?AdvantagesDisadvantages

Overview of Object Orientated Unit Testing

James Gawn Issues in Object-Oriented Testing

Page 5: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Units in an object orientated system?AdvantagesDisadvantages

What is a unit in an object orientated system?

I What is a unit in an object orientated system?I Traditional systems define a unit as the smallest component

that can be compiled and executedI Units are normally a component which in theory is only ever

assigned to one programmer

I Two options for selecting units in object orientated systems:I Treat each class as a unitI Treat each method within a class as a unit

James Gawn Issues in Object-Oriented Testing

Page 6: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Units in an object orientated system?AdvantagesDisadvantages

Advantages for Object Orientated Unit Testing

I Once a class is testing thoroughly it can be reused withoutbeing unit tested again

I UML class state charts can help with selection of test casesfor classes

I Classes easily mirror units in traditional software testing

James Gawn Issues in Object-Oriented Testing

Page 7: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Units in an object orientated system?AdvantagesDisadvantages

Disadvantages for Object Orientated Unit Testing

I Classes obvious unit choice, but they can be large in someapplications

I Problems dealing with polymorphism and inheritance

James Gawn Issues in Object-Oriented Testing

Page 8: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Implications of Composition and Encapsulation

James Gawn Issues in Object-Oriented Testing

Page 9: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Composition Issues

I Objective of OO is to facilitate easy code reuse in the form ofclasses

I To allow this each class has to be rigiriously unit testedI Due to classes potentially used in unforeseeable ways when

composed in new systemsI Example: A XML parser for a web browser

I Classes must be created in a way promoting loose couplingand strong cohesion

James Gawn Issues in Object-Oriented Testing

Page 10: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Encapsulation Issues

I Encapsulation requires that classes are only aware of their ownproperties, and are able to operate independently

I If unit testing is performed well, the integration testingbecomes more important

I If you do not have access to source code then structuraltesting can be impossible

I If you violate encapsulation for testing purposes, then thevalidity of test could be questionable

James Gawn Issues in Object-Oriented Testing

Page 11: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Implications of Inheritance and Polymorphism

James Gawn Issues in Object-Oriented Testing

Page 12: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

The Issues

I Inheritance is an importantpart of the object orientedparadigm

I Unit testing a class with asuper class can beimpossible to do without thesuper classesmethods/variables

James Gawn Issues in Object-Oriented Testing

Page 13: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

One Solution - Flattening

I Merge the super class, and the class under test so allmethods/variables are available

I Solves initial unit test problemsI Problems:

I The class won’t be flattened in the final product so potentialissues may still arise

I Complicated when dealing with multiple inheritance

James Gawn Issues in Object-Oriented Testing

Page 14: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

One Solution - Flattening

James Gawn Issues in Object-Oriented Testing

Page 15: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Polymorphism Issues

I Repeatedly testing samemethods

I Time can then be wasted ifnot addressed

I Potentially can be avoided,and actually save time

James Gawn Issues in Object-Oriented Testing

Page 16: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Polymorphism Issues - Example Diagram

James Gawn Issues in Object-Oriented Testing

Page 17: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Polymorphism Issues - Example Code

James Gawn Issues in Object-Oriented Testing

Page 18: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

Implications of Composition and EncapsulationImplications of Inheritance and PolymorphismLevels of OO Testing

Levels of Object Orientated Test

I There are generally 3 or 4 levels of testing for object orientatedsystems depending on your approach, consisting of:

1. Method Testing (Unit Testing)2. Class Testing (Unit Testing/Intraclass Testing)3. Interclass Testing (Integration Testing)4. System Testing

James Gawn Issues in Object-Oriented Testing

Page 19: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

A Quick Roundup

Summary

James Gawn Issues in Object-Oriented Testing

Page 20: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

A Quick Roundup

A Quick Roundup

I Object orientated testing is a painI EncapsulationI InheritanceI Polymorphism

I Necessary evil as it is more widely adopted

I Light at the end of the tunnel is unit/class reuse

James Gawn Issues in Object-Oriented Testing

Page 21: Issues in Object-Oriented Testing - Testing Extravaganza Weekend

IntroductionOverview of Object Orientated Unit Testing

Implications of Object Oriented TestingSummary

A Quick Roundup

Issues in Object-Oriented TestingTesting Extravaganza Weekend

James Gawn

02.12.2006

James Gawn Issues in Object-Oriented Testing