SlideShare a Scribd company logo
1 of 25
FHIRĀ® is the registered trademark of HL7 and is used with the permission of HL7. The Flame Design mark is the registered trademark of HL7 and is used with the permission of HL7.
Amsterdam, 15-17 November | @fhir_furore | #fhirdevdays17 | www.fhirdevdays.com
Test Driven Development II - Advanced
Richard Ettema, AEGIS.net, Inc.
Presented by
ā€¢ Name: Richard Ettema
ā€¢ Position:
ā€¢ Lead Consultant, AEGIS.net, Inc.
ā€¢ FHIRĀ® Certified Implementer
ā€¢ Background:
ā€¢ 34+ years IT industry experience
ā€¢ 14+ years leading HIT development/implementation efforts
ā€¢ 4+ years contributing to the HL7Ā® FHIRĀ® specification (focus on testing)
ā€¢ Sr. Architect / Lead Developer for the Touchstone Project
ā€¢ Author of the AEGIS WildFHIR public test server and client
Test Driven Development with FHIR
Intro Session Review
ā€¢ To ensure interoperability between applications claiming
conformance to the specification, a testing framework has been
established within the FHIR specification itself
https://www.hl7.org/fhir/STU3/testing.html
ā€¢ This framework defines a Test Engine for processing a TestScript
resource as a natural language, computable format of a test case
ā€¢ The TestScript resource is an implementation-agnostic description of
tests that allows test engines to evaluate if a FHIR implementation
conforms with the FHIR specification
https://www.hl7.org/fhir/STU3/testscript.html
ā€¢ Testing workflow example
ā€¢ How can we trust that the correction is being tested in the same way?
Can we trust either test outcome?
Known data facilitates known, expected outcomes
We will review and examine how to ensure ā€œReliable and Repeatable Testingā€
during the Hands-on Exercises using a ā€œTwo Users, Same Dataā€ scenario
Test Passes
Run Test
Again
Developer
Correction
Test FailsRun Test
Reliable and Repeatable Testing
Identifying Your Testing Criteria; a.k.a. Asserts
ā€¢ Testing simple values
ā€¢ Is this the patient I expected?
ā€¢ Is this the operation response I expected?
ā€¢ Did I get multiple matches when I expected one?
ā€¢ Testing specification conformance
ā€¢ Is this element required?
ā€¢ Is this code value correct?
ā€¢ Testing conditionality or constraints
ā€¢ Can this element be expressed more than one way and still be compliant?
ā€¢ Is this element is only required when another element is present?
Asserts can performā€¦
ā€¢ simple operations
ā€¢ standard assert operators are constrained to the following: equals |
notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty |
contains | notContains | eval
ā€¢ specification allows for use of XPath or JSONPath expressions
ā€¢ complex evaluations
ā€¢ specification allows for rules to be defined within the assert
ā€¢ specification allows for use of FHIRPath* expressions
*FHIRPath is supported within the TestScript resource and by the Touchstone test engine, but will not be a
focus of this session. To learn more about FHIRPath, see http://hl7.org/fhirpath
Complex Asserts
ā€¢ Are used when testing conditionality, constraints or simplifying an
existing test construct
ā€¢ Support the use of FHIRPath
ā€¢ FHIRPath has expressions, functions, operations
ā€¢ Far more functionality than found in the simple assert operators
ā€¢ Built-in expressions such as dateTime and quantity
ā€¢ Expressions can contain operators
ā€¢ Functions like isDistinct, count, subsetOf, supersetOf
ā€¢ Support Rules and Rulesets (high level language scripted logic)
ā€¢ Touchstone Rules Engine supports Groovy, Schematron and XSLT
Complex Asserts - FHIRPath Example
ā€¢ FHIRPath provides a syntax neutral way to access the contents of a
resource and can simplify assert logic constructs
Assert condition:
ā€œConfirm that the searchset Bundle total number of entries is at least
one (1).ā€
ā€¢ Letā€™s compare XPath and JSONPath to FHIRPathā€¦
Complex Asserts - FHIRPath Example
Comparison with XPath and JSONPath
ā€¢ XPath assert
<assert>
<operation value=ā€œgreaterThanā€ />
<path value=ā€œ/Bundle/totalā€ />
<value value=ā€œ0ā€ />
</assert>
ā€¢ JSONPath assert
<assert>
<operation value=ā€œgreaterThanā€ />
<path value=ā€œ.totalā€ />
<value value=ā€œ0ā€ />
</assert>
ā€¢ FHIRPath assert (equivalent logic)
<assert>
<expression value=ā€œBundle.total.toInteger() &gt; 0ā€ />
</assert>
ā€¢ FHIRPath assert (alternative logic)
<assert>
<expression value=ā€œBundle.entry.count() &gt; 0ā€ />
</assert>
Complex Asserts - Rules and Rulesets
ā€¢ The TestScript resource allows the use of Rules and Rulesets within
the assert
ā€¢ Rules are called during TestScript execution
ā€¢ In Touchstone, the Rules are hosted within the Test Definition folders
ā€¢ Rules may be viewed and will be displayed in Test Results if selected
ā€¢ Rulesets are simply collections of one or more Rules
ā€¢ Allows for the definition of a group of Rules to be referenced within the
TestScript in an efficient manner
We will review and examine Rules and Rulesets during the Hands-on Exercises
FHIR Client or Peer-to-Peer Testing
ā€¢ TestScripts in Touchstone can be either Server-only, Client (Peer-to-
Peer), or Multi-actor
ā€¢ Server-only: Touchstone initiates requests to the destination FHIR System and
evaluates the response
ā€¢ Client (Peer-to-Peer): Touchstone waits for a request from the origin FHIR
System to be received, evaluates the request, sends to the destination FHIR
System, and evaluates the response
ā€¢ Multi-actor: Touchstone may act as the initiating system along with other
FHIR Test Systems acting as either a Client or Server
Client (Peer-to-Peer) Testing - Test Setup
ā€¢ Select a Client TestScript from the
Test Definitions list
ā€¢ Select and fill in any test data
necessary for test execution
ā€¢ Origin Test System (Client)
ā€¢ Destination Test System (Server)
ā€¢ (Dynamic) Variables
Client (Peer-to-Peer) Testing - Test Execution
Client (Peer-to-Peer) Testing - TestScript Execution
We will review and examine Client Testing during the Hands-on Exercises
Captured Message Exchanges
ā€¢ The Exchanges dashboard in Touchstone allows users to view all captured request
and response messages
ā€¢ Touchstone will match an exchange with a test execution using these checks:
ā€¢ If your test server is already defined within Touchstone and is publicly accessible, the message can be
matched by originating IP address
ā€¢ If that is not possible, the system attempts to use USER_KEY and ORG_KEY
ā€¢ Else, the system cannot match the message to a test execution
USER_KEY and ORG_KEY
ā€¢ USER_KEY and ORG_KEY are
special placeholders
ā€¢ They can be sent by the client
system as an HTTP request header
or within the request payload
ā€¢ They identify the client system
when the machine name or IP
address would not
Introducing the Touchstone APIs
ā€¢ Test executions can be launched and monitored via remote RESTful
web services
ā€¢ Provides the means to integrate Touchstone into your organizationā€™s
test executions for:
ā€¢ Internal automated regressions tests
ā€¢ Continuous Integration build processes
ā€¢ Documentation and example messages are available
ā€¢ Supported formats ā€“ JSON and XML
Touchstone API Capabilities
ā€¢ The Touchstone APIs allow for many of the same non-administrative
functions as the User Interface
ā€¢ Test executions launched on behalf of a remote test user via
Touchstone API will be visible to all members of your organization on
the Touchstone UI
ā€¢ Any member of your organization can log in to the Touchstone UI and
investigate test failures if needed
Touchstone API Services
POST authenticate ļƒ  Authenticate with Touchstone; return new API session key
POST testExecution ļƒ  Launch a new test execution for an existing Test Setup
GET testExecution ļƒ  Return the status of a know test execution
GET testExecDetail ļƒ  Return summary status of all test execution TestScripts
GET scriptExecDetail ļƒ  Return test execution single TestScript details
GET testReport ļƒ  Same as GET scriptExecDetail except returns FHIR TestReport
Touchstone API - Jenkins CI Server Integration Example
ā€¢ The Touchstone User Guide documents a Jenkins CI Server Integration
Example
ā€¢ https://touchstone.aegis.net/touchstone/TouchstoneUserGuide, section
ā€˜Touchstone API ā€“ Jenkins Integration Exampleā€™
ā€¢ Illustrates the use of the Jenkins Groovy Plugin
ā€¢ Builds on the example code from the previous ā€˜Touchstone API ā€“ Definitionā€™
section
Due to not having a publicly available Jenkins CI Server at this event, there is no
corresponding Hands-on Exercises for this topic.
Conformance Testing
ā€¢ Conformance Testing validates a system against known standards
ā€¢ FHIR Specification (including Implementation Guides)
ā€¢ Version support (forward/backward compatibility)
ā€¢ Continuous Conformance Testing shows that an organization is
currently conformant, but also committed to remain conformant
ā€¢ Future development minded - interoperability needs to be addressed on a
continuous basis
ā€¢ Development Aid - developers can integrate FHIR conformance testing into
their build cycle to avoid costly conformance code rewrites later
ā€¢ Regression testing - validate that changes and enhancements are also
conformant
Touchstone Conformance Analytics
Hands on Exercises
ā€¢ Reliable and Repeatable Testing - Two Users, Same Data
ā€¢ Complex Asserts
ā€¢ FHIRPath comparison to XPath and JSONPath
ā€¢ Rules and Rulesets
ā€¢ Advanced TestScripts
ā€¢ FHIR Client / Peer-to-Peer
ā€¢ Conformance Analytics Dashboard
ā€¢ Connectathon Test Track
ā€¢ We will continue our review of one of the test tracks for the next HL7 FHIR
Connectathon 17 event and the development of TestScripts
Discussion (Q & A)
FHIRĀ® is the registered trademark of HL7 and is used with the permission of HL7. The Flame Design mark is the registered trademark of HL7 and is used with the permission of HL7.
Amsterdam, 15-17 November | @fhir_furore | #fhirdevdays17 | www.fhirdevdays.com
Thank you!

More Related Content

What's hot

Furore devdays2017 general-introtofhir
Furore devdays2017 general-introtofhirFurore devdays2017 general-introtofhir
Furore devdays2017 general-introtofhirDevDays
Ā 
Profiling with clin fhir
Profiling with clin fhirProfiling with clin fhir
Profiling with clin fhirDevDays
Ā 
Furore devdays 2017- profiling academy - profiling guidelines v1
Furore devdays 2017- profiling academy - profiling guidelines v1Furore devdays 2017- profiling academy - profiling guidelines v1
Furore devdays 2017- profiling academy - profiling guidelines v1DevDays
Ā 
Fhir foundation (grahame)
Fhir foundation (grahame)Fhir foundation (grahame)
Fhir foundation (grahame)DevDays
Ā 
Dev days 2017 questionnaires (brian postlethwaite)
Dev days 2017 questionnaires (brian postlethwaite)Dev days 2017 questionnaires (brian postlethwaite)
Dev days 2017 questionnaires (brian postlethwaite)DevDays
Ā 
Furore devdays 2017-sdc (lloyd)
Furore devdays 2017-sdc (lloyd)Furore devdays 2017-sdc (lloyd)
Furore devdays 2017-sdc (lloyd)DevDays
Ā 
Fire kit ios (r-baldwin)
Fire kit ios (r-baldwin)Fire kit ios (r-baldwin)
Fire kit ios (r-baldwin)DevDays
Ā 
Fhir dev days_basic_fhir_terminology_services
Fhir dev days_basic_fhir_terminology_servicesFhir dev days_basic_fhir_terminology_services
Fhir dev days_basic_fhir_terminology_servicesDevDays
Ā 
Furore devdays 2017- rdf2(solbrig)
Furore devdays 2017- rdf2(solbrig)Furore devdays 2017- rdf2(solbrig)
Furore devdays 2017- rdf2(solbrig)DevDays
Ā 
Advanced .net api (ewout)
Advanced .net api (ewout)Advanced .net api (ewout)
Advanced .net api (ewout)DevDays
Ā 
Fhir tooling (grahame)
Fhir tooling (grahame)Fhir tooling (grahame)
Fhir tooling (grahame)DevDays
Ā 
20171116 rene spronk_profiling_governance
20171116 rene spronk_profiling_governance20171116 rene spronk_profiling_governance
20171116 rene spronk_profiling_governanceDevDays
Ā 
Beginners .net api dev days2017
Beginners  .net api   dev days2017Beginners  .net api   dev days2017
Beginners .net api dev days2017DevDays
Ā 
Vonk fhir facade (christiaan)
Vonk fhir facade (christiaan)Vonk fhir facade (christiaan)
Vonk fhir facade (christiaan)DevDays
Ā 
Dev days 2017 advanced directories (brian postlethwaite)
Dev days 2017 advanced directories (brian postlethwaite)Dev days 2017 advanced directories (brian postlethwaite)
Dev days 2017 advanced directories (brian postlethwaite)DevDays
Ā 
final Keynote (grahame)
final Keynote (grahame)final Keynote (grahame)
final Keynote (grahame)DevDays
Ā 
Building a Scenario using clinFHIR
Building a Scenario using clinFHIRBuilding a Scenario using clinFHIR
Building a Scenario using clinFHIRDevDays
Ā 
Integrating with the epic platform fhir dev days 17
Integrating with the epic platform fhir dev days 17Integrating with the epic platform fhir dev days 17
Integrating with the epic platform fhir dev days 17DevDays
Ā 
Validation in net and java (ewout james)
Validation in net and java (ewout james)Validation in net and java (ewout james)
Validation in net and java (ewout james)DevDays
Ā 
Furore devdays 2017- rdf1(solbrig)
Furore devdays 2017- rdf1(solbrig)Furore devdays 2017- rdf1(solbrig)
Furore devdays 2017- rdf1(solbrig)DevDays
Ā 

