Methods and Systems for Distributed Testing of Network Configurations for Zero-Rating

A server causes a user device configured as a test agent to implement a testing plan for testing a network configuration regarding zero-rating. By causing the test agent to implement the testing plan, the server causes the test agent to send one or more requests to one or more respective predetermined IP addresses. The server receives data indicating results of the one or more requests. The server further uses the data to identify whether the network configuration is potentially misconfigured regarding zero-rating. In response to identifying that the network configuration is potentially misconfigured regarding zero-rating, the server sends a notification of the potential misconfiguration to a network operator.

TECHNICAL FIELD

This relates generally to network communications, including but not limited to distributing testing plans for network configuration regarding zero-rating on electronic devices from a server device.

BACKGROUND

Mobile devices have become an increasingly dominant means through which consumers access, download, and consume electronic content over the Internet.

Despite substantial advancements in telecommunications technology, however, achievable access to the Internet and data rates for accessing content on the Internet are still limited. Considering the limited availability of Internet access in certain geographic regions, such as developing countries, consumers often have difficulty accessing the Internet and therefore are often left frustrated when using mobile devices. Furthermore, it is difficult to monitor the network configuration on a server system to understand whether the network is properly configured and the services for Internet access are properly provided to respective user devices (e.g., mobile devices).

SUMMARY

Accordingly, there is a need for methods, devices, and systems for improving network operability.

Embodiments of the underlying invention addressing this object in particular are set forth in the appended claims and in the following description.

Embodiments of the invention, in particular set forth in the claims and the following description are directed to methods, devices, and systems for distributing testing of network configuration for zero-rating from a server system to user devices. Zero-rated (e.g., free) access to certain content (e.g., zero-rated content) on the Internet may be provided to users, while non-zero-rated (e.g., paid) access to other content (e.g., non-zero-rated content) on the Internet may also be offered. Zero-rated content thus may be accessed without being charged by a network provider for network access, while accessing non-zero-rated content results in charges being levied by the network provider for network access. The network configuration should be monitored to ensure that the zero-rated content is properly served to respective user devices for free. Furthermore, the non-zero-rated content should not be provided to any user device without the user device paying for the non-zero-rated access. By distributing testing of network configurations for zero-rating from the server system to respective user devices, the server system can timely monitor whether the network is properly configured and operated to offer zero-rating services to the user devices.

In accordance with some embodiments, a computer-implemented method may be performed at an electronic device (e.g., a server device) with one or more processors and memory storing instructions for execution by the one or more processors. The method includes causing, e.g. by a server device, a user device configured as a test agent to implement a testing plan for testing a network configuration regarding zero-rating. By causing the user device configured as the test agent to implement the testing plan, the method includes causing the test agent to send one or more requests to one or more respective predetermined IP addresses. The server device may receive first data indicating results of the one or more requests. The server device may further use the first data to identify whether the network configuration is potentially misconfigured regarding zero-rating.

In accordance with some embodiments, an electronic device (e.g., a server device) may include one or more processors, memory, and one or more programs; the one or more programs are stored in the memory and configured to be executed by the one or more processors. The one or more programs include instructions for performing the operations of the method or any embodiment of the method as described herein. In accordance with some embodiments, a non-transitory computer-readable storage medium has stored therein instructions that, when executed by the electronic device, cause the electronic device to perform the operations of the method or any embodiment of the method as described herein.

In accordance with some embodiments, a computer-implemented method is performed at an electronic device (e.g., a user device) with one or more processors and memory storing instructions for execution by the one or more processors. The method includes receiving, e.g. at a user device, a testing plan, from a server device, for testing a network configuration regarding zero-rating. The testing plan comprises instructions for causing the electronic device to send one or more requests to one or more respective predetermined IP addresses. Upon implementing the testing plan, the electronic device sends the one or more requests to the one or more respective predetermined IP addresses. The electronic device further sends data, to the server device, for identifying whether the network configuration is potentially misconfigured regarding zero-rating. The data is generated based on the one or more requests and respective responses to the one or more requests.

In accordance with some embodiments, an electronic device (e.g., a user device) includes one or more processors, memory, and one or more programs; the one or more programs are stored in the memory and configured to be executed by the one or more processors. The one or more programs include instructions for performing the operations of the method or any embodiments of the method directed to the user-side device execution of the method as described herein. In accordance with some embodiments, a non-transitory computer-readable storage medium has stored therein instructions that, when executed by the electronic device, cause the electronic device to perform the operations of the method or any embodiments of the method directed to the user-side device execution of the method as described herein.

Further embodiments of the invention, in particular embodiments directed to the server-side implementation and/or client-side implementation result from the dependent claims and the following description of exemplary embodiments in connection with the annexed figures.

Embodiments according to the invention are in particular disclosed in the attached claims, wherein any feature mentioned in one claim category, e.g. method, can be claimed in another claim category, e.g. system or device, as well. The dependencies or references back in the attached claims are chosen for formal reasons only. However any subject matter resulting from a deliberate reference back to any previous claims, in particular multiple dependencies, can be claimed as well, so that any combination of claims and the features thereof shall be considered as being disclosed and suitable for being claimed regardless of the dependencies chosen in the attached claims. The subject-matter which can be claimed comprises not only the combinations of features as set out in the attached claims but also any other combination of features in the claims, wherein each feature mentioned in the claims can be combined with any other feature or combination of other features in the claims. Furthermore, any of the embodiments and features described or depicted herein, in particular in connection with the annexed figures, can be claimed in a separate claim and/or in any combination with any embodiment or feature described or depicted herein or with any of the features of the attached claims.

DESCRIPTION OF EMBODIMENTS

It will also be understood that, although the terms first, second, etc. are, in some instances, used herein to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another. For example, first data could be termed second data, and, similarly, second data could be termed first data, without departing from the scope of the various described embodiments. The first data and the second data are both data, but they are not the same data.

As used herein, the term “exemplary” is used in the sense of “serving as an example, instance, or illustration” and not in the sense of “representing the best of its kind.”

FIG. 1illustrates a network architecture100in accordance with some embodiments. The network architecture100is used for distributing testing plans to user devices for checking whether the network, or a network segment, is configured properly. For example, the network architecture100is used for checking whether a configuration for zero-rating (e.g., free network access to certain Internet content) and/or non-zero-rating (e.g., paid network access to certain Internet content) is correct. By using zero-rating services, a user can access one or more IP addresses for free without being charged for network access. Whereas for non-zero rating services, a user pays service fees to a network operator to access one or more IP addresses.

The network architecture100includes a number of user devices (also called “client device,” “client systems,” “client computers,” or “clients”)102-1,102-2, . . .102-n communicably connected to a server system104by one or more networks112(e.g., the Internet, cellular telephone networks, mobile data networks, other wide area networks, local area networks, metropolitan area networks, and so on). In some embodiments, the one or more networks112include a public communication network (e.g., the Internet and/or a cellular data network), a private communications network (e.g., a private LAN or leased lines), or a combination of such communication networks.

The network architecture100includes one or more network segments106-1,106-2, . . .106-m corresponding to one or more base stations114-1,114-2, . . .114-m respectively. (While each segment is shown corresponding to a single base station, a segment may correspond with multiple base stations.) In some embodiments, the network connection within a network segment is provided by a certain network operator (e.g., a network service provider, a network carrier, or a cellular company) that owns or controls one or more corresponding base stations and related infrastructure for providing network services to the user devices within the network segment. For example, the base station114(e.g.,114-1) of a corresponding network segment106(e.g.,106-1) communicably connects one or more user devices102(e.g.,102-1and102-2) to one another and/or to the networks112.

In some embodiments, the user devices102are mobile devices and/or fixed-location devices. For example, the user devices102include computing devices such as feature phones, smart phones, smart watches, personal digital assistants, portable media players, tablet computers, 2D gaming devices, 3D (e.g., virtual reality) gaming devices, laptop computers, desktop computers, televisions with one or more processors embedded therein or coupled thereto, in-vehicle information systems (e.g., an in-car computer system that provides navigation, entertainment, and/or other information), and/or other appropriate computing devices that can be used to communicate with the server system104. In some embodiments, the server system104is a single computing device such as a computer server. In other embodiments, the server system104is implemented by multiple computing devices working together to perform the actions of a server system (e.g., cloud computing). The server system104is distinct and independent from network operators. In some embodiments, the server system104is capable of identifying certain network issues associated with one or more different network operators respectively. For example, the server system104can identify network congestion, network error(s), and/or certain network configurations with regard to zero rating and/or other services) associated with a respective network operator for a respective network segment. In some embodiments, the server system104can identify certain network issues associated with a network operator without any help from the network operator.

In some embodiments, user devices102are associated with users (not shown) who employ the user devices102to access one or more IP addresses (e.g., including zero-rated IP addresses and/or non-zero-rated IP addresses). In some embodiments, the requests to access the one or more IP addresses are forwarded to and routed by one or more modules of the server system104or a separate server system (not shown). The user devices102execute web browser applications and/or other applications that can be used to access the one or more IP addresses.

In some embodiments, a user interacting with the user devices102is provided with zero-rating services. The zero-rating services may be provided, tested, and monitored by the server system104. Alternatively, the zero-rating services are provided by a separate server system (not shown), but are tested and monitored by the server system104. In some embodiments, by using the zero-rating services, the user devices102can access one or more pre-determined IP addresses for free. For example, the user devices102can download, upload, and/or view a webpage or use an application associated with a predetermined IP address for free, without being charged for network access. Thus these types of predetermined IP addresses are called zero-rated IP addresses. The content from zero-rated web pages and/or applications is called zero-rated content. In some embodiments, the user devices102can access one or more IP addresses that are not zero-rated IP addresses by paying service fees to a network operator. These IP addresses that require paid network access are called non-zero-rated IP addresses, and the content provided by the non-zero-rated IP addresses is called non-zero-rated content.

