SYSTEM AND METHOD FOR ASSIGNING COMPUTER USERS TO TEST GROUPS

A system and method to efficiently and randomly place users into a test group associated with a test running on a website being hosted on a server is disclosed. When a user first accesses the website, a random value is transmitted to the user in such a manner that the random value is stored in a computer-readable memory local to the user. Each subsequent time the user accesses the website, the random value is returned to the server from the user. The server may then place the user into a test group for a test to which the user will be exposed on the website based upon the result of an operation that includes the random value received from the user and a unique test value previously associated with the test.

Skip to: Description  ·  Claims  · Patent History  ·  Patent History
Description
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. application Ser. No. ______, filed Dec. 31, 2007, entitled “A System and Method for Assigning Computer Users to Test Groups,” which is hereby incorporated by reference herein in its entirety, including but not limited to those portions that specifically appear hereinafter, the incorporation by reference being made with the following exception: In the event that any portion of the above-referenced prior application is inconsistent with this application, this application supercedes said above-referenced prior application.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

Not Applicable.

BACKGROUND

1. The Field of the Invention

The present disclosure relates to websites generally, and more particularly, but not necessarily entirely, the present disclosure relates to assigning computer users to test groups for a test running on a website.

2. Description of Related Art

Commercial transactions conducted through electronic communication (e.g., via the World Wide Web), commonly known as “e-commerce,” are a significant segment of the global economy. In a typical e-commerce transaction, a computer user, or user, decides upon a good or service that the user is interested in purchasing. The user then initiates access to a retailer's or service provider's e-commerce website via a network, perhaps after conducting a search for the website with a commercial search engine. The user may then purchase the desired product or service in an online transaction from the e-commerce website.

E-commerce websites are increasingly attracting a growing base of users. These users navigate through the myriad of e-commerce websites over the Internet using a web browser running on a computer, typically a desktop or laptop computer. The time spent by users visiting any one e-commerce site is typically very short when compared to a more traditional form of commerce, such as a shopping mall, due to the fact that while some online consumers are shopping for a particular item, other online consumers are simply “surfing” for bargains on interesting items.

Because of the extremely transient nature of users visiting e-commerce websites, an e-commerce website provider goes to great lengths to develop webpages for its website that include various features and design components that are intended to attract users into buying a product on the site. For example, a typical e-commerce webpage may employ various features that are displayed to online consumers, including, but not limited to, special promotions, product recommendations, top sellers, special navigational menus, product and information search features, shopping carts, discounted items, menus, tabs, gift ideas, rewards programs, holiday related items and delivery options.

Due to the limited display area on a given webpage, such as a website's home page, an e-commerce website provider may be challenged to decide which products, promotions, or behaviors to incorporate into the webpage. In some circumstances, an e-commerce website provider simply makes an educated decision as to which products and promotions will most likely be favorably received by online users. In other circumstances, an e-commerce website provider may run a small or large scale test involving different variations of a webpage. For example, each of the different variants of a webpage may display a different special promotion.

To run a test on a webpage, some or all of the users requesting the webpage from a web server are divided into distinct test groups. Each of the test groups is exposed to a different variant of the webpage from that of the other test groups. The e-commerce website provider will then monitor and track the responses of each of the different test groups to the different variants of the webpage. Based on the results of this type of a test, an e-commerce website provider will then deploy, on a wide scale basis, the particular variant of the webpage that achieved the most favorable responses.

Obtaining reliable results from online consumer tests are problematic, however, from a statistical point of view. One such problem arises from the difficulty of assigning the members of an online test population, i.e., the users, into different test groups in a random manner, especially when multiple tests are running on a website. This problem arises from the fact that the identity of users is largely unknown, thereby making it difficult to ensure that the users are randomly assigned to test groups without consuming valuable system resources. It would therefore be an improvement over the prior art to provide an efficient system and method for assigning the members of an online test population, i.e., users, to one or more test groups in a random manner such that errors in the test results are reduced and such that the use of valuable system resources is minimized.

The features and advantages of the disclosure will be set forth in the description that follows, and in part will be apparent from the description, or may be learned by the practice of the disclosure without undue experimentation. The features and advantages of the disclosure may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The features and advantages of the disclosure will become apparent from a consideration of the subsequent detailed description presented in connection with the accompanying drawings in which:

FIG. 1 is a diagram of a system in accordance with an exemplary embodiment of the present invention;

FIG. 2 is a diagram of a webpage in accordance with an exemplary embodiment of the present invention; and

FIG. 3 is a flow chart detailing the process of placing a computer user into a test group.

DETAILED DESCRIPTION

For the purposes of promoting an understanding of the principles in accordance with the disclosure, reference will now be made to the embodiments illustrated in the drawings, and specific language will be used to describe them. It will nevertheless be understood that no limitation of the scope of the disclosure is thereby intended. Any alterations and further modifications of the inventive features illustrated herein, and any additional applications of the principles of the disclosure as illustrated herein, which would normally occur to one skilled in the relevant art and having possession of this disclosure, are to be considered within the scope of the disclosure claimed.

It must be noted that, as used in this specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. In describing and claiming the present disclosure, the following terminology will be used in accordance with the definitions set out below. As used herein, the terms “comprising,” “including,” “having,” “containing,” “characterized by,” and grammatical equivalents thereof are inclusive or open-ended terms that do not exclude additional, unrecited elements or method steps.

Reference throughout this specification to “one embodiment, ” “an embodiment” or “illustrative embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.

It will be appreciated that many of the functional units described in this specification have been labeled as modules, to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like.

Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions that may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.

Further, a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several computer memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network.

It will be appreciated that reference to a computer program may take any form capable of generating a signal, causing a signal to be generated, or causing execution of a program of machine-readable instructions on a digital processing apparatus. A computer program may be embodied by a transmission line, an optical storage medium, digital-video disk, a magnetic tape, a Bernoulli drive, a magnetic disk, a punch card, flash memory, integrated circuits, or other digital processing apparatus memory device.

Referring now to FIG. 1, a system 100 is shown in accordance with an exemplary embodiment of the present invention. The system 100 comprises a plurality of modules that perform the functionality and methods of the present invention as described herein. The primary modules of the system 100 include, but are not limited to: a web server module 102, a test configuration module 106, a number generation module 108, a communications module 110, a calculation module 112, a placement module 114, and a tracking module 116. The system 100 further comprises a database module 118.

The web server module 102 retrieves and delivers requested webpages to users as is known to one having ordinary skill in the art. These users remotely access the web server module 102 through a network 104 using access devices 120. In particular, a user may initiate a request for a webpage hosted on the web server module 102 from a web browser running on an access device 120. The access devices 120 may include, but are not limited to, PCs, PDAs, laptops, hand-held computing devices, web-enabled devices, telephones, and the like. Suitable web browsers may include, but are not limited to, Microsoft Internet Explorer, Netscape Navigator, and the Firefox Web Browser.

Web browsers running on the access devices 120 may be enabled to receive and store cookies from the web server module 102. A cookie is a piece of data, e.g., text, that the web server module 102 can cause to be transmitted to and stored in a computer-readable memory of an access device 120. Typically, the cookies are stored on a hard drive of each of the access devices 120. The information or data contained in the cookies may be arranged as name-value pairs. Once a cookie has been stored on an access device 120, each subsequent time a web browser running on the access device 120 requests a webpage from the web server module 102, the web browser will look in its computer-readable memory for the cookie that was previously sent by the web server module 102. If the web browser finds the cookie, it will return a copy of the cookie to the web server module 102 in conjunction with the request for the webpage. The web server module 102 receives the cookie and uses it to determine, inter alia, if the access device 120 has accessed the web server module 102 previously.

The web server module 102 includes as part of each cookie sent to the access devices 120 a random value. Preferably, this random value is a 64-bit random number. To obtain this random value, the web server module 102 calls the number generation module 108 to generate and provide the random value. The number generation module 108 generates a random value for each of the access devices 120. Due to the wide range of possible random values, each of the access devices 120 will most likely have a unique random value, but not necessarily. As will be explained in more detail hereinafter, these random values are utilized to place the users into test groups. In one embodiment of the present invention, the random value is not generated by the user.

The website hosted on the web server module 102 may be, but is not limited to, an e-commerce website. Further, the website may include a single webpage or a collection of webpages as is known to one having ordinary skill in the art. The data necessary for the website hosted by the web server module 102, including any HTML code, data, images, information, and the like may be stored in the database module 118.

Referring now to FIG. 2, there is depicted an exemplary webpage 126 that may be hosted on the web server module 102 shown in FIG. 1. The webpage 126 comprises multiple characteristics 128, individually identified as Characteristic A through Characteristic N. The characteristics 128 of the webpage 126 include, but are not limited to, the layout, content, and behavior of the webpage 126. It will be understood that the characteristics 128 may be interrelated with each other. For example, one of the characteristics 128 may determine whether a banner goes on the top of the webpage 126 or down the right side of the webpage 126 while another one of the characteristics 128 may influence the contents of the banner. Each of the characteristics 128 is defined by the underlying HTML code of the webpage 126. It will be noted that the characteristics 128 of the webpage 126 may be modified or varied from time to time. New characteristics may be added to the webpage 126 from time to time as well.

Each of the characteristics 128 of the webpage 126 may be tested by a provider of the webpage 126. As explained previously, a test allows the website provider to monitor and analyze the reactions from different disjoint groups of users accessing the webpage 126 to different variations of the characteristics 128. Each group of users, referred to herein as a “test group,” will be exposed to a different variant of a characteristic being tested. A variant is a particular option for a given characteristic.

An example of a simple testing scenario will now be discussed in relation to FIG. 2. Assume that Characteristic A and Characteristic B are undergoing a test and Characteristic C is not undergoing a test on webpage 126. A user accessing the webpage 126 will be exposed to one of variants 130, individually identified as Variant A-1 through Variant A-n, for Characteristic A and one of variants 132, individually identified as Variant B-1 through Variant B-m, for Characteristic B. Users requesting the webpage 126 will only be shown one variant of each of the variants 130 and 132. The version of the variants 130 and 132 shown to any particular user will be determined based on the test groups to which the user pertains. Since Characteristic C is not undergoing a test, a user requesting the webpage 126 will be exposed to a default variant 134 for Characteristic C.

It will be appreciated that the present invention is able to test any characteristic of a webpage that may be varied. Further, during a test, a single characteristic of a webpage may be tested or multiple characteristics of the webpage may be tested concurrently as part of the same test or different tests.

Referring back to FIG. 1, the manner in which a test is defined and the manner in which the users accessing the web server module 102 are divided into the various test groups of a test will now be explained. The test configuration module 106 allows a provider of the website hosted on the web server module 102 to define the parameters of tests that will be conducted on the website. As explained above, a test may include serving different variants of a characteristic of a webpage to different test groups of users. The overall response of each of the different test groups is then monitored and analyzed to thereby determine which variant achieved the most favorable results.

The test configuration module 106 allows the website provider to define the parameters of one or more tests. The parameters of a test include, but are not limited to, the start and stop dates of a test, the percentage of users accessing the web server module 102 that will be exposed to the test, and the specific characteristic of a webpage that will be subjected to the test and the different variants associated with each characteristic being tested.

Typically, the number of test groups for a given test will correspond in number to the number of variants of the characteristic desired to be tested. That is, each variant of a characteristic being tested is associated to a particular test group and each user belonging to that particular test group will only be exposed to the variant of the characteristic that pertains to that test group. A member of a test group should not be exposed to two different variants of a characteristic as this may generate errors in the test results. In addition to forming a test group for each variant of a characteristic, a control group may also be included as one of the test groups. The control group may receive a control variant of the characteristic being tested or even no variant at all, e.g., the characteristic being tested is omitted completely from a webpage for members of the control group.

As indicated, the test configuration module 106 allows a website provider to determine the number of users accessing the web server module 102 that will participate in a given test. Preferably, the number of users participating in a test may be determined by defining a percentage of all of the users accessing the website. For example, the participants in a test may be predefined as 5% of all of the users accessing the web server module 102. Alternatively, all of the users accessing the web server module 102, i.e., 100% of the users, may participate in a given test.

As mentioned, the number of test groups for a given test typically corresponds in number to the number of variants of the characteristic that will be tested, which may or may not include a control group. The test configuration module 106 may further allow a website provider to define the number of participants in each test group for a test. That is, the users that will be subjected to a given test may be divided evenly or unevenly among the test groups.

The website provider typically selects the number of participants in each test group as a percentage of the overall total of test participants, i.e., 100%, such that the percentage of participants in all of the test groups for a given test totals 100%. For example, assuming that a given test has three different variants of a characteristics that will be tested, the test will have three test groups, namely, Test Group A, Test Group B, and Test Group C. Once the number of test groups has been determined, the website provider may apportion the test participants among Test Group A, Test Group B, and Test Group C by indicating a percentage of the overall total, i.e., 100%, for each test group. Thus, the website provider may select Percentage A, Percentage B, and Percentage C, for Test Group A, Test Group B, and Test Group C, respectively, with the proviso that Percentage A+Percentage B+Percentage C equals 100%. This proviso will ensure that all of the participants in a test is assigned to a test group.

Once the percentage of users in each of the test groups has been defined, the test configuration module 106 associates each of the test groups to a portion of the numerical range from 0 to 100 based on their respective percentages. Using the above example, Test Group A, Test Group B, and Test Group C would each be associated with the following portions of the numerical range of 0 to 100: Test Group A would correspond to the interval (0, Percentage A); Test Group B would correspond to the interval (Percentage A, Percentage B+Percentage A); and Test Group C would correspond to the interval (Percentage B+Percentage A, 100). Thus, it will be appreciated that each test group of a test is associated with a variant of a characteristic that will be tested and a portion of a numerical range.

The test configuration module 106 is further operable to associate a unique test value with each test that will be run on the website hosted on the web server module 102. Preferably, the unique test value associated with each test is a prime number having at least five digits. The test configuration module 106 may call upon the number generation module 108 to generate and provide the unique test value. As will be explained in more detail hereinafter, the requirement that the unique test value for each test be a prime number ensures that if two tests are running concurrently, or even at different times, that the placement of users into the test groups for each of the tests will be independent of each other.

The placement module 114 is operable to assign users accessing the website to a particular test group for a test to which the user will be exposed. This assignment procedure will now be explained in more detail. Whenever a user requests a webpage that includes a characteristic that is undergoing testing, sometimes referred to herein as a “testable characteristic,” the placement module 114 uses a predetermined function to determine a test placement value for the user. The test placement value may then be utilized to determine which test group the user falls into by comparing the test placement value to the numerical range associated with the test. In particular, the

100 × ( n mod p ) p = Test Placement Value

predetermined function uses the random number and the unique test value for the test to which the user is about to be exposed to place the user into a test group. In one embodiment of the present invention, the predefined function comprises: where n is the random value received from the user and p is the unique test value associated with the test and “mod” represents an operation that returns the remainder of n divided by p. It will be appreciated that the above predefined function will return a result falling within the numerical range of 0 to 100. It will be further appreciated that because each test has its own unique prime test value, that the test placement values determined for a given user and two different tests will be probabilistically independent of each other, in that knowing the value of the above predefined function for one test value p and a given n does not provide any significant information about the probability distribution for the values of the above predefined function with a different test value p and the same n. It will be further appreciated that this holds true even though the same random value is used to place a given user into multiple tests.

In continuation of the above example involving Test Group A, Test Group B, and Test Group C, suppose that Test Group A is assigned 20% of the test participants, and Test Group B is assigned 50% of the test participants, and Test Group C is assigned 30% of the test participants. Further suppose that a user has been assigned a random value of 123456789 and the unique test value associated with the respective test is 10009. Using the above predefined function, the test placement value for the user is 57.

The ranges corresponding to each of the tests groups will then determined to be the following: Test Group A would correspond to the interval (0, 20); Test Group B would correspond to the interval (20, 70); and Test Group C would correspond to the interval (70, 100). Since the test placement value of 57 falls into the range for Test Group B, the user with the random value of 123456789 falls into Test Group B. Thus, this user will be exposed to the variant of the test corresponding to Test Group B. The placement module 114 may call upon the calculation module 112 to calculate the test placement value of the users.

Once a particular variant of a characteristic undergoing testing has been identified for a given user, the web server module 102 will then serve a version of the requested webpage to the user that includes that particular variant of the characteristic. The web server module 102 will further notify a tracking module 116 to track the response of the user to the test exposure. Alternatively, the communications module 110 may send a notification to a third party tracking system 122 with information regarding which of the users have been exposed to a given test. The purpose of the tracking module 116 or the third party tracking system 122 is to determine which one of the variants of a testable characteristic is the most effective by comparing the behavior of the users in the different test groups.

It will be appreciated that storing the random value assigned to each user in a cookie ensures that each time the user re-accesses the website hosted on the web server module 102, that the user can be placed in the same test group if a test is still ongoing. Further, storing the random value assigned to each user in a cookie ensures that the user is placed randomly into each test being run on the website.

FIG. 3 is a flow chart detailing the process whereby the system 100, as depicted in FIG. 1, places a user into a test group. At step 150, the web server module 102 receives a request for a webpage of the website from the user. The web server module 102 will then determine if it is the user's first visit to the website at step 152. If it is the user's first visit, the web server module 102 calls the number generation module 108 to generate and return a random value at step 154. At the same step 154, the web server module 102 will then make a record to transmit the random value to the user in a cookie at the next available opportunity. If at step 152 it is determined that it is not the user's first visit to the website, then at step 156, the web server module 102 will extract the user's random number from a cookie associated with the website that was received from the user in association with the request for the webpage at step 150.

After both steps 154 and 156, the web server module 102 determines at step 158 if the requested webpage includes a testable characteristic, i.e., a characteristic of a webpage that may be tested. If not, then at step 160, the web server module 102 will serve the webpage to the user, which may include a default variant for any testable characteristic 158 that is not currently being tested. In addition, at step 160, the web server module 102 will transmit the random number generated at step 154 to the user in a cookie, if necessary. If the requested webpage includes a testable characteristic, the web server module 102 will then determine if there is a test currently running on this testable characteristic at step 162. If there is no test currently running, the process will loop from step 162 back to step 158 and the web server module 102 will determine if there is another testable characteristic on the webpage.

If the testable characteristic is currently undergoing a test, then at step 166, the placement module 114 determines a test group for the user. The placement module 114 uses a unique test value previously associated with the test running on the testable characteristic and the random number to determine a test placement value for the user. The placement module 114 may call upon the calculation module 112 to calculate the test placement value using a predefined function.

Once the test placement value has been obtained, the user is assigned to a test group based on the test placement value. In particular, the test placement value is compared to a numerical range, where each of the test groups has been associated with a portion of the numerical range. Where the test placement value falls in the numerical range determines the test group into which the user will be placed.

At step 167, the web server module 102 determines if the requested webpage includes a next testable characteristic. A next testable characteristic is another characteristic of the webpage that may be tested. If yes, then at step 174, the web server module 102 determines if a test is currently running on the next testable characteristic. If a test is currently running, the process loops from step 174 back to step 166 and the web server module 102 will determine a test group for the user for the next testable characteristic. Again, the placement module 114 uses a unique test value previously associated with the test running on the next testable characteristic and the random number to determine a test placement value for the user. The test placement value may then be used to place the user into a test group for the next testable characteristic.

If a test is not currently running on the next testable characteristic, then the process loops from step 174 back to step 167 and the web server module 102 will determine if there is another next testable characteristic on the webpage. The web server module 102 will repeat this process until the user has been assigned to a test group for each of the testable characteristics on the webpage currently undergoing a test. Once the user has been placed into a test group for each of the testable characteristics on the webpage currently undergoing a test, the process exits step 167 to step 168.

At step 168, the web server module 102 will serve a version of the requested webpage to the user that includes all of the variants associated with the test groups into which the user has been placed. In addition, at step 168, the web server module 102 will transmit the random number generated at step 154 to the user in a cookie, if necessary. At step 170, the tracking module 116 is notified that the user has been exposed to one or more tests. Alternatively, the communications module 110 may notify the third party tracking system 122 that the user has been exposed to one or more tests. If at step 172 the web server module 102 receives a request for a different webpage from the user, the process will loop back to step 156.

It will be appreciated that as used herein, the term “user” may refer to individuals using the access devices 124 or to the access devices 124 themselves. It will further be appreciated that the number of access devices 124 accessing the server 102 may be virtually unlimited, although not all of the access devices 124 may attempt to access the server 102 at the same time.

In the foregoing Detailed Description, the various features of the present disclosure are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed disclosure requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the following claims are hereby incorporated into this Detailed Description of the Disclosure by this reference, with each claim standing on its own as a separate embodiment of the present disclosure.

It is to be understood that the above-described arrangements are only illustrative of the application of the principles of the present disclosure. Numerous modifications and alternative arrangements may be devised by those skilled in the art without departing from the spirit and scope of the present disclosure and the appended claims are intended to cover such modifications and arrangements. Thus, while the present disclosure has been shown in the drawings and described above with particularity and detail, it will be apparent to those of ordinary skill in the art that numerous modifications, including, but not limited to, variations in size, materials, shape, form, function and manner of operation, assembly, and use may be made without departing from the principles and concepts set forth herein.

Claims

1. A computer-implemented method of conducting a test on a testable characteristic of a webpage, said method comprising:

receiving a random value and a request for the webpage from a user;
determining a test group for the user using said random value; and
serving a version of the webpage to the user that includes a variant of the testable characteristic as dictated by the test group to which the user pertains.

2. The method of claim 1, further comprising the step of determining the test group for the user using said random value and a unique test value associated with said test in a function.

3. The method of claim 2, wherein said unique test value is a prime number.

4. The method of claim 3, wherein said unique test value comprises at least five digits.

5. The method of claim 2, wherein the function comprises (n mod p), where n is the random value received from the user and p is the unique test value associated with the test.

6. The method of claim 2, wherein the function comprises: 100 × ( n   mod   p ) p where n is the random value received from the user and p is the unique test value.

7. The method of claim 2, wherein the function comprises: ( n   mod   p ) p where n is the random value received from the user and p is the unique test value.

8. The method of claim 1, further comprising the step of transmitting the random value to the user such that said random value is stored in a computer readable memory of said user.

9. The method of claim 1, further comprising the step of transmitting the random value to the user as part of a cookie.

10. The method of claim 1, wherein said random value is not generated by the user.

11. The method of claim 1, further comprising the step of notifying a tracking system that the user has been exposed to the variant of the testable characteristic corresponding to the test group to which the user pertains.

12. A computer-implemented method of running a plurality of tests on a website, a plurality of users accessing said website, said method comprising the steps of:

(a) associating a unique test value with each of the plurality of tests;
(b) defining test groups for each of the plurality of tests;
(c) receiving a random value from each user accessing the website; and
(d) placing each of the plurality of users that will be exposed to a given test into a test group for the given test based upon the random value received from that user and the unique test value associated with the given test.

13. The method of claim 12, further comprising the step of transmitting a random value to each of the plurality of users accessing the website and causing the random value to be stored in a computer-readable memory of the user.

14. The method of claim 13, further comprising the step of causing the random value to be stored in memory at each of the plurality of users in a cookie.

15. The method of claim 12, further comprising the steps of:

associating a numerical range with each of the plurality of tests; and
assigning the test groups to a portion of the numerical range of the test to which they pertain.

16. The method of claim 15, wherein step (d) further comprises the steps of:

calculating a test placement value from a function that uses the random value and the unique test value for the given test;
placing the user into the test group assigned to the portion of the numerical range into which the test placement value falls.

17. The method of claim 16, wherein the function comprises (n mod p), where n is the random value and p is the unique test value.

18. The method of claim 16, wherein the function comprises: 100 × ( n   mod   p ) p where n is the random value and p is the unique test value.

19. The method of claim 16, wherein the function comprises: ( n   mod   p ) p where n is the random value and p is the unique test value.

20. The method of claim 12, further comprising the step of notifying a tracking system of each of the plurality of tests to which each of the plurality of users has been exposed.

21. A computer program on a machine-readable storage medium for running a test on a website, said computer program comprising:

a test configuration module for associating a unique test value with the test;
a number generation module for generating a random number;
a server module for transmitting the random value to a user accessing the website and causing the random value to be stored in a computer-readable memory local to the user;
said server module further operable to receive the random value back from the user each time the user accesses the website;
a calculation module for determining a test placement value from the random value received back from the user and the unique test value using a predefined function; and
a placement module for assigning the user to a test group of the test based upon the test placement value.

22. The computer program of claim 21, wherein the predefined function comprises (n mod p), where n is the random value and p is the unique test value.

23. The computer program of claim 21, wherein the predefined function comprises: 100 × ( n   mod   p ) p where n is the random value and p is the unique test value.

24. The computer program of claim 21, wherein the predefined function comprises: ( n   mod   p ) p where n is the random value and p is the unique test value.

25. The computer program of claim 21, further comprising a tracking module for tracking an exposure of the user to the test.

26. The computer program of claim 21, wherein said server module is further operable to send a version of a webpage to the user that includes a variant of the test corresponding to the test group to which the user has been assigned.

27. The computer program of claim 21, wherein the unique test value is a prime number.

28. The computer program of claim 21, wherein the number generation module is further operable to generate the unique test value associated with the test.

Patent History
Publication number: 20090183084
Type: Application
Filed: Jan 14, 2008
Publication Date: Jul 16, 2009
Patent Grant number: 8214804
Inventor: Ian B. Robertson (Salt Lake City, UT)
Application Number: 12/014,007
Classifications
Current U.S. Class: Interface Customization Or Adaption (e.g., Client Server) (715/744)
International Classification: G06F 3/01 (20060101);