What's hot (20)

Furore devdays2017 general-introtofhir
Furore devdays2017 general-introtofhirFurore devdays2017 general-introtofhir
Furore devdays2017 general-introtofhir
Ā 
Profiling with clin fhir
Profiling with clin fhirProfiling with clin fhir
Profiling with clin fhir
Ā 
Furore devdays 2017- profiling academy - profiling guidelines v1
Furore devdays 2017- profiling academy - profiling guidelines v1Furore devdays 2017- profiling academy - profiling guidelines v1
Furore devdays 2017- profiling academy - profiling guidelines v1
Ā 
Fhir foundation (grahame)
Fhir foundation (grahame)Fhir foundation (grahame)
Fhir foundation (grahame)
Ā 
Dev days 2017 questionnaires (brian postlethwaite)
Dev days 2017 questionnaires (brian postlethwaite)Dev days 2017 questionnaires (brian postlethwaite)
Dev days 2017 questionnaires (brian postlethwaite)
Ā 
Furore devdays 2017-sdc (lloyd)
Furore devdays 2017-sdc (lloyd)Furore devdays 2017-sdc (lloyd)
Furore devdays 2017-sdc (lloyd)
Ā 
Fire kit ios (r-baldwin)
Fire kit ios (r-baldwin)Fire kit ios (r-baldwin)
Fire kit ios (r-baldwin)
Ā 
Fhir dev days_basic_fhir_terminology_services
Fhir dev days_basic_fhir_terminology_servicesFhir dev days_basic_fhir_terminology_services
Fhir dev days_basic_fhir_terminology_services
Ā 
Furore devdays 2017- rdf2(solbrig)
Furore devdays 2017- rdf2(solbrig)Furore devdays 2017- rdf2(solbrig)
Furore devdays 2017- rdf2(solbrig)
Ā 
Advanced .net api (ewout)
Advanced .net api (ewout)Advanced .net api (ewout)
Advanced .net api (ewout)
Ā 
Fhir tooling (grahame)
Fhir tooling (grahame)Fhir tooling (grahame)
Fhir tooling (grahame)
Ā 
20171116 rene spronk_profiling_governance
20171116 rene spronk_profiling_governance20171116 rene spronk_profiling_governance
20171116 rene spronk_profiling_governance
Ā 
Beginners .net api dev days2017
Beginners  .net api   dev days2017Beginners  .net api   dev days2017
Beginners .net api dev days2017
Ā 
Vonk fhir facade (christiaan)
Vonk fhir facade (christiaan)Vonk fhir facade (christiaan)
Vonk fhir facade (christiaan)
Ā 
Dev days 2017 advanced directories (brian postlethwaite)
Dev days 2017 advanced directories (brian postlethwaite)Dev days 2017 advanced directories (brian postlethwaite)
Dev days 2017 advanced directories (brian postlethwaite)
Ā 
final Keynote (grahame)
final Keynote (grahame)final Keynote (grahame)
final Keynote (grahame)
Ā 
Building a Scenario using clinFHIR
Building a Scenario using clinFHIRBuilding a Scenario using clinFHIR
Building a Scenario using clinFHIR
Ā 
Integrating with the epic platform fhir dev days 17
Integrating with the epic platform fhir dev days 17Integrating with the epic platform fhir dev days 17
Integrating with the epic platform fhir dev days 17
Ā 
Validation in net and java (ewout james)
Validation in net and java (ewout james)Validation in net and java (ewout james)
Validation in net and java (ewout james)
Ā 
Furore devdays 2017- rdf1(solbrig)
Furore devdays 2017- rdf1(solbrig)Furore devdays 2017- rdf1(solbrig)
Furore devdays 2017- rdf1(solbrig)
Ā 