The network architecture100may also include third-party servers110-1,110-2, . . .110-p. In some embodiments, a given third-party server110is used to host third-party websites that provide web pages to user devices102. In some embodiments, a given third-party server is used to host third-party applications that are used by client devices104. As discussed above, a server system (e.g., the server system104or a separate server system) may route or redirect requests from user devices102to respective third-party servers110. In some embodiments, the server system (e.g., the server104) uses inline frames (“iframes”) to nest independent websites within a network session (e.g., a zero-rated or non-zero-rated session). In some embodiments, the server system (e.g., the server104) uses iframes to enable third-party developers to create applications that are hosted separately by a third-party server110, but operate within a session of a user and are accessed through the user's profile in the server system. Exemplary third-party applications include applications for books, business, communication, contests, education, entertainment, fashion, finance, food and drink, games, health and fitness, lifestyle, local information, movies, television, music and audio, news, photos, video, productivity, reference material, security, shopping, sports, travel, utilities, social networking, and the like. In some embodiments, a given third-party server110is used to provide third-party content (e.g., news articles, reviews, message feeds, etc.).

In some embodiments, the respective IP addresses of one or more third-party servers110are predetermined to be zero-rated IP addresses configured to provide zero-rated content to the user devices102. A user device102does not need to pay any data usage fee to a network provider for viewing, downloading, and/or uploading data to the one or more zero-rated IP addresses. In some embodiments, the respective IP addresses of one or more third-party servers110are non-zero-rated IP addresses that provide non-zero-rated (e.g., paid) content. A user device102pays a data usage fee to a network provider for viewing, downloading, and/or uploading data to the one or more non-zero-rated IP addresses.

In some embodiments, a given third-party server110is a single computing device, while in other embodiments, a given third-party server110is implemented by multiple computing devices working together to perform the actions of a server system (e.g., cloud computing).

Optionally, the network architecture100further comprises a test element (e.g.,103-1) located within a network segment (e.g.,106-1) for collecting baseline data related to the network segment. In some embodiments, the test element103is a computing device including one or more processors, memory, and one or more programs stored in the memory and configured to be executed by the one or more processors. The one or more programs include instructions (e.g., test scripts) to be executed by the test element103for testing network connections associated with the network segment. For example, the one or more programs include Javascript code which, when executed by the one or more processors, causes the test element103to send requests to one or more predetermined IP addresses (e.g., including zero-rated IP addresses and/or non-zero-rated IP addresses), collect results of the requests, and send the collected results to the server system104. In some embodiments, the test element103is provided entirely by or in conjunction with infrastructure of a third-party provider. In some embodiments, the test element103has a zero-balanced account for network access, such that the account does not have any credit for network access. The test element103is optional for one or more network segments.

In some embodiments, the test element103is requested to access the one or more predetermined IP addresses periodically according to a predetermined schedule. For example, a timestamp associated with a respective request from the test element103to a predetermined IP address is predetermined and known. In some embodiments, the test element103is located at a fixed and known location within the network segment. In some embodiments, the test element103is associated with a fixed and known IP address. In some embodiments, the test element103is associated with a predetermined and known device identifier. In some embodiments, a network type associated with the test element103is predetermined, fixed, and known.

The data from the test element103, along with other types of data such as the predetermined requested IP addresses, the test element identifier, the location of the test element103, the network type associated with the test element103, and the timestamp associated with a respective request from the test element103to a predetermined IP address, are used by the server system104as baseline data to be analyzed by a statistical model. The baseline data from the test element103may be used as ground-truth data, model training data, model testing data, and/or data for verifying network configuration of a corresponding network segment when applying the model to incoming data from user devices102.

FIG. 2is a block diagram illustrating an exemplary user device102(e.g., one of the user devices102-1through102-n,FIG. 1) in accordance with some embodiments. The user device102typically includes one or more central processing units (CPU(s), e.g., processors or cores)202, one or more network (or other communications) interfaces210, memory212, and one or more communication buses214for interconnecting these components. The communication buses214optionally include circuitry (sometimes called a chipset) that interconnects and controls communications between system components.

As also shown inFIG. 2, the user device102includes a user interface204, including output device(s)206and input device(s)208. In some embodiments, the input devices include a keyboard or track pad. Alternatively, or in addition, in some embodiments, the user interface204includes a display device that includes a touch-sensitive surface, in which case the display device is a touch-sensitive display. In user devices that have a touch-sensitive display, a physical keyboard is optional (e.g., a soft keyboard may be displayed when keyboard entry is needed). The output devices (e.g., output device(s)206) also optionally include speakers or an audio output connection (i.e., audio jack) connected to speakers, earphones, or headphones. Furthermore, some user devices102use a microphone and voice recognition device to supplement or replace the keyboard. Optionally, the user device102includes an audio input device (e.g., a microphone) to capture audio (e.g., speech from a user). Optionally, the user device102includes a location-detection device, such as a GPS (global positioning satellite) or other geo-location receiver, and/or location-detection software for determining the location of the user device102.

In some embodiments, the one or more network interfaces210include wireless and/or wired interfaces for receiving data from and/or transmitting data to other user devices102, the server system104, and/or other devices or systems. In some embodiments, data communications are carried out using any of a variety of custom or standard wireless protocols (e.g., NFC, RFID, IEEE 802.15.4, Wi-Fi, ZigBee, 6LoWPAN, Thread, Z-Wave, Bluetooth, ISA100.11a, WirelessHART, MiWi, etc.). Furthermore, in some embodiments, data communications are carried out using any of a variety of custom or standard wired protocols (e.g., USB, Firewire, Ethernet, etc.). For example, in some embodiments, the one or more network interfaces210includes a wireless LAN (WLAN) interface250for enabling data communications with other WLAN-compatible devices and/or the server system104(via the one or more network(s)112,FIG. 1).

Memory212includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid-state storage devices. Memory212may optionally include one or more storage devices remotely located from the CPU(s)202. Memory212, or alternately, the non-volatile memory solid-state storage devices within memory212, includes a non-transitory computer-readable storage medium. In some embodiments, memory212or the non-transitory computer-readable storage medium of memory212stores the following programs, modules, and data structures, or a subset or superset thereof:an operating system216that includes procedures for handling various basic system services and for performing hardware dependent tasks;network communication module(s)218for connecting the user device102to other computing devices (e.g., server system104, user devices102, and/or other devices) via the one or more network interface(s)210(wired or wireless);a user interface module220that receives commands and/or inputs from a user via the user interface204(e.g., from the input devices208, which may include keyboards, touch screens, microphones, eye tracking components, three-dimensional gesture tracking components, and the like), and provides user interface objects and other outputs for display on the user interface204(e.g., the output devices206, which may include a display screen, a touchscreen, a speaker, etc.);one or more client application modules222, including the following modules (or sets of instructions), or a subset or superset thereof:a web browser module224(e.g., Internet Explorer by Microsoft, Firefox by Mozilla, Safari by Apple, Opera by Opera Software, or Chrome by Google) for accessing, viewing, and interacting with web sites (e.g., zero-rated and/or non-zero rated web sites), which includes zero-rating test scripts226provided by the server system104(e.g., as embedded in a web page) for testing network configuration regarding zero-rating services when executed by the web browser module224;a zero-rating application module230for providing an interface to a zero-rating service (e.g., a zero-rating service provided by the server system104) and related features, which includes testing files232received from the server system104. For example, the user device102runs a Free Basic Services (FBS) application provided by the server system104. The zero-rating application module230may be a part of the FBS application that provides links directly to the server system104but with the end destination being the one or more third-party servers110-1,110-2, . . .110-p. The server system104may act as a proxy and route traffic between the one or more third-party servers110-1,110-2, . . .110-p and the user device102; andother optional client application modules240, such as applications for word processing, calendaring, mapping, weather, stocks, time keeping, virtual digital assistant, presenting, number crunching (spreadsheets), drawing, instant messaging, e-mail, telephony, video conferencing, photo management, video management, a digital music player, a digital video player, 2D gaming, 3D (e.g., virtual reality) gaming, electronic book reader, and/or workout support, which include installation files242corresponding to one or more versions of respective optional client application modules240.

Each of the above identified modules and applications correspond to a set of executable instructions for performing one or more functions as described above and/or in the methods described in this application (e.g., the computer-implemented methods and other information processing methods described herein). These modules (i.e., sets of instructions) need not be implemented as separate software programs, procedures or modules, and thus various subsets of these modules are, optionally, combined or otherwise re-arranged in various embodiments.

FIG. 3is a block diagram illustrating an exemplary server system104in accordance with some embodiments. The server system104typically includes one or more processing units (processors or cores)302, one or more network or other communications interfaces304, memory306, and one or more communication buses308for interconnecting these components. The communication buses308optionally include circuitry (sometimes called a chipset) that interconnects and controls communications between system components. The server system104optionally includes a user interface (not shown). The user interface, if provided, may include a display device and optionally includes inputs such as a keyboard, mouse, trackpad, and/or input buttons. Alternatively or in addition, the display device includes a touch-sensitive surface, in which case the display is a touch-sensitive display.

Memory306includes high-speed random-access memory, such as DRAM, SRAM, DDR RAM, or other random-access solid-state memory devices; and may include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, and/or other non-volatile solid-state storage devices. Memory306may optionally include one or more storage devices remotely located from the processor(s)302. Memory306, or alternately the non-volatile memory device(s) within memory306, includes a non-transitory computer-readable storage medium. In some embodiments, memory306or the computer-readable storage medium of memory306stores the following programs, modules and data structures, or a subset or superset thereof:an operating system310that includes procedures for handling various basic system services and for performing hardware dependent tasks;a network communication module312that is used for connecting the server system104to other computers via the one or more communication network interfaces304(wired or wireless) and one or more communication networks (e.g., the one or more networks112);a zero-rating database314for storing data associated with the zero-rating services, which includes:model information320, which includes model data322, such as model type information, model format information, and relevant coefficient(s) used for a respective statistic model for checking network configuration regarding zero-rating services; in some embodiments, the model information320includes sets of model data322for respective statistic models used for different types of applications (e.g., testing zero-rating network configuration, testing free-data abuse, etc.)test case information330associated with each test case, including but not limited to:network connection result data332;IP addresses334associated with one or more requests for each test case, including but not limited to one or more predetermined IP addresses (e.g., zero-rated IP addresses and/or non-zero-rated IP addresses) for testing;test device identifiers336(e.g., test agent identifiers);location information338associated with test devices (e.g., test agents);network type information340associated with test devices (e.g., network types and/or network operator information); andtimestamps342associated with respective requests from the test devices to predetermined IP addresses;user management350, such as user information352and/or user device information354(e.g., user device type, user device MAC address, user device identifier, etc.); andtesting plan356including testing scripts and/or components to be implemented on a user device (e.g., by using browser module224or zero-rating application module230on the user device102,FIG. 2);a zero-rating server module360for providing zero-rating services and related features (e.g., in conjunction with browser module224or zero-rating application module230on the user device102,FIG. 2), which includes:a testing plan management module362for generating and distributing testing plans356;a model management module364for performing model building, model training, model testing, model applying, and/or model updating;a test agent management module366for managing and selecting one or more test agents from among the user devices102; anda data analysis module368for handling test case data330received from respective test agents (and optionally test elements) and analyzing the test case data330using the model(s)320; andan installation files database370for storing installation files of applications (e.g., for downloading to and installation on client devices102,FIG. 1), which includes:application installation files372for installing an application (e.g., zero-rating application module230, optional client application modules240,FIG. 2), which may include installation files for a plurality of versions of a respective application.

The zero-rating database314stores data associated with the zero-rating services in one or more types of databases, such as graph, dimensional, flat, hierarchical, network, object-oriented, relational, and/or XML databases.

User management information350includes user information352, such as user profiles, login information, privacy and other preferences, biographical data, and the like. In some embodiments, for a given user, the user information352includes the user's name, profile picture, contact information, birth date, sex, marital status, family status, employment, education background, preferences, interests, and/or other demographic information.

In some embodiments, the zero-rating server module360includes web or Hypertext Transfer Protocol (HTTP) servers, File Transfer Protocol (FTP) servers, as well as web pages and applications implemented using Common Gateway Interface (CGI) script, PHP Hyper-text Preprocessor (PHP), Active Server Pages (ASP), Hyper Text Markup Language (HTML), Extensible Markup Language (XML), Java, JavaScript, Asynchronous JavaScript and XML (AJAX), XHP, Javelin, Wireless Universal Resource File (WURFL), and the like.

FIG. 4is a block diagram illustrating an exemplary model400used for testing network configuration regarding zero-rating in accordance with some embodiments. In some embodiments, the model400is a machine-learning model that is built from example inputs and used for making predictions and/or decisions related to network configuration regarding zero-rating. In some embodiments, the server system104provides test case data received from the one or more user devices102and the one or more test elements103to the model400for training, testing, and application to obtain the predictions and/or decisions.

In some embodiments, the model400includes model information320stored in the memory306of the server system104. In some embodiments, the model400includes model information that is stored in another storage space entirely or in conjunction with memory306, and is retrievable and usable by the server system104via networks112. In some embodiments, the model400is managed by the model management module364of the system server104. In some embodiments, the model400is managed by one or more modules stored in another storage space entirely or in conjunction with memory306, and is retrievable and usable by the server system104via networks112.

In some embodiments, input data410of the model400includes data for a plurality of test cases. In some embodiments, a test case (e.g., test case1) is received from a zero-rating application module (e.g., zero-rating application module230,FIG. 2) executed on a user device102. In some embodiments, a test case (e.g., test case2) is received from a web browser module (e.g., web browser module224,FIG. 2) which executes zero-rating testing scripts (e.g., zero-rating test scripts226,FIG. 2.) In some embodiments, a test case (e.g., test case3) is received from a test element (e.g., test element103-1,FIG. 1) included in a network segment (e.g., network segment106-1,FIG. 1.) In some embodiments, test case information (e.g., test case information330,FIG. 3) for each test case includes one or more data fields, such as a network connection result, a requested IP address, a test device identifier (e.g., a test agent identifier), a location of the test device, a network type associated with the test device, and/or a timestamp associated with a respective request from the test device to a predetermined IP address.

In some embodiments, input data410of the model400includes a set of data (e.g., ground-truth data) for training and testing the model400prior to applying the model400to incoming data from any user devices.

In some embodiments, the ground-truth data is collected from the test element103of a respective network segment106(e.g., test element103-1of network segment106-1,FIG. 1.) In some embodiments, one or more data fields of the test element are known, such as the requested IP address, the test element identifier, the location of the test element, the network type associated with the test element, and the timestamp associated with a respective request from the test element to a predetermined IP address. The test element sends network connection results to the server system104and the server system104feeds the test element data to the model400for training and/or testing purposes.

In some embodiments, the ground-truth data is collected from one or more user devices102(e.g., test agents) that satisfy a predefined likelihood of having a zero balance for network access. In one example, based on the test case data, the server system104may detect that a user device has successfully accessed zero-rated content, but has failed to access non-zero-rated content. In another example, the server system104may detect that a request from a user device for non-zero-rated content resulted in a redirect to a portal for zero-rated content. In yet another example, the server system104may receive an indication from a network operator and/or a user device that the user device has (or is likely to have) a zero balance for network access. The server system104selects such user devices that are likely to have a zero balance as test agents to collect the ground-truth data. In some alternative embodiments, the ground-truth data is collected from one or more user devices102that are randomly selected.

In some embodiments, input data410of model400includes incoming data from any user devices (e.g., test agents) for testing the network configuration regarding zero-rating. The server system104may distribute testing plans to all or a plurality of randomly selected user devices, and the input data410of the model400is collected from a plurality of user devices102that implement the testing plans.

In some embodiments, the input data410is collected from one or more user devices102(e.g., test agents) that satisfy a predefined likelihood of having a zero balance for network access. The likelihood of a user device having a zero balance for network access may be determined by the server system104. For example, the server system104may detect that a user device has successfully accessed zero-rated content, but has failed to access non-zero-rated content. In another example, the server system104may detect that a request from a user device for non-zero-rated content resulted in a redirect to a portal for zero-rated content. Alternatively or in combination, the likelihood of a user device having a zero balance for network access may be determined by the user device and/or a network operator that provides network services to the user device. For example, the server system104may receive an indication from a network operator and/or a user device that the user device has (or is likely to have) a zero balance for network access.

In some embodiments, output data420of the model400includes a probability of having a network misconfiguration regarding zero-rating in a network segment, a probability that the test device has a zero-balanced account (or whether the test device has a zero-balanced account), and/or a probability of having network-connection errors occurred within a network segment (or whether network errors occurred within a network segment). The output data420may also include a confidence level for potential misconfiguration regarding zero-rating within a network segment.

FIG. 5is a flow diagram illustrating a method500for distributing testing plans, in accordance with some embodiments. The method500is performed by a server system504(e.g., server system104,FIGS. 1 and 3) and a user device502(e.g., user device102-1,FIGS. 1 and 2). Operations performed inFIG. 5correspond to instructions stored in computer memories (e.g., memories212and306,FIGS. 2-3) or other computer-readable storage mediums. In some embodiments, the user device502can be any user device102as explained above with reference toFIGS. 1-2. For example, the user device502may run the testing plan on an application (e.g., Facebook Android app), on a website (e.g., a Facebook website), using a testing tool (e.g., a Facebook Test tool), and/or by a test element (e.g., the test element103as explained above with reference toFIG. 1).

In some embodiments, the server system504(e.g.,FIGS. 1 and 3) sends (510) a testing plan (e.g., testing plan356,FIG. 3) to the user device502. The user device502receives the testing plan. The testing plan is used for testing a network configuration regarding zero-rating and includes instructions for causing the user device502to send one or more requests to one or more respective predetermined IP addresses. In some embodiments, the one or more predetermined IP addresses include one or more zero-rated IP addresses. In some embodiments, the predetermined IP addresses include one or more non-zero-rated IP addresses. The testing plan is sent, for example, over the one or more networks112(FIG. 1).

In some embodiments, the server system504sends a testing plan to all user devices (e.g., user devices102-1,102-2, . . .102-n,FIG. 1.) All the user devices may receive the testing plan. In some embodiments, all the user devices may implement the testing plan (e.g., functioning as test agents). For example, each user device102may send one or more requests to one or more predetermined IP addresses.

Optionally, the server system504selects (512) a user device (e.g., user device502) as a test agent (e.g., test device) to implement the testing plan. In some embodiments, all user devices receive the testing plan from the server system504, but only the selected one or more test agents implement the testing plan. Alternatively, only the selected test agents receive and implement the testing plan.

In some embodiments, before the user device502implements the testing plan, the server system504identifies the user device502as satisfying a predefined likelihood of having a zero balance for network access, and selects (512) the identified user device as the test agent. For example, the server system504identifies that the user device502has successfully accessed zero-rated content, but has failed to access non-zero-rated content. In response, the server system504selects (512) such identified user device as the test agent. In some embodiments, the server system504detects that a request from the user device502to non-zero-rated IP addresses for non-zero-rated content resulted in a redirect to a portal for zero-rated content and, in response, selects (512) such user device as the test agent. The portal may be a web page related to zero-rating services. The portal may include information and/or links for a user of the user device502to check the account balance. Alternatively or additionally, the portal may include information reminding the user of the attempt to access the non-zero-rated IP addresses and may provide options for the user to buy data plan(s) to be used for accessing non-zero-rated IP addresses in the future.

