Skip to Content

Introduction

SuccessFactors is a cloud-based HR system. So basically, you only need an internet connection and a system that meet minimum requirements to access it.

We are certain that SuccessFactors systems can take the actions of massive simultaneous users. But how can we ensure that a customer’s internal network environment can receive the load too? This’s the question I was asked from a customer.

There are many load testing tools available in the market. The tool you pick will depend on many factors, especially the license cost. One of the most popular tools is LoadRunner and it costs a fortune.

Everyone knows network load testing is important but not everyone is willing to invest in it. So free/open source tools over commercial one may be an ideal. I have been searching around and found one tool, Locust. It allows you to create test scenarios with basic Python coding. Even if it’s not packed with a bunch of features but I think it’s more than adequate.

Note: we intend to test the internal network loading only so do not perform the testing on the production environment. Only test system is sufficient.

 

Installation

Python installation

Download it from the following link: https://www.python.org/downloads. As of blog written date, Locust supports Python 2.7, 3.4, 3.5, and 3.6.

Installing Locust on Windows

Open a command line and execute the following command. Installation is done with Python’s pip.

python -m pip install locustio

 

Configuration

The configuration of load testing is done through the file “locustfile.py”. You can find more info on https://docs.locust.io/en/stable.

This is an example locustfile.py.

from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):
    def on_start(self):
        self.login()

    def login(self):
        self.client.post("/login?company=<company>", {"username":"<sf_username>", "password":"<sf_password>"})

    @task
    def personalinfo(self):
        self.client.get("/sf/personalinfo")

    @task
    def employmentinfo(self):
        self.client.get("/sf/employmentinfo")

class WebsiteUser(HttpLocust):
    task_set = UserBehavior

You need to replace the following parameters <company>, <sf_username>, and <sf_password> with your system.

When the class UserBehavior is run, the tasks (@task) will be randomly selected and run. You can refer to the note “2493928 – SuccessFactors Deep links guide” for more details on which SuccessFactors pages/links that you can use.

 

Running Locust

Run the Locust command in the command line.

locust --host=<SuccessFactors DC> -f <folder>\locustfile.py

Once you see the above messages, the Locust web server is started. You can access it via the link http://localhost:8089.

Number of users to simulate: Total number of users to test it.
Hatch rate: How many users will be added for each second until it reaches the total users.

You can begin the test and then at the same time, you have to monitor the internal network performance. Once you satisfy with the result, you can press the stop button.

Conclusion

There is no committed response time from SuccessFactors (which is understandable because it depends on many factors). But I would say that, based on my experience, the response time < 20 seconds is doing just fine. So the above test result is proved that the internal network load is ok.

 

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply