Stress testing tools

In light of the recent misfortune that befell the BLOXY Awards, I realized that it would be a good idea to have tools to assist in stress-testing our games. Stress-related issues are difficult to catch since they require so many people in order to appear, and they’ve already ruined a lot of peoples’ days at that point, or even worse, ruined the release of a game . They’re usually also rather severe, leading to unplayable games or mishandling of purchases/player data. Because of this, it’d be great if ROBLOX could provide some tools to help stress test our features, namely:

  • Testing against DataStore/Web request (GetUsernameFromIdAsync/etc) throttling
  • Perhaps just lower the available requests to simulate large amounts of traffic
  • Increase response delay
  • Simulate performance of game with 100 players w/o having to create 100 individual clients
  • Simulating lots of players joining at once, potentially right after server was created
21 Likes

I really like your DataStore / web request throttling idea, and I think that one is really do-able. The other two I’m not so sure about, it would be lovely to have them, but how would that work ?

1 Like

I don’t think we’d ever run into rendering issues with 100 players, and since physics are calculated locally I don’t think 100 players would drastically impact it, so the main concern would be replication. Maybe a cheap trick like increasing the amount of data sent by/to the client by a factor of 100x would do the job (in other words, duplicating replication). Of course, this wouldn’t affect code, firing RemoteEvents 100 times – the data would be sent and dropped. This could help with both #2 and #3.

Another option may be replaying play sessions, sort of like Cursor*10. For instance, I go in and run in one direction, flailing a weapon. I respawn, and go attack my previous life. I do this a couple more times, and perhaps generate the rest, up to 100, by duplicating and offsetting the start times of previous sessions. At this point you have 100 players interacting with the game world, and I think it’d be a pretty good indicator of performance assuming this was all done in a single client/server pair. This may be too weird of an approach though, and might be better off as a plugin. That aside, this would also be useful for botting through your level – if you had something that only appeared after 10m of gameplay, you could record a play session and keep looping it until the issue cropped up.

2 Likes