In some embodiments, the server system504selects one or more user devices502as respective test agents based on one or more (e.g., multiple) indications including but not limited to previous test results, user device states, network states, account states, and subscriber identification module (SIM) card balance information associated with respective user devices502. For example, if the network regarding zero rating is properly configured, a user device that has zero balance in a prepaid subscriber identification module (SIM) card coupled to the user device can only access zero-rated IP addresses. By selecting a user device as satisfying a predefined likelihood of having a zero balance for network access as the test agent, the server system504can test the network configuration regarding zero rating without integrating with the charging system from any network operator. Thus the system and the method for testing network configuration regarding zero rating can be scalable to any number of network operators with any number of network segments.

In some embodiments, the server system504receives an indication from a network operator that the user device502has a zero balance for network access. In response, the server system504selects (512) the user device as the test agent. In some embodiments, the server system504receives an indication from the user device502regarding account balance information, such as a zero balance for network access. In response, the server system504selects (512) the user device as the test agent. For example, the user device502determines whether the user account balance satisfies a predefined likelihood of having a zero-balance for network access. The user device502then reports to the server system504a result of the determination (e.g., the user account balance is likely to be a zero balance).

The user device502implements (514) the testing plan received from the server system504. In some embodiments, the server system504causes the user device502configured as a test agent to implement the testing plan. The testing plan includes instructions for causing the user device502to send one or more requests to one or more respective predetermined IP addresses.

In some embodiments, the testing plan is implemented on an application (e.g., zero-rating application module230,FIG. 2) running on the user device502. The user device502executes the application (e.g., zero-rating application module230,FIG. 2). The application includes instructions for implementing the test plan. In some embodiments, the testing plan is implemented on another type of application (e.g., other client application modules240,FIG. 2), such as a social-networking application running on the user device502. Installation of the application on the user device502configures the user device502as a test agent.

In some embodiments, the server system502provides a web page having test scripts (e.g., in Javascript) for the testing plan to the user device502. The testing plan is implemented by a browser (e.g., web browser module224,FIG. 2) which executes the test script on the user device502. The user device502renders the web page having the test script for the testing plan using the browser (e.g., web browser module224,FIG. 2). Serving the web page to the user device502configures the user device502as a test agent.

By implementing the testing plan, the user device502sends one or more requests to the one or more respective predetermined IP addresses. In some embodiments, the one or more requests from the user device502may be first forwarded to a server system (e.g., identical with the server system504or distinct from the server system504), and the server system may further route the one or more requests to respective destination IP addresses.

The user device502sends (516) data indicating results of the one or more requests to the server system504. The server system504receives the data indicating the results of the one or more requests. The data may be generated based on the one or more requests and respective responses to the one or more requests. The data is used for identifying whether the network configuration is potentially misconfigured regarding zero-rating. In one example, a misconfiguration regarding zero-rating results in a situation where a predetermined zero-rated IP address cannot be accessed for free and/or cannot be accessed at all. In another example, a misconfiguration regarding zero-rating results in a situation where a predetermined non-zero-rated IP address can be accessed for free.

Alternatively or additionally, the data may be used for identifying network connection error(s) within a network segment associated with the user device502. For example, the data, used individually or in combination with data collected from other test cases and/or other test agents, may indicate whether there is network congestion within the network segment. When there is network congestion within a network segment, the user device within the network segment may encounter Internet access failures due to insufficient network bandwidth (e.g., bits per seconds), excessive network latency, and/or other performance failures of network connections within the network segment.

In some embodiments, the server system504receives data (e.g., test case information330,FIG. 3) indicating the results of the one or more requests from the user device502. In some alternative embodiments, the server system504receives data (e.g., test case information330,FIG. 3) indicating the results of the one or more requests from another entity. For example, the server system504may receive the data of the results from the server system used for routing the one or more requests. In another example, the server system504may receive the data of the results from a network operator providing network services to the user device502.

In some embodiments, the data indicating the results of the one or more requests includes one or more fields such as: a network connection result (e.g., whether the network connection to a requested IP address is successful or denied), a requested IP address, a test agent identifier (e.g., a device identifier associated with the user device502), a location of the test agent, a network type associated with the test agent, and/or a timestamp associated with a respective request from the test agent to a requested IP address. In some embodiments, the server system504may further consolidate the received data of one or more fields before feeding the data to a model.

