1 TRex Paul Baker 1, Dominic Evans 1, Jens Grabowski 2, Helmut Neukirchen 2, Benjamin Zeiss 2 The...
-
Upload
bertina-morton -
Category
Documents
-
view
215 -
download
0
Transcript of 1 TRex Paul Baker 1, Dominic Evans 1, Jens Grabowski 2, Helmut Neukirchen 2, Benjamin Zeiss 2 The...
1
TRex
Paul Baker1, Dominic Evans1, Jens Grabowski2, Helmut Neukirchen2, Benjamin Zeiss2
The Refactoring and Metrics Toolfor TTCN-3 Test Specifications
1Motorola Labs, Viables Industrial Estate, Basingstoke, UK
2Software Engineering for Distributed Systems Group,University of Göttingen
Presented by Rob Thomson1
2
TTCN-3
• Testing and Test Control Notation– Test specification and test implementation
language– Standardised by ETSI and the ITU
• Originally for functional black-box testing of telecoms systems. Now also for– Internet protocols– Automotive– Aerospace– …
3
Outline
• Motivation
• Metrics
• Refactoring
• TRex Tool
• Summary / Outlook
4
Motivation
• Migration of legacy test suites at Motorola:– Automatic Conversion of tests for a UMTS based
component– 60,000 lines of code– Hard to read, hard to (re-)use, and hard to maintain
• Current tools:– IDE functionality (editing, outline, etc.)– Compiler– Test-Management– But: No support for improving test suites!
5
Approach
• Initial aims:– Assessment of test suites with respect to
lessons learnt from experience– Issue detection– Test suite restructuring
• Assessment and restructuring in TRex using– Metrics– Automated Refactorings
6
Outline
• Motivation
• Metrics
• Refactoring
• TRex Tool
• Summary / Outlook
7
TTCN-3 Metrics (1/2)
• Quantitative measures of a software product– Deliver hints about possible quality issues in test suites
• TTCN-3 metrics:– Number of non-commented lines of TTCN-3 source code– Number of and references to
• Test cases
• Functions
• Altsteps
• Component, data and port types
• Template definitions
• Parameterized templates
8
TTCN-3 Metrics (2/2)
• Template Coupling:– Measures the coupling between data description
and test behavior
9
Outline
• Motivation
• Metrics
• Refactoring
• TRex Tool
• Summary / Outlook
10
Refactoring: Definition
„a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior“
Fowler, M.: Refactoring – Improving the Design of Existing Code. Addison-Wesley (1999)
11
TTCN-3 Refactoring Catalog
• Refactorings are typically described in catalogsName, Summary, Motivation, Mechanics, Example
• 28 (of 72) refactorings from Fowler are applicable
• 20 specific refactorings for TTCN-3e.g. Alt-steps, groups, concurrency, module parameterization
• TTCN-3 refactoring catalog grouping:– Test behavior– Data descriptions– Overall test suite structure
12
TTCN-3 Refactoring Catalog
• TTCN-3 specific refactorings:
– Test behavior (5 refactorings)• Extract Altstep• …
– Data descriptions (6 refactorings)• Inline Template• …
– Overall test suite structure (9 refactorings)• Extract Module• …
13
Refactoring: Inline Template Parameter (1/2)
module ExampleModule { type record ExampleType { boolean ipv6, charstring ipAddress }
template ExampleType exampleTemplate(charstring addressParameter) := { ipv6 := false, ipAddress := addressParameter }
testcase exampleTestCase() runs on ExampleComponent { pt.send(exampleTemplate("127.0.0.1")); pt.receive(exampleTemplate("127.0.0.1")); }
}
• Original code:
14
module ExampleModule { type record ExampleType { boolean ipv6, charstring ipAddress }
template ExampleType exampleTemplate := { ipv6 := false, ipAddress := "127.0.0.1" }
testcase exampleTestCase() runs on ExampleComponent { pt.send(exampleTemplate); pt.receive(exampleTemplate) }
}
Refactoring: Inline Template Parameter (2/2)
• Refactored code:
15
Automation
• Automated calculation of metrics – Locates problematic code pieces using appropriate
boundary values– Used for refactoring suggestions
• Tool supported refactoring– Lowers the probability that the observable behavior is
changed due to a refactoring
– Takes less time than manual refactoring
– Is well known from the Java world: Eclipse JDT, Jetbrains IDEA
16
Outline
• Motivation
• Metrics
• Refactoring
• TRex Tool
• Summary / Outlook
17
TRex Features (1/3)
• TTCN-3 core notation editing– Syntax Highlighting– Content Assist– Outline View– Code Formatter– Text hover– Open Declaration– Find References
• Compiler Integration– Telelogic Tau G2/Tester
18
TRex Features (2/3)
• Refactorings (currently):– Rename– Inline Template– Inline Template Parameter– Parameterize Template
• Metrics– Basic metrics– Metrics-based refactoring suggestions
19
TRex Features (3/3)
20
Outline
• Motivation
• Metrics
• Refactoring
• TRex Tool
• Summary / Outlook
21
Summary
• Metrics and refactoring for TTCN-3:– Address maintenance, reusability and readability
problems of converted legacy test suites– Less error-prone and less time consuming due to
tool support
• TRex: – IDE for TTCN-3– Automatic assessment and restructuring of test
suites
22
TRex Availability
• TRex is open source and available now!
• Eclipse Public License
• Interested java developers are welcome to join the project
www.trex.informatik.uni-goettingen.de
23
Outlook
• Enhanced editing functionality
• More refactoring implementations
• Metrics based on control-flow and call-graphs
• Identification of useful metric boundary values
• Automatic pattern-based code smell detection
24
www.trex.informatik.uni-goettingen.de
25
• Backup
26
TRex tool chain
(3) Quality Assessment (2) Automated Refactorings
(1) Static Analysis
Eclipse PlatformUser
InterfaceResource
ManagementText
EditorLanguage
Toolkit...
TTCN-3Core
Notation
ANTLRLexing,Parsing
Refactoring Processor
RefactoredTTCN-3
CoreNotation
Transformed Subtree of theSyntax Tree
Pretty Printer
Change Weaver
Syntax Tree /Symbol Table
Metrics
Rule-Based Refactoring Suggestions
27
TRex ArchitectureTRex Feature
TRex ANTLR Plug-In
Eclipse Platform
TRex Refactoring UI
Trex Core Plug-In
TTCN-3 Parser
Syntax Tree
Code Formatter Symbol Table
TRex UI Plug-In
Content Assist Find References View TexthoverTTCN-3 Editor
TRex Refactoring Core
Inline Template Rename Inline Template Parameter Merge Templates