HELP! Any developers whom have ever created a service that interacts with people via SMS, how did you test you application for integrity under heavy load?

Im in the middle of helping the company I work create an appointment reminder system that interacts via SMS among other contact types. This system will be using a 3rd party SMS gateway (SMS API), and will quite possibly send thousands of texts a day (or more).

Issue is there are only 9 people in the company, and we cant gather that many phone numbers. Any ideas on how to test the ability to text several hundred people at once or several thousand a day? How do you load-test your application if you don't have thousands of phones with different numbers?

  • 2
    Do you really want to test how much load the 3rd party SMS gateway can handle? I would except they would test that them selves. – Niels van Reijmersdal Jan 30 '15 at 14:46
  • I guess I just want to KNOW FOR SURE that I can send several hundred in a few seconds, and test the delivery time on all of them. – user1789437 Jan 30 '15 at 14:48
  • If you can only gather say 100 numbers, and you need to test it for 10000 texts, what about uh... just doing the 100 numbers 100 times in a row? – corsiKa Jan 30 '15 at 14:54
  • Of course ive thought of doing that, and its my current path for testing.. I thought there might be a better answer or even a service ive never heard of that helps with this, but if not, this 100x100 it is. – user1789437 Jan 30 '15 at 15:45
  • 2
    The capacity that you require from the SMS gateway should be a matter of having an SLA with them. What you should test and provision for is the ability of your application and network to handle this load. For this you dont need to actually send out messages, just create a mock for the SMS api which discards the message and simply returns the code for success. – Kinjal Dixit May 1 '15 at 10:50

SMPP is complex, BUT basic sunny-day message transport is quite simple and straight forward.

When I had a similar need I just wrote in Perl some code tot positive acknowledge a message and forwards it somewhere, I don't have (nor remember) the specifics but it was simple and took me only a few days to complete.

If you are too lazy to read the standard (like I was) you can use Wireshark to dissect some messages and start from there.


You can use http rest mocking software, and just count the request your app performed. Sometimes i use this SoapUI

If your app is over smpp you are in really difficult situaction and you have to setup Kannel for that kind of tests

  • 1
    Could you provide a link to Kannel. Also, why/how do you use it Kannel and SoapUI for this? – Lyndon Vrooman Feb 2 '15 at 19:32
  • Here is the link to kannel link. – Alexey Generalov Feb 2 '15 at 22:38
  • You will have to set up kannel gate, and push messges to smpp or http interface, then you can count and verify messages received by kannel. SoapUI usage described in the link above. They have great knowledge base on it. To be short just mock http service you need write assertions and use your application on it. But in case you want to test your SMS aggregator nothing would help, and i guess that no one would give you 100 sms/sec for testing or on volume less than 10 millions messages per month – Alexey Generalov Feb 2 '15 at 22:44

It may be of some help to you. We have once done the same thing in one of our project where we had to test USSD (Unstructured Supplementary Service Data) and SMS (Short Message Service) using the SMPP (Short Message Peer-to-Peer) protocols. Goal was to find a break-point where the CPU usage goes above 80% and Memory usage goes above 70%, for this we had to put load over the application with tones of SMS and USSD codes being fired.

We have used the tool SMPPSIM for this purpose, it provides the functionality of sending and receiving lots of SMS using the SMPP protocols. The only challenge was its configuration which took a lot time for me and my colleague to complete, for the USSD part we used both JMeter and SMPPSIM. Application has complete tree-node structure defined for purchasing products like buying a message pack which can be accessed via USSD code *111*12*3# (for example, this code is pointing to a product which can be purchased via USSD call). JMeter simulated load with 500 concurrent users running for Forever (Loop Count = Infinite) and then hitting the web interface of SMPPSIM which in turn was calling the USSD code *111*12*3# through different mobile numbers (test numbers) passed via CSV files to SMPPSIM and then buying 1000s of products simultaneously which increases load over the server to find the breakpoints. From the SMPPSIM and application logs we used to calculate that how many SMS and USSD products got success and how many got failed to deliver & check-out.

The irony of the solution was it took several days in its configuration (as everything was being configured over Linux servers and I didn't have knowledge of working over black screens with Linux commands), but it worked and served our purpose well. After that we presented report got the application performance tuned and released the project successfully. I will suggest you too to use the SMPPSIM but first need to do a little study about the same.

  • Can SMPPSIM be used to Load tesing or is it only for funtional testing – Sukhdeep Singh Apr 7 '16 at 17:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.