SlideShare a Scribd company logo
1 of 16
Download to read offline
How to help customers report bugs
accurately
Miroslav Čerkez
Milan Jovanović
2
Intro – how most user report bugs
➢
Friction locks cause throttle
levers to stick.
➢
Suspected crack in windshield.
➢
Aircraft handles funny.
➢
Something loose in cockpit.
➢
Evidence of leak on right main
landing gear.
3
Facts
➢
Most users aren’t technical people
➢
Users don’t have same ideas what helps and
what doesn’t when debugging as developers
➢
Users just want to get their work done
➢
They will not spend a second more than is needed to report
bug
➢
Bugs can be subtle
➢
Bugs can happen in edge cases and are difficult
to explain
4
Our case
➢
Complex system
➢
Supported business processes spanning
multiple years (no strict end state)
➢
Business rules depending on previous system
state
➢
The older the process possible code paths increases
➢
Current bug usually is cause by some undetected bug
upstream
5
Our case - problem
➢
As development progressed bugs are more
difficult to reproduce
➢
Testing team bug reports had 4 pages of text and 3 MB of XML
➢
Onboarding new team members takes very long time
➢
We need a easier way get bug reports
➢
Once we get it; How do we reproduce error
locally?
6
Our case – problem
➢
Bug report contain possible sensitive business
information
➢
If logic depends on data can’t be helped – requires non
technical solution (NDA) – tight control of access
Doctor (developer) can’t operate (fix
error) on a patient (program) without
examining it.
7
Our case - solution
SCENARIO BUILDER
➢
Procedure to collect all relevant data to reproduce issue on a
developer system
➢
Application API for loading data into system (mock setup for
integrated systems etc.)
➢
Custom JUnit runner used to “drive” application into desired
state
8
Scenario bulder – data collection
➢
Application stores all input/output data
➢
Current application state can be calculated by
reprocessing all input data
➢
There must be a finite (small) number of parameters that can
uniquely single out input/output dataset
➢
It is usually business oriented (top level object unique key is a
good candidate)
➢
Get everything developer need in a single zip archive
9
Scenario bulder – data collection
10
Scenario bulder – scenario.xml
11
Scenario bulder – scenario.xml
12
Scenario bulder – Junit runner
➢
Provides integration with build tools
➢
Run scenario test during CI/CD pipeline
➢
Great for regression testing
➢
Validate system for common happy path scenarios on every
build
➢
Simple to configure – annotated test job with folder where
scenario.zip is extracted
13
Scenario bulder – Junit runner –
technical details
➢
Based on BlockJUnit4ClassRunner
➢
scenario.xml schema defines scenario format
➢
Junit runner parses scenario.xml used to drive test execution
➢
Send message to message queue
➢
Send request to HTTP API (public)
➢
Send request to HTTP API (private) – introspection if internal state
14
Scenario bulder – benefits
➢
Core benefits
➢
Bug report consists of last action that resulted in error and
scenario unique id
➢
Short time to bug reproduction in development environment
➢
Side benefits (use cases discovered during
usage)
➢
Introspection of application state history – not only current
state - possible without storing all the states in database
➢
Business analysts began writing specification in technical
language (referent scenarios) [code]
15
Scenario bulder – challanges
➢
Time independent logic
➢
current date, current timestamp == enemy
➢
Develop patterns to mitigate issue
➢
Integration with external systems
➢
Store all external interaction and when running Junit, mock
integration interaction
➢
Parameterization
➢
Attempted to write scenario packets using parameterized
input and output messages
16
Thank you
➢
Thank you!
➢
Questions?

More Related Content

Similar to Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez, Milan Jovanović

Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharing
James Hsieh
 
Guidelhhghghine document final
Guidelhhghghine document finalGuidelhhghghine document final
Guidelhhghghine document final
nanirao686
 
Coverage Solutions on Emulators
Coverage Solutions on EmulatorsCoverage Solutions on Emulators
Coverage Solutions on Emulators
DVClub
 

Similar to Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez, Milan Jovanović (20)

Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharing
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Guidelhhghghine document final
Guidelhhghghine document finalGuidelhhghghine document final
Guidelhhghghine document final
 
Learned lessons in real world projects by Jordi Anguela at Mallorca Software ...
Learned lessons in real world projects by Jordi Anguela at Mallorca Software ...Learned lessons in real world projects by Jordi Anguela at Mallorca Software ...
Learned lessons in real world projects by Jordi Anguela at Mallorca Software ...
 
19-reliabilitytesting.ppt
19-reliabilitytesting.ppt19-reliabilitytesting.ppt
19-reliabilitytesting.ppt
 
Thick Client Testing Basics
Thick Client Testing BasicsThick Client Testing Basics
Thick Client Testing Basics
 
Node js meetup
Node js meetupNode js meetup
Node js meetup
 
Continuous Performance Testing
Continuous Performance TestingContinuous Performance Testing
Continuous Performance Testing
 
Coverage Solutions on Emulators
Coverage Solutions on EmulatorsCoverage Solutions on Emulators
Coverage Solutions on Emulators
 
Penetrating Windows 8 with syringe utility
Penetrating Windows 8 with syringe utilityPenetrating Windows 8 with syringe utility
Penetrating Windows 8 with syringe utility
 