Similar to Furore devdays2017 tdd-2-advanced

Writing Acceptance Tests Using Fitnesse
Writing Acceptance Tests Using FitnesseWriting Acceptance Tests Using Fitnesse
Writing Acceptance Tests Using FitnesseFacundo Farias
Ā 
Choosing right-automation-tool
Choosing right-automation-toolChoosing right-automation-tool
Choosing right-automation-toolBabuDevanandam
Ā 
Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...
Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...
Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...Arvind Rajan
Ā 
KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfQA or the Highway
Ā 
FUNTASY - Functional testing automated system
FUNTASY - Functional testing automated systemFUNTASY - Functional testing automated system
FUNTASY - Functional testing automated systemQualitest
Ā 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspecjeffrey1ross
Ā 
Unit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step TrainingUnit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step TrainingRam Awadh Prasad, PMP
Ā 
No Devops Without Continuous Testing
No Devops Without Continuous TestingNo Devops Without Continuous Testing
No Devops Without Continuous TestingParasoft
Ā 
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdfTest Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdfDiana Gray, MBA
Ā 
Best Practices in Web Service Design
Best Practices in Web Service DesignBest Practices in Web Service Design
Best Practices in Web Service DesignLorna Mitchell
Ā 
Testing, a pragmatic approach
Testing, a pragmatic approachTesting, a pragmatic approach
Testing, a pragmatic approachEnrico Da Ros
Ā 
Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
Ā 
Perforce Web Services
Perforce Web ServicesPerforce Web Services
Perforce Web ServicesPerforce
Ā 
Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008Pete Schneider
Ā 
26.1a.Introduction to DEVOPS_v2.pptx
26.1a.Introduction to DEVOPS_v2.pptx26.1a.Introduction to DEVOPS_v2.pptx
26.1a.Introduction to DEVOPS_v2.pptxPanos Fitsilis
Ā 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesTao Xie
Ā 
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Joe Ferguson
Ā 
BDD for APIs
BDD for APIsBDD for APIs
BDD for APIsJason Harmon
Ā 
Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015 Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015 Joe Ferguson
Ā 
Learn software testing with tech partnerz 1
Learn software testing with tech partnerz 1Learn software testing with tech partnerz 1
Learn software testing with tech partnerz 1Techpartnerz
Ā 

