Graphical Testing With UML The UML Testing Profile Eric Samuelsson

advertisement
UML Testing Profile
Graphical Testing With UML
The UML Testing Profile
Eric Samuelsson
eric.samuelsson@telelogic.com
© Telelogic AB
UML Testing Profile
Agenda
• Background
• Key concepts
• Advanced concepts
• Summary
© Telelogic AB
UML Testing Profile
Background
• Test technologies are not on par with modern design
technologies such as model-driven architectures (MDA)
• There’s a need for a widespread graphical test language
• OMG realized this and issued and RFP for a graphical testing
profile to UML
– Using the UML ensures widespread use across a wide range of
application areas
– Numerous tool vendors support UML
– UML is a proven de facto standard
– But UML is focused on definition of system structure and behavior
and has no built-in testing constructs...
© Telelogic AB
UML Testing Profile
UML Testing Profile RFP
• Issued by OMG in July 2001
• LOI’s submitted by
– Telelogic, Rational, SofTEAM, FOKUS,
Ericsson, Motorola, IBM
• One joint submission
• Initial submission made in April 2002
• Revised initial submission made in June 2002
– Terminology changes
– Elaboration of Test Data
• Final submission in January 2003
© Telelogic AB
UML Testing Profile
Requirements and restrictions
• Define structural and behavioral test concepts
• Conformance testing only
– Black-box functional testing
• Based upon the UML meta-model
– UML 2.0 as proposed by the U2 Partners
– Inter-operation with existing testing technologies
– TTCN 3
– Junit
– ...
© Telelogic AB
UML Testing Profile
Current proposal
• A graphical testing language based the current UML 2
metamodel
• Reusing as many UML concepts as possible
– Recognition important for UML users
– No need to re-invent the wheel
• Designed with TTCN 3 in mind
– Semantics basically follows TTCN 3 semantics
– But caters for other technologies like JUnit as well
© Telelogic AB
UML Testing Profile
Current proposal
•
Defined as a UML profile
– Will be recognized by UML users
•
Basically a number of stereotypes
– Easy to implement for tool vendors
•
Models will be interchangeable
– Any tool implementing XMI will be able to exchange models
UML
«import»
«profile»
Testing Profile
«metaclass»
BehavioralFeature
«stereotype»
TestCase
© Telelogic AB
UML Testing Profile
Key Concepts
• Test Architecture
– Test Context, Test Configuration
– Test Component, SUT
– Arbiter
• Test Behavior
– Test Case
– Verdict, Validation Action
– Defaults
• Test Data
– Logical partitions, Pattern matching
• Test Deployment
© Telelogic AB
UML Testing Profile
Test Objective
• An informal description of what to test in one test case
• Commonly expressed using natural language
”Verify that if a user inserts and authorizes a
valid card correctly, he is able to withdraw
money if he has sufficient funds.”
• Can also be expressed using other diagrams, such as
use case diagrams and sequence diagrams
Withdrawal
Client
Client
<<include>>
Tester
InvalidPin
© Telelogic AB
UML Testing Profile
Test Case
• A specification of one test, including
– Test objective
– Test behavior
• Defined as a BehavioralFeature in UML
• It’s method is the behavior of the test case
«testCase» +validWithdrawal() : Verdict
«testContext»
ATMContext
«testCase»
+validWithdrawal() : Verdict
+invalidPIN() : Verdict
-authorizeCard() : Verdict
© Telelogic AB
UML Testing Profile
Test Behavior
• Describes the expected behavior of a test case
• Defined using any type of UML behavior
– Interactions, statemachines and activities
• Facilitates specification of arbitrarily complex behavior
sd ATMContext
«sut»
atm
hwe
ref
invalidPIN()
Idle
storeCardData(currentCard)
display(”Enter PIN”)
[verdict == pass]
[verdict == fail]
WaitCode
isPinCorrect(enteredPIN)
ref
validWithdrawal()
true
© Telelogic AB
UML Testing Profile
Test Architecture
• A complete specification of all types used in the tests
– An ordinary UML package
– Contains Test Contexts, Test Components, Ports, Interfaces, etc.
«testArchitecture»
ATMTest
© Telelogic AB
UML Testing Profile
Test Architecture Example
«testArchitecture»
ATMTest
IAccount
«testContext»
ATMContext
«testComponent»
HWEmulator
bePort
«testCase»
+validWithdrawal() : Verdict
+invalidPIN() : Verdict
-authorizeCard() : Verdict
-pinOk : Boolean
-enteredPIN : String
-message : String hwCom
«testComponent»
BankEmulator
*
IScreen, ICardMachine,
IMoneyBox
IATM
accounts
Account
balance : Integer
number : String
credit(a : Integer)
debit(a : Integer)
ATM::CardData
*
cards
pinCode : Integer
number : String
isPinCorrect(c: Integer) : Boolean
© Telelogic AB
UML Testing Profile
Test Component
• Implements (parts of ) the behavior of one or more test cases
• Each test case is normally executed by several components
• Ordinary classes or components
«testComponent»
HWEmulator
-pinOk : Boolean
-enteredPIN : String
-message : String hwCom
0..1
IScreen, ICardMachine, IMoneyBox
IATM
-currentCard
ATM::CardData
pinCode : Integer
number : String
isPinCorrect(c: Integer) : Boolean
© Telelogic AB
UML Testing Profile
Test Context
• A classifier that contains
– a number of test cases and their behavior and objectives
– default behavior used by the test cases
– configuration of test components
– test control behavior
• Can be a class, a component or a collaboration
«testContext»
ATMContext
«testCase»
+validWithdrawal() : Verdict
+invalidPIN() : Verdict
-authorizeCard() : Verdict
© Telelogic AB
UML Testing Profile
Test Configuration
• A specification of the structural aspects of test cases
• Defines the parts participating in the test case and their
interconnections
– Test Components, SUT, Ports, Interfaces and Connectors
• Defined as the internal structure of the Test Context
«sut»
atm : BankATM
be : BankEmulator
netCom
bePort
atmPort
hwCom
hwe : HWEmulator
accnts : Account [0..*]
© Telelogic AB
UML Testing Profile
Test Control
• Test execution can be controlled is two ways
– By defining the classifier behavior of a test context
– Or by invoking the test cases from outside of the context
© Telelogic AB
UML Testing Profile
Test Control by ClassifierBehavior
sd ATMContext
ref
invalidPIN()
«testContext»
ATMContext
«testCase»
+validWithdrawal() : Verdict
+invalidPIN() : Verdict
-authorizeCard() : Verdict
[verdict == pass]
ref
[verdict == fail]
validWithdrawal()
© Telelogic AB
UML Testing Profile
Test Control by Invocation
ad myOp
«testContext»
MyTestContext
MyClass
-verdict : Verdict
+myOp()
verdict := context.TC1()
-context
*
«testCase»
+TC1() : Verdict
+TC2() : Verdict
-TC3() : Verdict
[verdict == pass]
[else]
verdict := context.TC2()
© Telelogic AB
UML Testing Profile
Test Data
• Parameters, default values, return values are reused from UML
without changes
• Logical partitions
• Pattern matching
• TDB
© Telelogic AB
UML Testing Profile
Test Deployment
• Test Deployment is important, but there is probably no
difference between deploying test systems compared to
ordinary UML systems.
• We will try to reuse the existing UML deployment concepts
without changes
• Under investigation
© Telelogic AB
UML Testing Profile
Advanced Concepts
•
Test Evaluation
– Verdict
– Validation action
– Arbiter
•
•
Default behavior
Structural and behavioral reuse
© Telelogic AB
UML Testing Profile
Test Evaluation
• A number of concepts are used to evaluate test results
– Verdicts
– Validation actions
– Arbiter
© Telelogic AB
UML Testing Profile
Verdicts and Validation Actions
•
•
•
Each test component is
associated with a verdict
«sut»
Client
Validation Actions are used
to set the verdict
A Validation Action sets the
verdict of a test component
and reports the verdict to
the Arbiter
ATM
storeCardData(cardData)
display(”Enter PIN”)
isPinCorrect(pin)
alt
true
false
setverdict(fail)
© Telelogic AB
UML Testing Profile
Arbiter
• A test component that knows how to evaluate the test behavior
• Separates test evaluation from test case specification
– One behavior can yield different results
• Each test context has a default arbiter
– Implicit connections to all test components
– TTCN 3 semantics
• Advanced arbiters can be defined
– Caters for more advanced semantics
«arbiter»
myArbiter
setVerdict(v : Verdict)
© Telelogic AB
UML Testing Profile
Default behavior
•
•
•
Defines behavior for unexpected observations
Can be expressed using any UML behavior
Can be applied to several different levels:
– Test component
sd authorizeCard
– Message reception
– Alternative statement
«sut»
Client
– ...
ATM
storeCardData(cardData)
enterPinDefault
display(”Enter PIN”)
isPinCorrect(pin)
true
© Telelogic AB
UML Testing Profile
sd enterPinDefault
self
alt
getStatus
statusOk
Default expressed
as interaction...
setverdict(pass)
display(”Connection lost”)
setverdict(inconc)
ejectCard()
setverdict(fail)
© Telelogic AB
UML Testing Profile
enterPinDefault
getStatus / ^statusOk, setverdict(pass);
...and as
statemachine
ejectCard /
setverdict(fail)
*
display(”Connection lost”) /
setverdict(inconc)
The representations are semantically equivalent
© Telelogic AB
UML Testing Profile
Meta Default
• Each test component has a meta default to cater for
differences in semantics
• Can be redefined
MetaDefault
*
* / defer
© Telelogic AB
UML Testing Profile
Reuse of Test Structure and Behavior
© Telelogic AB
UML Testing Profile
«testContext»
ATMContext
«sut»
atm : BankATM
be : BankEmulator
netCom
accnts : Account [0..*]
bePort
atmPort
ATM
hwCom
hwe : HWEmulator
ac: AuthorizationContext
Client
© Telelogic AB
UML Testing Profile
sd ValidWithdrawal
«sut»
atm
hwe
atmPort
ref
be
netCom
ac.authorizeCard()
selectOperation(withdrawal)
true
withdraw(amount)
findAccount(cardData)
account
debitAccount(account, amount)
true
deliverMoney(amount)
display(”Take cash”)
true
© Telelogic AB
UML Testing Profile
Summary
• The testing profile enables complete graphical specification of
tests for conformance testing of UML models
– Defined as a UML profile
– Reuses existing UML concepts whenever possible
– Designed for inter-operation with TTCN-3 and other technologies
• Due date
– January 6th, 2003
• More information
– Testing Profile Consortium
– OMG’s Testing Profile page
© Telelogic AB
Download