There are situations where we realize that the tools and technologies that we have are not sufficient to meet the requirements at hand. Here, we need to be innovative to tackle problems by going beyond the technical barriers, in solving our problems.
Innovation being the DNA of QA InfoTech, here we present how our load testing team created an XMPP plugin to test chat applications and a Reporting Utility Tool to manage load test results efficiently.
We needed to perform load testing on an XMPP based messaging/chat application over Android/iOS. However, the challenge was the absence of an existing tool to perform load testing of the XMPP protocol with the required features.
Normally, Apache JMeter is used for load testing. However, the Java-based open-source tool does not support XMPP protocol.
What is XMPP?
It stands for Extensible Messaging and Presence Protocol. It acts as a communication protocol for message-oriented middleware based on XML. It also facilitates the exchange of text or multimedia between two or more network entities.
XMPP enables the majority of chat applications to perform various chat activities including text or multimedia messages, group chat, private chat, user’s “last seen”, and more.
We developed a custom JMeter plugin to enhance its capability to support XMPP-based actions including chatting and connection.
How did we Do it?
Here is how the team developed a JMeter-based XMPP plugin:
- Leveraged smack API for implementing XMPP actions
- Used JMeter libraries for developing those actions in the form of JMeter samplers in Java
The Apache JMeter tool mimicked five virtual senders of messages. The messages were received by an Android emulator. It also monitored custom logging files.
Various KPIs were stored in the log including:
- Response time of sending a message
- The message latency
These KPIs were self-recorded in the custom logging files with the help of the developed custom JMeter plugin.
Characteristics of XMPP Plugin
- Universal solution
- Custom logging feature
- Can be used in the JMeter script for functional and performance testing
- Supports selective file downloading
- User friendly
Reporting Utility Tool
This was a tool built to handle load test results.
The project required the efficient management of a large number of product results on load testing reports. Here is why:
- The project scope included 40 products
- Had Very frequent load test results
- Load execution entailed coverage across all products together
- Needed to share results of 2 load tests each day
Reporting Utility Tool helped in addressing the following issues:
- The time-consuming process of manual report creation
- Comparison with baseline or past result as it was time-consuming and error-prone to handle manually
- No proper management of load test results for future references
- Manual result creation which was not error-proof
How did we Do it?
- The frontend was developed using HTML, CSS, and Bootstrap
- Java was leveraged for logic intensive tasks
- Shell script enabled communication with file and system manipulation tasks
The Reporting Utility Tool includes all the relevant information like aggregate reports, response time graphs, the error above SLA, and comparative analysis.
Benefits of Reporting Utility Tool
Here are the benefits that Reporting Utility Tool offers:
- No large number of results on email
- Capable of handling multiple results at the same time
- Customizable as per the requirement
- Saves time. Tasks that required hours can now be done in minutes
- Efficient management of previous load tests in one place
- Accurate result analysis due to end-to-end process automation
Development of above mentioned tools demonstrate QA InfoTech’s commitment towards achieving quality and efficiency through innovation.
QA InfoTech’s SMEs Sohan Joshi and Deepesh Joshi presented both the above mentioned tools in detail at our annual testing and quality summit, Qualloquium 2020. They were the second runners up in our competitive rounds amongst other sessions that spanned across a range of quality attributes. Watch the video below to understand everything in more detail.