Similar to Furore devdays2017 tdd-2-advanced (20)

Writing Acceptance Tests Using Fitnesse
Writing Acceptance Tests Using FitnesseWriting Acceptance Tests Using Fitnesse
Writing Acceptance Tests Using Fitnesse
Ā 
Choosing right-automation-tool
Choosing right-automation-toolChoosing right-automation-tool
Choosing right-automation-tool
Ā 
Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...
Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...
Accelerate and Automate PeopleSoft 9.2/9.1 Testing with PeopleSoft Test Frame...
Ā 
KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdf
Ā 
FUNTASY - Functional testing automated system
FUNTASY - Functional testing automated systemFUNTASY - Functional testing automated system
FUNTASY - Functional testing automated system
Ā 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspec
Ā 
Unit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step TrainingUnit Testng with PHP Unit - A Step by Step Training
Unit Testng with PHP Unit - A Step by Step Training
Ā 
No Devops Without Continuous Testing
No Devops Without Continuous TestingNo Devops Without Continuous Testing
No Devops Without Continuous Testing
Ā 
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdfTest Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
Test Automation using UiPath Test Suite - Developer Circle Part-3 - 07262022.pdf
Ā 
Best Practices in Web Service Design
Best Practices in Web Service DesignBest Practices in Web Service Design
Best Practices in Web Service Design
Ā 
Testing, a pragmatic approach
Testing, a pragmatic approachTesting, a pragmatic approach
Testing, a pragmatic approach
Ā 
Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023
Ā 
Perforce Web Services
Perforce Web ServicesPerforce Web Services
Perforce Web Services
Ā 
Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008Context Driven Automation Gtac 2008
Context Driven Automation Gtac 2008
Ā 
26.1a.Introduction to DEVOPS_v2.pptx
26.1a.Introduction to DEVOPS_v2.pptx26.1a.Introduction to DEVOPS_v2.pptx
26.1a.Introduction to DEVOPS_v2.pptx
Ā 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and Challenges
Ā 
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Acceptance & Functional Testing with Codeception - SunshinePHP 2016Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Ā 
BDD for APIs
BDD for APIsBDD for APIs
BDD for APIs
Ā 
Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015 Acceptance & Functional Testing with Codeception - Devspace 2015
Acceptance & Functional Testing with Codeception - Devspace 2015
Ā 
Learn software testing with tech partnerz 1
Learn software testing with tech partnerz 1Learn software testing with tech partnerz 1
Learn software testing with tech partnerz 1
Ā 

More from DevDays

Consent dev days
Consent dev daysConsent dev days
Consent dev daysDevDays
Ā 
Mohannad hussain dicom and imaging tools
Mohannad hussain   dicom and imaging toolsMohannad hussain   dicom and imaging tools
Mohannad hussain dicom and imaging toolsDevDays
Ā 
Mohannad hussain community track - siim dataset & dico mweb proxy
Mohannad hussain   community track - siim dataset & dico mweb proxyMohannad hussain   community track - siim dataset & dico mweb proxy
Mohannad hussain community track - siim dataset & dico mweb proxyDevDays
Ā 
Transforming other content (grahame)
Transforming other content (grahame)Transforming other content (grahame)
Transforming other content (grahame)DevDays
Ā 
Structure definition 101 (ewout)
Structure definition 101 (ewout)Structure definition 101 (ewout)
Structure definition 101 (ewout)DevDays
Ā 
Quality improvement dev days-2017
Quality improvement dev days-2017Quality improvement dev days-2017
Quality improvement dev days-2017DevDays
Ā 
Furore devdays 2017- oai
Furore devdays 2017- oaiFurore devdays 2017- oai
Furore devdays 2017- oaiDevDays
Ā 
Furore devdays 2017 - implementation guides (lloyd)
Furore devdays 2017 - implementation guides (lloyd)Furore devdays 2017 - implementation guides (lloyd)
Furore devdays 2017 - implementation guides (lloyd)DevDays
Ā 
Connectathon opening 2017
Connectathon opening 2017Connectathon opening 2017
Connectathon opening 2017DevDays
Ā 
20171127 rene spronk_messaging_the_unloved_paradigm
20171127 rene spronk_messaging_the_unloved_paradigm20171127 rene spronk_messaging_the_unloved_paradigm
20171127 rene spronk_messaging_the_unloved_paradigmDevDays
Ā 
Opening student track
Opening student trackOpening student track
Opening student trackDevDays
Ā 
Furore devdays 2017- continua implementing fhir
Furore devdays 2017- continua implementing fhirFurore devdays 2017- continua implementing fhir
Furore devdays 2017- continua implementing fhirDevDays
Ā 
Fhir dev days_advanced_fhir_terminology_services
Fhir dev days_advanced_fhir_terminology_servicesFhir dev days_advanced_fhir_terminology_services
Fhir dev days_advanced_fhir_terminology_servicesDevDays
Ā 
Distributing cds dev days-2017
Distributing cds dev days-2017Distributing cds dev days-2017
Distributing cds dev days-2017DevDays
Ā 