The server system504provides (518) the data indicating the results of the one or more requests to a model (e.g., the model400,FIG. 4). The model400may be a statistical model for determining probabilities of network misconfiguration regarding zero rating. The model400may be a machine learning model built for determining probabilities of network misconfiguration regarding zero rating. In some embodiments, the user device502(e.g., user device102-1,FIG. 1) is situated in a network segment (e.g., network segment106-1,FIG. 1) and the model identifies potential misconfiguration for zero-rating in the network segment.

By using the model400, the server system504determines (520) probabilities of network misconfiguration regarding zero rating. In some embodiments, the server system504determines one or more probabilities including a probability of misconfiguration regarding zero rating in the network segment, a probability of the test agent has a zero-balanced account, and/or a probability of having network-connection errors occurred within the network segment. In some embodiments, the model400outputs a confidence level for potential misconfiguration regarding zero-rating. For example, the confidence level may indicate whether a predication of having a probable misconfiguration regarding zero rating in the network segment is credible or not. The confidence level may be expressed as a percentage number between 0% and 100%. In some embodiments, the model400processes the data to update the status of the network configuration in a corresponding network segment based on the determined results of whether there is (or is likely to be) network misconfiguration regarding zero rating.

In some embodiments, the user device502(e.g., the test agent) sends requests to one or more predetermined IP addresses including one or more zero-rated IP addresses. The data received at the server system504indicate whether the requests from the user device502to the one or more zero-rated IP addresses were successful. If the network is properly configured, and if there is no network connection error, the requests for accessing the zero-rated IP addresses should be granted. In some embodiments, the server system504applies this principle in the model400to identify whether the network configuration is potentially misconfigured regarding zero-rating based on the data. For example, by using the model400, the server system504identifies a potential misconfiguration based at least in part on denial of a request from the user device502to at least one of the one or more zero-rated IP addresses. This identification may be based further on a likelihood that the user device502has a zero balance for network access.

In some embodiments, the user device502(e.g., the test agent) sends requests to one or more predetermined IP addresses including one or more non-zero-rated IP addresses. The data received at the server system504indicate whether the requests from the user device502to the one or more non-zero-rated IP addresses were denied. It is assumed that if the network is properly configured, for zero-balanced users, the requests for accessing the non-zero-rated IP addresses should be denied. In some embodiments, the server system504applies this principle in the model400to determine whether the network configuration is potentially misconfigured regarding zero-rating based on the data. For example, by using the model400, the server system504determines the likelihood of the user device502to have a zero-balanced account. If the user device502is determined to be a possible zero-balanced account, the server system504may identify a potential misconfiguration based at least in part on successful access to at least one of the one or more non-zero-rated IP addresses. This may be regarded as a network misconfiguration related to free data abuse, where a zero-balanced user account is able to access a non-zero-rated IP address.

Optionally, a test element506(e.g., the test element103-1,FIG. 1) may be used for providing data to the model400(e.g., baseline data for training, testing, and using the model400). The test element506may be used in conjunction with other user devices to provide data used by model400to determine probabilities regarding network misconfiguration regarding zero-rating. In some embodiments, the test element506is a zero-balanced device distinct from the user devices102. The server system504sends (522) a testing plan to the test element506. The server system504causes the test element506to send one or more requests to the one or more predetermined IP addresses, including zero-rated IP addresses and/or non-zero-rated IP addresses.

The test element506sends (524) data of the test results to the server system504. The server system504receives the data of the test results from the test element506. The data of the test results may indicate results of the one or more requests send by the test element506. The server system504provides (526) the received data to the model400. The model400may use the data received from the test element506, along with the data received from the user device502and/or other user devices102, to identify whether the network configuration is potentially misconfigured regarding zero-rating.

In some embodiments, in response to identifying that the network configuration is potentially misconfigured regarding zero-rating, the server system504sends (528) a notification (e.g., an alarm) of the potential misconfiguration to a network operator. For example, the user device502(e.g., the user device102-1,FIG. 1) is situated in a network segment (e.g., network segment106-1,FIG. 1), and the network operator of the network segment106-1is notified. In some embodiments, the server system504sends one or more notifications (e.g., an alarm and/or a status update) to one or more parties associated with service(s) provided by the server system504. For example, the server system504provides notifications to one or more users (e.g., service subscribers), one or more network operators, and/or one or more third-party servers.

For situations in which the systems discussed above collect information about user devices (e.g., device identifiers, device locations, account information, and/or results of the request to IP addresses), the users may be provided with an opportunity to opt in/out of programs or features that may collect such information or other types of personal information. In addition, in some embodiments, certain data may be anonymized in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be anonymized so that the personally identifiable information cannot be determined for or associated with the user.

Although some of various drawings illustrate a number of logical stages in a particular order, stages which are not order dependent may be reordered and other stages may be combined or broken out. While some reordering or other groupings are specifically mentioned, others will be apparent to those of ordinary skill in the art, so the ordering and groupings presented herein are not an exhaustive list of alternatives. Moreover, it should be recognized that the stages could be implemented in hardware, firmware, software or any combination thereof