Backend-Based
Functional Testing Using JMeter
Software testing and development
has undergone a lot of evolution in recent times.
Functional testing was done
locally and software used to run without any sort of external connectivity. Then
came the nineties and software testing was started being done on internet-based
applications like browsers. Fast forward a couple of decades and smartphones,
tablets, the IoT and wearables have changed the way applications are used.
Nowadays, functionality often lays within an application’s backend houses the
functionality while the frontend is concerned mainly about how the data is
presented within the boundaries of user experience. Naturally, this has also
changed the way these modern applications are tested for their functionality.
Functional Testing Using JMeter
JMeter was initially built to
provide an open source solution for performance and load testing. But JMeter
can be used for performing backend-based functionality tests too. For instance:
with JMeter, a part of your user registration functionality can be tested by
testing the APIs of your system and by making sure that the users are created
successfully in your database. You can utilize JMeter for creating an API call
with various user names and passwords, instead of opening a browser and entering
random data in the given fields manually.
The supported protocols by JMeter are the following:
·
Web:
HTTPS web sites web 2.0 (flex-ws-amf, flex and ajar), web 1.0, HTTP
·
Web
Services: XML-RPC or SOAP
·
Database
through JDBC drivers
·
Directory:
LDAP
·
JMS
(Messaging Oriented service)
·
Service:
SMTP, IMAP, POP3,
·
FTP
Service
·
JDBC
·
Hadoop
(and Kafka with Kafkameter Plugin)
·
UDP
services
RESTful APIs normally make use of
the POST, GET or PUT technique of HTTP requests, and create properties files with
POST requests or JSON files which represent the data that is to be moved over. JMeter
makes functional testing quite easy by utilizing a dedicated HTTPS or HTTP
sampler. The data in a tested application can be used to create a request
sample- and then an external file is utilized to provide the various parameters
that you would want to test.
Assertions can also be used to
configure functional testing in JMeter. The assertions identify if any API sent
a reply, indicating whether a process failed or the desired data was received.
For instance: during the testing of user registration, a reply would indicate if
a user ID was created or not.
Java unit testing can also be
performed using JMeter with Junit. JMeter has a native support for JUnit, and can
be included in the whole functional testing strategy. Any Junit tests that were
created while developing the software can also be included in the testing.
JUnit tests can be utilized along with API calls.
Testing User Experience
The verification of the user
experience and the backend functionality is very essential. JMeter cannot be
used to test the user experience. Solutions like SauceLabs and Perfecto Mobile
offer frontend testing tools for testing the user experience.
For verifying backend as well as
frontend functionality, you can use SauceLabs to run Selenium-based tests on
browsers and operating systems.
The Perfecto Mobile environment allows
you to run functional tests on mobile devices supporting native apps as well as
browser.
Full Functionality Testing of Your App
Your testing armory should be ideally
equipped with a suite of tools to test the full functionality of your
application. Both frontend and backend functionality tests should be carried
out to cover all the bases, as both the tests complement each other.
JMeter is a true winner as it was
developed originally for load testing as an open source tool, but it readily
adapted to the changes in the functionality testing. The same samplers and
plugins that were used to produce loads can be used by the developers for
functional testing. This, along with the integration of various frontend tools,
provides an end-to-end environment ensuring the functionality of your
application.
Load testing is an
important step when we are working with web applications and SAAS based
applications. Then, there comes question of how to do load testing: setting up
own lab or using cloud based testing service. Load Testing process involves
setting up the test bed, writing automated scripts, continuous maintenance and
monitoring the infrastructure which becomes very tedious. There are obviously
multiple profits of using cloud for load testing. I am listing down a few
benefits of cloud based services:
·
Cost benefits: You save huge money by not buying infrastructure
·
Time: It’s the responsibility of service provider to maintain the
software so, your time is saved
·
Flexibility: You can run your tests from anywhere just an internet
connection is needed
·
Meeting deadlines: As the infrastructure can’t have a breakdown,
cloud-services don’t hinder your work schedules and you can stick to deadlines
·
Excellent service: The service benefits are much greater than your
in-house IT department
·
Team efforts saved: Your much knowledgeable technical team doesn’t
have to work hours to setup and maintain test setup and they can spend efforts
mainly on testing and reports
·
Real Load benefits: The main feature of cloud based services is
that you get realistic load depicting live scenarios
·
Continuous Customer Support: You can rely on this third party to
help you anytime you have a question and you can continue your performance testing as long as you need
When it comes to testing
applications on cloud and making them scalable, load testing for 50K users
becomes a challenge. Here comes the role of SAAS based load testing tool:
BlazeMeter, which is highly scalable and can handle load of more than 300K users.
BlazeMeter is actually “JMeter in the Cloud”.
Advantages of BlazeMeter:
JMeter compatibility
|
JMeter being open-source tool is always foremost choice for load
testing in any project. It is the most common tool and recommended for its
stability and performance. And Blazemeter provides 100% compatibility with
JMeter scripts and also addresses limitations of JMeter. Older version of
JMeter scripts can be reused with Blazemeter which saves huge efforts
|
Various Plugins
|
1. Blazemeter can also work with Chrome and can record browser
actions & convert it to .jmx file.
2. BlazeMeter obtains the last 12 months of data from Google analytics and creates a test automatically for five mostly visited pages and based on this record it can set number of concurrent users too 3. WordPress users can test their App by using BlazeMeter plug-in without the need of scripting |
Real Load availability
|
For an effective and meaningful when load comes from all type of
sources. When emulators are used and virtual load is created from same IP, it
sometimes provides unrealistic results. BlazeMeter can provide load from
multiple IP’s which is vital for load testing the cloud applications.
Network Emulator: Blazemeter has option to customize various network types (3G, wifi, broadband etc.) and their bandwidth (download limit etc) |
Flexibility of controlling agents
|
JMeter uses Master-Agent based architecture and Master controls
multiple agents which generate load. Number of agents is a predefined
parameter before running the test. But, with Blazemeter number of agents can
be changed dynamically while running the tests and any instance can be used
as Master or Agent while the test run
|
Live Server Monitoring for Throughput
|
JMeter requirement is to set the Target throughput parameter and
application’s performance is compared to this threshold. But, Blazemeter
provides the option to set runtime value for this parameter according to
application’s performance. So, server can be monitored at various levels
while running the test
|
Automatic Controlling of Agents
|
Load test strategy requires to determine parameters like ramp up
time , number of concurrent users, test engines, test iterations and the test
duration. In JMeter These values are configured before the test is started.
The maintenance of EC2 instances has to be provisioned for the Agents, the
master and slaves IP addresses has to be configured manually. Load Testers
are expected to maintain, manage and monitor whole setup during the test
cycles. But, it will be very tedious to maintain such setup for EC2 load
where 50K + requests are needed. BlazeMeter automatically sets number of test
engines, number of threads and engine capacity based on the number of
concurrent users. And all this is customizable. The efforts of team are saved
tremendously and they can concentrate on testing
|
CSV as per load test engine
|
Blazemeter allows different csv file per load test engine. In
JMeter its all manual. Blazemeter keeps a common repository for all files
which can be referred to each without manually copying
|
Scheduling and autotest
|
BlazeMeter as well as JMeter allow scheduling test start time
and their duration which can be run anytime. Blazemeter allows weekly fixed
schedules to be set too
|
With so many benefits,
Blazemeter obviously has a bright future!!
No comments:
Post a Comment