More from DevDays (14)

Consent dev days
Consent dev daysConsent dev days
Consent dev days
Ā 
Mohannad hussain dicom and imaging tools
Mohannad hussain   dicom and imaging toolsMohannad hussain   dicom and imaging tools
Mohannad hussain dicom and imaging tools
Ā 
Mohannad hussain community track - siim dataset & dico mweb proxy
Mohannad hussain   community track - siim dataset & dico mweb proxyMohannad hussain   community track - siim dataset & dico mweb proxy
Mohannad hussain community track - siim dataset & dico mweb proxy
Ā 
Transforming other content (grahame)
Transforming other content (grahame)Transforming other content (grahame)
Transforming other content (grahame)
Ā 
Structure definition 101 (ewout)
Structure definition 101 (ewout)Structure definition 101 (ewout)
Structure definition 101 (ewout)
Ā 
Quality improvement dev days-2017
Quality improvement dev days-2017Quality improvement dev days-2017
Quality improvement dev days-2017
Ā 
Furore devdays 2017- oai
Furore devdays 2017- oaiFurore devdays 2017- oai
Furore devdays 2017- oai
Ā 
Furore devdays 2017 - implementation guides (lloyd)
Furore devdays 2017 - implementation guides (lloyd)Furore devdays 2017 - implementation guides (lloyd)
Furore devdays 2017 - implementation guides (lloyd)
Ā 
Connectathon opening 2017
Connectathon opening 2017Connectathon opening 2017
Connectathon opening 2017
Ā 
20171127 rene spronk_messaging_the_unloved_paradigm
20171127 rene spronk_messaging_the_unloved_paradigm20171127 rene spronk_messaging_the_unloved_paradigm
20171127 rene spronk_messaging_the_unloved_paradigm
Ā 
Opening student track
Opening student trackOpening student track
Opening student track
Ā 
Furore devdays 2017- continua implementing fhir
Furore devdays 2017- continua implementing fhirFurore devdays 2017- continua implementing fhir
Furore devdays 2017- continua implementing fhir
Ā 
Fhir dev days_advanced_fhir_terminology_services
Fhir dev days_advanced_fhir_terminology_servicesFhir dev days_advanced_fhir_terminology_services
Fhir dev days_advanced_fhir_terminology_services
Ā 
Distributing cds dev days-2017
Distributing cds dev days-2017Distributing cds dev days-2017
Distributing cds dev days-2017
Ā 

Recently uploaded

EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
Ā 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxOH TEIK BIN
Ā 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentInMediaRes1
Ā 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
Ā 
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfFraming an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfUjwalaBharambe
Ā 
call girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļø
call girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļøcall girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļø
call girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļø9953056974 Low Rate Call Girls In Saket, Delhi NCR
Ā 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceSamikshaHamane
Ā 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
Ā 
ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
Ā 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
Ā 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
Ā 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
Ā 
ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,
ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,
ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,Virag Sontakke
Ā 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
Ā 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
Ā 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
Ā 
18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdfssuser54595a
Ā 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfadityarao40181
Ā 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
Ā 

Recently uploaded (20)

EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
Ā 
Solving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptxSolving Puzzles Benefits Everyone (English).pptx
Solving Puzzles Benefits Everyone (English).pptx
Ā 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media Component
Ā 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
Ā 
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfFraming an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Ā 
call girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļø
call girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļøcall girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļø
call girls in Kamla Market (DELHI) šŸ” >ą¼’9953330565šŸ” genuine Escort Service šŸ”āœ”ļøāœ”ļø
Ā 
Roles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in PharmacovigilanceRoles & Responsibilities in Pharmacovigilance
Roles & Responsibilities in Pharmacovigilance
Ā 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
Ā 
ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
ā€œOh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
Ā 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
Ā 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
Ā 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
Ā 
ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,
ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,
ą¤­ą¤¾ą¤°ą¤¤-ą¤°ą„‹ą¤® ą¤µą„ą¤Æą¤¾ą¤Ŗą¤¾ą¤°.pptx, Indo-Roman Trade,
Ā 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
Ā 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
Ā 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
Ā 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
Ā 
18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAŠ”Y_INDEX-DM_23-1-final-eng.pdf
Ā 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdf
Ā 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
Ā 

