System for creating randomized scaled testing
A computing system may comprise a monitoring server system, a target server system, and client devices that may be connected via one or more networks. The monitoring server system may identify client devices to perform a test on the target server system, and may send a payload with instructions for performing the test to the clients. The client devices may determine that the payload is authentic and execute the instructions in the payload, as part of a non-malicious botnet, to perform the test on the target server system. The monitoring server system may receive client-side results from the client devices, and server-side results from the target server system. The monitoring server system may generate a report based on the received results. The report may indicate one or more issues, points of failure and/or recommendations for mitigating the issues and/or points of failure.
1 . A computing device comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, cause the computing device to:
generate a payload comprising instructions for an application, executing on a plurality of client devices, to perform a test on a target server system, wherein the instructions cause the application, executing on the plurality of client devices, to send a request for at least one resource associated with the target server system;
identify, based on the plurality of client devices connected to the target server system, a subset of the plurality of client devices, wherein the subset has a first characteristic, and wherein the first characteristic is selected based on the generated payload;
send, to the application executing on the subset of the plurality of client devices, the payload;
send, to the application, an indication to perform the test on the target server system, wherein sending the indication causes the application to perform the test on the target server system by executing the payload via the subset of the plurality of client devices;
receive, from the target server system, server-side results of the test performed on the target server system;
receive, from at least two or more of the subset of the plurality of client devices, client-side results of the test performed on the target server system;
identify, based on response times, associated with the server-side results and the client-side results, to the request for the at least one resource satisfying a threshold, one or more points of failure associated with a network connection between the subset of the plurality of client devices and the target server system; and
generate a report identifying the one or more points of failure associated with the network connection between the subset of the plurality of client devices and the target server system.
2 . The computing device of claim 1 , wherein the application executing on the plurality of client devices comprises at least one of:
a mobile application; or
an executable associated with a web browser.
3 . The computing device of claim 1 , wherein the application executing on the subset of the plurality of client devices forms a botnet for performing the test.
4 . The computing device of claim 1 , wherein the instructions, when executed by the one or more processors, cause the computing device to:
send information for authenticating the payload to the application executing on the plurality of client devices, wherein sending the information for authenticating the payload and the indication to perform the test causes the subset of the plurality of client devices to:
determine that the payload is authentic; and
based on the determination that the payload is authentic, execute the payload to perform the test on the target server system.
5 . The computing device of claim 1 , wherein the instructions, when executed by the one or more processors, cause the computing device to:
use a machine learning model to compare the server-side results and the client-side results and identify the one or more points of failure.
6 . The computing device of claim 1 , wherein the indication to perform the test includes a date and/or time at which the subset of the plurality of client devices is to perform the test.
7 . The computing device of claim 1 , wherein the test comprises a load test that applies increasing load to the target server system to cause the failure.
8 . The computing device of claim 1 , wherein the target server system comprises a non-production server system configured to replicate a production server system, and wherein the subset of the plurality of client devices is unaware that the target server system is the non-production server system.
9 . A method comprising:
receiving, by an application executing on a client device and from a monitoring server system, a payload for performing a test on a target server system and information for authenticating the payload, wherein the payload comprises instructions that cause the application to send a request for at least one resource associated with the target server system;
determining, by the application and based on the information for authenticating the payload, that the payload is authentic;
receiving, by the application, an indication to execute the payload to perform the test on the target server system;
based on determining that the payload is authentic and the received indication to perform the test, executing the payload, as part of a botnet, to perform the test on the target server system;
identifying, by the application executing on the client device and based on executing the payload, one or more points of failure associated with a network connection between the client device and the target server system; and
sending, by the application executing on the client device and to the monitoring server system, the identified one or more points of failure associated with the network connection between the client device and the target server system.
10 . The method of claim 9 , wherein performing the test comprises disabling functionality of the application executing on the client device.
11 . The method of claim 9 , wherein performing the test on the target server system comprises sending, to the target server system, the information for authenticating the payload to allow the test to be performed on the target server system.
12 . The method of claim 9 , further comprising:
determining that a component associated with the target server system has failed,
wherein sending the identified one or more points of failure comprises sending an indication that the component associated with the target server system has failed.
13 . The method of claim 9 , further comprising:
using a machine learning model to compare server-side results and client-side results and identify the one or more points of failure.
14 . The method of claim 9 , wherein the indication to perform the test includes a date and/or time at which the client device is to perform the test.
15 . The method of claim 9 , wherein the test comprises a load test that applies increasing load to the target server system to cause the failure.
16 . The method of claim 9 , wherein the target server system comprises a non-production server system configured to replicate a production server system, and wherein the client device is unaware that the target server system is the non-production server system.
17 . One or more non-transitory computer-readable media storing executable instructions that, when executed, cause a computing device to:
generate a payload comprising instructions for an application, executing on a plurality of client devices, to perform a test on a target server system, wherein the instructions cause the application, executing on the plurality of client devices, to send a request for at least one resource associated with the target server system;
identify, based on the plurality of client devices connected to the target server system, a subset of the plurality of client devices having a first characteristic, wherein the first characteristic is selected based on the generated payload;
send, to the application executing on the subset of the plurality of client devices, the payload;
send, to the application, an indication to perform the test on the target server system, wherein sending the indication causes the application to perform the test on the target server system by executing the payload via the subset of the plurality of client devices;
receive, from the target server system, server-side results of the test performed on the target server system;
receive, from each of the subset of the plurality of client devices, client-side results of the test performed on the target server system;
identify, based on response times, associated with the server-side results and the client-side results, to the request for the at least one resource satisfying a threshold, one or more points of failure associated with a network connection between the subset of the plurality of client devices and the target server system; and
generate a report identifying the one or more points of failure associated with the network connection between the subset of the plurality of client devices and the target server system.
18 . The one or more non-transitory computer-readable media of claim 17 , wherein the application executing on the plurality of client devices comprises at least one of:
a mobile application; or
an executable associated with a web browser.
19 . The one or more non-transitory computer-readable media of claim 17 , wherein the application executing on the plurality of client devices forms a botnet for performing the test.
20 . The one or more non-transitory computer-readable media of claim 17 , wherein executable instructions, when executed, cause the computing device to:
send information for authenticating the payload to the application executing on the plurality of client devices, wherein sending the information for authenticating the payload and the indication to perform the test causes the plurality of client devices to:
determine that the payload is authentic; and
based on the determination that the payload is authentic, execute the payload to perform the test on the target server system.