Descriptive WSDL Smoke Test Scenarios

From Eclipsepedia

Revision as of 14:24, 8 April 2010 by Rkklai.ca.ibm.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The smoke tests are organized into three categories: core tests, secondary rotating tests and adhoc tests. In every test run, the goal is to devote 60% of the time to core tests from which every test should be run, 30% to secondary rotating tests from which a tester can pick two or three tests making sure to cover each test at least once in a milestone, and 10% to adhoc test which can be picked randomly.

Contents

Core Tests

Every test in this category should be run in every smoke test.

Open and Close Editor

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and make sure you're in the design view
  3. Verify you can find PhoneBanking service, a square icon representing the binding and a Port Type named PhoneBanking with four operations.


File Creation & Saving

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. File -> New -> Other... -> Web Services -> WSDL to create an new WSDL file: NewWSDLFile.wsdl
  3. Verify the new file is created and opened in the WSDL Editor
  4. Right click on the canvas and select Add Service and add a new service called NewService and add a new PortType named NewPortType as well
  5. Save and close the editor
  6. Reopen the editor and verify that the NewService and NewPortType are persisted.
  7. File -> Save As..., and use the name NewWSDLFileSaveAs.wsdl
  8. Verify the NewWSDLFileSaveAs.wsdl file appear in the navigator
  9. In NewWSDLFileSaveAs.wsdl, add a new service and a new PortType
  10. Close the editor without saving the changes
  11. Reopen the NewWSDLFileSaveAs.wsdl, and verify that the new changes are discarded

Selection Tests

Synchronization between Properties, Design, Source, and Outline views: while conducting the Add/Modify tests, delete tests, and drag & drop tests, observe that these three views are synchronized

Note: if the nodes are collapsed and you add a new child, the node will not automatically expand. Therefore to test synchronization, expand the nodes whenever necessary to verify the synchronization between the Outline and Design view

Add/Modify Tests

For the tests where a new item is added:

  • Verify that the item was successfully added by finding and selecting the item from the Outline view or Design view
  • Whenever possible, modify the name of the item by changing the Name property in the Properties view under General properties

Tests:

  1. Imports: in the Outline view, right click on the Imports node -> Add Import
  2. Schema: in the Outline view, right click on the Types node -> Add Schema
  3. Service: in the Outline view, right click on the Services node -> Add Service
  4. Port: in the Outline view, right click on a created Service -> Add Port -> add a name or use default -> click Finish
  5. Binding: in the Outline view, right click on the Binding node -> Add Binding
  6. Binding content: in the Outline view, right click on a created Binding -> Generate Binding Content... -> select a Port type and protocol -> press Finish. In the Design view, an arrow from the binding to a portType should be created
  7. Port Type: in the Outline view, right click on the Port Type node -> Add Port Type
  8. Operation: in the Outline view, select a created Port Type and right click -> Add Operation
  9. Fault: in the Outline view, select a created Operation (Operations are found in Port Type -> a created Port Type -> Operation) -> Add Fault
  10. Message via Port Type: in the Outline view, select a created Port Type and expand the node until you see two blue arrows representing Input and Output. Right click on the blue arrow pointing right -> Set Message -> New Message... The newly created message will show up in the Messages node. Right click on the blue arrow pointing left -> Set Message -> Existing Message... -> Choose an existing message -> in the Properties view under General properties, the Message property should match the message you chose
  11. Message: in the Outline view, right click on the Messages node -> Add Message
  12. Part: in the Outline view, right click on a created Message -> Add Part
  13. Repeat the same steps for Design View. The UI element to mouseover and right click for each test is highlighted when selected in the Outline view

Delete Tests

For each of the items created in the Add/Modify test, right click on the item or an equivalent item -> Delete

Search & Refactoring

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl
  3. In the Outline view, right click Port Type -> PhoneBanking and select References -> Project
  4. Verify that there is one reference in PhoneBanking.wsdl
  5. Right click Port Type -> PhoneBanking again and select Refactor -> Rename...'
  6. Check Update references and change the name to PhoneBankingChanged and click Preview ->
  7. Verify that there are two changes in PhoneBanking.wsdl
  8. Click OK and verify that the changes in the preview are applied to the file using the editor. (Hint: can search for PhoneBankingChanged in the file.)

Validation

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and switch to source view
  3. Replace <wsdl:portType name="PhoneBanking"> with <wsdl:portType name="PhoneBankingChanged">
  4. Right click on the WSDL file in the Package Explorer and select Validate
  5. Verify that a red X should show up because the WSDL file is invalid
  6. Revert the changes and re-validate
  7. Verify that the X disappears

Secondary Rotating Tests

Two or three tests from this category should be run in every smoke test. Testers should make sure every test should be run at least once in any given milestone.

Drag & Drop

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and make sure you're in the design view
  3. Locate the PhoneBanking PortType and its getAccountSummary operation
  4. Verify you can drag & drop to re-order the input and output of the operation
  5. Save and reopen the file
  6. Verify that the changes are persisted

