Human Capital Management Blogs by Members
Gain valuable knowledge and tips on SAP SuccessFactors and human capital management from member blog posts. Share your HCM insights with a post of your own.
cancel
Showing results for 
Search instead for 
Did you mean: 
eaksiri
Explorer

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.

 
Labels in this area