Jump to: navigation, search

Difference between revisions of "Descriptive XSD Smoke Test Scenarios"

(Validation)
(Preferences)
Line 137: Line 137:
  
  
'''Qualify XSD constructs'''
+
===Qualify XSD constructs===
 +
# Go to ''Window -> Preferences -> XML -> XML Schema Files''
 +
# Check the Qualify XSD constructs preference
 +
# Modify the prefix and the target namespace 
 +
# Ensure that the prefix and target namespace is used by the new schema wizard: ''File -> New -> Others... -> XML -> XML Schema''
  
Check the Qualify XSD constructs preference. Modify the prefix and the target namespace.  Ensure that the prefix and target namespace is used by the new schema wizard.
 
  
 +
===Honour all schema locations===
  
'''Honour all schema locations'''
+
Test a schema that imports two other schemas with the same namespace and different locations.
  
Test a schema that imports two other schemas with the same namespace and different locations. Sample files are provided below or you can download the zip [[Image:Honourallschemaloc.zip]].  All three files must be in the same project.
+
# Import the XML Examples: ''New -> Example ... -> Editing and validating XML files''
 
+
# Download [[Image:Honourallschemaloc.zip]] and unzip the files to ''XMLExamples''
A.xsd
+
# Right click ''C.xsd'' and select ''Validate''.   
<source lang=xml>
+
# '''Verify''' that an error src-resolve.   
<?xml version="1.0" encoding="UTF-8"?>
+
# Go to ''Window -> Preferences -> XML -> XML Schema Files'', check "Honour all schema locations"  
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/A"
+
# Validate C.xsd again. '''Verify''' that the error message should disappear.
xmlns:tns="http://www.example.org/A" elementFormDefault="qualified">
+
 
+
<simpleType name="A">
+
<restriction base="string"></restriction>
+
</simpleType>
+
</schema>
+
</source>
+
 
+
''B.xsd''
+
<source lang=xml>
+
<?xml version="1.0" encoding="UTF-8"?>
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/A"
+
xmlns:tns="http://www.example.org/A" elementFormDefault="qualified">
+
 
+
    <simpleType name="B">
+
    <restriction base="string"></restriction>
+
    </simpleType>
+
</schema>
+
</source>
+
 
+
''C.xsd''
+
<source lang=xml>
+
<?xml version="1.0" encoding="UTF-8"?>
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/C"
+
xmlns:tns="http://www.example.org/C" elementFormDefault="qualified"
+
xmlns:a="http://www.example.org/A">
+
<import namespace="http://www.example.org/A" schemaLocation="A.xsd" />
+
<import namespace="http://www.example.org/A" schemaLocation="B.xsd" />
+
 
+
<simpleType name="C">
+
<restriction base="a:B"></restriction>
+
</simpleType>
+
</schema>
+
</source>
+
 
+
Validate C.xsdExpect to see an error src-resolve.  From the XSD Preferences, check "Honour all schema locations" and validate C.xsd again. The error message should disappear.
+
  
  
'''Modify full schema conformance'''
+
===Modify full schema conformance===
  
 
Download the schema overlap.xsd from https://bugs.eclipse.org/bugs/show_bug.cgi?id=162244 or alternatively, use the code below, which simulates the same scenario.
 
Download the schema overlap.xsd from https://bugs.eclipse.org/bugs/show_bug.cgi?id=162244 or alternatively, use the code below, which simulates the same scenario.
Line 213: Line 181:
  
  
'''Remove unused imports (New to 3.0.1)'''
+
===Remove unused imports (New to 3.0.1)===
  
Make sure the Directive "Automatically remove unused XSD imports and XML Namespace entries" is unchecked. Make changes if needed and press OK, otherwise press cancel.  Select an XML Schema -> right click on the Directives node in the Outline view -> Add Import -> In the Properties view, select General from the vertical tab -> press the ... button for Schema location -> choose Workbench projects and press Next -> choose an XML schema, which isn't used by the current schema (or isn't the schema itself) -> press the Finish button -> Save the file, nothing should happen.  Now check the Directive "Automatically remove unused XSD imports and XML Namespace entries" and press OK.  If you Save again, the import will disappear.
+
# Import the XML Examples: ''New -> Example ... -> Editing and validating XML files''
 +
# Go to ''Window -> Preferences -> XML -> XML Schema Files'', uncheck ''Automatically remove unused XSD imports and XML Namespace entries''
 +
# Open ''XMLExamples/GolfCountryClub/GolfCountryClub.xsd''
 +
# Switch to source view, add ''<import schemaLocation="../PhoneBanking/PhoneBanking.xsd" namespace="http://www.example.com/PhoneBanking"></import>'' as a child to the top level element ''<schema>''
 +
# Save and '''verify''' that the import is persisted
 +
# Go to ''Window -> Preferences -> XML -> XML Schema Files'', check ''Automatically remove unused XSD imports and XML Namespace entries''
 +
# Add a white space after the ''</import>'' tag and save
 +
# '''Verify''' that the import is removed
  
 
==Adhoc Tests==
 
==Adhoc Tests==

Revision as of 14:49, 12 June 2009

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.

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/GolfCountryClub/GolfCountryClub.xsd
  3. Verify you can find BoxOfBallsType in the Types section of the design view; and there are two elements and 12 types in total

File Creation & Saving

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. File -> New -> Other... -> XML folder -> XML Schema to create an empty Schema file: NewXMLSchema.xsd
  3. Verify the new file is created and opened in the Schema Editor
  4. Right click in the Element section and add a new element called NewElement and add a NewComplexType in the Types section as well
  5. Save and close the editor
  6. Reopen the editor and verify that the NewElement and NewComplexType are persisted.
  7. File -> Save As..., and use the name NewXMLSchemaSaveAs.xsd
  8. Verify the NewXMLSchemaSaveAs.xsd file appear in the navigator
  9. In NewXMLSchemaSaveAs.xsd, add a new element and a new complex type
  10. Close the editor without saving the changes
  11. Reopen the NewXMLSchemaSaveAs.xsd, 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. Include: create a copy of the XML schema of interest and copy to another workspace directory. In Outline view, right click on the Directives node -> Add Include. In the Properties view, select the copied schema as the Schema location
  2. Import: in Outline view, right click on the Directives node -> Add Import. Select a schema from the workbench
  3. Redefine: in Outline view, right click on the Directives node -> Add Redefine. Select a schema from the workbench
  4. Element: in Outline view, right click on the Elements node -> Add Element
  5. Attribute: in Outline view, right click on the Attributes node -> Add Attribute
  6. Attribute Group: in Outline view, right click on the Attributes node -> Add Attribute Group. Right click on the newly created Attribute Group -> Add Attribute
  7. Attribute default and fixed values: right click on an Attribute -> select the Default radio button from the Properties view under the General vertical tab -> Put a value. Verify changes by going to Source view. Now change the radio button to Fixed and verify the change in the source view.
  8. Complex Type: in Outline view, right click on the Types node -> Add Complex Type
  9. Simple Type: in Outline view, right click on the Types node -> Add Simple Type
  10. Group: in Outline view, right click on the Groups node -> Add Group
  11. Attribute ref: in Outline view, right click on a Complex Type -> Add Attribute Ref
  12. Attribute ref default and fixed values: right click on an Attribute ref -> select the Default radio button from the Properties view under the General vertical tab -> Put a value. Verify changes by going to Source view. Now change the radio button to Fixed and verify the change in the source view.
  13. Attribute group ref: in Outline view, right click on a Complex Type -> Add Attribute Group Ref
  14. Any Attribute: in Outline view, right click on a Complex Type -> Add Any Attribute
  15. Sequence: in Outline view, right click on a Complex Type -> Add Sequence
  16. Choice: in Outline view, right click on a Complex Type -> Add Choice
  17. All: in Outline view, right click on a Complex Type -> Add All
  18. 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

  1. Delete items: Delete the following in Outline or Design view: Include, Import, Redefine, Element, Attribute, Attribute Group, Group, Attribute ref, Attribute group ref, Any Attribute, Sequence, Choice, All, Complex Type, Simple Type
  2. Delete locals and globals: Delete locals by removing a non-root element from the XML schema document and remove globals by removing a root element from the XML schema. Remove by right clicking on the element -> Delete

Search & Refactoring

Search & Rename

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Create a new Schema file called NewSchema.xsd under the folder GolfCountryClub
  3. Create a new element and right click on it: Set Type -> Browse...
  4. Change the Search scope to Enclosing project and select BoxOfBallsType.
  5. Click OK and save
  6. Open GolfCountryClub.xsd
  7. Right click BoxOfBallsType in the Types section: References -> Project
  8. Verify that there is one reference in NewSchema.xsd and one reference in GolfCountryClub.xsd
  9. Right click BoxOfBallsType in the Types section: Refactor -> Rename...'
  10. Check Update references and change the name to BoxOfBallsTypeChanged and click Preview ->
  11. Verify that there are two changes in GolfCountryClub.xsd and one change in NewSchema.xsd
  12. Click OK and verify that the changes in the preview are applied to the two files using the editor. (Hint: can search for BoxOfBallsTypeChanged in the two files.)

Make Anonymous Type Global

  1. Use the same XML Examples project imported in the section above and open GolfCountryClub.xsd
  2. In the Outline view, select Elements -> GolfCountryClub -> local type
  3. Right click local type and select Refactor -> Make Anonymous Type Global
  4. Verify that local type becomes GolfCountryClubComplexType and the Types tree has a new element also called GolfCountryClubComplexType

Make Local Element Global

  1. Use the same XML Examples project imported in the section above and open GolfCountryClub.xsd
  2. In the Outline view, select Elements -> GolfClubType -> Shaft: ShaftType
  3. Right click Shaft: ShaftType and select Refactor -> Make Local Element Global
  4. Verify that a new Shaft: ShaftType element appears in the Elements tree at the same level as the GolfClub: GolfClubType, and also that a little arrow icon overlays the original Shaft: ShaftType

Validation

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Right click on the project XMLExamples -> Properties -> select Validation from the list of properties -> add a check to the "Add Validation Builder to project" checkbox.
  3. Open XMLExamples/GolfCountryClub/GolfCountryClub.xsd and switch to source view by clicking the source tab at the bottom of the editor.
  4. Replace <simpleType name="ShaftType"> with <simpleType name="ShaftTypeChanged"> and save
  5. Verify that validation kicks in and marks the file with one error
  6. Go to the Problems view and verify that an error appears like XSD: Type reference "http://www.example.org/GolfCountryClub#ShaftType" is unresolved

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 Tests

  1. Sequence: setup by creating a new Complex Type, adding a sequence, and adding a few elements into the sequence. In the Design view, re-order the sequence elements by dragging.
  2. Group: setup by creating a new Group and adding a few elements. In the Design view, re-order the sequence elements by dragging.
  3. Attribute: setup by creating a new Complex Type and adding a few attributes. In the Design view, re-order the attributes by dragging.
  4. Attribute group: setup by creating a new Attribute Group and adding a few attributes. In the Design view, re-order the attributes by dragging.

The reordering must be reflected in the bothe the Design and Outline view and in the editor's Source view.


Source Editing

  1. As you type validation: add invalid attributes or elements to the XML Schema. As you type them, the text should be underlined in red and on mouseover, an error message should be displayed (if you already verified as you type validation while you were verifying validation, you can skip this step)
  2. Content Assist: use CTRL+SPACE in various parts of the Schema to see the possible entries that can be added
  3. Context menus: right click in the Design, Outline, and Source view to check the context menus
  4. Formatting: in the Source view, right click -> source -> Format. Now untab some elements by selecting elements and using SHIFT+TAB. To reformat, right click -> source -> Format.
  5. Toggle comment: in Source view, right click -> source -> Toggle Comment
  6. Add block comment: in Source view, right click -> source -> Add Block Comment
  7. Remove block comment: in Source view, right click while inside a block comment -> source -> Remove block Comment
  8. Switching between Design and Source view: make sure changes to the source are reflected in the Design view

Hyperlink Navigation

  1. Referenced components: in the Source View, press F3 or "CTRL+click" over a referenced component. The source editor should go to the referenced component
  2. Imports and Includes in the Source View: in the Source View, press F3 or "CTRL+click" over an import or include and the selection should jump to the referenced component
  3. Imports and Includes in the Design View: in the Design View, double click on an include or import, which will automatically open the editor

Extensions

  1. Add extensions: right click on a Complex Type -> select the Extension vertical tab from the Properties view -> under Extension, click the Add button -> click Add in the ADd Extension Components menu -> fill in a name -> select a schema from the workspace -> Click OK until you return to the Add Extension Components menu -> select a component from the Available components to Add list and press OK
  2. Add extension attribute: Note: uses results from previous step. From the instructions above, add an attribute by selecting an Extension from the list -> Fill in a value for any values that show up in the Extension Details list, which is to the right of the Extensions list
  3. Delete extensions: Note: uses results from previous step. Right click on an Extension in the Extensions list -> Remove

XML Catalog

  1. Load an XML schema from the jar: create a new XML Schema or use an existing XML schema -> select Extensions from the vertical tab in the Properties view -> Add -> Add... -> fill in a schema name -> select a Schema from Catalog (these schema documents are from jar files). Not all schemas will have components, so select schemas like http://schemas.xmlsoap.org/wsdl/ -> a component should show up in the Available components to Add list, select one and press OK. Check that the imported schema shows up in the Source view and the component added
  2. Export XML catalog file: right click on a project in the Package Explorer view -> Export... -> select the XML Catalog from the XML folder and press the Next button -> select a directory to export file to and add a name which ends in .xml -> press the Finish button. Open the newly export XML Catalog File and verify that it isn't empty (should contain the element <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"/>)
  3. Import XML catalog file: right click on a project in the Package Explorer view -> Import... select the XML Catalog from the XML folder and press the Next button -> select a directory -> press the Import Files... button -> Use browse to find the location of an XML Catalog file -> select the XML file(s) -> click the Finish button. Verify the files were added into the correct directory and contain the correct information. A quick way to export files is to use files in the same workspace but export to a different directory within the project

Generators

Generate an XML file from an XSD file: right click on an XML Schema -> Generate -> XML File... -> Add a new file name or use default and press the Next button -> press the Finish button. From the example files, GolfCountryClub.xsd will generate a decent number of elements

Preferences

XSD preferences are found in the menubar Window -> Preferences -> XML -> XML Schema Files


Qualify XSD constructs

  1. Go to Window -> Preferences -> XML -> XML Schema Files
  2. Check the Qualify XSD constructs preference
  3. Modify the prefix and the target namespace
  4. Ensure that the prefix and target namespace is used by the new schema wizard: File -> New -> Others... -> XML -> XML Schema


Honour all schema locations

Test a schema that imports two other schemas with the same namespace and different locations.

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Download File:Honourallschemaloc.zip and unzip the files to XMLExamples
  3. Right click C.xsd and select Validate.
  4. Verify that an error src-resolve.
  5. Go to Window -> Preferences -> XML -> XML Schema Files, check "Honour all schema locations"
  6. Validate C.xsd again. Verify that the error message should disappear.


Modify full schema conformance

Download the schema overlap.xsd from https://bugs.eclipse.org/bugs/show_bug.cgi?id=162244 or alternatively, use the code below, which simulates the same scenario.

FullConformance.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/FullConformance"
	xmlns:tns="http://www.example.org/FullConformance" elementFormDefault="qualified">
 
	<element name="Name"></element>
 
	<complexType name="NewComplexType">
		<sequence>
			<element minOccurs="0" maxOccurs="1" ref="tns:Name"></element>
			<any></any>
		</sequence>
 
	</complexType>
</schema>

Validate this file and notice that an error is displayed (prefixed by cos-nonambig). By default the preference "Check full XML Schema conformance" is enabled, resulting in this error message. In the XSD schema preference, uncheck the preference "Check full XML Schema conformance" and validate the file. The error should disappear.


Remove unused imports (New to 3.0.1)

  1. Import the XML Examples: New -> Example ... -> Editing and validating XML files
  2. Go to Window -> Preferences -> XML -> XML Schema Files, uncheck Automatically remove unused XSD imports and XML Namespace entries
  3. Open XMLExamples/GolfCountryClub/GolfCountryClub.xsd
  4. Switch to source view, add <import schemaLocation="../PhoneBanking/PhoneBanking.xsd" namespace="http://www.example.com/PhoneBanking"></import> as a child to the top level element <schema>
  5. Save and verify that the import is persisted
  6. Go to Window -> Preferences -> XML -> XML Schema Files, check Automatically remove unused XSD imports and XML Namespace entries
  7. Add a white space after the </import> tag and save
  8. Verify that the import is removed

Adhoc Tests

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

Links