Source Editing

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and switch to the source view
  3. Go the this line <soap:body use="literal" /> and change it to <soap:body use="literalChanged" />
  4. Verify that red squiggles underline "literalChanged" (no red squiggles see https://bugs.eclipse.org/bugs/show_bug.cgi?id=124911)
  5. Move the cursor before <wsdl:types> and hit Ctrl + space
  6. Verify that you see content assist like
    TopLevelWSDLElements.png
  7. Move the cursor after <wsdl:binding name="PhoneBankingSOAP" type="tns:PhoneBanking">
  8. Verify that you see content assist like
    BindingContentAssist.png
  9. Try content assist in various places if you're familiar with WSDL
  10. Add the following code snippet to as a child of <wsdl:definitions> (i.e. the document root)
<wsdl:service name="NewService">
   <wsdl:port name="NewPort">
      <soap:address location="http://www.example.org/" />
   </wsdl:port>
</wsdl:service>
  1. Switch to the design view
  2. Verify that the NewService is visible on the canvas
  3. Add a new binding in design view by using right click -> Add Binding
  4. Switch back to the source view
  5. Verify that you can find <wsdl:binding name="NewBinding"></wsdl:binding>

Hyperlink Navigation

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and switch to the source view
  3. Go the this line <wsdl:port binding="tns:PhoneBankingSOAP" name="PhoneBankingSOAP">
  4. Hold Ctrl and click on "tns:PhoneBankingSOAP"
  5. Verify that the source editor "jumps" to this line <wsdl:binding name="PhoneBankingSOAP" type="tns:PhoneBanking">

Extensions

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and make sure you're in the design view
  3. In the Outline view, right click Bindings -> PhoneBankingSOAP and select Show properties
  4. Click on the Extensions tab
  5. Verify that you can see the soap:binding extension
  6. Click Add...
  7. Select HTTP and then select binding and click OK
  8. Verify that an extension p:binding is added where p is defined in the source view as xmlns:p="http://schemas.xmlsoap.org/wsdl/http/"
  9. Fill in the Extension Details like required="true" and verb="abc"
  10. Save and reopen the file
  11. Verify the newly added extension is persisted
  12. Delete the p:binding extension
  13. Verify the extension is deleted

Schemas

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl and make sure you're in the design view
  3. Hover your mouse over the arrow next to BillInfo
  4. Verify a schema preview popup shows up
  5. Click on the canvas to close the popup (Note: if this doesn't close it, click on the popup to close it.)
  6. Click on the arrow next to BillInfo
  7. Verify an external Schema Editor is opened on the file PhoneBanking.xsd showing the BillInfo
  8. Go back to the WSDL Editor of PhoneBanking.wsdl
  9. Right click on the PortType PhoneBanking and select Add Operation
  10. Click one of the faded gray arrows that appears on the right side of the new Operation
  11. Verify that an external Schema Editor is opened and its title says Inline Schema of PhoneBanking.wsdl

Preferences

  1. Go to Window -> Preferences -> Web Services -> WSDL Files
  2. In Default Target Namespace, set it to http://myDefaultTNS
  3. Create a new WSDL file named NewWSDLFile.wsdl using File -> New -> Other... -> Web Services -> WSDL
  4. Verify that you can find this attribute targetNamespace="http://myDefaultTNS/NewWSDLFile/" in the <wsdl:definitions> tag

WS-I Compliance

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Open XMLExamples/PhoneBanking/PhoneBanking.wsdl
  3. Create a new WSDL file using the following content:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="WSIComplianceWSDL"
	targetNamespace="http://www.example.org/WSIComplianceWSDL/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:tns="http://www.example.org/WSIComplianceWSDL/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:http="http://schemas.xmlsoap.org/wsdl/http/">
	<wsdl:types>
		<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			targetNamespace="http://www.example.org/WSIComplianceWSDL/">
			<xsd:element name="NewOperation">
				<xsd:complexType>
					<xsd:sequence>
 
						<xsd:element name="in" type="xsd:string"></xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="NewOperationResponse">
				<xsd:complexType>
					<xsd:sequence>
 
						<xsd:element name="out" type="xsd:string"></xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="NewOperationRequest">
		<wsdl:part name="parameters" element="tns:NewOperation"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="NewOperationResponse">
		<wsdl:part name="parameters" element="tns:NewOperationResponse"></wsdl:part>
	</wsdl:message>
	<wsdl:portType name="NewPortType">
		<wsdl:operation name="NewOperation">
			<wsdl:input message="tns:NewOperationRequest"></wsdl:input>
			<wsdl:output message="tns:NewOperationResponse"></wsdl:output>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="NewBinding" type="tns:NewPortType">
		<http:binding verb="GET" />
		<wsdl:operation name="NewOperation">
			<http:operation location="/NewOperation" />
			<wsdl:input>
				<http:urlEncoded />
			</wsdl:input>
 
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="NewService">
		<wsdl:port name="NewPort" binding="tns:NewBinding">
 
            <http:address location="http://www.example.org/"/>
        </wsdl:port>
	</wsdl:service>
</wsdl:definitions>
  1. Go to Window -> Preferences -> Service Policies
  2. Set the Compliance Level to Ignore compliance for both WSI AP 1.0 and WSI BP 1.1 SSBP 1.0
  3. Validate the WSDL file, and verify no WS-I warnings appear
  4. Change the Compliance Level to Suggest compliance
  5. Validate the WSDL file again, and verify there are WS-I warnings
  6. Change the Compliance Level to Require compliance
  7. Validate the WSDL file again, and verify there are WS-I errors

Adhoc Tests

Please go to Full WSDL Function Test Scenarios and randomly pick some tests that are not in neither the core tests nor the secondary rotating tests.

Links