170 likes | 361 Views
An overview on the Testing and Test Control Notation version 3 (TTCN-3). Helmut Neukirchen Háskóli Íslands helmut@hi.is http://www.hi.is/~helmut. Outline. About me What is TTCN-3? TTCN-3 example Test automation with TTCN-3 Conclusions. 1. About me. Helmut (í. Helmút) Neukirchen:
E N D
An overview on the Testing and Test Control Notation version 3 (TTCN-3) Helmut Neukirchen Háskóli Íslands helmut@hi.is http://www.hi.is/~helmut
Outline • About me • What is TTCN-3? • TTCN-3 example • Test automation with TTCN-3 • Conclusions Helmut Neukirchen: TTCN-3
1. About me • Helmut (í. Helmút) Neukirchen: • Born and educated in Germany: University of Aachen, University of Lübeck, University of Göttingen. PhD in Computer Science. • Since 2008: • Associate professor for Computer Science and Software Engineering at University of Iceland. • Working in the field of software quality and distributed systems, in particular testing distributed systems and quality of tests. • Test methodology, test languages, test tools, test metrics, test “smells”, test refactoring, test patterns, standardisation of tests. • If you have interesting testing problems for students to work on as part of their BSc, MSc, PhD project: contact me! • Office in Tæknigarður, best contacted via e-mail: helmut@hi.is Helmut Neukirchen: TTCN-3
2. What is TTCN-3? • Testing and Test Control Notation version 3 • Test specification and test implementation language. • Test cases specified at an abstract level. • Hardware and operating system independent. • Can be turned into automated test cases by • compiling into executable code, • adding an adaptation layer. • Standardised technology: • European Telecommunication Standards Institute (ETSI). • International Telecommunication Union (ITU). • Strength in functional black-box testing of distributed systems. • However, applicable to various other domains, levels, and types of tests: • Embedded systems, distributed systems, pure software systems. • From unit test to acceptance test level. • From functional to non-functional (real-time, load, performance) tests. Helmut Neukirchen: TTCN-3
3. TTCN-3 example:Scenario • Black-box test of a message-based weather service: • Purpose of a very simple example test case: • Send weather request for Reykjavik to SUT. • Check that weather response is received containing: • location “Reykjavik” • any date, • temperature within a reasonable range (-60..+60°C) • wind speed within a reasonable range (0..100m/s). Test System System Under Test (SUT) 1. Weather request(“Reykjavik”) Test case Weather service 2. Weather response(“Reykjavik”, 25.11.2009, 3°C, 9m/s) Helmut Neukirchen: TTCN-3
Test component Test component Real Test System Interface TTCN-3 example:Test architecture TTCN-3 supports distributed, parallel test components. Test behaviour is executed by a test component. • Weather service example: • SUT=Weather service, • Simple example test case: only one test component needed. • However, for some load test, we could, e.g., run the same test case in parallel on multiple test components to generate some load. Test component Specified and implemented using TTCN-3 language TestSystem Out In Abstract Test System Interface Ports Test adapter (implemented using Java, C, C++ etc.) System Under Test (SUT) Black-box Helmut Neukirchen: TTCN-3
TTCN-3 example:Definition of data types and test data module WeatherServiceTestSuite { type record weatherRequest { charstring location } template weatherRequest ReykjavikWeatherRequest := { location := "Reykjavik" } type record weatherResponse { charstring location, charstring date, integer temperature, integer windVelocity } template weatherResponse ReykjavikWeatherResponse := { location := "Reykjavik", date := *, temperature := (-60..60), windVelocity := (0..100) } Definition of data types. Templates=Definition of test data. Definition of test data: powerful matching mechanism allows fuzziness (wildcards, ranges, regular expressions). Helmut Neukirchen: TTCN-3
TTCN-3 example:Definition of ports and interfaces type port weatherPort message { in weatherResponse; out weatherRequest; } typecomponent TestComponentType { port weatherPort weatherOffice; } Definition of a port used for communication: allowed messages (=data types). Definition of a test component type: ports that may be used by test behaviour running on an instance of that component type. Helmut Neukirchen: TTCN-3
TTCN-3 example:Definition of test behaviour testcase testWeather() runson TestComponentType { weatherOffice.send(ReykjavikWeatherRequest); alt { [] weatherOffice.receive(ReykjavikWeatherResponse) { setverdict(pass) } [] weatherOffice.receive { setverdict(fail) } } } // End of testcase control { execute(testWeather()) } } // End of module Test component type used to run test case behaviour. Send message specified by template via port. Two expected alternatives: Either expected response (i.e. matched by template) is received (PASS) or any other response is receive (FAIL). Specification of order (and, e.g., conditional execution) of test cases. Helmut Neukirchen: TTCN-3
TTCN-3:Further concepts • Not presented in the previous example: • Procedure-based communication, • Timer and catching timeouts, • Distributed testing using parallel test components, • Concepts from general-purpose programming languages: • Conditional statements (if-then-else, for, while, …), • Local variables, • Functions, • Parametrisation. Helmut Neukirchen: TTCN-3
4. Test automation with TTCN-3 • TTCN-3 test cases are abstract:weatherOffice.send(ReykjavikWeatherRequest)makes no statement • how the actual communication shall be implemented: • UDP datagram? • SOAP over http? • SMS over GSM? • …? • how the data to be communicated shall be encoded: • XML? • Proprietary ASCII-based format? • Proprietary binary format? • …? Helmut Neukirchen: TTCN-3
Test adaptation • Automatically executable TTCN-3 test suite = • Compiled TTCN-3 test cases + • CoDecs (encode data to be sent to SUT / decode datareceived from SUT) + • SUT adapter (communication with SUT) + • Platform adapter (operating system specific) Test tool user interface TTCN-3 Test System Test Control Logging Codecs [compiled] TTCN-3 Executable SUT Adapter Platform Adapter System Under Test (SUT) Note: TTCN-3 execution tools come with default test control, logging, and platform adapter. Helmut Neukirchen: TTCN-3
TTCN-3 & Re-usability • Separation of concerns (abstract test case description vs. concrete adaptors): • Re-use TTCN-3 test cases for different SUTs: • Same, unmodified weather service test case can be used for SOAP/http-based system under test, for SMS/GSM-based system under test, etc. • Re-use adaptors for different test cases: • A SOAP/http SUT adaptor can be used for testing all kinds of Web services, an SMS/GSM SUT adaptor can be used for testing all kinds of mobile services, etc. Helmut Neukirchen: TTCN-3
TTCN-3 tools • Tools for, e.g., editing, compiling, deploying, executing, debugging TTCN-3: • Telelogic Tester (IBM/Rational/Telelogic, Sweden), • TTworkbench (Testing Technologies, Germany), • OpenTTCN Tester for TTCN-3 (OpenTTCN, Finland) • TTCN-3 toolbox (Danet, Germany), • Exhaustif/TTCN (Métodos y Tecnología, Spain), • MessageMagic (ELVIOR, Estonia), • TTCN-3 Express (Fraunhofer FIRST/Metarga, Germany). • TRex TTCN-3 Refactoring and Metrics tool (University of Göttingen/University of Iceland, Germany/Iceland) • Standardised language and test-tool interfaces: • No vendor lock-in! Helmut Neukirchen: TTCN-3
5. Conclusions • TTCN-3 benefits: • Standardised test technology supporting automated tests. • Well documented, many tools, no vendor lock-in. • Compatible with any test methodology and test management approach. • Fosters re-use. • Mature technology used by industry and standardisation. • Nokia, Ericsson, Siemens, Motorola, Huawei, ETSI, WiMax forum, Open Mobile Alliance, Automotive Open System Architecture, … • TTCN-3 standard freely available (via http://www.ttcn-3.org): • ETSI European Standard 201 873, ITU-T Recommendation Z.140 • TTCN-3 risks: • Heavyweight approach (may only pay off for big, distributed systems): • Compilers are expensive (>1000€). • Another language and technology to learn. • While Unit Testing is possible (and done) with TTCN-3, I would in most cases recommend a xUnit framework for Unit Testing. Helmut Neukirchen: TTCN-3
Thank you for your attention! • Make sure to use the right tools! Helmut Neukirchen: TTCN-3