First thing’s first: I got another article titled”JMeter or LoadRunner? That is the Question!“; worth to have a look.
what is load testing and what is performance testing?
When talking about these two (kind of) similar concepts, they may taste similar to each other but they are slightly different:
When we talk about performance, we are talking about Time and timing; but talking about system Load is the matter of how much user/process/activity a system can handle for us.
Performance testing seems to me to be much broader than load testing. or Load testing is usually focused on metrics like requests per second and concurrent users (the cause); whereas performance testing is more concerned with response times (the effect)
So we may say:
Performance Testing means “how fast our system works?” and Load Testing is “how much volume can our system process?”
So who are JMeter and Gatling?
These two beautiful ladies! are almost doing the same thing: performance testing and somehow load and stress testing.
As official Apache JMeter website says:
“The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.”
And Gatling Corp claims:
“Gatling’s code-like scripting enables you to easily maintain your testing scenarios and easily automate them in your continuous delivery pipeline.”
Comparing Apache JMeter and Gatling Corp Gatling:
Comparing these tools does not necessarily means we have to select one of them (since it’s really hard to choose between these two amazing ladies!) but will give us more details on them.
JMeter’s quick facts:
- JMeter has been first released in 1998, so this project got a history of about 2 decades. It has developed by Java and XML languages.
- JMeter supports various protocols for sampling: HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …), SOAP / REST Web Services, FTP, JDBC, SMTP, IMAP, POP3, JMS, LDAP and much more. You can even add more samplers by adding/developing new addons for it.
- It’s cross-platform
- You can record scenarios with “HTTP(S) Test Script Recorder”
- It supports distributed testing
- You can use its UI to create XML files and then (hardly!) edit them
- It comes with various listeners (say Report generators if you’re new here!) and many plugins and addons to create useful and understandable charts
Gatling’s quick facts:
- She was born in 2011, so she is 13 years old younger than JMeter!
- Gatling support fewer protocols: HTTP, HTTPS, JMS and Rest Apis
- It’s cross-platform
- You can record test scenarios with it easily
- Gatling does not support distributed testing; sadly 🙁
- You can do whatever you want by developing Scala based scripts with it 🙂
- And she got many plugins to be integrated with other tools such as Maven, Jenkins, etc
Finally:
- There is no war between JMeter and Gatling. Each of them got their own audience and use.
- Guys with more development skills prefer being with Gatling where performance testers and more GUI guys! like to date JMeter 😉
- Both tools are great, but you need to know them before dealing with them.
Sources:
Hi Mehdi,
Nice article,I’m using postman for testing webapi. It’s small and light but it works fine!
I just want to test our api ,call them in sequence and by various conditions.
However I like postman Simplicity but I need a more flexible tools specialy for write more complex scripts,Postman with Javascript language is not desire for me.
Do you have any suggestion?
Hi Seifolah
Thank you for your comment. To have a better experience testing your APIs, I recommend you to use SoapUI and Rest-Assured. However to use all features (such as Data-Driven Testing) you may need to use SoapUI Pro which is the commercial version of this software.
You may also try to use JMeter for even functional testing on APIs, but maybe this is not the exact tool you need but give it a chance 😉
Thanks Mehdi,
Sure,I will try them.I appreciated if you have an article about various testing method and their goals.As a developer perspective they are confusing for me 🙂