Xml Validation Test Suite With Camv

  • 1,098 views
Uploaded on

Guide to using the CAMV test suite approach for XML testing. Download CAMV open source tool from http://www.cameditor.org and see videos here: http://www.youtube.com/watch?v=yaCwiIX5lM4

Guide to using the CAMV test suite approach for XML testing. Download CAMV open source tool from http://www.cameditor.org and see videos here: http://www.youtube.com/watch?v=yaCwiIX5lM4

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,098
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
6
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. XML Validation
    Test Suites
    with CAMV
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    NIEM Team, Oracle Public Sector
    Build
    Exchange
    Generate
    Dictionary
    Technology Introduction – September 2011
  • 2. DisclaimerNotice
    The following is not intended to outline Oracle general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.
    The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
    Slide 2
  • 3. Test Suites Introduction
    A key need in working with XML information exchanges, is developing examples and matching templates including rules, context, and roles for correctly managing information exchange content between partners. The W3C Schema by themselves are not sufficient.
    Learn how to use open source tooling, XPath rules, and the OASIS CAM templates standard to create automated testing tools.
    Integrating SQL table lookup validation rules
    The CAMV validation engine can also be used in production environments to manage live information exchanges.
    Slide 3
  • 4. Contents
    • Part 1
    The XML Validation Framework
    XPath Rules Techniques
    Code lists and SQL lookups
    Rules use cases
    • Part 2
    • 5. Example CAM templates
    • 6. CAMV validation examples
    • 7. NIEM example test suite
    • 8. Elections example test suite
    • 9. SQL table database lookups
    • 10. Running validations from visual CAM Editor
    • 11. Results handling techniques
    • 12. Summary
    * National Information Exchange Model (NIEM) – see http://www.niem.gov
    Slide 4
  • 13. XML Validation Framework
    Architecture and Deployment
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 14. XML Validation Framework
    Slide 6
  • 15. CAMV Engine
    Slide 7
  • 16. CAMV Validation Engine
    Standalone XML validator using XPath rules
    Context aware and declarative rules approach
    Integrated with CAM editor menus for instant testing
    External code list and SQL table lookup support
    Callable via Spring framework or Java API; thread safe and server container deployable
    Configurable error levels – error, warning
    Java error results object returned
    Embedded validation results attributes in XML results
    Slide 8
  • 17. CAMV
    CAM Editor
    XSLT
    CAM Editor / CAMV Environment
    Reports
    Single XML Test Instance
    XML Validation Result
    CAM Editor
    CAM template
    Slide 9
  • 18. CAMV
    XSLT
    CAMV / ANT Script Environment
    CAM template(s)
    Reports
    CAMV Control Script XML
    XML Test
    Instances
    ANT
    2
    XML Validation
    Results
    1
    Slide 10
  • 19. CAMV Test Control Script XML (single)
    Singleton Test Case Example
    <camvTestSuite>
    <testCase>
    <Example-Test-v19-3>
    <cxxfile>Test-Template-v19.cxx</cxxfile>
    <xmlfile>Test-Instance-v19-3.xml</xmlfile>
    <verbose>true</verbose>
    <inlineErrors>true</inlineErrors>
    <parameters>
    <abc>Param1</abc>
    <cde>Param2</cde>
    </parameters>
    </Example-Test-v19-3>
    </testCase>
    </camvTestSuite>
    Test case name
    Validation Template
    Test XML instance
    Optional items
    Slide 11
  • 20. CAMV Test Control Script XML (multi-instance)
    Multi-Test Folder Example
    Test case name
    <camvTestSuite>
    <testCase>
    <Example-Test-With-Folder>
    <cxxfile>../samples/templates/EML-330-list-v7.cxx</cxxfile>
    <testdir>../samples/XMLsamples/UOCAVA/330</testdir>
    <verbose>true</verbose>
    <inlineErrors>true</inlineErrors>
    <parameters>
    <abc>Param1</abc>
    <cde>Param2</cde>
    </parameters>
    </Example-Test-With-Folder>
    </testCase>
    </camvTestSuite>
    Validation Template
    Test XML instances folder
    Optional items
    Slide 12
  • 21. Linux GTK ANT Configuration
    Linux distributions (e.g. Ubuntu) has ANT pre-installed in /usr/share/ant/lib
    Download Ant-contrib from
    http://ant-contrib.sourceforge.net/
    Copy ant-contrib jar file to /lib directory inside ANT installation
    Slide 13
  • 22. Mac OS ANT Configuration
    Mac OS X 1.7+ “Lion” comes pre-installed - use command : ant –version and it will self-configure
    Mac OS X 1.6 and earlier – need to install “Xcode” development software first
    Download Ant-contrib from
    http://ant-contrib.sourceforge.net/
    Copy ant-contrib jar file to /lib directory inside ANT installation
    Slide 14
  • 23. ANT – Windows configuration
    Download ANT from
    http://ant.apache.org
    Download Ant-contrib from
    http://ant-contrib.sourceforge.net/
    Copy ant-contrib jar file to /lib directory inside ANT installation
    Set the ANT_HOME environment variable to the directory where you installed ANT
    Add %ANT_HOME%/bin folder to executable path
    Slide 15
  • 24. Windows System Path Settings
    1
    2
    3
    Slide 16
  • 25. Running CAMV with ANT
    Go to CAMV location on Sourceforge
    http://www.cameditor.org/#CAMV_Testing
    Download CAMV release JAR and Test example ZIP
    Unpack test example from ZIP and put CAMV jar into folder
    Go to the command line (run cmd)
    Switch to folder where CAMV test suite is located
    ANT runAll
    Output is automatically placed in folder called CAMVTestResultslocated within the test instance location folder(s)
    Slide 17
  • 26. Reviewing Validation Results HTML
    Slide 18
  • 27. XPath Rules Techniques
    Quick Syntax Primer
    Controlling Scope, Context, Evaluation
    Dynamic Structure Components
    Useful XPath Resources
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 28. XPath Syntax Primer
    XPath is a simple assertion language where expressions reference components hierarchically within an XML instance structure – e.g.
    /animals/canines/domestic/dogs/poodle[1]
    /animals/canines/domestic/*
    CAMV uses the XPath v2.0 Java library
    In CAM templates XPath is used extensively to provide rules and content details for XML structure components
    Slide 20
  • 29. XPath Functions
    Slide 21
  • 30. CAM XPath Extensions (most used)
    Slide 22
  • 31. CAM templates and XPath expressions
    Within a CAM template XPath expressions are found in the <as:BusinessUseContext> section of the template.
    Slide 23
  • 32. Rules Use Cases
    Typical Business Needs
    Quick Examples
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 33. Standard Pattern for Business Rules
    Claim – An English statement of a business rule that conveys its meaning.Example: A Chapter MUST have a Title.
    Test – A formal statement of a business rule that can be parsed and processed by machine.Example: <Assert test="count(para) &gt;=1">
    Diagnostic – An English statement that identifies and explains what happened or was found when a Test fails.Example: Chapter "X" does not have a Title.
    Outcome – Error, Warning, Pass
    Slide 25
  • 34. Controlling Scope and Context
    Condition controls if and when the content rule action applies
    Condition can control structure as well; optional, mandatory, exclude
    Condition can reference different component(s) for contextual rule actions
    Slide 26
  • 35. Some more examples
    Business Rule: Items with color attributes don't need a tray number—the color is sufficient for picking the item:
    <as:constraintcondition="exists(//Item/@color)" action="makeOptional(//Item/TrayNumber)" />
    Business Rule: If order weight exceeds 25 kg, purchase order must specify a freight carrier:
    <as:constraintcondition="//Item/@weight > 25" action="makeMandatory(//Item/FreightHandler)">
    Using XPath axis referencing (when things are not adjacent in hierarchy):
    <as:constraintcondition="exists(ancestor::Item/@color)" action="makeOptional(//Item/TrayNumber)" />
    * Excerpted from Michael Sorens DEVX CAM article examples
    Slide 27
  • 36. Useful XPath Resources
    Michael Sorens article on using CAM from DEVX.com
    http://www.devx.com/xml/Article/41150
    Martin Roberts – tutorial on writing CAM rules
    http://merryflame.co.uk/jcam/site/tutorials/CAMTemplateBasics.htm
    XPath tutorial resources
    Search on XPath tutorial
    Books available
    Tools – XPath expression constructors
    Slide 28
  • 37. Code Lists and SQL Lookups
    Introduction to CAM code lists
    Advantages
    Tools and Hints
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 38. Code lists
    CAM lookup() function allows referencing to external XML lists of values
    Can replace use of restrictValues() static lists
    Database - CAM lookup() function can reference SQL table for dynamic value checking
    Where to get code lists?
    Import XSD enumeration schema into CAM lookup lists
    Convert UBL Genericode into CAM lookup lists
    Dump from database into lookup list XML format
    Direct via SQL table lookup
    Slide 30
  • 39. CAM Code list XML format
    Code list name
    Code value
    Textual value
    Slide 31
  • 40. Combining Rules and Code lists
    Real power of code lists and CAM – ability to select code list values based on XPath rule criteria to handle different partner configurations, versioning and cross-table validations
    e.g. Ford / Mustang | Chevy / Corvette
    Message version id = 1.6 – use code list XYZ-1-6
    Slide 32
  • 41. Code lists examples
    Load lookup list XML into CAM editor
    Assign lookup() rule to XML component
    Using SQL lookups – need to define connectivity to database and the SQL query to perform – we will do this part in the next section
    Slide 33
  • 42. Code Lists Summary
    Lookups can be to external XML file instances
    Simple XML format for optimized performance and readability
    Dynamic runtime control via XPath rules to select lists to be applied
    Lookup can reference SQL statement for database content checking
    Slide 34
  • 43. Part 2
    Example CAM templates
    Running CAMV validations
    Results handling techniques
    Summary
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 44. CAM templates
    Here we introduce CAM templates and understanding their component sections
    Template is abstraction layer over schema structure and rules
    Template can be automatically built from existing XSD schema
    Add additional XPath validation rules
    Compiled templates provide the validation instructions for the CAMV validation engine
    Using CAMV validations and handling results
    Slide 36
  • 45. CAM Templates Overview
    Consists of 4 functional sections:
    • Header declares properties and parameters for the CAM process to reference
    • 46. AssemblyStructure captures the business information exchange structures
    • 47. BusinessUseContextprovides the rules to apply during validation
    • 48. Extensionpoints to the annotations and external lookup tables
    Slide 37
  • 49. Example CAM templates
    Examples Reviewed
    Quick walk through of important details
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 50. Available Test Suite Examples
    Experimental SAR Examples
    Two test example templates and XML instances:
    Baseline SAR with just structure and content usage rules, schema parlance “cardinality, facets and enumerations”
    Baseline SAR advanced – logical business rules added to check consistency of information and structure components
    Each test set contains examples that pass and those that fail depending on the template validation applied
    OASIS EML V7 – UOCAVA Testing
    • Set of test examples for Election Management:
    • 51. Both individual test cases and folder based multiple examples
    • 52. Each test uses different template and validation scenario
    * SAR – Suspicious Activity Report NIEM exchange
    * EML – Election Markup Language Standard
    Slide 39
  • 53. Experimental SAR Overview
    Areas of Interest:
    * SAR – Suspicious Activity Report
    Slide 40
  • 66. Visual Template Rules Wizard Tools
    Slide 41
  • 67. Running CAMV Validation
    Illustrative examples – pass, fail, warnings
    Default structure handling
    Data type and Content checking
    Cross-field validation rules
    SQL database lookup
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 68. Example Advanced Rules
    Business Rule: Providing warning if PurgeDate is earlier than PurgeReviewDate
    <as:constraintcondition="//sbl:PrivacyDetails/sbl:PrivacyPurgeDate < //sbl:PrivacyDetails/sbl:PrivacyPurgeReviewDate"action="printMessage(//sbl:PrivacyDetails/sbl:PrivacyPurgeReviewDate,Warning: Review date not before purge date)"><as:annotation/></as:constraint>
    Business Rule: Location must contain an address or a highway or coordinate set
    <as:constraintcondition="not(./nc:LocationAddress) and(not(./nc:LocationHighway)) and(not(./nc:LocationTwoDimensionalGeographicCoordinate))"action="printMessage(//j:TargetLocation/sbl:Location,Empty Location information)"><as:annotation><as:documentationtype="documentation">Example of advanced rule</as:documentation></as:annotation></as:constraint>
    Slide 43
  • 69. Default Structure Handling
    By default all structure components are required and string content
    Content Masks
    Structure control
    Slide 44
  • 70. Running CAMV details
    Batch Command Line Execution Window
    Viewing Same Template in Visual Editor
    • From within the Test Suite folder on the command line execute > Ant runALL
    Slide 45
  • 71. Sample SAR Validation Results HTML
    Slide 46
  • 72. Installing and using SQL lookup example
    Contains test sample and template
    DB lookup sample install folder contents
    Run start and stop database scripts
    Simply download and unpack the ZIP archive and drop the DatasourceExample package into the samples Test Suite folder
    Then add the camv-test-DbList.xml to the testsuites folder
    Slide 47
  • 73. SQL DB configuration details
    Modify to match your local directory structure
    camv-test-DbList.xml contains data source reference and connection configuration
    Modify inside dbProps.props file to match your local directory structure
    Slide 48
  • 74. Sample SQLDB Test Run
    • Start the database instance (slide 47)
    • 75. From within the Test Suite folder on the command line execute > Ant runALL
    Slide 49
  • 76. DB lookup test results rendered as HTML
    SQL DB lookup result
    Slide 50
  • 77. CAM Editor Visual Tools
    SQL lookup entry wizard
    Run CAMV validation wizard
    Visual entry of SQL connection details
    Visual review of validation results
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 78. CAM template SQL lookup rule definition
    This is the myLists.cam example template
    Slide 52
  • 79. CAM template SQL lookup rule wizard
    Slide 53
  • 80. Test from CAM Editor validation Run Wizard
    Pick test case XML file
    1
    Choose JDBC driver
    Confirm driver name
    2
    3
    Replace default connection with actual JDBC string
    4
    NOTE: this is the same information as contained in the dbProp.props file
    jdbc:derby://localhost:1527/firstdb
    Slide 54
  • 81. Sample Visual Test Results
    SQL lookup result displayed
    Slide 55
  • 82. More Results Handling
    XSLT script post-processing
    XML Diff considerations
    Regression Testing with CAMV
    Middleware Integration
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 83. Default XSLT rendering of results
    HTML output
    Finds CAM validation results attributes
    Formats and outputs error details
    Slide 57
  • 84. Post-Processing Tips and Tricks
    XSLT post-processing not only for HTML reporting
    Create response error messaging directly from CAMV output
    Create receipt notification directly from CAMV output
    Can use simple DIFF to compare generic HTML report output to detect regression test changes
    Rule based checking is superior to simple result content change testing
    Java API and Spring supports direct integration of CAMV and returning validation results directly to middleware
    Slide 58
  • 85. Summary
    Review
    Next Steps
    Future enhancements
    Resources and Links
    Exchange Development
    Deploy
    Requirements
    CAMV
    Model
    Data
    Test
    Build
    Exchange
    Generate
    Dictionary
  • 86. Review and Value Proposition
    Testing and verification of your exchange XML examples
    SQL database lookups and flexible code lists handling
    Business rule checking
    Post-processing options and reporting with XSLT scripts
    Regression testing with batch processing
    Flexible deployment of XML validation framework
    Integration via Spring API to middleware
    Slide 60
  • 87. What are we working on?
    Improvements
    “CAM for web services” – currently exchange-centric
    Enhancing ANT capabilities and soapUI integration
    New features
    Dictionary integration with NIEM Domain Update Tool
    Evaluation tools for dictionaries and components
    Enhancing XML example generation with synthetic data
    Slide 61
  • 88. CAMV Summary
    Open source, open public standards based, cross-platform deployment written using Java
    Uses Java APIs, Spring API, JDOM, etc.
    Validation features:
    XPath V2.0 support
    Looks ups
    20 built-in functions
    Reporting
    Embedded CAMERROR, CAMWARN tags
    Spring API and results set handler
    Optional sysout test result log
    Slide 62
  • 89. Links and References
    DOWNLOADS -
    http://cameditor.org/ #CAMV_Testing
    NIEM MATERIALS -
    Oracle NIEM website
    http://www.oracle.com/goto/niem
    Oracle XMLOrb blog site
    http://blogs.oracle.com/xmlorb
    Slide 63