SlideShare a Scribd company logo
This document is confidential and contains proprietary information, including trade secrets of CitiusTech. Neither the document nor any of the information
contained in it may be reproduced or disclosed to any unauthorized person under any circumstances without the express written permission of CitiusTech.
Building Efficient Software with Property
Based Testing
19 February, 2019 | Author: Gayatri Himthani | Technical Lead
CitiusTech Thought
Leadership
2
Agenda
▪ Introduction to Property Based Testing
▪ Failures due to lack of Testing
▪ Methods to Define Properties
▪ Property Based Testing of a Web Service
▪ Property Based Testing of a Stateful System
▪ Property Based Testing in Healthcare
▪ Available Property Based Testing Frameworks
▪ Conclusion
3
Introduction: Property Based Testing
Beyond Unit Testing
Unit tests are written with a predefined input in mind. For any
scenario, it’s unfeasible to test functionality with all input
variations, to make unit tests and code coverage inadequate
indicators of a thoroughly tested code.
Property Based
Testing
In Property Based Testing, a System Under Test (SUT) runs
frequently with all possible valid inputs that can break the
code.
Finding the Edge Case
/ Shrinking the Input
After the test is broken, a PBT framework shrinks the input to
find the smallest input that falsifies the test. This helps to find
the edge case inputs – empty strings, Unicode characters,
special characters, empty list, negative numbers, lengthy lists,
etc.
Focus on the Property
Assertions / specifications written in SUT test the property of
the functionality being coded. E.g. A DateTimeValue should
have same Date when expressed in milliseconds and
nanoseconds.
4
1. Sorting problem in JDK with Tim Sort Algorithm
▪ This problem occurred in JDK 7u76, 8 and 9. When a custom comparison logic is written, the Tim
Sort algorithm presents an exception – “ArrayIndexOutOfBoundsException” for worst-case long
arrays
▪ This bug has been resolved in later versions of JDK 9 (Details can be found at -
https://bugs.openjdk.java.net/browse/JDK-8072909)
▪ This is an edge case scenario as the algorithm breaks for particular input length collection. It is
highly possible that unit test was missed for this case
2. Heartbleed Open SSL bug of 2014
▪ Heartbleed bug arose because a critical check was missing – the receiver of the Heartbeat
request never checked the length it claimed
▪ From Martin Fowler’s blog:
o “Heartbleed was a similarly heartbreaking case of untested security-critical code which
appeared as part of the ubiquitous OpenSSL library”
o “The change introducing the bug was code reviewed; it is apparent that the reviewer did not
insist that the change include unit tests”
▪ When the logic becomes complex, it becomes exponentially difficult to write tests with all input
variations
Failures due to lack of Testing
5
Methods to Define Properties
1. Inversing
Applying an inverse function to a function should result in original input.
e.g. For a given input x in a defined range of inputs, the property
“deserialize (serialize(x)) == x”
should always hold true
OR
For a given input x in a defined range of inputs, the property
“decode (encode(x)) == x”
should always hold true
2. Idempotency
Multiple application of the same function to an input doesn’t change the result,
e.g. ‘Sorting’ or ‘Ordering’ a collection multiple times should present the same
result
3. Invariance
Certain properties should never change after the code has run against the input
multiple times. E.g., the hash value of keys of a collection should never change
after any operation; sorting should never change the size of a collection
6
Methods to Define Properties
4. Commutativity
The change in order of applying the function should not change the result.
E.g., Sorting a List, negating, then reversing it == negating the list, then
sorting it
5. Alternative Implementation
There is also an alternate implementation available for the functionality
developed. This approach can be used to test the correctness of the code.
E.g., Sorting a collection with a new algorithm == sorting a collection with
Bubble sort
6. Business Rule as a Property
In the real world, we are guided by business rules to write software, and
are reliable to define properties for testing. Business rules not only deal
with primitive types, but with complex objects too
7
▪ Web services and APIs are an inherent part of software development, and It’s crucial
to have a break-proof implementation, as it may be consumed by variety of clients
with various purposes. To achieve this, ensure:
o The API doesn’t break for any valid input and generates a valid output under the
defined schema / rules
o Property of the API functionality works as per the definition for all valid inputs
▪ As illustrated below, a typical Property Based Testing framework can be used to test
the API. PBT will generate inputs based on the schema; test the specification written
against the API implementation; and validate the output based on schema
Property Based Testing of a Web Service
PBT
(Test the
property of
an API)
Input
………….
Output
………….
Input &
Output
Schema
Result
(Pass / Fail)
Client
Upon failure, tests are run again with shrunken input to identify the edge case
8
▪ State cannot be avoided in OOP world
▪ A correct sequence of states defines a property of a
stateful system
▪ Property Based Testing can help test a stateful system by
generating random sequence of actions and verifying
their output against a defined property
▪ From the adjoining workflow, consider a scenario where
patient encounter has defined states
o An event / action will trigger the change in state
o A typical PBT framework will generate a random
sequence of actions and test the next state along
with any defined conditions
o Upon failure, the framework will shrink the
sequence of action commands to give the smallest
set of actions that falsifies the property
Property Based Testing of a Stateful System
Examination
Diagnosis
Treatment
Evaluation
Completed
States of Patient Encounter
9
▪ Healthcare technology systems are getting more complex to support various
healthcare workflows. It’s critical to ensure that the quality of software isn’t
compromised for patient safety
▪ For feature development, compliance with regulatory (HIPAA) standards and
interoperability rules of DICOM, HL7, CDA etc. are considered along with complex
functional / business rules
▪ Testing should ensure that a feature is penetrated by all possible variations of inputs
and it doesn’t break the software at any particular input
▪ Properties / specifications can be defined for features of various healthcare systems
(claim systems, healthcare CRM, EHR portals etc.) with the help of business and
compliance rules and extensive domain knowledge
▪ For complex software like claims systems, there’s a high frequency of modification,
which makes the feature vulnerable to bugs if not tested against various possible
inputs
▪ Property Based Testing helps to generate a wide array of possible inputs, and
identifies the edge case for a failed scenario
Property Based Testing in Healthcare
Correct a feature during development to improve the quality of codes
10
Available Property Based Testing Frameworks
Programming Language PBT Framework
Java junit-Quickcheck, QuickTheories, jqwik
C#, F#, VB FsCheck
Python Hypothesis, pytest quickcheck
Haskell HaskellQuickcheck
Erlang, Elixir Quviq Quickcheck
Javascript QC.js, jsverify
Scala ScalaCheck
C Theft
C++ Quickcheck++
Clojure ClojureCheck
QuickChek for Haskell is the first Property Based Testing tool
developed for testing Haskell programs
11
▪ Property Based Testing is not difficult but thoughtful
▪ Property Based Testing should not be implemented to achieve code
coverage, but to test critical functionality of an implemented feature
▪ The code to implement functionality shouldn’t be re-written to test a
property, as it violates the abstraction and encapsulation principles of
programming
▪ Patterns mentioned in previous sections should be employed to
define properties
Conclusion
12
▪ Quviq Quickcheck: http://www.quviq.com/products/erlang-quickcheck/
▪ FsCheck Docs: https://fscheck.github.io/FsCheck/index.html
▪ Jqwik: https://jqwik.net/
▪ Junit-Quickcheck: https://github.com/pholser/junit-quickcheck
▪ HeartBleed Vulnerability: https://martinfowler.com/articles/testing-culture.html
▪ Choosing properties for PBT:
o https://fsharpforfunandprofit.com/posts/property-based-testing-2/
o https://www.ibm.com/developerworks/community/files/form/anonymous/api/library/382
18957-7195-4fe9-812a-10b7869e4a87/document/ab12b05b-9f07-4146-8514-
18e22bd5408c/media
References
13
Thank You
Authors:
Gayatri Himthani
thoughtleaders@citiustech.com
About CitiusTech
3,500+
healthcare IT professionals worldwide
100%
healthcare industry focus
30%+
CAGR over last 5 years
110+
healthcare customers
• Healthcare technology companies
• Hospitals, IDNs & medical groups
• Payers and health plans
• ACOs, MCOs, HIEs, HIXs, NHINs
• Pharma & Life Sciences companies

More Related Content

What's hot

Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...
Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...
Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...Perficient
 
JagSinghupdated
JagSinghupdatedJagSinghupdated
JagSinghupdatedjag singh
 
Automating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario TestingAutomating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario Testing
TechWell
 
Migrating from Oracle AERS to Argus Safety: Reasons for the Move
Migrating from Oracle AERS to Argus Safety: Reasons for the MoveMigrating from Oracle AERS to Argus Safety: Reasons for the Move
Migrating from Oracle AERS to Argus Safety: Reasons for the Move
Perficient, Inc.
 
SAP Performance Testing Best Practice Guide v1.0
SAP Performance Testing Best Practice Guide v1.0SAP Performance Testing Best Practice Guide v1.0
SAP Performance Testing Best Practice Guide v1.0
Argos
 
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
Iosif Itkin
 
Oracle Real Application Testing: A Business Case
Oracle Real Application Testing: A Business CaseOracle Real Application Testing: A Business Case
Oracle Real Application Testing: A Business Caseoracleonthebrain
 
Middleware Soa Qualification Process Ver 2
Middleware Soa  Qualification Process Ver 2Middleware Soa  Qualification Process Ver 2
Middleware Soa Qualification Process Ver 2David Stephenson
 
Strategic Maintenance Brozine_8_6_2008
Strategic Maintenance Brozine_8_6_2008Strategic Maintenance Brozine_8_6_2008
Strategic Maintenance Brozine_8_6_2008Kevin Oswald
 
Jarrel Thomas Project History
Jarrel Thomas Project HistoryJarrel Thomas Project History
Jarrel Thomas Project HistoryJarrel Thomas
 
T3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of ExcellenceT3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of Excellence
veehikle
 
Anu_Sharma2016_DWH
Anu_Sharma2016_DWHAnu_Sharma2016_DWH
Anu_Sharma2016_DWHAnu Sharma
 
Monitoring in the DevOps Era
Monitoring in the DevOps EraMonitoring in the DevOps Era
Monitoring in the DevOps Era
Mike Kavis
 
Multidimensional Challenges and the Impact of Test Data Management
Multidimensional Challenges and the Impact of Test Data ManagementMultidimensional Challenges and the Impact of Test Data Management
Multidimensional Challenges and the Impact of Test Data Management
Cognizant
 
Ch5 software imprementation1.0
Ch5 software imprementation1.0Ch5 software imprementation1.0
Ch5 software imprementation1.0Kittitouch Suteeca
 
Ahesanali Vijapura - QA Manager
Ahesanali Vijapura - QA ManagerAhesanali Vijapura - QA Manager
Ahesanali Vijapura - QA Managerahesanvijapura
 

What's hot (20)

Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...
Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...
Integrating Oracle Argus Safety with other Clinical Systems Using Argus Inter...
 
JagSinghupdated
JagSinghupdatedJagSinghupdated
JagSinghupdated
 
Automating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario TestingAutomating End-to-End Business Scenario Testing
Automating End-to-End Business Scenario Testing
 
Migrating from Oracle AERS to Argus Safety: Reasons for the Move
Migrating from Oracle AERS to Argus Safety: Reasons for the MoveMigrating from Oracle AERS to Argus Safety: Reasons for the Move
Migrating from Oracle AERS to Argus Safety: Reasons for the Move
 
Vidhur Racharla_v6
Vidhur Racharla_v6Vidhur Racharla_v6
Vidhur Racharla_v6
 
SAP Performance Testing Best Practice Guide v1.0
SAP Performance Testing Best Practice Guide v1.0SAP Performance Testing Best Practice Guide v1.0
SAP Performance Testing Best Practice Guide v1.0
 
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
 
Purush CV
Purush CVPurush CV
Purush CV
 
Oracle Real Application Testing: A Business Case
Oracle Real Application Testing: A Business CaseOracle Real Application Testing: A Business Case
Oracle Real Application Testing: A Business Case
 
Middleware Soa Qualification Process Ver 2
Middleware Soa  Qualification Process Ver 2Middleware Soa  Qualification Process Ver 2
Middleware Soa Qualification Process Ver 2
 
Strategic Maintenance Brozine_8_6_2008
Strategic Maintenance Brozine_8_6_2008Strategic Maintenance Brozine_8_6_2008
Strategic Maintenance Brozine_8_6_2008
 
Jarrel Thomas Project History
Jarrel Thomas Project HistoryJarrel Thomas Project History
Jarrel Thomas Project History
 
T3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of ExcellenceT3 Consortium's Performance Center of Excellence
T3 Consortium's Performance Center of Excellence
 
Anu_Sharma2016_DWH
Anu_Sharma2016_DWHAnu_Sharma2016_DWH
Anu_Sharma2016_DWH
 
Monitoring in the DevOps Era
Monitoring in the DevOps EraMonitoring in the DevOps Era
Monitoring in the DevOps Era
 
Multidimensional Challenges and the Impact of Test Data Management
Multidimensional Challenges and the Impact of Test Data ManagementMultidimensional Challenges and the Impact of Test Data Management
Multidimensional Challenges and the Impact of Test Data Management
 
Rajasekkar
RajasekkarRajasekkar
Rajasekkar
 
Ch5 software imprementation1.0
Ch5 software imprementation1.0Ch5 software imprementation1.0
Ch5 software imprementation1.0
 
Ahesanali Vijapura - QA Manager
Ahesanali Vijapura - QA ManagerAhesanali Vijapura - QA Manager
Ahesanali Vijapura - QA Manager
 
Ramesha Rao
Ramesha RaoRamesha Rao
Ramesha Rao
 

Similar to Building Efficient Software with Property Based Testing

Clean Code in Test Automation Differentiating Between the Good and the Bad
Clean Code in Test Automation  Differentiating Between the Good and the BadClean Code in Test Automation  Differentiating Between the Good and the Bad
Clean Code in Test Automation Differentiating Between the Good and the Bad
Knoldus Inc.
 
Laravel Load Testing: Strategies and Tools
Laravel Load Testing: Strategies and ToolsLaravel Load Testing: Strategies and Tools
Laravel Load Testing: Strategies and Tools
Muhammad Shehata
 
Apex Trigger Debugging: Solving the Hard Problems
Apex Trigger Debugging: Solving the Hard ProblemsApex Trigger Debugging: Solving the Hard Problems
Apex Trigger Debugging: Solving the Hard Problems
Salesforce Developers
 
Cypress Best Pratices for Test Automation
Cypress Best Pratices for Test AutomationCypress Best Pratices for Test Automation
Cypress Best Pratices for Test Automation
Knoldus Inc.
 
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f..." Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
Lohika_Odessa_TechTalks
 
Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.
Deepak Singhvi
 
Test automation lesson
Test automation lessonTest automation lesson
Test automation lesson
Sadaaki Emura
 
Deliver Faster with BDD/TDD - Designing Automated Tests That Don't Suck
Deliver Faster with BDD/TDD - Designing Automated Tests That Don't SuckDeliver Faster with BDD/TDD - Designing Automated Tests That Don't Suck
Deliver Faster with BDD/TDD - Designing Automated Tests That Don't Suck
Kevin Brockhoff
 
testing
testingtesting
testing
Rashmi Deoli
 
To Open Banking and Beyond: Developing APIs that are Resilient to every new I...
To Open Banking and Beyond: Developing APIs that are Resilient to every new I...To Open Banking and Beyond: Developing APIs that are Resilient to every new I...
To Open Banking and Beyond: Developing APIs that are Resilient to every new I...
Curiosity Software Ireland
 
Automation Test Framework
Automation Test FrameworkAutomation Test Framework
Automation Test Framework
Sachin-QA
 
Building functional Quality Gates with ReportPortal
Building functional Quality Gates with ReportPortalBuilding functional Quality Gates with ReportPortal
Building functional Quality Gates with ReportPortal
Dmitriy Gumeniuk
 
Qtp interview questions
Qtp interview questionsQtp interview questions
Qtp interview questionsRamu Palanki
 
Qtp interview questions
Qtp interview questionsQtp interview questions
Qtp interview questionsRamu Palanki
 
Sakar Patnaik_1.5_testing_Manual_Automation_Selenium
Sakar Patnaik_1.5_testing_Manual_Automation_SeleniumSakar Patnaik_1.5_testing_Manual_Automation_Selenium
Sakar Patnaik_1.5_testing_Manual_Automation_SeleniumSAKAR PATNAIK
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
Iosif Itkin
 
Software testing mtech project in jalandhar
Software testing mtech project in jalandharSoftware testing mtech project in jalandhar
Software testing mtech project in jalandhar
deepikakaler1
 
Software testing mtech project in ludhiana
Software testing mtech project in ludhianaSoftware testing mtech project in ludhiana
Software testing mtech project in ludhiana
deepikakaler1
 
Agile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard ChengAgile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard Cheng
Excella
 
Software testing
Software testingSoftware testing
Software testing
Janu Jahnavi
 

Similar to Building Efficient Software with Property Based Testing (20)

Clean Code in Test Automation Differentiating Between the Good and the Bad
Clean Code in Test Automation  Differentiating Between the Good and the BadClean Code in Test Automation  Differentiating Between the Good and the Bad
Clean Code in Test Automation Differentiating Between the Good and the Bad
 
Laravel Load Testing: Strategies and Tools
Laravel Load Testing: Strategies and ToolsLaravel Load Testing: Strategies and Tools
Laravel Load Testing: Strategies and Tools
 
Apex Trigger Debugging: Solving the Hard Problems
Apex Trigger Debugging: Solving the Hard ProblemsApex Trigger Debugging: Solving the Hard Problems
Apex Trigger Debugging: Solving the Hard Problems
 
Cypress Best Pratices for Test Automation
Cypress Best Pratices for Test AutomationCypress Best Pratices for Test Automation
Cypress Best Pratices for Test Automation
 
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f..." Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
 
Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.
 
Test automation lesson
Test automation lessonTest automation lesson
Test automation lesson
 
Deliver Faster with BDD/TDD - Designing Automated Tests That Don't Suck
Deliver Faster with BDD/TDD - Designing Automated Tests That Don't SuckDeliver Faster with BDD/TDD - Designing Automated Tests That Don't Suck
Deliver Faster with BDD/TDD - Designing Automated Tests That Don't Suck
 
testing
testingtesting
testing
 
To Open Banking and Beyond: Developing APIs that are Resilient to every new I...
To Open Banking and Beyond: Developing APIs that are Resilient to every new I...To Open Banking and Beyond: Developing APIs that are Resilient to every new I...
To Open Banking and Beyond: Developing APIs that are Resilient to every new I...
 
Automation Test Framework
Automation Test FrameworkAutomation Test Framework
Automation Test Framework
 
Building functional Quality Gates with ReportPortal
Building functional Quality Gates with ReportPortalBuilding functional Quality Gates with ReportPortal
Building functional Quality Gates with ReportPortal
 
Qtp interview questions
Qtp interview questionsQtp interview questions
Qtp interview questions
 
Qtp interview questions
Qtp interview questionsQtp interview questions
Qtp interview questions
 
Sakar Patnaik_1.5_testing_Manual_Automation_Selenium
Sakar Patnaik_1.5_testing_Manual_Automation_SeleniumSakar Patnaik_1.5_testing_Manual_Automation_Selenium
Sakar Patnaik_1.5_testing_Manual_Automation_Selenium
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
 
Software testing mtech project in jalandhar
Software testing mtech project in jalandharSoftware testing mtech project in jalandhar
Software testing mtech project in jalandhar
 
Software testing mtech project in ludhiana
Software testing mtech project in ludhianaSoftware testing mtech project in ludhiana
Software testing mtech project in ludhiana
 
Agile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard ChengAgile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard Cheng
 
Software testing
Software testingSoftware testing
Software testing
 

More from CitiusTech

Member Engagement Using Sentiment Analysis for Health Plans
Member Engagement Using Sentiment Analysis for Health PlansMember Engagement Using Sentiment Analysis for Health Plans
Member Engagement Using Sentiment Analysis for Health Plans
CitiusTech
 
Evolving Role of Digital Biomarkers in Healthcare
Evolving Role of Digital Biomarkers in HealthcareEvolving Role of Digital Biomarkers in Healthcare
Evolving Role of Digital Biomarkers in Healthcare
CitiusTech
 
Virtual Care: Key Challenges & Opportunities for Payer Organizations
Virtual Care: Key Challenges & Opportunities for Payer Organizations Virtual Care: Key Challenges & Opportunities for Payer Organizations
Virtual Care: Key Challenges & Opportunities for Payer Organizations
CitiusTech
 
Provider-led Health Plans (Payviders)
Provider-led Health Plans (Payviders)Provider-led Health Plans (Payviders)
Provider-led Health Plans (Payviders)
CitiusTech
 
CMS Medicare Advantage 2021 Star Ratings: An Analysis
CMS Medicare Advantage 2021 Star Ratings: An AnalysisCMS Medicare Advantage 2021 Star Ratings: An Analysis
CMS Medicare Advantage 2021 Star Ratings: An Analysis
CitiusTech
 
Accelerate Healthcare Technology Modernization with Containerization and DevOps
Accelerate Healthcare Technology Modernization with Containerization and DevOpsAccelerate Healthcare Technology Modernization with Containerization and DevOps
Accelerate Healthcare Technology Modernization with Containerization and DevOps
CitiusTech
 
FHIR for Life Sciences
FHIR for Life SciencesFHIR for Life Sciences
FHIR for Life Sciences
CitiusTech
 
Leveraging Analytics to Identify High Risk Patients
Leveraging Analytics to Identify High Risk PatientsLeveraging Analytics to Identify High Risk Patients
Leveraging Analytics to Identify High Risk Patients
CitiusTech
 
FHIR Adoption Framework for Payers
FHIR Adoption Framework for PayersFHIR Adoption Framework for Payers
FHIR Adoption Framework for Payers
CitiusTech
 
Payer-Provider Engagement
Payer-Provider Engagement Payer-Provider Engagement
Payer-Provider Engagement
CitiusTech
 
COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021
COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021
COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021
CitiusTech
 
Demystifying Robotic Process Automation (RPA) & Automation Testing
Demystifying Robotic Process Automation (RPA) & Automation TestingDemystifying Robotic Process Automation (RPA) & Automation Testing
Demystifying Robotic Process Automation (RPA) & Automation Testing
CitiusTech
 
Progressive Web Apps in Healthcare
Progressive Web Apps in HealthcareProgressive Web Apps in Healthcare
Progressive Web Apps in Healthcare
CitiusTech
 
RPA in Healthcare
RPA in HealthcareRPA in Healthcare
RPA in Healthcare
CitiusTech
 
6 Epilepsy Use Cases for NLP
6 Epilepsy Use Cases for NLP6 Epilepsy Use Cases for NLP
6 Epilepsy Use Cases for NLP
CitiusTech
 
Opioid Epidemic - Causes, Impact and Future
Opioid Epidemic - Causes, Impact and FutureOpioid Epidemic - Causes, Impact and Future
Opioid Epidemic - Causes, Impact and Future
CitiusTech
 
Rising Importance of Health Economics & Outcomes Research
Rising Importance of Health Economics & Outcomes ResearchRising Importance of Health Economics & Outcomes Research
Rising Importance of Health Economics & Outcomes Research
CitiusTech
 
ICD 11: Impact on Payer Market
ICD 11: Impact on Payer MarketICD 11: Impact on Payer Market
ICD 11: Impact on Payer Market
CitiusTech
 
Testing Strategies for Data Lake Hosted on Hadoop
Testing Strategies for Data Lake Hosted on HadoopTesting Strategies for Data Lake Hosted on Hadoop
Testing Strategies for Data Lake Hosted on Hadoop
CitiusTech
 
Driving Home Health Efficiency through Data Analytics
Driving Home Health Efficiency through Data AnalyticsDriving Home Health Efficiency through Data Analytics
Driving Home Health Efficiency through Data Analytics
CitiusTech
 

More from CitiusTech (20)

Member Engagement Using Sentiment Analysis for Health Plans
Member Engagement Using Sentiment Analysis for Health PlansMember Engagement Using Sentiment Analysis for Health Plans
Member Engagement Using Sentiment Analysis for Health Plans
 
Evolving Role of Digital Biomarkers in Healthcare
Evolving Role of Digital Biomarkers in HealthcareEvolving Role of Digital Biomarkers in Healthcare
Evolving Role of Digital Biomarkers in Healthcare
 
Virtual Care: Key Challenges & Opportunities for Payer Organizations
Virtual Care: Key Challenges & Opportunities for Payer Organizations Virtual Care: Key Challenges & Opportunities for Payer Organizations
Virtual Care: Key Challenges & Opportunities for Payer Organizations
 
Provider-led Health Plans (Payviders)
Provider-led Health Plans (Payviders)Provider-led Health Plans (Payviders)
Provider-led Health Plans (Payviders)
 
CMS Medicare Advantage 2021 Star Ratings: An Analysis
CMS Medicare Advantage 2021 Star Ratings: An AnalysisCMS Medicare Advantage 2021 Star Ratings: An Analysis
CMS Medicare Advantage 2021 Star Ratings: An Analysis
 
Accelerate Healthcare Technology Modernization with Containerization and DevOps
Accelerate Healthcare Technology Modernization with Containerization and DevOpsAccelerate Healthcare Technology Modernization with Containerization and DevOps
Accelerate Healthcare Technology Modernization with Containerization and DevOps
 
FHIR for Life Sciences
FHIR for Life SciencesFHIR for Life Sciences
FHIR for Life Sciences
 
Leveraging Analytics to Identify High Risk Patients
Leveraging Analytics to Identify High Risk PatientsLeveraging Analytics to Identify High Risk Patients
Leveraging Analytics to Identify High Risk Patients
 
FHIR Adoption Framework for Payers
FHIR Adoption Framework for PayersFHIR Adoption Framework for Payers
FHIR Adoption Framework for Payers
 
Payer-Provider Engagement
Payer-Provider Engagement Payer-Provider Engagement
Payer-Provider Engagement
 
COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021
COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021
COVID19: Impact & Mitigation Strategies for Payer Quality Improvement 2021
 
Demystifying Robotic Process Automation (RPA) & Automation Testing
Demystifying Robotic Process Automation (RPA) & Automation TestingDemystifying Robotic Process Automation (RPA) & Automation Testing
Demystifying Robotic Process Automation (RPA) & Automation Testing
 
Progressive Web Apps in Healthcare
Progressive Web Apps in HealthcareProgressive Web Apps in Healthcare
Progressive Web Apps in Healthcare
 
RPA in Healthcare
RPA in HealthcareRPA in Healthcare
RPA in Healthcare
 
6 Epilepsy Use Cases for NLP
6 Epilepsy Use Cases for NLP6 Epilepsy Use Cases for NLP
6 Epilepsy Use Cases for NLP
 
Opioid Epidemic - Causes, Impact and Future
Opioid Epidemic - Causes, Impact and FutureOpioid Epidemic - Causes, Impact and Future
Opioid Epidemic - Causes, Impact and Future
 
Rising Importance of Health Economics & Outcomes Research
Rising Importance of Health Economics & Outcomes ResearchRising Importance of Health Economics & Outcomes Research
Rising Importance of Health Economics & Outcomes Research
 
ICD 11: Impact on Payer Market
ICD 11: Impact on Payer MarketICD 11: Impact on Payer Market
ICD 11: Impact on Payer Market
 
Testing Strategies for Data Lake Hosted on Hadoop
Testing Strategies for Data Lake Hosted on HadoopTesting Strategies for Data Lake Hosted on Hadoop
Testing Strategies for Data Lake Hosted on Hadoop
 
Driving Home Health Efficiency through Data Analytics
Driving Home Health Efficiency through Data AnalyticsDriving Home Health Efficiency through Data Analytics
Driving Home Health Efficiency through Data Analytics
 

Recently uploaded

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 

Recently uploaded (20)

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 

Building Efficient Software with Property Based Testing

  • 1. This document is confidential and contains proprietary information, including trade secrets of CitiusTech. Neither the document nor any of the information contained in it may be reproduced or disclosed to any unauthorized person under any circumstances without the express written permission of CitiusTech. Building Efficient Software with Property Based Testing 19 February, 2019 | Author: Gayatri Himthani | Technical Lead CitiusTech Thought Leadership
  • 2. 2 Agenda ▪ Introduction to Property Based Testing ▪ Failures due to lack of Testing ▪ Methods to Define Properties ▪ Property Based Testing of a Web Service ▪ Property Based Testing of a Stateful System ▪ Property Based Testing in Healthcare ▪ Available Property Based Testing Frameworks ▪ Conclusion
  • 3. 3 Introduction: Property Based Testing Beyond Unit Testing Unit tests are written with a predefined input in mind. For any scenario, it’s unfeasible to test functionality with all input variations, to make unit tests and code coverage inadequate indicators of a thoroughly tested code. Property Based Testing In Property Based Testing, a System Under Test (SUT) runs frequently with all possible valid inputs that can break the code. Finding the Edge Case / Shrinking the Input After the test is broken, a PBT framework shrinks the input to find the smallest input that falsifies the test. This helps to find the edge case inputs – empty strings, Unicode characters, special characters, empty list, negative numbers, lengthy lists, etc. Focus on the Property Assertions / specifications written in SUT test the property of the functionality being coded. E.g. A DateTimeValue should have same Date when expressed in milliseconds and nanoseconds.
  • 4. 4 1. Sorting problem in JDK with Tim Sort Algorithm ▪ This problem occurred in JDK 7u76, 8 and 9. When a custom comparison logic is written, the Tim Sort algorithm presents an exception – “ArrayIndexOutOfBoundsException” for worst-case long arrays ▪ This bug has been resolved in later versions of JDK 9 (Details can be found at - https://bugs.openjdk.java.net/browse/JDK-8072909) ▪ This is an edge case scenario as the algorithm breaks for particular input length collection. It is highly possible that unit test was missed for this case 2. Heartbleed Open SSL bug of 2014 ▪ Heartbleed bug arose because a critical check was missing – the receiver of the Heartbeat request never checked the length it claimed ▪ From Martin Fowler’s blog: o “Heartbleed was a similarly heartbreaking case of untested security-critical code which appeared as part of the ubiquitous OpenSSL library” o “The change introducing the bug was code reviewed; it is apparent that the reviewer did not insist that the change include unit tests” ▪ When the logic becomes complex, it becomes exponentially difficult to write tests with all input variations Failures due to lack of Testing
  • 5. 5 Methods to Define Properties 1. Inversing Applying an inverse function to a function should result in original input. e.g. For a given input x in a defined range of inputs, the property “deserialize (serialize(x)) == x” should always hold true OR For a given input x in a defined range of inputs, the property “decode (encode(x)) == x” should always hold true 2. Idempotency Multiple application of the same function to an input doesn’t change the result, e.g. ‘Sorting’ or ‘Ordering’ a collection multiple times should present the same result 3. Invariance Certain properties should never change after the code has run against the input multiple times. E.g., the hash value of keys of a collection should never change after any operation; sorting should never change the size of a collection
  • 6. 6 Methods to Define Properties 4. Commutativity The change in order of applying the function should not change the result. E.g., Sorting a List, negating, then reversing it == negating the list, then sorting it 5. Alternative Implementation There is also an alternate implementation available for the functionality developed. This approach can be used to test the correctness of the code. E.g., Sorting a collection with a new algorithm == sorting a collection with Bubble sort 6. Business Rule as a Property In the real world, we are guided by business rules to write software, and are reliable to define properties for testing. Business rules not only deal with primitive types, but with complex objects too
  • 7. 7 ▪ Web services and APIs are an inherent part of software development, and It’s crucial to have a break-proof implementation, as it may be consumed by variety of clients with various purposes. To achieve this, ensure: o The API doesn’t break for any valid input and generates a valid output under the defined schema / rules o Property of the API functionality works as per the definition for all valid inputs ▪ As illustrated below, a typical Property Based Testing framework can be used to test the API. PBT will generate inputs based on the schema; test the specification written against the API implementation; and validate the output based on schema Property Based Testing of a Web Service PBT (Test the property of an API) Input …………. Output …………. Input & Output Schema Result (Pass / Fail) Client Upon failure, tests are run again with shrunken input to identify the edge case
  • 8. 8 ▪ State cannot be avoided in OOP world ▪ A correct sequence of states defines a property of a stateful system ▪ Property Based Testing can help test a stateful system by generating random sequence of actions and verifying their output against a defined property ▪ From the adjoining workflow, consider a scenario where patient encounter has defined states o An event / action will trigger the change in state o A typical PBT framework will generate a random sequence of actions and test the next state along with any defined conditions o Upon failure, the framework will shrink the sequence of action commands to give the smallest set of actions that falsifies the property Property Based Testing of a Stateful System Examination Diagnosis Treatment Evaluation Completed States of Patient Encounter
  • 9. 9 ▪ Healthcare technology systems are getting more complex to support various healthcare workflows. It’s critical to ensure that the quality of software isn’t compromised for patient safety ▪ For feature development, compliance with regulatory (HIPAA) standards and interoperability rules of DICOM, HL7, CDA etc. are considered along with complex functional / business rules ▪ Testing should ensure that a feature is penetrated by all possible variations of inputs and it doesn’t break the software at any particular input ▪ Properties / specifications can be defined for features of various healthcare systems (claim systems, healthcare CRM, EHR portals etc.) with the help of business and compliance rules and extensive domain knowledge ▪ For complex software like claims systems, there’s a high frequency of modification, which makes the feature vulnerable to bugs if not tested against various possible inputs ▪ Property Based Testing helps to generate a wide array of possible inputs, and identifies the edge case for a failed scenario Property Based Testing in Healthcare Correct a feature during development to improve the quality of codes
  • 10. 10 Available Property Based Testing Frameworks Programming Language PBT Framework Java junit-Quickcheck, QuickTheories, jqwik C#, F#, VB FsCheck Python Hypothesis, pytest quickcheck Haskell HaskellQuickcheck Erlang, Elixir Quviq Quickcheck Javascript QC.js, jsverify Scala ScalaCheck C Theft C++ Quickcheck++ Clojure ClojureCheck QuickChek for Haskell is the first Property Based Testing tool developed for testing Haskell programs
  • 11. 11 ▪ Property Based Testing is not difficult but thoughtful ▪ Property Based Testing should not be implemented to achieve code coverage, but to test critical functionality of an implemented feature ▪ The code to implement functionality shouldn’t be re-written to test a property, as it violates the abstraction and encapsulation principles of programming ▪ Patterns mentioned in previous sections should be employed to define properties Conclusion
  • 12. 12 ▪ Quviq Quickcheck: http://www.quviq.com/products/erlang-quickcheck/ ▪ FsCheck Docs: https://fscheck.github.io/FsCheck/index.html ▪ Jqwik: https://jqwik.net/ ▪ Junit-Quickcheck: https://github.com/pholser/junit-quickcheck ▪ HeartBleed Vulnerability: https://martinfowler.com/articles/testing-culture.html ▪ Choosing properties for PBT: o https://fsharpforfunandprofit.com/posts/property-based-testing-2/ o https://www.ibm.com/developerworks/community/files/form/anonymous/api/library/382 18957-7195-4fe9-812a-10b7869e4a87/document/ab12b05b-9f07-4146-8514- 18e22bd5408c/media References
  • 13. 13 Thank You Authors: Gayatri Himthani thoughtleaders@citiustech.com About CitiusTech 3,500+ healthcare IT professionals worldwide 100% healthcare industry focus 30%+ CAGR over last 5 years 110+ healthcare customers • Healthcare technology companies • Hospitals, IDNs & medical groups • Payers and health plans • ACOs, MCOs, HIEs, HIXs, NHINs • Pharma & Life Sciences companies