Understanding and Improving Device Access Complexity
Understanding and Improving Device Access ComplexityUnderstanding and Improving Device Access Complexity
Understanding and Improving Device Access Complexity
 
Online Examination System in .NET & DB2
Online Examination System in .NET & DB2Online Examination System in .NET & DB2
Online Examination System in .NET & DB2
 
Affordable trustworthy-systems
Affordable trustworthy-systemsAffordable trustworthy-systems
Affordable trustworthy-systems
 
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonOSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
 
Automatic Test Case Generation
Automatic Test Case GenerationAutomatic Test Case Generation
Automatic Test Case Generation
 
Building a data pipeline to ingest data into Hadoop in minutes using Streamse...
Building a data pipeline to ingest data into Hadoop in minutes using Streamse...Building a data pipeline to ingest data into Hadoop in minutes using Streamse...
Building a data pipeline to ingest data into Hadoop in minutes using Streamse...
 
Mastering Distributed Performance Testing
Mastering Distributed Performance TestingMastering Distributed Performance Testing
Mastering Distributed Performance Testing
 
AVG PC TuneUp Whitepaper 2015
AVG PC TuneUp Whitepaper 2015AVG PC TuneUp Whitepaper 2015
AVG PC TuneUp Whitepaper 2015
 
How to not fail at security data analytics (by CxOSidekick)
How to not fail at security data analytics (by CxOSidekick)How to not fail at security data analytics (by CxOSidekick)
How to not fail at security data analytics (by CxOSidekick)
 
2015 02 24 lmtv baselining
2015 02 24 lmtv baselining2015 02 24 lmtv baselining
2015 02 24 lmtv baselining
 

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Javantura v6 - JDK 11 & JDK 12 - Dalibor TopicJavantura v6 - JDK 11 & JDK 12 - Dalibor Topic
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez, Milan Jovanović

  • 1. How to help customers report bugs accurately Miroslav Čerkez Milan Jovanović
  • 2. 2 Intro – how most user report bugs ➢ Friction locks cause throttle levers to stick. ➢ Suspected crack in windshield. ➢ Aircraft handles funny. ➢ Something loose in cockpit. ➢ Evidence of leak on right main landing gear.
  • 3. 3 Facts ➢ Most users aren’t technical people ➢ Users don’t have same ideas what helps and what doesn’t when debugging as developers ➢ Users just want to get their work done ➢ They will not spend a second more than is needed to report bug ➢ Bugs can be subtle ➢ Bugs can happen in edge cases and are difficult to explain
  • 4. 4 Our case ➢ Complex system ➢ Supported business processes spanning multiple years (no strict end state) ➢ Business rules depending on previous system state ➢ The older the process possible code paths increases ➢ Current bug usually is cause by some undetected bug upstream
  • 5. 5 Our case - problem ➢ As development progressed bugs are more difficult to reproduce ➢ Testing team bug reports had 4 pages of text and 3 MB of XML ➢ Onboarding new team members takes very long time ➢ We need a easier way get bug reports ➢ Once we get it; How do we reproduce error locally?
  • 6. 6 Our case – problem ➢ Bug report contain possible sensitive business information ➢ If logic depends on data can’t be helped – requires non technical solution (NDA) – tight control of access Doctor (developer) can’t operate (fix error) on a patient (program) without examining it.
  • 7. 7 Our case - solution SCENARIO BUILDER ➢ Procedure to collect all relevant data to reproduce issue on a developer system ➢ Application API for loading data into system (mock setup for integrated systems etc.) ➢ Custom JUnit runner used to “drive” application into desired state
  • 8. 8 Scenario bulder – data collection ➢ Application stores all input/output data ➢ Current application state can be calculated by reprocessing all input data ➢ There must be a finite (small) number of parameters that can uniquely single out input/output dataset ➢ It is usually business oriented (top level object unique key is a good candidate) ➢ Get everything developer need in a single zip archive
  • 9. 9 Scenario bulder – data collection
  • 10. 10 Scenario bulder – scenario.xml
  • 11. 11 Scenario bulder – scenario.xml
  • 12. 12 Scenario bulder – Junit runner ➢ Provides integration with build tools ➢ Run scenario test during CI/CD pipeline ➢ Great for regression testing ➢ Validate system for common happy path scenarios on every build ➢ Simple to configure – annotated test job with folder where scenario.zip is extracted
  • 13. 13 Scenario bulder – Junit runner – technical details ➢ Based on BlockJUnit4ClassRunner ➢ scenario.xml schema defines scenario format ➢ Junit runner parses scenario.xml used to drive test execution ➢ Send message to message queue ➢ Send request to HTTP API (public) ➢ Send request to HTTP API (private) – introspection if internal state
  • 14. 14 Scenario bulder – benefits ➢ Core benefits ➢ Bug report consists of last action that resulted in error and scenario unique id ➢ Short time to bug reproduction in development environment ➢ Side benefits (use cases discovered during usage) ➢ Introspection of application state history – not only current state - possible without storing all the states in database ➢ Business analysts began writing specification in technical language (referent scenarios) [code]
  • 15. 15 Scenario bulder – challanges ➢ Time independent logic ➢ current date, current timestamp == enemy ➢ Develop patterns to mitigate issue ➢ Integration with external systems ➢ Store all external interaction and when running Junit, mock integration interaction ➢ Parameterization ➢ Attempted to write scenario packets using parameterized input and output messages