Furore devdays2017 tdd-2-advanced

  • 1. FHIRĀ® is the registered trademark of HL7 and is used with the permission of HL7. The Flame Design mark is the registered trademark of HL7 and is used with the permission of HL7. Amsterdam, 15-17 November | @fhir_furore | #fhirdevdays17 | www.fhirdevdays.com Test Driven Development II - Advanced Richard Ettema, AEGIS.net, Inc.
  • 2. Presented by ā€¢ Name: Richard Ettema ā€¢ Position: ā€¢ Lead Consultant, AEGIS.net, Inc. ā€¢ FHIRĀ® Certified Implementer ā€¢ Background: ā€¢ 34+ years IT industry experience ā€¢ 14+ years leading HIT development/implementation efforts ā€¢ 4+ years contributing to the HL7Ā® FHIRĀ® specification (focus on testing) ā€¢ Sr. Architect / Lead Developer for the Touchstone Project ā€¢ Author of the AEGIS WildFHIR public test server and client
  • 3. Test Driven Development with FHIR Intro Session Review ā€¢ To ensure interoperability between applications claiming conformance to the specification, a testing framework has been established within the FHIR specification itself https://www.hl7.org/fhir/STU3/testing.html ā€¢ This framework defines a Test Engine for processing a TestScript resource as a natural language, computable format of a test case ā€¢ The TestScript resource is an implementation-agnostic description of tests that allows test engines to evaluate if a FHIR implementation conforms with the FHIR specification https://www.hl7.org/fhir/STU3/testscript.html
  • 4. ā€¢ Testing workflow example ā€¢ How can we trust that the correction is being tested in the same way? Can we trust either test outcome? Known data facilitates known, expected outcomes We will review and examine how to ensure ā€œReliable and Repeatable Testingā€ during the Hands-on Exercises using a ā€œTwo Users, Same Dataā€ scenario Test Passes Run Test Again Developer Correction Test FailsRun Test Reliable and Repeatable Testing
  • 5. Identifying Your Testing Criteria; a.k.a. Asserts ā€¢ Testing simple values ā€¢ Is this the patient I expected? ā€¢ Is this the operation response I expected? ā€¢ Did I get multiple matches when I expected one? ā€¢ Testing specification conformance ā€¢ Is this element required? ā€¢ Is this code value correct? ā€¢ Testing conditionality or constraints ā€¢ Can this element be expressed more than one way and still be compliant? ā€¢ Is this element is only required when another element is present?
  • 6. Asserts can performā€¦ ā€¢ simple operations ā€¢ standard assert operators are constrained to the following: equals | notEquals | in | notIn | greaterThan | lessThan | empty | notEmpty | contains | notContains | eval ā€¢ specification allows for use of XPath or JSONPath expressions ā€¢ complex evaluations ā€¢ specification allows for rules to be defined within the assert ā€¢ specification allows for use of FHIRPath* expressions *FHIRPath is supported within the TestScript resource and by the Touchstone test engine, but will not be a focus of this session. To learn more about FHIRPath, see http://hl7.org/fhirpath
  • 7. Complex Asserts ā€¢ Are used when testing conditionality, constraints or simplifying an existing test construct ā€¢ Support the use of FHIRPath ā€¢ FHIRPath has expressions, functions, operations ā€¢ Far more functionality than found in the simple assert operators ā€¢ Built-in expressions such as dateTime and quantity ā€¢ Expressions can contain operators ā€¢ Functions like isDistinct, count, subsetOf, supersetOf ā€¢ Support Rules and Rulesets (high level language scripted logic) ā€¢ Touchstone Rules Engine supports Groovy, Schematron and XSLT
  • 8. Complex Asserts - FHIRPath Example ā€¢ FHIRPath provides a syntax neutral way to access the contents of a resource and can simplify assert logic constructs Assert condition: ā€œConfirm that the searchset Bundle total number of entries is at least one (1).ā€ ā€¢ Letā€™s compare XPath and JSONPath to FHIRPathā€¦
  • 9. Complex Asserts - FHIRPath Example Comparison with XPath and JSONPath ā€¢ XPath assert <assert> <operation value=ā€œgreaterThanā€ /> <path value=ā€œ/Bundle/totalā€ /> <value value=ā€œ0ā€ /> </assert> ā€¢ JSONPath assert <assert> <operation value=ā€œgreaterThanā€ /> <path value=ā€œ.totalā€ /> <value value=ā€œ0ā€ /> </assert> ā€¢ FHIRPath assert (equivalent logic) <assert> <expression value=ā€œBundle.total.toInteger() &gt; 0ā€ /> </assert> ā€¢ FHIRPath assert (alternative logic) <assert> <expression value=ā€œBundle.entry.count() &gt; 0ā€ /> </assert>
  • 10. Complex Asserts - Rules and Rulesets ā€¢ The TestScript resource allows the use of Rules and Rulesets within the assert ā€¢ Rules are called during TestScript execution ā€¢ In Touchstone, the Rules are hosted within the Test Definition folders ā€¢ Rules may be viewed and will be displayed in Test Results if selected ā€¢ Rulesets are simply collections of one or more Rules ā€¢ Allows for the definition of a group of Rules to be referenced within the TestScript in an efficient manner We will review and examine Rules and Rulesets during the Hands-on Exercises
  • 11. FHIR Client or Peer-to-Peer Testing ā€¢ TestScripts in Touchstone can be either Server-only, Client (Peer-to- Peer), or Multi-actor ā€¢ Server-only: Touchstone initiates requests to the destination FHIR System and evaluates the response ā€¢ Client (Peer-to-Peer): Touchstone waits for a request from the origin FHIR System to be received, evaluates the request, sends to the destination FHIR System, and evaluates the response ā€¢ Multi-actor: Touchstone may act as the initiating system along with other FHIR Test Systems acting as either a Client or Server
  • 12. Client (Peer-to-Peer) Testing - Test Setup ā€¢ Select a Client TestScript from the Test Definitions list ā€¢ Select and fill in any test data necessary for test execution ā€¢ Origin Test System (Client) ā€¢ Destination Test System (Server) ā€¢ (Dynamic) Variables
  • 13. Client (Peer-to-Peer) Testing - Test Execution
  • 14. Client (Peer-to-Peer) Testing - TestScript Execution We will review and examine Client Testing during the Hands-on Exercises
  • 15. Captured Message Exchanges ā€¢ The Exchanges dashboard in Touchstone allows users to view all captured request and response messages ā€¢ Touchstone will match an exchange with a test execution using these checks: ā€¢ If your test server is already defined within Touchstone and is publicly accessible, the message can be matched by originating IP address ā€¢ If that is not possible, the system attempts to use USER_KEY and ORG_KEY ā€¢ Else, the system cannot match the message to a test execution
  • 16. USER_KEY and ORG_KEY ā€¢ USER_KEY and ORG_KEY are special placeholders ā€¢ They can be sent by the client system as an HTTP request header or within the request payload ā€¢ They identify the client system when the machine name or IP address would not
  • 17. Introducing the Touchstone APIs ā€¢ Test executions can be launched and monitored via remote RESTful web services ā€¢ Provides the means to integrate Touchstone into your organizationā€™s test executions for: ā€¢ Internal automated regressions tests ā€¢ Continuous Integration build processes ā€¢ Documentation and example messages are available ā€¢ Supported formats ā€“ JSON and XML
  • 18. Touchstone API Capabilities ā€¢ The Touchstone APIs allow for many of the same non-administrative functions as the User Interface ā€¢ Test executions launched on behalf of a remote test user via Touchstone API will be visible to all members of your organization on the Touchstone UI ā€¢ Any member of your organization can log in to the Touchstone UI and investigate test failures if needed
  • 19. Touchstone API Services POST authenticate ļƒ  Authenticate with Touchstone; return new API session key POST testExecution ļƒ  Launch a new test execution for an existing Test Setup GET testExecution ļƒ  Return the status of a know test execution GET testExecDetail ļƒ  Return summary status of all test execution TestScripts GET scriptExecDetail ļƒ  Return test execution single TestScript details GET testReport ļƒ  Same as GET scriptExecDetail except returns FHIR TestReport
  • 20. Touchstone API - Jenkins CI Server Integration Example ā€¢ The Touchstone User Guide documents a Jenkins CI Server Integration Example ā€¢ https://touchstone.aegis.net/touchstone/TouchstoneUserGuide, section ā€˜Touchstone API ā€“ Jenkins Integration Exampleā€™ ā€¢ Illustrates the use of the Jenkins Groovy Plugin ā€¢ Builds on the example code from the previous ā€˜Touchstone API ā€“ Definitionā€™ section Due to not having a publicly available Jenkins CI Server at this event, there is no corresponding Hands-on Exercises for this topic.
  • 21. Conformance Testing ā€¢ Conformance Testing validates a system against known standards ā€¢ FHIR Specification (including Implementation Guides) ā€¢ Version support (forward/backward compatibility) ā€¢ Continuous Conformance Testing shows that an organization is currently conformant, but also committed to remain conformant ā€¢ Future development minded - interoperability needs to be addressed on a continuous basis ā€¢ Development Aid - developers can integrate FHIR conformance testing into their build cycle to avoid costly conformance code rewrites later ā€¢ Regression testing - validate that changes and enhancements are also conformant
  • 23. Hands on Exercises ā€¢ Reliable and Repeatable Testing - Two Users, Same Data ā€¢ Complex Asserts ā€¢ FHIRPath comparison to XPath and JSONPath ā€¢ Rules and Rulesets ā€¢ Advanced TestScripts ā€¢ FHIR Client / Peer-to-Peer ā€¢ Conformance Analytics Dashboard ā€¢ Connectathon Test Track ā€¢ We will continue our review of one of the test tracks for the next HL7 FHIR Connectathon 17 event and the development of TestScripts
  • 25. FHIRĀ® is the registered trademark of HL7 and is used with the permission of HL7. The Flame Design mark is the registered trademark of HL7 and is used with the permission of HL7. Amsterdam, 15-17 November | @fhir_furore | #fhirdevdays17 | www.fhirdevdays.com Thank you!