Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request - APDEX Score #759

Open
fingers10 opened this issue Jan 5, 2025 · 5 comments
Open

Feature Request - APDEX Score #759

fingers10 opened this issue Jan 5, 2025 · 5 comments
Labels
5.10 new feature New feature or request

Comments

@fingers10
Copy link

Thank you for this wonderful package. Is there any ways to calculate APDEX score using this package? As this will be needed by many enterprise.

What is Apdex Score:
An Apdex score, or Application Performance Index, is a standardized metric that measures how satisfied users are with the response time of a software application:

Apdex scores are numerical values on a scale of 0 to 1, with 0 being the least satisfied and 1 being the most satisfied.

How it's calculated:
Apdex scores are calculated using the equation:
Apdex = (Satisfied Count + Tolerating Count / 2) / Total Samples

What it's based on:
Apdex scores are based on application response time metrics, such as:
Request per second
Data in and out
Average response time
Peak response time
CPU usage

@AntyaDev
Copy link
Contributor

AntyaDev commented Jan 6, 2025

Hi @fingers10 ,
Very good question!
I think we can add it, but I am afraid it can't be added via some extension.

Reference Link

@AntyaDev AntyaDev added 5.10 new feature New feature or request labels Jan 6, 2025
@AntyaDev
Copy link
Contributor

AntyaDev commented Jan 23, 2025

Hi @fingers10
After thinking a bit, I found it can be added via WorkerPlugin.
If you are interested, I can help with this.
Basically, you should implement an ApdexPlugin via implementing IWorkerPlugin

The most important for you will be implementing

abstract GetStats: stats:NodeStats -> Task<DataSet>

In this method, you will analyze the final NodeStats (to calculate Apdex scores) and return DataSet type, which can contain a table (columns + row) with data that you want to be shown in the HTML Report.

@fingers10
Copy link
Author

@AntyaDev Im curious to know more about this. Please can you assist?

@AntyaDev
Copy link
Contributor

@fingers10
Sure, try using C# implement an empty ApdexScorePlugin using IWorkerPlugin

After this, try to create an instance of it and register in NBomerRunner

NBomberRunner
    .RegisterServices(...)
    .WithWorkerPlugin(new ApdexScorePlugin())

After this, put the breakpoints and try to debug the methods: Start(), GetStats(), Stop()

@AntyaDev
Copy link
Contributor

AntyaDev commented Jan 23, 2025

This is F# PingPlugin which measure latency between NBomber client and target host.

At the end, you need to calculate ApdexScore based on NodeStats, which will be passed to you at the end of the session.

public Task<DataSet> GetStats(NodeStats stats)

You need to build a DataSet, aka DataTable, with information that will be printed in HTML Report in the section Plugins.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
5.10 new feature New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants