BenchFlow is an open-source expert system providing a complete platform for automating performance tests and performance analysis. We know that not all the developers are performance experts, but in nowadays agile environment, they need to deal with performance testing and performance analysis every day. In BenchFlow, the users define objective-driven performance testing using an expressive and SUT-aware DSL implemented in YAML. Then BenchFlow automates the end-to-end process of executing the performance tests and providing performance insights, dealing with system under test deployment relying on Docker technologies, distributing simulated users load on different server, error handling, performance data collection and performance metrics and insights computation.
My talk for SPEC Research Group DevOps (https://research.spec.org/devopswg) about BenchFlow. Discover BenchFlow: https://github.com/benchflow
[2024]Digital Global Overview Report 2024 Meltwater.pdf
BenchFlow: A Platform for End-to-end Automation of Performance Testing and Analysis
1. @SPEC RG DevOps
BenchFlow
A Platform for End-to-end
Automation of Performance
Testing and Analysis
Vincenzo Ferme, Cesare Pautasso
https://github.com/benchflow
3. 2
End-to-end (e2e) Performance Testing
Workload
Modeling
Workload
Modeling
SUT Configuration
and Deployment
Test
Execution
4. 2
End-to-end (e2e) Performance Testing
Workload
Modeling
Workload
Modeling
SUT Configuration
and Deployment
Test
Execution
5. 2
End-to-end (e2e) Performance Testing
Workload
Modeling
Workload
Modeling
SUT Configuration
and Deployment
Test
Execution
Data
Collection
6. 2
End-to-end (e2e) Performance Testing
Workload
Modeling
Workload
Modeling
SUT Configuration
and Deployment
Test
Execution
Data
Analysis
Data
Collection
35. 15
Server-side Data and Metrics Collection
Serv. BFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
36. 15
Server-side Data and Metrics Collection
Serv. BFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
MONITOR
37. 16
Server-side Data and Metrics Collection
DBMSFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
• CPU usage
• Database state
Examples of Monitors:Monitors’ Characteristics:
• RESTful services
• Lightweight (written in Go)
• Can embed any existing tool
38. 16
Server-side Data and Metrics Collection
DBMSFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
CPU
Monitor
DB
Monitor
• CPU usage
• Database state
Examples of Monitors:Monitors’ Characteristics:
• RESTful services
• Lightweight (written in Go)
• Can embed any existing tool
39. 17
Server-side Data and Metrics Collection
DBMSFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
40. 17
Server-side Data and Metrics Collection
DBMSFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
Minio
Instance
Database
Analyses
COLLECTORS
41. 18
Server-side Data and Metrics Collection
DBMSFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
• Container’s Stats (e.g., CPU usage)
• Database dump
• Applications Logs
Examples of Collectors:Collectors’ Characteristics:
• RESTful services
• Lightweight (written in Go)
• Two types: online and offline
• Can embed any existing tool
• Buffer data locally
42. 18
Server-side Data and Metrics Collection
DBMSFaban Drivers
ContainersServers
harness
Serv. A
TestExecution
Serv. N
Stats
Collector
DB
Collector
• Container’s Stats (e.g., CPU usage)
• Database dump
• Applications Logs
Examples of Collectors:Collectors’ Characteristics:
• RESTful services
• Lightweight (written in Go)
• Two types: online and offline
• Can embed any existing tool
• Buffer data locally
61. 24
BenchFlow in DevOps
Test Execution
Data Collection
Data Analysis
BF
BenchFlow
Continuous Deployment
Performance Regressions
VersionsMetric
62. 24
BenchFlow in DevOps
Test Execution
Data Collection
Data Analysis
BF
BenchFlow
Capacity Planning
Continuous Deployment
Performance Regressions
VersionsMetric
63. 24
BenchFlow in DevOps
Test Execution
Data Collection
Data Analysis
BF
BenchFlow
Capacity Planning
Continuous Deployment
Performance Regressions
VersionsMetric
66. 26
Objectives Taxonomy
Base Objectives (Test Types)
standard performance tests, e.g., load test, stress test,
spike test, and configuration test
Objectives
specific types of performance engineering activities,
e.g., capacity planning and performance tradeoffs
67. 26
Objectives Taxonomy
Base Objectives (Test Types)
standard performance tests, e.g., load test, stress test,
spike test, and configuration test
Objectives
specific types of performance engineering activities,
e.g., capacity planning and performance tradeoffs
Meta-Objectives
defined from already collected performance knowledge,
e.g., regressions detection, comparing different systems
(or versions of the same system) using a benchmark
76. 32
Objectives
- Capacity planning (also based on some
constraints)
e.g., CPU, RAM
why? cost of resources -> important for the business
77. 32
Objectives
- Capacity planning (also based on some
constraints)
e.g., CPU, RAM
why? cost of resources -> important for the business
- Performance tradeoffs based on some
(resource) constraints
e.g., which configuration is good enough?
why? responsiveness -> important for the user
82. 1. New SUT Types:
- Add Adapters to Interact with the SUT ( )
35
How Can I Extend BenchFlow?
83. 1. New SUT Types:
- Add Adapters to Interact with the SUT ( )
2. Support new Objectives:
- Extend the DSL ( ) and BenchFlow ( )
35
How Can I Extend BenchFlow?
84. 1. New SUT Types:
- Add Adapters to Interact with the SUT ( )
2. Support new Objectives:
- Extend the DSL ( ) and BenchFlow ( )
3. New Data Collectors:
- Add Collectors Services ( )
35
How Can I Extend BenchFlow?
85. 1. New SUT Types:
- Add Adapters to Interact with the SUT ( )
2. Support new Objectives:
- Extend the DSL ( ) and BenchFlow ( )
3. New Data Collectors:
- Add Collectors Services ( )
4. New Data Analyses:
- From Dedicated Services
- From Collectors, or with Tasks
35
How Can I Extend BenchFlow?
88. 36
BenchFlow Adoption: Last Two Years
(2-3 Active)Developers5 Total
200+ Unique Tests DSL (3 SUTs / 12 Vers.)
WfMS
Adopters3
89. 36
BenchFlow Adoption: Last Two Years
(2-3 Active)Developers5 Total
200+ Unique Tests DSL (3 SUTs / 12 Vers.)
WfMS
600+ Executed Test Runs
Adopters3
90. 36
BenchFlow Adoption: Last Two Years
450GB+ Crunched Data
(2-3 Active)Developers5 Total
200+ Unique Tests DSL (3 SUTs / 12 Vers.)
WfMS
600+ Executed Test Runs
Adopters3
91. 36
BenchFlow Adoption: Last Two Years
450GB+ Crunched Data
20’000+ Computed Metrics and Statistics
(2-3 Active)Developers5 Total
200+ Unique Tests DSL (3 SUTs / 12 Vers.)
WfMS
600+ Executed Test Runs
Adopters3
96. 37
Where is BenchFlow?
Platform
Research Publications
http://benchflow.inf.usi.ch
https://hub.docker.com/u/benchflow/
https://github.com/benchflow
When a Release? September 2017