IV. EXECUTION MODEL FOR AGILE TESTING
IV.5.1 RAMP Conformance Test
It is common to implement and deploy web services in accordance with a certain guideline for their interoperability. Examples include WS-I (Web Service Interoperability) Basic Profile, WS-I Basic Security Profile, WS-I Reliable Secure Profile, RAMP (Reliable Asynchronous Messaging Profile), and so on. Among them, RAMP is an advancement of WS-I profiles and developed for integrating industrial web services. The purpose of the RAMP conformance test is to ensure a web service messaging engine’s compliance to RAMP’s regulations and requirements. In addition to the WS-I profiles, RAMP refers to various existing standards such as WSA (Web Service Addressing), WSRM (Web Service Reliable Messaging), and WSS (Web Service Security); therefore the conformance test needs to verify the message engine against the basic regulations and message patterns from those standards. We used an ETSL (Event-driven Test Script Language) as the executable test case to the RAMP test. An ETSL test case consists for a test sequence and a set of test assertions for a specific test
requirement. Figure IV-7 (A) is an exemplary ETSL test case for the RAMP test, from which the interpreter makes an internal process script in WS-BPEL as shown in Figure IV-7 (B).
(A)
<?xml version="1.0" encoding="UTF-8"?>
<call adapter="kr.ac.postech.korbit.ramptb.transport.SimpleSOAPTransport" step="step1" type="event"> <param arg="1">
<template document="createSequence.xml"> <set value="UUID();" var="CS_MessageId" /> <set value="TBIP();" var="From" /> <set value="TargetIP();" var="To" /> </template>
</param> </call>
<!-- ========== step 2: wating for the CreatResponse message--> <sleep duration="2" step="step2" />
<!--========== step 3: retrieve CreatResponse message from Events Board--> <find get="last" step="step3">
<selector> <ns prefix="SOAP">http://schemas.xmlsoap.org/soap/envelope/</ns> <ns prefix="wsa">http://schemas.xmlsoap.org/ws/2004/08/addressing</ns> <ns prefix="wsrm">http://schemas.xmlsoap.org/ws/2005/02/rm/</ns> <ns prefix="xsd">http://www.w3.org/2001/XMLSchema</ns> <ns prefix="xsi">http://www.w3.org/2001/XMLSchema-instance</ns> <xpath>Events/event/content/SOAP:Envelope[SOAP:Header/wsa:RelatesTo='%CS_MessageId%']</xpath> </selector> </find>
<!--========== step 4: Store Sequence Identifier in the CreatResponse message-->
<set step="step4" value="$output/SOAP:Envelope/SOAP:Body/wsrm:CreateSequenceResponse/wsrm:Identifier" var="Identifier"> <ns prefix="SOAP">http://schemas.xmlsoap.org/soap/envelope/</ns> <ns prefix="wsa">http://schemas.xmlsoap.org/ws/2004/08/addressing</ns> <ns prefix="wsrm">http://schemas.xmlsoap.org/ws/2005/02/rm/</ns> <ns prefix="xsd">http://www.w3.org/2001/XMLSchema</ns> <ns prefix="xsi">http://www.w3.org/2001/XMLSchema-instance</ns> </set>
<!-- ========== step 5: Test Assertion [R3002] --> <cad step="step4"> <ns prefix="SOAP">http://schemas.xmlsoap.org/soap/envelope/</ns> <ns prefix="wsa">http://schemas.xmlsoap.org/ws/2004/08/addressing</ns> <ns prefix="wsrm">http://schemas.xmlsoap.org/ws/2005/02/rm/</ns> <ns prefix="xsd">http://www.w3.org/2001/XMLSchema</ns> <ns prefix="xsi">http://www.w3.org/2001/XMLSchema-instance</ns> <condition>output/SOAP:Envelope</condition> <do>
<post evtype="verifyMessage" step="step8"> <evproperties>
<property name="result">Success</property> <property name="req_Id">[R3002]</property>
<property name="description">SOAP:Envelope is basic packaging</property> </evproperties>
<content>Supplier's CreateResponse Message is satisfied [R3002]</content> <!-- other evt attributes automatically set -->
</post> </do> … (B) <?xml version="1.0" encoding="UTF-8"?> <process …namespaces…> <partnetLinks> <partnerLink name="XPTHEngine" <partnerLink name="SOAPME" </partnerLinks> <sequence> <Start/>
<Call operation="SEND" partnerLink = “SOAPME” … /> <Find targetSchema=""…/>
<Call operation="Upload" … /> <Set case = "#319291_assertion"> <Set case = "#121231_assertion"> <case condition="getVariableProperty
(validationRule, ruleType) = XPATH">
<Call partnerLink=" XPTHEngine " … /> </case>
<Report partnerLink="RAMP_Report_Engine" … /> </sequence>
</process>
Figure IV-7 (A) Sample RAMP executable test cases and (B) Internal Process Script
The RAMP testbed uses an XPath validation engine as TVI, a SOAP messaging engine as MEI, and a RAMP report engine as TUI. TCE discovers these engines in the UDDI and plugs them in TMC. Figure IV-8 shows the RAMP testbed. The RAMP test service uses only the nine primary actions. According to the sequence information, TSE invokes the corresponding interface instance as follows:
1) Invoke the SOAP messaging engine to send a test message to the SUT,
2) Invoke the SOAP messaging engine to receive a response message from the SUT, 3) Invoke the XPath validation engine to validate the response message, and
4) Invoke the RAMP report engine to generate a 5) Generate test report and to notify it to the test user.
Indeed, the steps (1) and (2) above are one invocation of the solicit-response type.
Figure IV-8 RAMP Testbed Implementation