Automated Test Framework for SIP Elements SIP Protocol

  • Slides: 10
Download presentation
Automated Test Framework for SIP Elements SIP Protocol Compliance

Automated Test Framework for SIP Elements SIP Protocol Compliance

Motivation • SIP is complex • Many distributed components • Features interact • Extreme

Motivation • SIP is complex • Many distributed components • Features interact • Extreme Programming – Frequent integration / releases – Continuous / Automated testing • SIP is open – many 3 rd party components 2

Goals of the Framework • • • Rapid test execution / verification Test protocol

Goals of the Framework • • • Rapid test execution / verification Test protocol compliance Support rapid production of test suites – Translation from calls flows to executable • • • 3 Robust to variation in timing/parallelism Incorporate provisioning Programmer friendly Can be completely automated Open to manual endpoint operation Tests can be realized by non-programmers

Features • • 4 Automated Write tests quickly Parallel events Easy to elaborate Provisioning

Features • • 4 Automated Write tests quickly Parallel events Easy to elaborate Provisioning Embedded Proxy Negative tests Retransmissions • Useful feedback on failure • Full compliance with 3261 and many drafts • UDP, TCP, TLS • S/MIME • Portable to other stacks

Sequence Notation 5

Sequence Notation 5

Sequence Notation 6

Sequence Notation 6

Simple Example Warning. Log(<<"*!test. Register. Basic!*"); Test. User jason(Uri("sip: jason@localhost"), "jason"); Seq(jason. register. User(60,

Simple Example Warning. Log(<<"*!test. Register. Basic!*"); Test. User jason(Uri("sip: jason@localhost"), "jason"); Seq(jason. register. User(60, jason. get. Default. Contacts()), jason. expect(REGISTER/407, from(proxy), Wait. For. Response, jason. digest. Respond()), jason. expect(REGISTER/200, from(proxy), Wait. For. Response, jason. no. Action()), Wait. For. End. Of. Test); Execute. Sequences(); 7

Primitives • Expect Actions – invite, subscribe, ring 183, ack – ack. Referred, bye,

Primitives • Expect Actions – invite, subscribe, ring 183, ack – ack. Referred, bye, ok, cancel – send 404, send 486, send 487, send 202, etc. – notify 200, send 100, digest. Respond, etc. – reinvite, note, invite. Refer. Replaces, pause, Chain 8 • Provisioning – – – Endpoints, Hunt Groups, etc. Forwarding rules Dial Plans Companies • Actions – register, invite, notify, subscribe, Chain • Predicates – from, message. Type, timely, Chain

Primitives Contd. • Custom actions – Parameter validation – Extended header validation • Conditioners

Primitives Contd. • Custom actions – Parameter validation – Extended header validation • Conditioners – Insert/modify parameters and headers on the fly • Free-form messages – For doing torture tests • Message retransmissions 9

Development Process • Build up tests against known bugs, tricky cases • Write a

Development Process • Build up tests against known bugs, tricky cases • Write a test before developing a new feature • Build up library of actions, predicates • Translate RFC call flows • Add an automated test whenever a bug is found – then fix the bug. • Programmers run automated tests everyday 10