SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Cloud-based Test
Microservices
Shelley Lambert
IBM Runtime Technologies Test Lead
Some Legal Statements
• THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY.
• WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION
CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED.
• ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED
ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR
INFRASTRUCTURE DIFFERENCES.
• ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.
• IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT
PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE.
• IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT
OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION.
• NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF:
– CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS
OR THEIR SUPPLIERS AND/OR LICENSORS
Development Transformation
• Drawn from work in IBM Runtimes and on Eclipse
OMR, Eclipse OpenJ9, and AdoptOpenJDK projects
• Hundreds of thousands of tests of differing
formats, on thousands of test machines
representing 18+ platform variants, multiple
versions of Java (v5 – 10)
• Goal to simplify, redesign and decouple from
legacy/proprietary tools and processes and create
open, agile, flexible tests and test solutions to
empower developers
AdoptOpenJDK
Questions to Address
• What aspects of your testing can be shared across
multiple products?
• How to identify, abstract, and convert functionality
used by many test systems into shared services
• Why bother with microservices? In a cloud?
• Examples of test microservices at various points in
the flow of activities related to Java testing
The small print… Not covering…
• Testing cloud-based microservices (is the title of this talk confusing?)
• Where to deploy your services? …Not trying to sell you a cloud solution
What is a microservice?
• A succinct API to accomplish a particular task
(happiness knows no bounds, but microservices do…)
• A set of microservices assembled together can
create a whole system (replacing a monolithic
approach)
• While often used in concert, each service can
be used independently
• Benefits: Modular, Simpler, Portable,
Customizable Apps, Easier Development &
Deployment, Co-operative
Microservices Architecture
ResultAnalytics
Data
Services
UI Layer
Cores
raw refined
custom dashboard
other clients
TestGeneration BenchEngine
CoreAnalytics
TestSelection
BugPrediction
InputOptions
ResultSummary
ResultCompare
github
repos
Jenkins
servers
Activities (and Questions) Related to Test
Plan Implement Automate Execute
Triage Exclude
Report
What? How?
How
often?
How
easy?
How
few?
How
fast?
What failed?
Why? What
next?
Decompose into a set of services by test activity, services to help answer the questi
Planning Phase
What tests do you need?
How are people using your product?
What are their user stories?
What additional info do you have (code
coverage, code churn information)?
Plan Implement Automate Execute
Triage Exclude
Report
What?
‘Planning Phase’ Microservice Examples
• Core Analytics Service – inspect java core
files from service reports, gather
information on usage, particularly
patterns of input parameters
• Bug Prediction Service – based on
research* an inexpensive algorithm to find
hot spots (most changed files) in code
base, applied to any given repo
*BugCache for Inspections: Hit or Miss?
Core Analytics Service
Demo
Bug Prediction Service
Demo
Implementation Phase
How best to design and write your tests?
What tools/frameworks to use?
How to minimize number of tests while
maximizing functional coverage?
Plan Automate Execute
Triage Exclude
Report
Implement
How?
‘Implementation Phase’ Microservice
Example
• Test Generation Service – assist developers in
the onerous task of writing thorough
functional tests, standardized test naming and
structure, CTD for minimal tests with good
functional coverage
– Upload header files (function/method signatures)
– Inspect input types (primitive or complex)
– Generate combinations of inputs (pairwise/CTD)
– Generate partial test code… (with standardized
naming, parameterized inputs)
Test Generation Service
Link to header file in github
Command line options to us
Complex input parameters
-> equivalence classes
Automation Phase
• How do I add my tests into a CI workflow?
• How do I replace old practices with new
improved ones?
Plan Execute
Triage Exclude
Report
Implement Automate
How often?
How easy?
‘Automation Phase’ Microservice
Example
• BenchEngine Service – make it easy for
anyone to run performance benchmarks
– generate scripts to run benchmarks from
definition files
– allow for variations and specific platform
settings
– send scripts to Jenkins nodes to run
automatically run benchmarks
BenchEngine
Demo
BenchEngine
Developer:
• fires up browser
• connects to BenchEngine service
• select inputs
Jenkins
input selections:
• benchmark definition file
• action type
• which ci server
generateScript:
• local run
• insert into
automated
builds
submitJob
BenchEngine
Service
github
repo
addToBuild
new feature:
• “add to build” button
• Insert into automated
build(s)
Jenkins
Execution Phase
• What is the minimal set of tests I need to
run, given a particular change?
• What input options do I run with?
• What is the execution time? Has it
changed over time?
Plan
Triage Exclude
Report
Implement Automate Execute
How few?
How fast?
‘Execution Phase’ Microservice Example
• Test Selection Service – change-based
testing, uses code coverage information
to generate a smaller/smarter set of tests
to run on a pull request
• Input Options Service – grabs input
options defined in tests at start of a build,
names and stores them (unique sentences
of options), for sharing with other builds/
tests
TestSelection
Developer:
• fires up browser
• connects to Test Selection service
• select inputs
Jenkins
input selections:
• pull request in github
• platform(s)
• Code coverage info
submitJob
Test Selection
Service
Input Options Service
• (nearly) headless service to feed information to builds
• not all services have (or need) a pretty GUI
InputOptions
Jenkins mongodb
Triage Phase
• Has this failure happened before? Is this failure
intermittent? If so, are there recognizable patterns?
• Is there other information besides test output that I
can use to help find patterns?
• Do I need to exclude this test? Can I re-include it
automatically when the issue is fixed?
Plan Execute Report
Implement Automate
Triage Exclude
What failed?
Why?
‘Triage Phase’ Microservice Example
• WIP: Results Analytics Service - automate
the “googling of error messages”, look for
patterns
– search across builds at one server?
– search across builds at multiple servers?
– search the internet?
– Use Watson pattern matching / analytics engine...
– If you didn’t want all of the above, then Jenkins
plugin?
Results Analytics
Service
Developer:
• Runs test build registered with
service
• Failures added to database
• Service queries test history for
similar failures
Jenkins
Inputs:
• ci server / build id
• DB
• query type (test
history,
stackoverflow)
Results Analytics
Service
Jenkins
Returns:
• Matches
(with
scores)
DB
Why not use Jenkins plug in?
• Multiple Jenkins servers / DBs
• Tie into other cloud services
(analytics engine…)
• Instrument test output with
concise machine-readable info
for triage assistance (info
from core files)
Reporting Phase
• Can I summarize a large/diverse set of
tests?
• Where can I see the test report?
• Can I compare test results easily? From
many data sources?
Plan Execute
Triage Exclude
Implement Automate Report
What
next?
‘Report Phase’ Microservice Example
• Results Summary Service – summarize the
results of multiple builds running on multiple
servers, overlay customizable dashboard
• Results Comparison Service – given more than
one result of same test, compare them.
Examples of results to compare:
– FV tests from Build 1 compared with those of Build 12
– Scala (or other 3rd party app) community tests
running on OpenJDK vs OpenJDK with OpenJ9
(Java8 / Java9)
– Last 4 BenchmarkXYZ runs against OpenJ9 (trend)
– Last several months of GC perf stats from OMR
Results Summary Service
• Model the common elements (status, execution time,
failure age, etc) for uniform representation
• Leverage Jenkins API
• Progression of enhancements
– Raw data
– Simple diff
– Graphical representations
– Overlay customizable dashboard, simple elements, continuous
feedback
Results Summary
Service
Developer:
• Fires up browser
• Selects / deselects builds to
display in customizable
dashboard
• Takes action on failing builds
by clicking through to more
details from summary view
Jenkins
Inputs:
• ci servers / build ids
• DB
Results Summary
Service
Jenkins DB
Jenkins
Results Comparison
Service
Demo
• Gather perf metrics from
Eclipse OMR builds
• Store historical data in
mongodb
• GC perf dashboard allows
many different views
onto the data
Review: Examples of microservices
Plan Implement Automate Execute
Triage Exclude
Report
Core analytics service
Bug prediction service
Test Generation Service Test Selection Service
Input-Options Service
Result Analytics Service Result Summary Service
Result Comparison Service
BenchEngine
Microservices Examples Review
ResultAnalytics
Data
Services
UI Layer
Cores
raw refined
custom dashboard
other clients
TestGeneration BenchEngine
CoreAnalytics
TestSelection
BugPrediction
InputOptions
ResultSummary
ResultCompare
github
repos
Jenkins
servers
Plan Execute Triage Report
Implement Automate
Questions Addressed
• What aspects of your testing can be shared across
multiple products? Decompose by common activities…
• How to identify, abstract, and convert functionality
used by many test systems into shared services?
Common patterns (apps take inputs, tests produce
results)...
• Why bother with microservices? In a cloud? Modular
(super-fast dev), portable, assemble for a ‘system’ or
singular use, leverage other services…
• Gotchas... Network reliance, fallbacks needed…
Get Involved /
Innovate with us at:
• Eclipse OMR
• Eclipse OpenJ9
• AdoptOpenJDK
AdoptOpenJDK
Details:
• https://github.com/eclipse/omr
• https://github.com/eclipse/openj9
• https://github.com/AdoptOpenJDK
• @ShelleyMLambert
Stay in touch

Mais conteúdo relacionado

Mais procurados

Mykola Kovsh - Functional API automation with Jmeter
Mykola Kovsh - Functional API automation with JmeterMykola Kovsh - Functional API automation with Jmeter
Mykola Kovsh - Functional API automation with JmeterIevgenii Katsan
 
Software Testing Strategies ,Validation Testing and System Testing.
Software Testing Strategies ,Validation Testing and System Testing.Software Testing Strategies ,Validation Testing and System Testing.
Software Testing Strategies ,Validation Testing and System Testing.Tanzeem Aslam
 
Model-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelModel-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelBob Binder
 
How to make a Load Testing with Visual Studio 2012
How to make a Load Testing with Visual Studio 2012How to make a Load Testing with Visual Studio 2012
How to make a Load Testing with Visual Studio 2012Chen-Tien Tsai
 
Keyword Driven Automation
Keyword Driven AutomationKeyword Driven Automation
Keyword Driven AutomationPankaj Goel
 
Introduction to jmeter & how to view jmeter Test Result in Real-Time
Introduction to jmeter & how to view jmeter Test Result in Real-TimeIntroduction to jmeter & how to view jmeter Test Result in Real-Time
Introduction to jmeter & how to view jmeter Test Result in Real-TimeBugRaptors
 
Performance Testing With Jmeter
Performance Testing With JmeterPerformance Testing With Jmeter
Performance Testing With JmeterAdam Goucher
 
Jbehave- Basics to Advance
Jbehave- Basics to AdvanceJbehave- Basics to Advance
Jbehave- Basics to AdvanceRavinder Singh
 
Pragmatic Java Test Automation
Pragmatic Java Test AutomationPragmatic Java Test Automation
Pragmatic Java Test AutomationDmitry Buzdin
 
Context-Driven Performance Testing
Context-Driven Performance TestingContext-Driven Performance Testing
Context-Driven Performance TestingAlexander Podelko
 
Getting start with Performance Testing
Getting start with Performance Testing Getting start with Performance Testing
Getting start with Performance Testing Yogesh Deshmukh
 
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
 
Planning & building scalable test infrastructure
Planning  & building scalable test infrastructurePlanning  & building scalable test infrastructure
Planning & building scalable test infrastructureVijayan Reddy
 

Mais procurados (19)

Mykola Kovsh - Functional API automation with Jmeter
Mykola Kovsh - Functional API automation with JmeterMykola Kovsh - Functional API automation with Jmeter
Mykola Kovsh - Functional API automation with Jmeter
 
Software Testing Strategies ,Validation Testing and System Testing.
Software Testing Strategies ,Validation Testing and System Testing.Software Testing Strategies ,Validation Testing and System Testing.
Software Testing Strategies ,Validation Testing and System Testing.
 
Model-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next LevelModel-based Testing: Taking BDD/ATDD to the Next Level
Model-based Testing: Taking BDD/ATDD to the Next Level
 
How to make a Load Testing with Visual Studio 2012
How to make a Load Testing with Visual Studio 2012How to make a Load Testing with Visual Studio 2012
How to make a Load Testing with Visual Studio 2012
 
Keyword Driven Automation
Keyword Driven AutomationKeyword Driven Automation
Keyword Driven Automation
 
Introduction to jmeter & how to view jmeter Test Result in Real-Time
Introduction to jmeter & how to view jmeter Test Result in Real-TimeIntroduction to jmeter & how to view jmeter Test Result in Real-Time
Introduction to jmeter & how to view jmeter Test Result in Real-Time
 
Performance Testing With Jmeter
Performance Testing With JmeterPerformance Testing With Jmeter
Performance Testing With Jmeter
 
Performance testing and rpt
Performance testing and rptPerformance testing and rpt
Performance testing and rpt
 
Jbehave- Basics to Advance
Jbehave- Basics to AdvanceJbehave- Basics to Advance
Jbehave- Basics to Advance
 
Pragmatic Java Test Automation
Pragmatic Java Test AutomationPragmatic Java Test Automation
Pragmatic Java Test Automation
 
Automated Testing
Automated TestingAutomated Testing
Automated Testing
 
Context-Driven Performance Testing
Context-Driven Performance TestingContext-Driven Performance Testing
Context-Driven Performance Testing
 
QSpiders - Introduction to HP Load Runner
QSpiders - Introduction to HP Load RunnerQSpiders - Introduction to HP Load Runner
QSpiders - Introduction to HP Load Runner
 
Getting start with Performance Testing
Getting start with Performance Testing Getting start with Performance Testing
Getting start with Performance Testing
 
Performance and Load Testing
Performance and Load TestingPerformance and Load Testing
Performance and Load Testing
 
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
 
Planning & building scalable test infrastructure
Planning  & building scalable test infrastructurePlanning  & building scalable test infrastructure
Planning & building scalable test infrastructure
 
J Meter Intro
J Meter IntroJ Meter Intro
J Meter Intro
 
PEOPLESOFT PTF
PEOPLESOFT PTFPEOPLESOFT PTF
PEOPLESOFT PTF
 

Semelhante a Cloud-based Test Microservices JavaOne 2014

Testing Frameworks
Testing FrameworksTesting Frameworks
Testing FrameworksMoataz Nabil
 
Test Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh DahalTest Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh DahalQA or the Highway
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerRobbie Minshall
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayBizTalk360
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build testLen Bass
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test AutomationSauce Labs
 
No Devops Without Continuous Testing
No Devops Without Continuous TestingNo Devops Without Continuous Testing
No Devops Without Continuous TestingParasoft
 
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!Richard Robinson
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectDevOps.com
 
Practical Software Testing Tools
Practical Software Testing ToolsPractical Software Testing Tools
Practical Software Testing ToolsDr Ganesh Iyer
 
VCS_QAPerformanceSlides
VCS_QAPerformanceSlidesVCS_QAPerformanceSlides
VCS_QAPerformanceSlidesMichael Cowan
 
Vishal_Final_Evaluation_PPT
Vishal_Final_Evaluation_PPTVishal_Final_Evaluation_PPT
Vishal_Final_Evaluation_PPTVishal Sharma
 
Performance Testing Java Applications
Performance Testing Java ApplicationsPerformance Testing Java Applications
Performance Testing Java ApplicationsC4Media
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software TestingMohammed Moishin
 
Load testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerLoad testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerAndrew Siemer
 

Semelhante a Cloud-based Test Microservices JavaOne 2014 (20)

Testing Frameworks
Testing FrameworksTesting Frameworks
Testing Frameworks
 
Test Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh DahalTest Automation Architecture That Works by Bhupesh Dahal
Test Automation Architecture That Works by Bhupesh Dahal
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
QAorHighway2016
QAorHighway2016QAorHighway2016
QAorHighway2016
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build test
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
No Devops Without Continuous Testing
No Devops Without Continuous TestingNo Devops Without Continuous Testing
No Devops Without Continuous Testing
 
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
 
Modernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-ArchitectModernizing Testing as Apps Re-Architect
Modernizing Testing as Apps Re-Architect
 
Practical Software Testing Tools
Practical Software Testing ToolsPractical Software Testing Tools
Practical Software Testing Tools
 
VCS_QAPerformanceSlides
VCS_QAPerformanceSlidesVCS_QAPerformanceSlides
VCS_QAPerformanceSlides
 
Test automation
Test automationTest automation
Test automation
 
Vishal_Final_Evaluation_PPT
Vishal_Final_Evaluation_PPTVishal_Final_Evaluation_PPT
Vishal_Final_Evaluation_PPT
 
Neev QA Offering
Neev QA OfferingNeev QA Offering
Neev QA Offering
 
Performance Testing Java Applications
Performance Testing Java ApplicationsPerformance Testing Java Applications
Performance Testing Java Applications
 
Tools for Software Testing
Tools for Software TestingTools for Software Testing
Tools for Software Testing
 
Agile testing
Agile testingAgile testing
Agile testing
 
Load testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerLoad testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew Siemer
 
Performance testing
Performance testingPerformance testing
Performance testing
 

Mais de Shelley Lambert

Listening To a Forest for Project Health
Listening To a Forest for Project HealthListening To a Forest for Project Health
Listening To a Forest for Project HealthShelley Lambert
 
AQAvit: Vitality through Testing
AQAvit: Vitality through TestingAQAvit: Vitality through Testing
AQAvit: Vitality through TestingShelley Lambert
 
SledgehammerToFinebrush_Devnexus_2021
SledgehammerToFinebrush_Devnexus_2021SledgehammerToFinebrush_Devnexus_2021
SledgehammerToFinebrush_Devnexus_2021Shelley Lambert
 
Sledgehammer to Fine Brush for QA
Sledgehammer to Fine Brush for QASledgehammer to Fine Brush for QA
Sledgehammer to Fine Brush for QAShelley Lambert
 
Learning on Deep Learning
Learning on Deep LearningLearning on Deep Learning
Learning on Deep LearningShelley Lambert
 
AQA_You are_Soaking_In_It_DevNexus2020
AQA_You are_Soaking_In_It_DevNexus2020AQA_You are_Soaking_In_It_DevNexus2020
AQA_You are_Soaking_In_It_DevNexus2020Shelley Lambert
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldShelley Lambert
 
DealingwithVerificationDataOverload
DealingwithVerificationDataOverloadDealingwithVerificationDataOverload
DealingwithVerificationDataOverloadShelley Lambert
 
AdoptOpenJDK Quality Assurance OJDK Lightning Talk
AdoptOpenJDK Quality Assurance OJDK Lightning TalkAdoptOpenJDK Quality Assurance OJDK Lightning Talk
AdoptOpenJDK Quality Assurance OJDK Lightning TalkShelley Lambert
 

Mais de Shelley Lambert (9)

Listening To a Forest for Project Health
Listening To a Forest for Project HealthListening To a Forest for Project Health
Listening To a Forest for Project Health
 
AQAvit: Vitality through Testing
AQAvit: Vitality through TestingAQAvit: Vitality through Testing
AQAvit: Vitality through Testing
 
SledgehammerToFinebrush_Devnexus_2021
SledgehammerToFinebrush_Devnexus_2021SledgehammerToFinebrush_Devnexus_2021
SledgehammerToFinebrush_Devnexus_2021
 
Sledgehammer to Fine Brush for QA
Sledgehammer to Fine Brush for QASledgehammer to Fine Brush for QA
Sledgehammer to Fine Brush for QA
 
Learning on Deep Learning
Learning on Deep LearningLearning on Deep Learning
Learning on Deep Learning
 
AQA_You are_Soaking_In_It_DevNexus2020
AQA_You are_Soaking_In_It_DevNexus2020AQA_You are_Soaking_In_It_DevNexus2020
AQA_You are_Soaking_In_It_DevNexus2020
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_Could
 
DealingwithVerificationDataOverload
DealingwithVerificationDataOverloadDealingwithVerificationDataOverload
DealingwithVerificationDataOverload
 
AdoptOpenJDK Quality Assurance OJDK Lightning Talk
AdoptOpenJDK Quality Assurance OJDK Lightning TalkAdoptOpenJDK Quality Assurance OJDK Lightning Talk
AdoptOpenJDK Quality Assurance OJDK Lightning Talk
 

Último

eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...kalichargn70th171
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 

Último (20)

eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
The Ultimate Guide to Performance Testing in Low-Code, No-Code Environments (...
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 

Cloud-based Test Microservices JavaOne 2014

  • 1. Cloud-based Test Microservices Shelley Lambert IBM Runtime Technologies Test Lead
  • 2. Some Legal Statements • THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. • WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. • ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES. • ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE. • IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM, WITHOUT NOTICE. • IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR ANY OTHER DOCUMENTATION. • NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE EFFECT OF: – CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS
  • 3. Development Transformation • Drawn from work in IBM Runtimes and on Eclipse OMR, Eclipse OpenJ9, and AdoptOpenJDK projects • Hundreds of thousands of tests of differing formats, on thousands of test machines representing 18+ platform variants, multiple versions of Java (v5 – 10) • Goal to simplify, redesign and decouple from legacy/proprietary tools and processes and create open, agile, flexible tests and test solutions to empower developers AdoptOpenJDK
  • 4. Questions to Address • What aspects of your testing can be shared across multiple products? • How to identify, abstract, and convert functionality used by many test systems into shared services • Why bother with microservices? In a cloud? • Examples of test microservices at various points in the flow of activities related to Java testing The small print… Not covering… • Testing cloud-based microservices (is the title of this talk confusing?) • Where to deploy your services? …Not trying to sell you a cloud solution
  • 5. What is a microservice? • A succinct API to accomplish a particular task (happiness knows no bounds, but microservices do…) • A set of microservices assembled together can create a whole system (replacing a monolithic approach) • While often used in concert, each service can be used independently • Benefits: Modular, Simpler, Portable, Customizable Apps, Easier Development & Deployment, Co-operative
  • 6. Microservices Architecture ResultAnalytics Data Services UI Layer Cores raw refined custom dashboard other clients TestGeneration BenchEngine CoreAnalytics TestSelection BugPrediction InputOptions ResultSummary ResultCompare github repos Jenkins servers
  • 7. Activities (and Questions) Related to Test Plan Implement Automate Execute Triage Exclude Report What? How? How often? How easy? How few? How fast? What failed? Why? What next? Decompose into a set of services by test activity, services to help answer the questi
  • 8. Planning Phase What tests do you need? How are people using your product? What are their user stories? What additional info do you have (code coverage, code churn information)? Plan Implement Automate Execute Triage Exclude Report What?
  • 9. ‘Planning Phase’ Microservice Examples • Core Analytics Service – inspect java core files from service reports, gather information on usage, particularly patterns of input parameters • Bug Prediction Service – based on research* an inexpensive algorithm to find hot spots (most changed files) in code base, applied to any given repo *BugCache for Inspections: Hit or Miss?
  • 12. Implementation Phase How best to design and write your tests? What tools/frameworks to use? How to minimize number of tests while maximizing functional coverage? Plan Automate Execute Triage Exclude Report Implement How?
  • 13. ‘Implementation Phase’ Microservice Example • Test Generation Service – assist developers in the onerous task of writing thorough functional tests, standardized test naming and structure, CTD for minimal tests with good functional coverage – Upload header files (function/method signatures) – Inspect input types (primitive or complex) – Generate combinations of inputs (pairwise/CTD) – Generate partial test code… (with standardized naming, parameterized inputs)
  • 14. Test Generation Service Link to header file in github Command line options to us Complex input parameters -> equivalence classes
  • 15. Automation Phase • How do I add my tests into a CI workflow? • How do I replace old practices with new improved ones? Plan Execute Triage Exclude Report Implement Automate How often? How easy?
  • 16. ‘Automation Phase’ Microservice Example • BenchEngine Service – make it easy for anyone to run performance benchmarks – generate scripts to run benchmarks from definition files – allow for variations and specific platform settings – send scripts to Jenkins nodes to run automatically run benchmarks
  • 18. BenchEngine Developer: • fires up browser • connects to BenchEngine service • select inputs Jenkins input selections: • benchmark definition file • action type • which ci server generateScript: • local run • insert into automated builds submitJob BenchEngine Service github repo addToBuild new feature: • “add to build” button • Insert into automated build(s) Jenkins
  • 19. Execution Phase • What is the minimal set of tests I need to run, given a particular change? • What input options do I run with? • What is the execution time? Has it changed over time? Plan Triage Exclude Report Implement Automate Execute How few? How fast?
  • 20. ‘Execution Phase’ Microservice Example • Test Selection Service – change-based testing, uses code coverage information to generate a smaller/smarter set of tests to run on a pull request • Input Options Service – grabs input options defined in tests at start of a build, names and stores them (unique sentences of options), for sharing with other builds/ tests
  • 21. TestSelection Developer: • fires up browser • connects to Test Selection service • select inputs Jenkins input selections: • pull request in github • platform(s) • Code coverage info submitJob Test Selection Service
  • 22. Input Options Service • (nearly) headless service to feed information to builds • not all services have (or need) a pretty GUI InputOptions Jenkins mongodb
  • 23. Triage Phase • Has this failure happened before? Is this failure intermittent? If so, are there recognizable patterns? • Is there other information besides test output that I can use to help find patterns? • Do I need to exclude this test? Can I re-include it automatically when the issue is fixed? Plan Execute Report Implement Automate Triage Exclude What failed? Why?
  • 24. ‘Triage Phase’ Microservice Example • WIP: Results Analytics Service - automate the “googling of error messages”, look for patterns – search across builds at one server? – search across builds at multiple servers? – search the internet? – Use Watson pattern matching / analytics engine... – If you didn’t want all of the above, then Jenkins plugin?
  • 25. Results Analytics Service Developer: • Runs test build registered with service • Failures added to database • Service queries test history for similar failures Jenkins Inputs: • ci server / build id • DB • query type (test history, stackoverflow) Results Analytics Service Jenkins Returns: • Matches (with scores) DB Why not use Jenkins plug in? • Multiple Jenkins servers / DBs • Tie into other cloud services (analytics engine…) • Instrument test output with concise machine-readable info for triage assistance (info from core files)
  • 26. Reporting Phase • Can I summarize a large/diverse set of tests? • Where can I see the test report? • Can I compare test results easily? From many data sources? Plan Execute Triage Exclude Implement Automate Report What next?
  • 27. ‘Report Phase’ Microservice Example • Results Summary Service – summarize the results of multiple builds running on multiple servers, overlay customizable dashboard • Results Comparison Service – given more than one result of same test, compare them. Examples of results to compare: – FV tests from Build 1 compared with those of Build 12 – Scala (or other 3rd party app) community tests running on OpenJDK vs OpenJDK with OpenJ9 (Java8 / Java9) – Last 4 BenchmarkXYZ runs against OpenJ9 (trend) – Last several months of GC perf stats from OMR
  • 28. Results Summary Service • Model the common elements (status, execution time, failure age, etc) for uniform representation • Leverage Jenkins API • Progression of enhancements – Raw data – Simple diff – Graphical representations – Overlay customizable dashboard, simple elements, continuous feedback
  • 29. Results Summary Service Developer: • Fires up browser • Selects / deselects builds to display in customizable dashboard • Takes action on failing builds by clicking through to more details from summary view Jenkins Inputs: • ci servers / build ids • DB Results Summary Service Jenkins DB Jenkins
  • 30. Results Comparison Service Demo • Gather perf metrics from Eclipse OMR builds • Store historical data in mongodb • GC perf dashboard allows many different views onto the data
  • 31. Review: Examples of microservices Plan Implement Automate Execute Triage Exclude Report Core analytics service Bug prediction service Test Generation Service Test Selection Service Input-Options Service Result Analytics Service Result Summary Service Result Comparison Service BenchEngine
  • 32. Microservices Examples Review ResultAnalytics Data Services UI Layer Cores raw refined custom dashboard other clients TestGeneration BenchEngine CoreAnalytics TestSelection BugPrediction InputOptions ResultSummary ResultCompare github repos Jenkins servers Plan Execute Triage Report Implement Automate
  • 33. Questions Addressed • What aspects of your testing can be shared across multiple products? Decompose by common activities… • How to identify, abstract, and convert functionality used by many test systems into shared services? Common patterns (apps take inputs, tests produce results)... • Why bother with microservices? In a cloud? Modular (super-fast dev), portable, assemble for a ‘system’ or singular use, leverage other services… • Gotchas... Network reliance, fallbacks needed…
  • 34. Get Involved / Innovate with us at: • Eclipse OMR • Eclipse OpenJ9 • AdoptOpenJDK AdoptOpenJDK Details: • https://github.com/eclipse/omr • https://github.com/eclipse/openj9 • https://github.com/AdoptOpenJDK • @ShelleyMLambert Stay in touch