Abstract: Disclosed is a system (100) and a method (500) for executing web performance test to evaluate performance of a network. The method (500) comprises receiving an Internet Protocol (IP) address corresponding to a Uniform Resource Locator (URL) of a website from a user device (110) for loading the website and executing the web performance test. Based on received IP address, a request is sent to the web server for loading one or more webpages of the website on the user device (110). Upon sending the request, a response is received from the web server and shared with the user device (110). Based on the response, the website is loaded on the user device (110) and the web performance test is performed on the URL for determining a time taken to load the website. An execution result of the web performance test is transmitted and displayed on the user device (110). Fig. 5
DESC:FORM 2
THE PATENTS ACT, 1970 (39 OF 1970)
&
THE PATENT RULES, 2003
COMPLETE SPECIFICATION
(See section 10 and rule 13)
SYSTEM AND METHOD FOR EXECUTING WEB PERFORMANCE TEST TO EVALUATE PERFORMANCE OF A NETWORK
Jio Platforms Limited, an Indian company, having registered address at Office -101, Saffron, Nr. Centre Point, Panchwati 5 Rasta, Ambawadi, Ahmedabad - 380006, Gujarat, India
The following specification describes the invention and the manner in which it is to be performed.
TECHNICAL FIELD
[001] The embodiments of the present disclosure generally relate to the field of wireless communication networks and systems. More particularly, the present disclosure relates to a system and a method for executing a web performance test for evaluating performance of a network.
BACKGROUND OF THE INVENTION
[002] The subject matter disclosed in the background section should not be assumed or construed to be prior art merely because of its mention in the background section. Similarly, any problem statement mentioned in the background section or its association with the subject matter of the background section should not be assumed or construed to have been previously recognized in the prior art.
[003] In the realm of wireless communication and networking environments, rapid evolution of mobile and broadband technologies has significantly transformed the way in which network users connect and interact digitally. With increased usage of smartphones and a rising demand for high-speed internet connectivity, a need for network testing applications for testing performance of a network has also increased.
[004] Performance of a network is particularly linked to loading content over the network. During peak hours of network traffic, the content may be blocked or filtered over the network. Furthermore, as type of media content is becoming dynamic for websites to process, it became tedious for analyzing and evaluating or testing the performance of the network. Thus, if the evaluation or the testing of the performance of the network is not performed efficiently, this may result in a bad user experience.
[005] Therefore, there lies a need for an improved and efficient system and method for evaluating the performance of the network while delivering the content to the user.
SUMMARY
[006] The following embodiments present a simplified summary to provide a basic understanding of some aspects of the disclosed invention. This summary is not an extensive overview, and it is not intended to identify key/critical elements or to delineate the scope thereof. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
[007] In an embodiment, disclosed herein is a method for executing a web performance test to evaluate performance of a network. The method comprises receiving, by a transceiver module from a user device, an Internet Protocol (IP) address corresponding to a Uniform Resource Locator (URL) of a website being loaded on the user device for executing the web performance test. Further, the method comprises sending, by the transceiver module, a request to the web server for loading one or more webpages of the website on the user device based on the received IP address. The method comprises transmitting, by the transceiver module to the user device, a response received from the web server corresponding to the sent request. Furthermore, the method comprises executing, by an execution module based on the transmitted response, the web performance test on the URL during loading of the website to determine an amount of time taken by the user device to receive first byte of data associated with the one or more webpages of the website and a total amount of time taken by the user device to load the one or more webpages of the website. Thereafter, the method comprises determining, by the execution module, an execution result based on one or more of a first threshold criterion corresponding to the amount of time taken by the user device to receive the first byte of data and a second threshold criterion corresponding to the total amount of time taken by the user device to load the one or more webpages of the website.
[008] In one or more embodiments, the first threshold criterion is based on a first determination that the amount of time taken by the user device to receive the first byte of data is less than a first pre-defined threshold value. Thereafter, the second threshold criterion is based on a second determination that the total amount of time taken by the user device to load the one or more webpages of the website is less than a second pre-defined threshold value.
[009] In one or more embodiments, the execution result includes at least one of latency of receiving data packets for loading the website, packet loss during reception of data packets for loading the website, one or more available communication ports of the web server, a Domain Name Server (DNS) resolution time for obtaining the Internet Protocol (IP) address of the website, the IP address of the website, the type of the IP address of the website, one or more trace route paths of the website, the amount of time taken by the user device to receive the first byte of the data associated with the one or more webpages of the website, and the total amount of time taken by the user device to load the one or more webpages of the website.
[010] In one or more embodiments, the method further comprises transmitting, by the transceiver module, the execution result of the web performance test to a User Interface (UI) of the user device.
[011] In one or more embodiments, the method further comprises the loading of the one or more webpages of the website. Further, the loading of the one or more webpages of the website comprises a transmission of data packets corresponding to the data associated with the one or more webpages of the website from the web server to the user device based on the transmitted response. Furthermore, the loading of the one or more webpages of the website comprises a parsing of data associated with the one or more webpages of the website at the user device. Thereafter, the loading of the one or more webpages of the website comprises a rendering of the one or more webpages of the website at the user device based on the parsed data. The total amount of time taken to load the one or more webpages of the website corresponds to an amount of time taken between loading the first byte of the parsed data and loading the last byte of the parsed data.
[012] In another embodiment, disclosed herein is a method for executing a web performance test to evaluate performance of a network. The method comprises receiving, by an input unit via a User Interface (UI) of a user device, a user input including a Uniform Resource Locator (URL) of a website to be loaded for executing the web performance test. Further, the method comprises validating, by a processing unit, the received URL by performing a Domain Name Server (DNS) lookup on the received URL. Based on the validation of the URL, the method comprises obtaining, by the processing unit, an Internet Protocol (IP) address of the website. The method comprises transmitting, by a communication unit, a request along with the obtained IP address to a server for loading one or more webpages of the website and executing the web performance test. Furthermore, the method comprises receiving, by the communication unit, data packets associated with the one or more webpages of the website in response to the transmitted request. Thereafter, the method comprises loading, by the processing unit, the one or more webpages of the website based on the received data packets. The web performance test is executed at the server based on a comparison of an amount of time taken by the user device to receive first byte of the data packets and a total amount of time taken by the user device to load the one or more webpages of the website with a first predefined threshold value and a second predefined threshold value, respectively. Thereupon, the method comprises receiving, by the communication unit, an execution result of the web performance test from the server, and displaying, by a display control unit, the received execution result on the UI.
[013] In another embodiment, disclosed herein is a system for executing a web performance test to evaluate performance of a network. The system comprises a transceiver module and an execution module. The transceiver module is configured to receive, from a user device, an Internet Protocol (IP) address corresponding to a Uniform Resource Locator (URL) of a website being loaded on the user device for executing the web performance test. Furthermore, the transceiver module is configured to send a request to the web server for loading one or more webpages of the website on the user device based on the received IP address. Thereafter, the transceiver module is configured to transmit a response received from the web server corresponding to the sent request. The execution module is configured to execute, based on the transmitted response, the web performance test on the URL during loading of the website to determine an amount of time taken by the user device to receive first byte of data associated with the one or more webpages of the website and a total amount of time taken by the user device to load the one or more webpages of the website. Thereafter, the execution module is configured to determine an execution result based on one of a first threshold criterion corresponding to the amount of time taken by the user device to receive the first byte of data and a second threshold criterion corresponding to the total amount of time taken by the user device to load the one or more webpages of the website.
[014] In one or more embodiments, the transceiver module is configured to transmit the execution result of the web performance test to a User Interface (UI) of the user device.
BRIEF DESCRIPTION OF DRAWINGS
[015] Various embodiments disclosed herein will become better understood from the following detailed description when read with the accompanying drawings. The accompanying drawings constitute a part of the present disclosure and illustrate certain non-limiting embodiments of inventive concepts. Further, components and elements shown in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. For consistency and ease of understanding, similar components and elements are annotated by reference numerals in the exemplary drawings.
[016] Fig. 1 illustrates an exemplary architectural diagram of a system for executing web performance test to evaluate performance of a network, in accordance with an embodiment of the present disclosure.
[017] Fig. 2 illustrates a block diagram depicting a system architecture of the server, in accordance with an embodiment of the present disclosure.
[018] Fig. 3 illustrates an example system architecture of the user device, in accordance with an embodiment of the present disclosure.
[019] Fig. 4 illustrates a flowchart depicting operations performed by the user device for executing the web performance test for evaluating the performance of the network, in accordance with an embodiment of the present disclosure.
[020] Fig. 5 illustrates a flowchart depicting a method for executing the web performance test to evaluate performance of the network, in accordance with an embodiment of the present disclosure.
DETAILED DESCRIPTION OF THE INVENTION
[021] Inventive concepts of the present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, in which examples of one or more embodiments of inventive concepts are shown. Inventive concepts may, however, be embodied in different forms and should not be construed as limited to the embodiments set forth herein. Further, the one or more embodiments disclosed herein are provided to describe the inventive concept thoroughly and completely, and to fully convey the scope of each of the present inventive concepts to those skilled in the art. Furthermore, it should be noted that the embodiments disclosed herein are not mutually exclusive concepts. Accordingly, one or more components from one embodiment may be tacitly assumed to be present or used in any other embodiment.
[022] The following description presents various embodiments of the present disclosure. The embodiments disclosed herein are presented as teaching examples and are not to be construed as limiting the scope of the present disclosure. The present disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary design and implementation illustrated and described herein, but may be modified, omitted, or expanded upon without departing from the scope of the present disclosure.
[023] The following description contains specific information pertaining to embodiments in the present disclosure. The detailed description uses the phrases “in some embodiments” which may each refer to one or more or all of the same or different embodiments. The term “some” as used herein is defined as “one, or more than one, or all”. Accordingly, the terms “one”, “more than one”, “more than one, but not all” or “all” would all fall under the definition of “some.” In view of the same, the terms, for example, “in an embodiment” refers to one embodiment and the term, for example, “in one or more embodiments” refers to “at least one embodiment, or more than one embodiment, or all embodiments.”
[024] The term “comprising,” when utilized, means “including, but not necessarily limited to;” it specifically indicates open-ended inclusion in the so-described one or more listed features, elements in a combination, unless otherwise stated with limiting language. Furthermore, to the extent that the terms “includes,” “has,” “have,” “contains,” and other similar words are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising.”
[025] In the following description, for the purposes of explanation, various specific details are set forth in order to provide a thorough understanding of embodiments of the present disclosure. It will be apparent, however, that embodiments of the present disclosure may be practiced without these specific details. Several features described hereafter can each be used independently of one another or with any combination of other features.
[026] The description provided herein discloses exemplary embodiments only and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the foregoing description of the exemplary embodiments will provide those skilled in the art with an enabling description for implementing any of the exemplary embodiments. Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it may be understood by one of the ordinary skilled in the art that the embodiments disclosed herein may be practiced without these specific details.
[027] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used herein the description and in the appended claims, the singular forms "a", "an", and "the" include plural forms unless the context of the invention indicates otherwise.
[028] The terminology and structure employed herein are for describing, teaching, and illuminating some embodiments and their specific features and elements and do not limit, restrict, or reduce the scope of the present disclosure and the appended claims. Accordingly, unless otherwise defined, all terms, and especially any technical and/or scientific terms, used herein may be taken to have the same meaning as commonly understood by one having ordinary skill in the art.
[029] In the disclosure, various embodiments are described using terms used in communication standards (e.g., 3rd Generation Partnership Project (3GPP), Extensible Radio Access Network (xRAN), and Open-Radio Access Network (O-RAN)), but these are merely examples for description. Various embodiments of the disclosure may also be modified and applied to other communication systems.
[030] In order to facilitate an understanding of the disclosed invention, a number of terms are defined below.
[031] Microservices are independently deployable software in which complex applications are composed of small and independent processes. The microservice may be developed as a suite of small services, each running in its own process and communicating with lightweight mechanisms such as Application Programming Interface(s) (API). Each microservice may adhere to a well-defined API.
[032] Domain Name System (DNS) lookup refers to a process of finding an Internet Protocol (IP) address associated with a domain name. The DNS allows users to enter human-readable domain names into a web browser instead of having to remember complex IP addresses.
[033] Latency refers to a measurement of a time (in milliseconds) taken for a data packet to travel from a user device to a web server and return from the web server.
[034] Packet loss refers to a percentage of data packets lost during transmission between the user device and web test server, impacting the quality of the network connection.
[035] An object of the present disclosure is to provide a system and a method for evaluating performance of a network while loading one or more pages of a website over a user device through the network. Another object of the present disclosure is to provide a system and a method for facilitating optimization and improvement of the network based on performance metrics of the network while loading the website. Another object of the present disclosure is to provide a system and a method for facilitating continuous monitoring of the network.
[036] Yet another object of the present disclosure is to provide a system and a method for performing evaluation of the network through scripts that are being executed in background of the user device and measuring performance data from the user device without any user interference. Still another object of the present disclosure is to provide a system and a method for simulating different load and user interactions with the website for evaluating performance of the network.
[037] Various aspects of the present disclosure will be described below in detail with reference to the accompanying drawings. Fig. 1 through Fig. 5, discussed below, and the one or more embodiments used to describe the principles of the present disclosure are by way of illustration only and should not be construed in any way to limit the scope of the present disclosure. Those skilled in the art will understand that the principles of the present disclosure may be implemented in any suitably arranged system or device.
[038] Fig. 1 illustrates an exemplary architecture of a system 100 for performing data executing web performance test to evaluate performance of a network, in accordance with an embodiment of the present disclosure. The embodiment of the system 100 shown in Fig. 1 is for illustration only. In particular, the system 100 corresponds to an environment of the communication network within which the web performance test is executed, and hereinafter may also be referred to as the “system 100”. Other embodiments of the system 100 may be used without departing from the scope of this disclosure.
[039] As shown in Fig. 1, the system 100 may include a user device 110, a network 120, a load balancer 130, a server 140, distributed file system 150, and a gateway server 160 (alternatively referred to as web server 160). The server 140 communicates with each of the user device 110, the load balancer 130, the distributed file system 150, and the gateway server 160 via the network 120.
[040] The user device 110 communicates with the server 140 via the network 120. The user device 110 is configured to run front end services such as an application installed over it for providing a user input for evaluating the performance of the network 120 and communicate with the server 140. Example of the user device 110 may include, but not limited to, a User Equipment (UE) such as, but not limited to, a desktop computer, a portable computing device such as a laptop, a tablet computer, a handheld computer, a mobile phone, wearable computer, or any other device suitable to provide front end services, to a network operator or an end-user. For sake of brevity, the plurality of user devices has been referred to as a user device 110.
[041] In one or more embodiments, the applications may correspond to a software, or a application installed on the user device 110 for executing one or more tests (cumulatively referred to as “web performance tests” or “tests”) on the network 120. The user input includes a Unified Resource Locator (URL) of the website to run over the network 120, for evaluating performance of the network 120 by executing the web performance test.
[042] The user device 110 is configured to receive from the server 140, a work order for execution of the web performance test over the URL. The user device 110 may further include a Graphical User Interface (GUI) or a User Interface (UI) for displaying the application or the software configured for performing the web performance test. Further, the application is configured to run the website corresponding to the URL provided by the user on the application itself or via a web browser installed over the user device 110, and display an execution result corresponding to the web performance test. It is understood that there may be a plurality of user device 110 connected to the server 140 but only a single user device is shown in the Fig. 1, for sake of brevity.
[043] The server 140 may be a network of computers, a software framework, or a combination thereof, that may provide a generalized approach to create a server implementation. Examples of the server 140 may include, but are not limited to, personal computers, laptops, mini-computers, mainframe computers, any non-transient and tangible machine that can execute a machine-readable code, cloud-based servers, distributed server networks, or a network of computer systems. The server 140 may be realized through various web-based technologies such as, but not limited to, a Java web-framework, a .NET framework, a personal home page (PHP) framework, or any web-application framework. In other aspects of the present disclosure, the server 140 may be configured to perform one or more operations for creating work orders for scheduling network tests over the user network connections in the background of the user device 110 and determining overall performance of the user network connections based on execution of the network tests at the user device 110.
[044] The network 120 enables communication between components of the system 100. The network 120 may include wired connections, wireless connections such as a proprietary Internet Protocol (IP) network, Internet, or in accordance with other wireless communication standards such as Worldwide Interoperability for Microwave Access (WiMAX), Wi-Fi 802.11a/b/g/n/ac, or a combination of wired and wireless connections.
[045] The load balancer 130 is an intermediary between the network 120 and the server 140. The load balancer 130 is configured to distribute an incoming request for executing the web performance test on the input URL for evaluating the performance of the network 120, from the user device 110 to the server 140. The load balancer 130 may sequence and distribute incoming requests from the user device 110 for creating the work orders for scheduling the web performance tests on multiple user devices (not shown in FIG. 1), according to pre-defined rules.
[046] In one embodiment, the server 140 is communicatively coupled with the gateway server 160 for accessing data associated with the URL of the website provided by the user input. The gateway server 160 may include a software application or a hardware device that stores, processes, and serves web content to users over the internet. The gateway server 160 may correspond to a web server hosting the website corresponding to the URL, or an intermediary host server for routing a request to the web server. The gateway server 160 routes traffic and translates protocols, for implementing user request for loading the URL for executing the web performance test for evaluating performance of the network 120. The gateway server 160 may locate and delivers the requested web pages and may run server-side scripts for generating the web-content dynamically.
[047] The distributed file system 150 is configured to provide a scalable and fault-tolerant storage system, for storing data including, but not limited to, data collected as execution result of the web performance test and user credentials associated with the application on the user device 110. Preferably, the distributed file system 150 may include storage medium for data storage. Examples of the storage medium include, but are not limited to, disk drives, hard-disk arrays, solid state storage devices, Network Attached Storage (NAS) devices, tape libraries or other magnetic, non-tape storage devices, and optical media storage devices. In one embodiment, the distributed file system 150 may be integrated within the server 140 utilizing computing resources of the server 140 for storing and managing large volume of the source data.
[048] Although Fig. 1 illustrates one example of the system, various changes may be made to Fig. 1. For example, the system 100 may include any number of user devices and servers in any suitable arrangement. Further, in another example, the system 100 may include any number of components in addition to the components shown in Fig. 1. Further, various components in Fig. 1 may be combined, further subdivided, or omitted, and additional components may be added according to particular needs.
[049] Fig. 2 illustrates a block diagram depicting a system architecture of the server 140, in accordance with an embodiment of the present disclosure. The embodiment of the server 140 as shown in Fig. 2 is for illustration only. However, the server 140 may come in a wide variety of configurations, and Fig. 2 does not limit the scope of the present disclosure to any particular implementation of the server 140.
[050] As shown in Fig. 2, the server 140 includes an Input-Output (I/O) interface 202, one or more processors 204 (hereinafter may also be referred to as “processor 204” or “at least one processor 204”), a memory 206, a communication interface 208, microservices 210, a distributed stream processing platform 212, and a plurality of processing module(s) 214 (hereinafter interchangeably referred to as “module(s) 214”). Components of the server 140 are coupled to each other via a communication bus 216.
[051] The I/O interface 202 may include suitable logic, circuitry, interfaces, and/or codes that may be configured to receive input(s) and present (or display) output(s) on the server 140. For example, the I/O interface 202 may have an input interface and an output interface. The input interface may be configured to enable the user to provide input(s) to trigger (or configure) the server 140 to execute the one or more operations for executing the web performance test of the network 120, such as but not limited to, receiving the user input, and accessing the data associated with the URL of the website via the gateway server 160. Examples of the input interface may include, but are not limited to, a touch interface, a mouse, a keyboard, and the output interface includes a digital display, an analog display, or a touch screen display. Aspects of the present disclosure are intended to include or otherwise cover any type of the input interface including known, related art, and/or later developed technologies without deviating from the scope of the present disclosure.
[052] The processor 204 may include processing circuitry, logic, interface(s), and/or code(s), and may be configured to communicate with other components of the server 140 (i.e., the memory 206, the communication interface 208, the microservices 210, the distributed stream processing platform 212, and the module(s) 214) via the communication bus 216. Examples of the communication bus 216 may include, but are not limited to, a Peripheral Component Interconnect (PCI)/PCI Extended (PCI-X) bus, Small Computer System Interface (SCSI), Universal Serial Bus (USB), and a Front Side Bus (FSB). Aspects of the present disclosure are intended to include or otherwise cover any type of coupling means present or related to later developed technologies, that may be configured to connect the processor 204 to the other subsystems of the server 140, as the communication bus 216, without deviating from the scope of the present disclosure.
[053] The processor 204 may include processing circuitry configured to execute instructions 206-1 (hereinafter interchangeably referred to as “a set of instructions 206-1”) stored in the memory 206 to cause the server 140 to perform various processes (e.g. executing the web performance test for evaluating performance of the network 120). For example, the processor 204 may be configured to execute programs and processes to execute instruction(s) or code(s) stored in the memory 206 pertaining to execute the web performance test. The processor 204 is further configured to move data into or out of the memory 206 as required by an execution process of the server 140.
[054] Examples of the processor 204 may include, but are not limited to, a Central Processing Unit (CPU), an Application Processor (AP), a dedicated processor, a graphics-only processing unit such as a Graphics Processing Unit (GPU), a programmable logic device, or any combination thereof.
[055] The memory 206 is configured to store the set of instructions 206-1 required by the processor 204 for controlling overall operations of the server 140 for receiving the user input, processing the user input, and/or executing the web performance test. A part of the memory 206 may include a Random Access Memory (RAM), a cache memory, or a Read Only Memory (ROM). The memory 206 may include non-volatile storage elements. Examples of such non-volatile storage elements may include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of Electrically Programmable Memories (EPROM) or Electrically Erasable and Programmable Memories (EEPROM). In addition, the memory 206 may, in some examples, be implemented using a non-transitory storage medium. The "non-transitory" storage medium is not embodied in a carrier wave or a propagated signal. However, the term "non-transitory" should not be interpreted that the memory 206 is non-movable. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in RAM or cache). The memory 206 can be an internal storage unit or it can be an external storage unit of the server 140, cloud storage, or any other type of external storage. In some embodiments, when the memory 206 is external to the server 140, the memory 206 may be removably attached to the server 140. Aspects of the present disclosure are intended to include or otherwise cover any data storage medium as “the memory 206”, without deviating from the scope of the present disclosure.
[056] Further, the server 140 may host a plurality of microservices (alternatively referred to as microservices 210) stored in the memory 206. The server 140 may utilize a plurality of computing resources where the microservices 210 may be deployed, and a plurality of storage devices such as a database may be provided in the computing resource for each microservice. The microservices 210 may correspond to a network architecture, where independent microservices communicate over APIs, enabling modular, scalable, and resilient network management applications. A microservice of the microservices 210 may refer to individual components that perform specific tasks within the system 100, for example, request generation microservice could be responsible for generating the request for executing the web performance test, while data transfer microservice could handle transferring and storage of the data received from the web server in response to the user input to the distributed stream processing platform 212.
[057] It must be understood that the microservices platform may also be hosted outside the server 140 in a similar manner utilizing the resources of a computing device separate from the server 140 itself. The module(s) 214 may make a call to the microservices 210 for synchronizing operations between various components of the server(s) 140 and performing other tasks within the system 100.
[058] The distributed stream processing platform 212 may process the response received from the web server as a stream of data in a log or an event driven manner. The distributed stream processing platform 212 may comprise a plurality of data channels. Each data channel of the plurality of data channels may be a logical category or a distinct queue for receiving continuous tuples or stream of data in the response corresponding to the request and from where the stream of data in the response can be retrieved. Each data channel may have a distinct logical address. The data channel may further be subdivided into the plurality of segments. The response may be stored in the plurality of segments of the distributed stream processing platform 212 and retrieved for sharing with the user device 110.
[059] In an embodiment, the module(s) 214 may be implemented as a combination of hardware and software programming (for example, programmable instructions) to implement one or more functionalities of the server 140. In non-limiting examples, described herein, such combinations of hardware and software programming may be implemented in several different ways, without deviating from the scope of the present disclosure. The module(s) 214 may include suitable logic, circuitry, interfaces, and/or codes. For example, the programming for the module(s) 214 may be processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the module(s) 214 may comprise a processing resource (for example, one or more processors), to execute such instructions. In an embodiment, the module(s) 214 may be combined to a single module or each module of the module(s) 214 may be further subdivided into different modules.
[060] In the present examples, the machine-readable storage medium may store instructions that, when executed by the processing resource, implement the module(s) 214. In such examples, the server 140 may also comprise the machine-readable storage medium storing the instructions and the processing resource to execute the instructions, or the machine-readable storage medium may be separate but accessible to the server 140 and the processing resource. In other examples, the module(s) 214 may be implemented using an electronic circuitry.
[061] In one or more embodiments, the module(s) 214 may include one or more modules such as a transceiver module 214-2, an execution module 214-4, and other modules (not shown in Fig. 2). The other units/modules may include, but are not limited to, an analytics module, a report generation module, a load generator module, and the like. The plurality of module(s) 214 are communicatively coupled with each other.
[062] In one embodiment, the processor 204, using the transceiver module 214-2, is configured to receive from the user device 110 via the load balancer 130, the user input for the website to be loaded for executing the web performance test. The user input may include the URL of the website or the IP address of the website. Upon receiving the IP address corresponding to the user input, a request is sent by the user device 110 to initiate operations for loading the web site and execution of the web performance test for evaluating the performance of the network 120 during loading of the website. In one embodiment, the user device 110 may receive the IP address corresponding to the URL directly in the user input. In another embodiment, the user device 110 may perform DNS lookup for determining the IP address corresponding to the URL.
[063] Upon resolving the URL to the IP address, the processor 204, using the transceiver module 214-2, may be configured to perform a communication port scan on the web server. The communication port scan may be performed over a list of open communication ports, for determining whether a communication port is available for establishing a connection with the IP address. The transceiver module 214-2 determines an availability of the communication port for establishing the connection with the obtained IP address of the website. Based on the availability of the communication port, connection may be established between the server 140 and the web server. Generally, the processor 204 may scan the availability of communication port 80 for processing the HTTP request.
[064] The processor 204, using the transceiver module 214-2, sends the request, for example, a Hypertext Transfer Protocol (HTTP) request received from the user device 110 to the web server for loading the one or more webpages of the website on the user device 110 upon establishment of the connection. In response to receiving the request, the web server may launch a server plugin on the server 140, needed to handle the request. The server plugin may correspond to a server language used to fulfil the request. The server plugin may get access to the request, and start to prepare a response, for example, a HTTP response.
[065] In one embodiment, for constructing the HTTP response, the web server determines parameters in the HTTP request and accesses database to retrieve data based on parameters in specified in the HTTP request. The server plugin may combine the data from the database along with metadata such as HTTP headers, into a long string of text, preferably as a Hypertext Markup Language (HTML). The combined data may be included in the HTTP response and the HTTP response may be shared from the web server to the server 140.
[066] The processor 204, using the transceiver module 214-2, receives the response from the web server. The processor 204, using the transceiver module 214-2 may send the response to the user device 110. Based on the response, the website may be loaded on the user device 110 and the web performance test may be initiated.
[067] Upon initiating the test, the processor 204, using the execution module 214-4, may be configured to assign the work order to the user device 110. The work order may cause the web browser to run through the application and load the website. The work order may also include tasks for determining at least one performance metric of the plurality of performance metrics of the network 120, for evaluating the performance of the network 120. The work order may run in background in the user device 110.
[068] The processor 204, using the execution module 214-4, is configured to perform the web performance test during loading of the website for determining a plurality of performance metrics while loading the website over the network 120 and evaluating the plurality of performance metrics for determining performance of the network 120. The web performance test may include, but not limited to, a speed test and a network test. The plurality of performance metrics may include at least one of a DNS resolution time for obtaining the IP address of the website, an amount of time taken by the user device 110 to receive the first byte (alternatively referred to as “Time taken to received First Byte” (TTFB)) of the data associated with the one or more webpages of the website, and a total amount of time taken by the user device 110 to load (alternatively referred to as “Total Page Load Time”) the one or more webpages of the website. The processor 204 determines a DNS resolution time by determining time taken by the network 120 to resolve the domain name to the IP address of the website. The DNS resolution time may be gathered on a real time basis.
[069] The processor 204, using the execution module 214-4, is configured to determine an execution result based on one or more of a first threshold criterion corresponding to the amount of time taken by the user device 110 to receive the first byte of data and a second threshold criterion corresponding to the total amount of time taken by the user device 110 to load the one or more webpages of the website. The first threshold criterion is based on a first determination that the amount of time taken by the user device 110 to receive the first byte of data is less than a first pre-defined threshold value, and the second threshold criterion is based on a second determination that the total amount of time taken by the user device 110 to load the one or more webpages of the website is less than a second pre-defined threshold value. Thereafter, the processor 202, using the transceiver module 214-2, transmits the execution result of the web performance test to the user device 110.
[070] In one embodiment, the processor 204, using the execution module 214-4, determines an IP version 4/IP version 6 (IPv4/ IPv6) address along with the DNS resolution time, during the DNS lookup performed by the user device 110. The processor 204 may transmit and display to the user on the user device 110, information including type of the IP address of the website, the IP address of the website, and the DNS resolution time. For an example, the processor 204 controls the user device 110 to display “ipv4address”: “216.58.220.14”, “ipv4querytime”: “4 ms” or “ipv6address”: “2404:6800:4009:804::200e”, “ipv6querytime”: “23 ms”. The user device 110 may receive the information in a suitable file format. However, in scenarios where the web server is unreachable, the server 140 may cause the user device 110 to display to the user, a message reading “No routes found”.
[071] In another embodiment, the processor 204 may transmit and display to the user on the user device 110, information including the type of the IP address of the website, the IP address of the website, and the DNS resolution time. For an example, the user device 110 may display “ports”: {“1”:”21”, “2”:”80”,”3”:”443”}. The user may receive the information in a suitable file format over the user device 110. However, in scenarios where the web server is unreachable, the processor 204 causes the user device 110 to present to the user, a message reading “No routes found”.
[072] In another embodiment, the processor 204 inspects a list of IPv4/IPv6 paths for determining a trace route path of the website being loaded at the user device 110. The processor 204 may transmit and display to the user on the user device 110, an information including type of the trace route path and the IP addresses in the trace route path. For an example, the user device 110 may display “ipv4paths”: {“1”:“215.23.21.233”, “2”:”23.32.123.21”}, “ipv6paths”: {“1”:”2404:6800:4009:804::200e”, “2”: “2504:5800:4009:804::200e”. The user device 110 may receive the information in the suitable file format. However, in scenarios where the web server is unreachable, the processor 204 may cause the user device 110 to present to the user, a message reading “No routes found”.
[073] In another embodiment, the processor 204 determines an information including the latency of receiving data packets (in milliseconds) and packet loss (denoted in percentage) during loading of the website at the user device 110. The processor 204 may transmit and display to the user on the user device 110, the information including the latency and the packet loss. For an example, the user device 110 may display “latency”: “4.01 ms”, “packet loss”: “0.0%”. The user device 110 may receive the information in the suitable file format. However, in scenarios where the web server is unreachable, the processor 204 may cause the user device 110 to present to the user, a message reading “No routes found”.
[074] The processor 204, using the execution module 214-4, may record the amount of time (the TTFB) it takes for the web browser to receive the first byte of data from the server 140 after the user device 110 makes the HTTP request. If the processor 204 determines that the TTFB is not received within the first pre-defined threshold value of the TTFB, then the HTTP request may be timed out and no further operation may be performed on the URL. In one embodiment, the pre-defined threshold value of the TTFB may be configured as 4 seconds.
[075] Upon the determination that the amount of time taken by the web browser to receive the first byte of data is less than the first pre-defined threshold value of the TTFB, the processor 204 records the total page load time. The processor 204 determines the total time taken for the user device 110 to transmit the response and render the page of the website completely on the user device 110 based on the transmitted response. If the processor 204 determines that the total page load time is not received within the second pre-defined threshold value of the total page load time, then the HTTP request may be timed out and the processor 204 may not perform any further operation on the URL. In one embodiment, the second pre-defined threshold value of the total page load time may be configured as 20 seconds.
[076] The processor 204, using the execution module 214-4, may evaluate the performance of the network 120 based on one or more of values of the DNS resolution time, the TTFB, and the total page load time. The processor 204 executes the web performance test based on the determination that the amount of time taken by the web browser to receive the first byte of data is less than the first pre-defined threshold value of the TTFB, and the determination that the amount of time taken by the web browser to receive the last byte of the data is less than the second pre-defined threshold value of the total page load time.
[077] When the processor 204, using the execution module 214-4, may determine that the value of the total page load time is greater than the second pre-defined threshold value of the total page load time, the URL may be marked as “fail”. In another scenario, the URL may also be marked as “fail” when the value of the TTFB is determined to be greater than the pre-defined threshold value of the TTFB. The processor 204 may then proceed to execute another web performance test for evaluating the performance of the network 120 during loading a next URL of a next website, based on the user input.
[078] The processor 204, using the transceiver module 214-2, displays on the user device 110, the execution result of the web performance test. The execution result includes values of at least one of latency of receiving data packets for loading the website, packet loss during reception of data packets for loading the website, one or more available communication ports of the web server, a Domain Name Server (DNS) resolution time for obtaining the IP address of the website, the IP address of the website, the type of the IP address of the website, one or more trace route paths of the website, the amount of time taken by the user device 110 to receive the first byte of the data associated with the one or more webpages of the website, and the total amount of time taken by the user device 110 to load the one or more webpages of the website.
[079] The execution result of the web performance test may also include “pass” when the web performance test is executed. The execution result may be displayed along with the data included in the response. The result of the web performance test may also include “fail” when execution of the web performance test is restricted.
[080] In another embodiment, the processor 204, using the analytics module, may fetch the execution result from the distributed file system 150. The processor 204 using the report generation module is configured to compile a report of the execution result corresponding to the performance of the network 120 for the URL. The processor 204 using the transceiver module 214-2 may transmit the report to the user device 110 for display.
[081] In another embodiment, upon loading the website on the user device 110, the processor 204, using the load generator module, may simulate different loads on the webpages of the website through the application for determining network performance under various scenarios. The different load conditions may include varying scenarios of user interactions on the webpages of the website. The processor 204, using the load generator module may install different scripts over the application for simulating the different load conditions. The processor, using the execution module 214-4, may then determine a response time of the web application on the network 120 under different load conditions.
[082] The response time may include, but not limited to, the time taken to load the webpage on the website, a time taken to process the user requests corresponding to the user interactions on the webpages of the website, and a time taken to retrieve data from the server 140. The execution module 214-4 may record the determined response time as the execution result. The processor 204, using the transceiver module 214-2, may display the execution result corresponding to different load scenarios on the user device 110.
[083] The communication interface 208 may manage communications with the web server and the user device 110. For example, the communication interface 208 may manage the transfer of performance metrics of the communication network from the web server to the user device 110. The communication interface 208 may include an electronic circuit specific to a standard that enables wired or wireless communication. The communication interface 208 is configured for communicating with external devices via one or more networks. Further, the communication interface 208 may also provide a communication pathway for one or more components of the server 140.
[084] Although Fig. 2 illustrates one example of server 140, various changes may be made to Fig. 2. For example, the server 140 may include any number of components in addition to the components shown in Fig. 2. Further, various components in Fig. 2 may be combined, further subdivided, or omitted and additional components may be added according to particular needs.
[085] Fig. 3 illustrates an example system architecture of the user device 110, in accordance with an embodiment of the present disclosure. The embodiment of the system architecture of the of the user device 110 as shown in FIG. 3 is for illustration only. However, the user device 110 may come in a wide variety of configurations, and FIG. 3 does not limit the scope of the present disclosure to any particular system architecture of the user device 110.
[086] As shown in FIG. 3, the user device 110 includes one or more processors 310 (hereinafter also referred to as “processor 310”), a memory 315, a communication unit 320, an interface(s) 325, and a processing engine(s)/unit(s) 330. These components may be in electronic communication via one or more buses (e.g., communication bus 350). The term “user device” may refer to any electronic device such as “User Equipment (UE)”, “mobile station,” “subscriber station,” “remote terminal,” “wireless terminal,” or “receive point.” For the sake of convenience, the term “user device” used herein refers to an electronic device such as the UE that wirelessly accesses the server 140 via the network 120.
[087] The one or more components of the user device 110 are communicatively coupled with the processor 310 (described below) to perform operations for executing the web performance test over the URL. The processor 310 may include various processing circuitry and configured to execute programs or computer readable instructions stored in the memory 315. The processor 310 may also include an intelligent hardware device including a general-purpose processor, such as, for example, and without limitation, a Central Processing Unit (CPU), an Application Processor (AP), a dedicated processor, or the like, a microcontroller, a Field-Programmable Gate Array (FPGA), a programmable logic device, a discrete hardware component, or any combination thereof. In some cases, the processor 310 may be configured to operate a memory array using a memory controller. In some cases, a memory controller may be integrated into the processor 310. The processor 310 may be configured to execute computer-readable instructions stored in a memory (e.g., the memory 315) to cause the user device 110 to perform various functions (e.g., executing the web performance test over the network 120).
[088] The memory 315 is communicatively coupled to the processor 310. A part of the memory 315 may include a RAM, and another part of the memory 315 may include a flash memory or other ROM. The memory 315 is configured to store a set of instructions required by the processor 310 for controlling overall operations of the user device 110. The memory 315 may include non-volatile storage elements. Examples of such non-volatile storage elements may include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of EPROM or EEPROM memories. In addition, the memory 315 may, in some examples, be considered a non-transitory storage medium. The "non-transitory" storage medium is not embodied in a carrier wave or a propagated signal. However, the term "non-transitory" should not be interpreted that the memory 315 is non-movable. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in the RAM or cache). The memory 315 can be an internal storage unit or it can be an external storage unit of the user device 110, cloud storage, or any other type of external storage.
[089] More specifically, the memory 315 may store computer-readable instructions including instructions that, when executed by a processor (e.g., the processor 310) cause the user device 110 to perform various functions described herein. In some cases, the memory 315 may contain, among other things, a BIOS which may control basic hardware or software operation such as the interaction with peripheral components or devices.
[090] The communication unit 320 may include one or more antennas, one or more of Radio Frequency (RF) transceivers, a transmit processing circuitry, and a receive processing circuitry. The communication unit 320 may be configured to receive incoming signals, such as signals transmitted by the server 140, and the user device 110. The communication unit 320 may down-convert the incoming signals to generate baseband signals which may be sent to the receiver processing circuitry. The receiver processing circuitry may transmit the processed baseband signals to the processor 310 for further processing. The transmit processing circuitry may receive analog or digital data from the processor 310 and may encode, multiplex, and/or digitize the outgoing baseband data to generate processed baseband signals. The communication unit 320 may further receive the outgoing processed baseband from the transmit processing circuitry and up-converts the baseband signals to Radio Frequency (RF) signals that may be transmitted to the server 140 and the user device 110.
[091] The interface 325 may include suitable logic, circuitry, a variety of interfaces, and/or codes that may be configured to receive input(s) and present output(s) on the application interface of the user device 110. The variety of interfaces may include interfaces for data input and output devices, referred to as I/O devices, storage devices, and the like. For example, the I/O interface may have an input interface and an output interface. The interface 325 may facilitate communication of the user device 110 with various devices and systems connected to it. The interface 325 may also provide a communication pathway for one or more components of the user device 110. Examples of such components include, but are not limited to, the processing Engine(s)/Unit(s) 330.
[092] In one or more embodiments, processing Engine(s)/Unit(s) 330 may be implemented as a combination of hardware and programming (for example, programmable instructions) to implement one or more functionalities of the user device 110. In non-limiting examples, described herein, such combinations of hardware and programming may be implemented in several different ways. For example, the programming for the processing Engine(s)/Unit(s) 330 may be processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the processor 310 may comprise a processing resource (for example, one or more processors), to execute such instructions. In the present examples, the machine-readable storage medium may store instructions that, when executed by the processing resource, implement the processing Engine(s)/Unit(s) 330. In such examples, the user device 110 may also comprise the machine-readable storage medium storing the instructions and the processing resource to execute the instructions, or the machine-readable storage medium may be separate but accessible to the user device 110 and the processing resource. In other examples, the processing Engine(s)/Unit(s) 330 may be implemented using an electronic circuitry.
[093] In one or more embodiments, processing Engine(s)/Unit(s) 330 may include one or more Engine(s)/Unit(s) selected from any of an input unit 332, a processing unit 334, a display control unit 336, and other Engines/Unit(s) 338 (not shown).
[094] In an embodiment, the processor 310, using the input unit 332, is configured to receive, from the server 140, the user input including the URL of the website to be loaded for executing the web performance test. Further, the processor 310, using the processing unit 334, is configured to schedule an execution of the speed test and the web performance test based on the one or more work orders received from the remote server 140.
[095] In an embodiment, the processing unit 334 controls the web browser to parse the URL of the website to extract one or more attributes of the URL. The one or more attributes may include at least a transmission protocol, a host name, a path of one or more webpages of the website, and the communication port of the web server for accessing the website.
[096] The processor 310, using the processing unit 334 via the web browser, validates the URL by performing the DNS lookup. Through the DNS lookup, the processor 310 gathers the host name from a human readable domain name of the website corresponding to the URL. The processor 310 then translates the host name into the IP address. While performing the DNS lookup, if the URL is determined to be invalid, then the DNS lookup may fail, and no IP address may be returned. In such a case, the processor 310 may record the URL as an invalid URL and restricts the execution of the web performance test on the URL.
[097] Upon determining that the URL is valid and transmitting the validated URL to the server 140 as the request for loading the website and executing the web performance test, the communication unit 320 is configured to receive data packets corresponding to the data associated with the one or more webpages of the website in from of the response from the server 140. The processor 310 using the processing unit 334, loads the one or more webpages of the website based on the received data packets.
[098] The processor 310, using the processing unit 334, parses the HTML in the HTTP response. The web browser processes the HTML markup to build a hierarchical representation of the contents of the one or more pages of the website in form of a Document Object Model (DOM) tree. The DOM tree may include relationships and hierarchies between different resources of the web site. The resources may typically include images, style sheets, and script files.
[099] In one scenario, the HTML in the HTTP response may be broken. The web browser may continue to send a new request to the web server for parsing each of the new resource that is found in the HTML of the website. When the new resource is a style sheet, the style sheet may be parsed and information in the new resources may be rendered. The information may be attached to a matching node in the DOM tree. When the new resource is a script file, information in the script file may be updated in the DOM tree by moving nodes of the DOM tree.
[0100] In an embodiment, for initiating and carrying out the execution of the web performance test on the URL, a user of the user device 110 may log in credentials into the application. The login credentials may include a user identification and a security password.
[0101] The processor 310, using the display control unit 336, controls the browser for rendering the webpage of the website according to the DOM tree and style information for each node of the DOM tree. Upon completion of the rendering of the webpage, the processor 310, using the display control unit 336, further controls the display of GUI of the application to display the received execution result corresponding to the URL.
[0102] Although FIG. 3 illustrates one example of the system architecture of the user device 110, various changes may be made to FIG. 3 Further, the user device 110 may include any number of components in addition to those shown in FIG. 3, without deviating from the scope of the present disclosure. For example, the user device 110 may further include circuitry, programing, applications, or a combination thereof. Further, various components in FIG. 3 may be combined, further subdivided, or omitted, and additional components may be added according to particular needs.
[0103] In an alternate embodiment, each engine/module of the processing Engine(s)/module(s) 330 is configured to independently perform various operations of the processor 310, as described herein, without deviating from the scope of the present disclosure. Additionally, different engines/modules shown in Fig. 3 may be split into two or more engines/modules each operating independently in communication with one another, optionally in a distributive manner, with shared responsibilities. Furthermore, multiple instances of the engines/modules may be implemented for executing the network tests over the network connections or multiple modules can be combined into a single engine/module to perform all corresponding functions described herein.
[0104] Fig. 4 illustrates a flowchart depicting operations performed by the user device 110 for executing the web performance test for evaluating the performance of the network 120, in accordance with an embodiment of the present disclosure. The method 400 comprises a series of operations indicated by steps 402 through 416. Although method 400 shows example blocks of steps 402 to 416, in some embodiments, the method 400 may include additional steps, fewer steps or steps in different order than those depicted in Fig. 4. In other embodiments, the steps 402-416 may be combined or may be performed in parallel.
[0105] At step 402, the user device 110 is configured to receive from user via the application installed over the user device 110, the user input for executing web performance test to evaluate performance of the network 120 while loading the website. The test may be initiated over the application installed on the user device 110. The user device 110, through the UI, may prompt the user to input the IP address of the website or the URL of the website configured to be opened via the web browser or the application.
[0106] At step 404, the user device 110 may instruct the web browser to parse the URL, when the URL is entered by the user. The user device 110 parses the URL for performing extraction of one or more attributes of the URL, including, but not limited to a transmission protocol, a host name, a communication port for accessing the website, and a path of one or more pages of the website. The user device 110 then performs a DNS lookup on the URL to gather the host name or the IP address. In one embodiment, the user device 110 may also determine the time taken to perform the DNS resolution and provide the DNS resolution time corresponding to the URL to the server 140.
[0107] At step 406, the user device 110 may determine through the DNS lookup, if the URL is valid and obtain an IP address of the website by translation of the validated URL. While performing the DNS lookup, if the URL is determined to be invalid, then the DNS lookup fails, and no IP address is obtained by the user device 110. The user device 110 may record the URL as an invalid URL, at step 408.
[0108] At step 410, the execution of the web performance test is restricted, and the user device 110 or the server 140 does not perform any further operation on the URL.
[0109] At step 412, while performing the DNS lookup, if the URL is determined to be valid, the attributes of the URL and the IP address corresponding to the URL is shared with the server 140 by the user device 110 as a request for loading the one or more webpages of the website and executing the web performance test.
[0110] At step 414, in response to the transmitted request, the user device 110 is configured to receive data packets associated with a response for loading the one or more webpages of the website. Based on the response, the website is loaded via the application in the user device 110 and the web performance test is executed at the server 140 based on the DNS resolution time, a comparison of the amount of time taken by the user device 110 to receive first byte of the data packets and the total amount of time taken by the user device 110 to load the one or more webpages of the website with a first predefined threshold value and a second predefined threshold value, respectively
[0111] At step 416, the user device 110 is configured to receive an execution result of the web performance test from the server 140 and displays the execution result, via the UI.
[0112] Fig. 5 illustrates a flowchart depicting a method 500 for executing the web performance test for evaluating the performance of the network 120, in accordance with an embodiment of the present disclosure. The method 500 comprises a series of operations indicated by steps 502 through 520. Although method 500 shows example blocks of steps 502 to 520, in some embodiments, the method 500 may include additional steps, fewer steps or steps in different order than those depicted in Fig. 5. In other embodiments, the steps 502-520 may be combined or may be performed in parallel.
[0113] At step 502, the processor 204 using the transceiver module 214-2 is configured to receive the IP address of the website and the request for executing the web performance test. Based on the IP address and other attributes of the URL, the processor 204 determines if the communication port is available. Upon determining the availability of the port, the processor 204 is configured to establish a connection with the communication port of the web server.
[0114] At step 504, upon establishment of the connection, the request received by the processor 204 from the user device 110 is forwarded by the processor 204 to the web server. The request may correspond to the HTTP request.
[0115] At step 506, the HTTP request may be forwarded by the host to the web server configured to listen on the specified communication port. The web server may inspect the request by inspecting the path of the URL and launch a server plugin needed to handle the HTTP request.
[0116] At step 508, the HTTP request may be processed by the web server, for preparing a HTTP response. The HTTP response may include data for loading the website. The HTTP response may be constructed retrieved based on parameters in the path specified in the HTTP request. The HTTP response received from the web server, is transmitted to the user device 110.
[0117] At step 510, based on the received response, the user device 110 may load the website and the processor 204 may determine whether the user device 110 has received a first byte of data from the processor 204 after in response to making the HTTP request. If the processor 204 determines that the TTFB is not received within the pre-defined threshold value of the TTFB, then the HTTP request may be timed out and the processor 204 may loop to step 512. In one embodiment, the pre-defined threshold value of the TTFB may be configured as four (4) seconds.
[0118] At step 512, the execution of the web performance test is restricted, and the user device 110 or the server 140 does not perform any further operation on the URL. The method may then loop back to step 502, and the processor 204 may evaluate the performance of the network for downloading a next URL of a next website.
[0119] At step 514, upon determination by the processor 204 that the TTFB is less than the pre-defined threshold value of the TTFB, the processor 204 records the amount of time taken to receive the first byte of data by the user device 110 as TTFB.
[0120] At step 516, the processor 2104 may determine whether the page has loaded on the user device 110. To load the web page, the user device 110 parse the HTML of the website based on the transmitted HTTP response. The web browser may render one or more pages on the website for loading on the web browser and may identify resources in the HTML. The resources may typically include images, style sheets, and script files. The processor 204 may determine the total time taken (total page load time) for the request to execute, render and load the webpage of the website completely.
[0121] The total amount of time taken to load the one or more webpages of the website corresponds to an amount of time taken between loading the first byte of the parsed data and loading the last byte of the parsed data. If the processor 204 determines that the total page load time is not within a pre-defined threshold value of the total page load time, then the HTTP request may be timed out and the execution of the web performance test is restricted. The processor 204 may not perform any further operation on the URL, and the method may loop back to step 512. In one embodiment, the pre-defined threshold value of the total page load time may be configured as 20 seconds.
[0122] At step 518, upon determination by the processor 204 that the total page load time is less than the pre-defined threshold value of the total page load time, the processor 204 records the total page load time. Based on value of the total page load time, the performance of the network 120 may be evaluated, and the URL may be marked as “pass” in a result of the web performance test. If the value of the total page load time is determined to be greater than the pre-defined threshold value of the total page load time, the URL may be marked as “fail” in the result of the web performance test.
[0123] At step 520, the processor 204 determines an execution result based on one or more of the DNS resolution time taken by the user device 110, the amount of time taken by the user device 110 to receive the first byte of data, and the total amount of time taken by the user device 110 to load the one or more webpages of the website. One or more of the execution result of the web performance test and the data for loading the website is transmitted by the processor 204 to the user device 110 and displayed to the user on the UI of the user device 110.
[0124] Now, referring to the technical abilities and advantageous effect of the present disclosure, operational advantages that may be provided by one or more embodiments may include continuous monitoring and improvement of the network over the user device, for ensuring that a network maintains its speed and reliability over time. The present disclosure may further enable network operator to optimize performance of the network, resulting in quicker webpage loading, which is essential for retaining users on the website and reducing bounce rates off the website.
[0125] The present disclosure further enables network operators and/or web developers to simulate different loads and user interactions on a website through the application for determining network performance under various scenarios and ensuring smooth user interaction with content on the website over the network. The present disclosure also enables to simulate different test scenarios by simulating new scripts or scenarios according to different user interactions with the webpages of the website. The present disclosure further allows to monitor and profile various aspects of the system during testing, including network performance. The performance of the network may be evaluated corresponding to different test scenarios and result of the evaluation may be utilized to optimize user experience associated with both the website and the network.
[0126] Another noteworthy advantage of the present disclosure may include but not limited thereto, the application for executing the web performance test may be utilized to identify bottlenecks and potential issues on the network corresponding to the website, enabling network operators and web developers to address the same before it hampers user experience.
[0127] Embodiments of the present technology may be described herein with reference to flowchart illustrations of methods and systems according to embodiments of the technology, and/or procedures, algorithms, steps, operations, formulae, or other computational depictions, which may also be implemented as computer program products. In this regard, each block or step of the flowchart, and combinations of blocks (and/or steps) in the flowchart, as well as any procedure, algorithm, step, operation, formula, or computational depiction can be implemented by various means, such as hardware, firmware, and/or software including one or more computer program instructions embodied in computer-readable program code. As will be appreciated, any such computer program instructions may be executed by one or more computer processors, including without limitation a general-purpose computer or special purpose computer, or other programmable processing apparatus to perform a group of operations comprising the operations or blocks described in connection with the disclosed methods.
[0128] Further, these computer program instructions, such as embodied in computer-readable program code, may also be stored in one or more computer-readable memory or memory devices (for example, the memory 206) that can direct a computer processor or other programmable processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory or memory devices produce an article of manufacture including instruction means which implement the function specified in the block(s) of the flowchart(s).
[0129] It will further be appreciated that the term “computer program instructions” as used herein refer to one or more instructions that can be executed by the one or more processors (for example, the processor 204) to perform one or more functions as described herein. The instructions may also be stored remotely such as on a server, or all or a portion of the instructions can be stored locally and remotely.
[0130] Those skilled in the art will appreciate that the methodology described herein in the present disclosure may be carried out in other specific ways than those set forth herein in the above disclosed embodiments without departing from essential characteristics and features of the present invention. The above-described embodiments are therefore to be construed in all aspects as illustrative and not restrictive.
[0131] The drawings and the forgoing description give examples of embodiments. Those skilled in the art will appreciate that one or more of the described elements may well be combined into a single functional element. Alternatively, certain elements may be split into multiple functional elements. Elements from one embodiment may be added to another embodiment. For example, orders of processes described herein may be changed and are not limited to the manner described herein. Any combination of the above features and functionalities may be used in accordance with one or more embodiments.
[0132] In the present disclosure, each of the embodiments has been described with reference to numerous specific details which may vary from embodiment to embodiment. The foregoing description of the specific embodiments disclosed herein may reveal the general nature of the embodiments herein that others may, by applying current knowledge, readily modify and/or adapt for various applications such specific embodiments without departing from the generic concept, and, therefore, such adaptations and modifications are intended to be comprehended within the meaning of the disclosed embodiments. It is to be understood that the phraseology or terminology employed herein is for the purpose of description and is not limited in scope.
LIST OF REFERENCE NUMERALS
The following list is provided for convenience and in support of the drawing figures and as part of the text of the specification, which describe innovations by reference to multiple items. Items not listed here may nonetheless be part of a given embodiment. For better legibility of the text, a given reference number is recited near some, but not all, recitations of the referenced item in the text. The same reference number may be used with reference to different examples or different instances of a given item. The list of reference numerals is:
100 – System for executing a web performance test to evaluate performance of a network
110 – User device
120 – Network
130 – Load balancer
140 – Server
150 – Distributed file system
160 – Gateway server
202 – Input/Output interface
204 – Processor(s)
206 – Memory
206-1 – Instructions
208 – Communication interface
210 – Microservices
212 – Distributed Stream Processing Platform
214 – Module(s)
214-2 – Transceiver Module
214-4 – Execution Module
216 – Communication bus
310 – Processor
315 – Memory
320 – Communication Unit
325 - Interface(s)
330 - Processing Engine(s)/Unit(s)
332 – Input Unit
334 – Processing Unit
336 – Display Control Unit
338 - Other Engines/Unit
350 - Communication bus
400 -Method for executing a web performance test to evaluate performance of a network
402-416 – Operation steps of the method 400
500 - Method depicting operations performed by the user device for executing the web performance test
502-520 – Operation steps of the method 500
,CLAIMS:WE CLAIM:
1. A method (500) for executing a web performance test to evaluate performance of a network, the method (500) comprising:
receiving, by a transceiver module (214-2) from a user device (110), an Internet Protocol (IP) address corresponding to a Uniform Resource Locator (URL) of a website being loaded on the user device (110) for executing the web performance test;
sending, by the transceiver module (214-2), a request to the web server for loading one or more webpages of the website on the user device (110) based on the received IP address;
transmitting, by the transceiver module (214-2) to the user device (110), a response received from the web server corresponding to the sent request;
executing, by an execution module (214-4) based on the transmitted response, the web performance test on the URL during loading of the website to determine an amount of time taken by the user device (110) to receive first byte of data associated with the one or more webpages of the website and a total amount of time taken by the user device (110) to load the one or more webpages of the website; and
determining, by the execution module (214-4), an execution result based on one or more of a first threshold criterion corresponding to the amount of time taken by the user device (110) to receive the first byte of data and a second threshold criterion corresponding to the total amount of time taken by the user device (110) to load the one or more webpages of the website.
2. The method (500) as claimed in claim 1, wherein:
the first threshold criterion is based on a first determination that the amount of time taken by the user device (110) to receive the first byte of data is less than a first pre-defined threshold value; and
the second threshold criterion is based on a second determination that the total amount of time taken by the user device (110) to load the one or more webpages of the website is less than a second pre-defined threshold value.
3. The method (500) as claimed in claim 1, wherein the execution result includes at least one of latency of receiving data packets for loading the website, packet loss during reception of data packets for loading the website, one or more available communication ports of the web server, a Domain Name Server (DNS) resolution time for obtaining the Internet Protocol (IP) address of the website, the IP address of the website, the type of the IP address of the website, one or more trace route paths of the website, the amount of time taken by the user device (110) to receive the first byte of the data associated with the one or more webpages of the website, and the total amount of time taken by the user device (110) to load the one or more webpages of the website.
4. The method (500) as claimed in claim 1, further comprising:
transmitting, by the transceiver module (214-2), the execution result of the web performance test to a User Interface (UI) of the user device (110).
5. The method (500) as claimed in claim 1, wherein
the loading of the one or more webpages of the website comprises:
a transmission of data packets corresponding to the data associated with the one or more webpages of the website from the web server to the user device (110) based on the transmitted response;
a parsing of data associated with the one or more webpages of the website at the user device (110); and
a rendering of the one or more webpages of the website at the user device (110) based on the parsed data, and
the total amount of time taken to load the one or more webpages of the website corresponds to an amount of time taken between loading the first byte of the parsed data and loading the last byte of the parsed data.
6. A system (100) of executing a web performance test to evaluate performance of a network, the system (100) comprising:
a transceiver module (214-2) configured to:
receive, from a user device (110), an Internet Protocol (IP) address corresponding to a Uniform Resource Locator (URL) of a website being loaded on the user device (110) for executing the web performance test;
send a request to the web server for loading one or more webpages of the website on the user device (110) based on the received IP address; and
transmit a response received from the web server corresponding to the sent request; and
an execution module (214-4) configured to:
execute, based on the transmitted response, the web performance test on the URL during loading of the website to determine an amount of time taken by the user device (110) to receive first byte of data associated with the one or more webpages of the website and a total amount of time taken by the user device (110) to load the one or more webpages of the website; and
determine an execution result based on one of a first threshold criterion corresponding to the amount of time taken by the user device (110) to receive the first byte of data and a second threshold criterion corresponding to the total amount of time taken by the user device (110) to load the one or more webpages of the website.
7. The system (100) as claimed in claim 6, wherein:
the first threshold criterion is based on a first determination that the amount of time taken by the user device (110) to receive the first byte of data is less than a first pre-defined threshold value; and
the second threshold criterion is based on a second determination that the total amount of time taken by the user device (110) to load the one or more webpages of the website is less than a second pre-defined threshold value.
8. The system (100) as claimed in claim 6, wherein the execution result includes at least one of latency of receiving data packets for loading the website, packet loss during reception of data packets for loading the website, one or more available communication ports of the web server, a Domain Name Server (DNS) resolution time for obtaining the IP address of the website, the IP address of the website, the type of the IP address of the website, one or more trace route paths of the website, the amount of time taken by the user device (110) to receive the first byte of the data associated with the one or more webpages of the website, and the total amount of time taken by the user device (110) to load the one or more webpages of the website.
9. The system (100) as claimed in claim 6, wherein the transceiver module (214-2) is configured to transmit the execution result of the web performance test to a User Interface (UI) of the user device (110).
10. The system (100) as claimed in claim 6, wherein
the loading of the one or more webpages of the website comprises:
a transmission of data packets corresponding to the data associated with the one or more webpages of the website from the web server to the user device (110) based on the transmitted response;
a parsing of data associated with the one or more webpages of the website at the user device (110); and
a rendering of the one or more webpages of the website at the user device (110) based on the parsed data, and
the total amount of time taken to load the one or more webpages of the website corresponds to an amount of time taken between loading the first byte of the parsed data and loading the last byte of the parsed data.
11. A method (400) for executing a web performance test to evaluate performance of a network, the method (400) comprising:
receiving, by an input unit (332) via a User Interface (UI) of a user device (110), a user input including a Uniform Resource Locator (URL) of a website to be loaded for executing the web performance test;
validating, by a processing unit (334), the received URL by performing a Domain Name Server (DNS) lookup on the received URL;
obtaining, by the processing unit (334), an Internet Protocol (IP) address of the website based on the validation of the URL;
transmitting, by a communication unit (320), a request along with the obtained IP address to a server (140) for loading one or more webpages of the website and executing the web performance test;
receiving, by the communication unit (320), data packets associated with the one or more webpages of the website in response to the transmitted request;
loading, by the processing unit (334), the one or more webpages of the website based on the received data packets, wherein the web performance test is executed at the server (140) based on a comparison of an amount of time taken by the user device (110) to receive first byte of the data packets and a total amount of time taken by the user device (110) to load the one or more webpages of the website with a first predefined threshold value and a second predefined threshold value, respectively;
receiving, by the communication unit (320), an execution result of the web performance test from the server (140); and
displaying, by a display control unit (336), the received execution result on the UI.
| # | Name | Date |
|---|---|---|
| 1 | 202421030604-STATEMENT OF UNDERTAKING (FORM 3) [16-04-2024(online)].pdf | 2024-04-16 |
| 2 | 202421030604-PROVISIONAL SPECIFICATION [16-04-2024(online)].pdf | 2024-04-16 |
| 3 | 202421030604-POWER OF AUTHORITY [16-04-2024(online)].pdf | 2024-04-16 |
| 4 | 202421030604-FORM 1 [16-04-2024(online)].pdf | 2024-04-16 |
| 5 | 202421030604-DRAWINGS [16-04-2024(online)].pdf | 2024-04-16 |
| 6 | 202421030604-DECLARATION OF INVENTORSHIP (FORM 5) [16-04-2024(online)].pdf | 2024-04-16 |
| 7 | 202421030604-Proof of Right [07-08-2024(online)].pdf | 2024-08-07 |
| 8 | 202421030604-Request Letter-Correspondence [25-02-2025(online)].pdf | 2025-02-25 |
| 9 | 202421030604-Power of Attorney [25-02-2025(online)].pdf | 2025-02-25 |
| 10 | 202421030604-Form 1 (Submitted on date of filing) [25-02-2025(online)].pdf | 2025-02-25 |
| 11 | 202421030604-Covering Letter [25-02-2025(online)].pdf | 2025-02-25 |
| 12 | 202421030604-ORIGINAL UR 6(1A) FORM 1-060325.pdf | 2025-03-10 |
| 13 | 202421030604-FORM 18 [14-04-2025(online)].pdf | 2025-04-14 |
| 14 | 202421030604-DRAWING [14-04-2025(online)].pdf | 2025-04-14 |
| 15 | 202421030604-CORRESPONDENCE-OTHERS [14-04-2025(online)].pdf | 2025-04-14 |
| 16 | 202421030604-COMPLETE SPECIFICATION [14-04-2025(online)].pdf | 2025-04-14 |
| 17 | Abstract-1.jpg | 2025-05-21 |