Jmeter and Jenkins Integration to generate Perfmon graph - apache

I want to measure CPU and Memory usage of my server during a load test using Jmeter and Jenkins integration, is that possible?
If yes, then please let me know the process.

Related

Tools for running distributed API Tests

I want to run API tests on a VM or physical machine.
(as we do with selenium grid : keep tests on hub and run it on node)
Is there a tool that can handle this ?
Thanks.
You can use jmeter for distributed testing
or load testing
https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html

How to optimize Ant media server load test tool performance?

I was following your Load Test guide, but during my testing I couldn't achieve the expected number or viewers(2k) on my server(32 vCPU cores).
Can you please guide me to a stepwise process that how can I improve the load test tool performance?
Thank you for the question.
First, please make sure that you are running the WebRTC Load test tool on another instance and not on the same instance as Ant Media Server.
Also since Load test tool also consumes CPU resources, so while setting up the same please use an instance with good compute power.
e.g., If you have installed Ant Media Server on a 32 cores instance, the instance on which load test tool is running should be of similar configuration.
Also, the numbers of publishers and viewers are exclusive.
I have listed stepwise process about how to setup the test server here.
I hope this helps.
Thank you.
antmedia.io

Load generator in stress testing

Is it necessary to have load generator in stress testing. I am stress testing a e-commerce website and in my case I think I don't need run more that 300 virtual users. This amount of users I can run from JMeter non-gui mode. Is this will efficient? Thanks.
It is. You need to "generate the load" from somewhere so you need to have at least one load generator.
If you need only 300 virtual users which can be simulated from a single machine without any issues - you don't need to run JMeter in distributed mode, most probably you can generate this load from a single machine, just make sure to:
follow JMeter Best Practices
monitor resources consumption like CPU, RAM, Network, Disk IO, pagefile usage, etc. as JMeter needs to have enough headroom to operate in order to be able to send the requests as fast as possible or according to your test scenario. If you don't have better monitoring options in place - you can consider using JMeter PerfMon Plugin. The reason for monitoring resources usage by JMeter is that if JMeter cannot send requests fast enough your test results won't be accurate (false-negative) as even if the application has the capacity to handle more load JMeter won't be able to deliver this load if it's configuration isn't suitable or it doesn't have sufficient amount of resources from the operating system

Better jmeter report

Currently I use jmeter aggregate report or summary report for submitting reports. But they expect something extra.. How can I give. Is there any plugins for getting server resources usage when testing load.
Reporting: since JMeter 3.0 there is a HTML Reporting Dashboard which can be generated during the test run. It contains exhaustive overview information. If you need to find out the reason of the bottleneck or memory leak or whatever you can consider extra Graphs available via JMeter Plugins project.
The same JMeter Plugins project provides PerfMon - client-server application which is able to collect over 70 different metrics and plot them via JMeter Listener. See How to Monitor Your Server Health & Performance During a JMeter Load Test guide for detailed setup and usage instructions.
There are quite a few plug-ins available that can help you analyze the results better. You can refer to https://jmeter-plugins.org/ for the same.
Most popularly used ones are:
Response Times Over Time
Response Times Percentiles
Transactions per Second
Response Latencies Over Time
In case of server usage you can use following that comes with JMeter plug-ins
PerfMon Metrics Collector and Server Agent or
In case of Unix based system use sar command that comes with sysstat package or VMstat. In case of windows based system use Perfmon to capture the system utilization data while the test is running and then use Ksar to plot graphs with the data collected using sar. https://sourceforge.net/projects/ksar/
If you have collected data using Perfmon then plot the graphs using PAL. https://pal.codeplex.com/
In this case, I would suggest using Grafana. It shows realtime results. And the best thing is, it can be configured according to the need.
Now, the thing is how to use it? Using it is not that tough.
If you're using a Mac or Linux (Any Flavour) things become easy. If you're using Windows, I would suggest using a virtual machine. The reason behind that is windows block traffic after some requests. And that causes a lot of pain in the head.
In my case, I used a virtual machine to setup ubuntu inside it and then configured Grafana.
For working with Grafana, you need to have these two things installed.
Grafana Itself
Influx Db for the backend
Links for both here below:
https://grafana.com/grafana/download?platform=linux
https://portal.influxdata.com/downloads/
Once installed and setup,
You need to use Backen Listener to push results o Graphite Client (Installed along with Influx DB Automatically).
I know it is a bit confusing but once you understand the thing, you and your client will love the detailed reports.
Remeber, Grafana is all about configuration.
Let me know if you have any confusion regarf=ding this.
Happy to help. :)

Any idea for executing Selenium webdriver + Java/Python tests from Cloud

I can't found any question/answer about that (probably I don't know how to find it...)
Could somebody give me a global idea to execute +200 Selenium webdriver tests (Python) from cloud servers/tools?
Thanks!!
rgzl
Another way is Saucelabs, using this service you'll be able to just send your Selenium
Java/Python tests
to their Cloud infrastructure for execution. The benefits of such testing are obvious – no need to waste time and resources setting up and maintaining your own VM farm, and additionally you can run your test suite in various browsers in parallel. Also no need to share any sensitive data, source code and databases.
As said in this acticle:
Of course inserting this roundtrip across the Internet is not without cost. The penalty of running Selenium tests this way is that they run quite slowly, typically about 3 times slower in my experience. This means that this is not something that individual developers are going to do from their workstations.
To ease the integration of this service into your projects, maybe you'll have to write a some kind of saucelabs-adapter, that will do the necessary SSH tunnel setup/teardown and Selenium configuration, automatically as part of a test.
And for a better visualization:
Here's a global idea:
Use Amazon Web Services.
Using AWS, you can have a setup like this:
1 Selenium Grid. IP: X.X.X.X
100 Selenium nodes connecting to X.X.X.X:4444/wd/register
Each Selenium node has a node config, running 2 maxSessions at once. (depending on size of course)
Have also, a Continuous integration server like Jenkins, run your Python tests Against X.X.X.X grid.