US20190188122A1 - Electronic product testing systems - Google Patents
Electronic product testing systems Download PDFInfo
- Publication number
- US20190188122A1 US20190188122A1 US15/849,475 US201715849475A US2019188122A1 US 20190188122 A1 US20190188122 A1 US 20190188122A1 US 201715849475 A US201715849475 A US 201715849475A US 2019188122 A1 US2019188122 A1 US 2019188122A1
- Authority
- US
- United States
- Prior art keywords
- product
- testing
- image
- tester
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G06F11/3664—
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3698—Environments for analysis, debugging or testing of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
Definitions
- This application relates generally to product testing, and more specifically, to systems and methods for providing product testing.
- An electronic product testing system includes: a retrieving module configured to access an electronic file, the electronic file containing data generated based on a testing of a first product; and a testing device having a processing unit configured to perform testing of a second product based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- the data in the electronic file comprises information regarding tracked actions of a tester, and respective time stamps of the tracked actions.
- the processing unit is configured to re-execute the tracked actions for performing the testing of the second product based on the information in the electronic file regarding the tracked actions of the tester.
- the processing unit is configured to simulate actions of a tester based on the data in the electronic file.
- the electronic file comprises a script
- the processing unit is configured to run the script for testing the second product.
- the script is based on tracked actions of multiple testers.
- the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard.
- the data in the electronic file comprises: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing.
- the system further includes a non-transitory medium storing the electronic file in association with an identity of the first product.
- the non-transitory medium is configured to store one or more additional electronic files that are associated with the identity of the first product.
- the retrieving module is configured to obtain the electronic file by selecting one of the electronic files in the non-transitory medium having a latest time stamp.
- the processing unit is configured to: obtain a first image that is associated with the testing of the first product, and obtain a second image that is associated with the testing of the second product.
- the first image is stored in a non-transitory medium in association with the data, the data comprising information regarding a tracked action of a tester.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product
- the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- the processing unit is further configured to: apply a mask to the first image to create a first masked image, apply the mask to the second image to create a second masked image, and compare the first masked image with the second masked image.
- the mask is configured to block out one or more portions of the first image and the second image.
- the testing of the second product comprises testing a feature of the second product, and wherein the processing unit is configured to determine whether the testing of the feature of the second product fails or not based on the comparison of the first masked image and the second masked image.
- the processing unit comprises a dispatch module configured to automatically send out a request to test the second product if the testing of the feature of the second product based on the comparison of the first and second masked images fails.
- the processing unit is configured to test multiple features of the second product, the multiple features comprising at least a first feature and a second feature, wherein the processing unit is configured to test the first feature of the second product by running a first script that is based on a first tracked action of a tester, and wherein the processing unit is configured to test the second feature of the second product by running a second script that is based on a second tracked action of the tester.
- the processing unit comprises an image capturer configured to determine the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- the system further includes a tracker configured to track an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction.
- a tracker configured to track an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction.
- the tracker is configured to track a movement of a cursor operated by the tester.
- the tracker is configured to track a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing.
- the tracker is configured to track a key stroke and/or a voice input.
- the first product comprises a web page, a web site, a computer application, a mobile device application, or a processor application.
- the processing unit is configured to virtually move a cursor with respect to a testing interface without input from a cursor control.
- the processing unit is configured to virtually make a cursor selection in a testing interface without input from a cursor control.
- the processing unit is configured to virtually type a text in a field of a testing interface without input from a keyboard.
- the testing of the first product is human-based, and the testing of the second product is machine-based.
- the data comprises information regarding a selection of a first object, the first object being at a first position in the first product; and wherein the processing unit is configured to perform the testing of the second product by selecting a second object in the second product based on the information regarding the selection of the first object in the first product, the second object being at a second position in the second product, wherein the second position is different from the first position.
- a processor-implemented method for product testing includes: accessing an electronic file, the electronic file containing data generated based on a testing of a first product; and performing testing of a second product by a processing unit based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- the data in the electronic file comprises information regarding tracked actions of a tester, and respective time stamps of the tracked actions.
- the act of performing the testing of the second product comprises re-executing the tracked actions to test the second product based on the information in the electronic file regarding the tracked actions of the tester.
- the act of performing the testing of the second product comprises simulating actions of a tester.
- the electronic file comprises a script
- the act of performing the testing of the second product comprises running the script for testing the second product.
- the script is based on tracked actions of multiple testers.
- the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard.
- the data in the electronic file comprises: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing.
- the electronic file is stored in a non-transitory medium in association with an identity of the first product.
- the non-transitory medium also stores one or more additional electronic files that are associated with the identity of the first product.
- the act of accessing the electronic file comprises selecting one of the electronic files in the non-transitory medium having a latest time stamp.
- the method further includes: obtaining a first image that is associated with the testing of the first product, and obtaining a second image that is associated with the testing of the second product.
- the first image is stored in a non-transitory medium in association with the data, the data comprising information regarding a tracked action of a tester.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product
- the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- the method further includes: applying a mask to the first image to create a first masked image, applying the mask to the second image to create a second masked image, and comparing the first masked image with the second masked image.
- the mask is configured to block out one or more portions of the first image and the second image.
- the testing of the second product comprises testing a feature of the second product, and wherein the method further comprising determining whether the testing of the feature of the second product fails or not based on the comparison of the first masked image and the second masked image.
- the method further includes automatically sending out a request to test the second product if the testing of the feature of the second product based on the comparison of the first and second masked images fails.
- the processing unit is configured to test multiple features of the second product, the multiple features comprising at least a first feature and a second feature, wherein the act of performing testing of the second product comprises testing the first feature of the second product by running a first script that is based on a first tracked action of a tester, and testing the second feature of the second product by running a second script that is based on a second tracked action of the tester.
- the method further includes determining the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- the method further includes tracking an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction.
- the act of tracking comprises tracking a movement of a cursor operated by the tester.
- the act of tracking comprises tracking a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing.
- the act of tracking comprises tracking a key stroke and/or a voice input.
- the first product comprises a web page, a web site, a computer application, a mobile device application, or a processor application.
- the act of performing the testing of the second product comprises virtually moving a cursor with respect to a testing interface without input from a cursor control.
- the act of performing the testing of the second product comprises virtually making a cursor selection in a testing interface without input from a cursor control.
- the act of performing the testing of the second product comprises virtually typing a text in a field of a testing interface without input from a keyboard.
- the testing of the first product is human-based, and the testing of the second product is machine-based.
- the data comprises information regarding a selection of a first object, the first object being at a first position in the first product; and wherein the testing of the second product comprises selecting a second object in the second product based on the information regarding the selection of the first object in the first product, the second object being at a second position in the second product, wherein the second position is different from the first position.
- a processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: accessing an electronic file, the electronic file containing data generated based on a testing of a first product; and performing testing of a second product based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- An electronic product testing system includes: one or more input(s) configured to obtain a first image that is associated with a testing of the first product, and to obtain a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; a mask applicator configured to apply a mask to the first image to create a first masked image, and to apply the mask to the second image to create a second masked image; and a comparator configured to compare the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product
- the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- the mask is configured to block out one or more portions of the first image and the second image.
- the system further includes an image capturer configured to determine the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- a processor-implemented method for product testing includes: obtaining, by one or more input(s), a first image that is associated with a testing of the first product, and a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; applying, by a mask applicator, a mask to the first image to create a first masked image; applying, by the mask applicator, the mask to the second image to create a second masked image; and comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product
- the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- the mask is configured to block out one or more portions of the first image and the second image.
- the method further includes determining, by an image capturer, the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- a processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: obtaining, by one or more input(s), a first image that is associated with a testing of the first product, and a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; applying, by a mask applicator, a mask to the first image to create a first masked image; applying, by the mask applicator, the mask to the second image to create a second masked image; and comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- An apparatus for use in product testing includes: an input configured to receive first data regarding a first tracked action performed while testing a first product; and a processing unit configured to create a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- the apparatus is a part of the product testing machine.
- the input is also configured to receive second data regarding a second tracked action performed while testing the first product, and wherein the processing unit is configured to create the script based also on the second data.
- the first tracked action was for testing a first feature of the first product
- the second tracked action was for testing a second feature of the first product.
- the first tracked action was for testing a feature of the first product by a first tester
- the second tracked action was for testing the feature of the first product by a second tester.
- the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the processing unit is configured to select a shorter one of the first period and the second period for inclusion in the script.
- the first data is stored in a first file
- the second data is stored in a second file
- the processing unit is configured to create the script by combining the first data and the second data.
- the apparatus further includes a non-transitory medium configured to store the script for access by the product testing machine.
- the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
- a processor-implemented method for product testing includes: receiving first data regarding a first tracked action performed while testing a first product; and creating, by a processing unit, a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- the processing unit is a part of the product testing machine.
- the method further includes receiving second data regarding a second tracked action performed while testing the first product, and wherein the script is created based also on the second data.
- the first tracked action was for testing a first feature of the first product
- the second tracked action was for testing a second feature of the first product.
- the first tracked action was for testing a feature of the first product by a first tester
- the second tracked action was for testing the feature of the first product by a second tester.
- the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the method further comprises selecting a shorter one of the first period and the second period for inclusion in the script.
- the first data is stored in a first file
- the second data is stored in a second file
- the script is created by combining the first data and the second data.
- the method further includes storing the script in a non-transitory medium for access by the product testing machine.
- the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
- a processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving first data regarding a first tracked action performed while testing a first product; and creating, by the processing unit, a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- An apparatus for use in product testing includes: one or more input(s) configured to receive a first image of a product captured during a first testing of the product, and a second image of the product captured during a second testing of the product; an image analyzer configured to determine a first part of the product that is different in the first image and the second image; and a mask generator configured to create a mask for covering an image of the first part of the product.
- the first testing of the product is associated with a first tester
- the second testing of the product is associated with a second tester.
- the image analyzer is configured to perform an image subtraction based on the first image and the second image to obtain a subtracted image.
- the image analyzer is configured to analyze a distribution of non-zero pixel values in the subtracted image.
- the mask generator is configured to create the mask based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image.
- the image analyzer is configured to determine a second part of the product that is different in the first image and the second image, and wherein the mask generator is configured to create the mask for also covering the image of the second part of the product.
- the apparatus further includes a non-transitory medium configured to store the mask in association with an identity of the product.
- a processor-implemented method for product testing includes: receiving a first image of a product captured during a first testing of the product; receiving a second image of the product captured during a second testing of the product; determining a first part of the product that is different in the first image and the second image; and creating a mask for covering an image of the first part of the product.
- the first testing of the product is associated with a first tester
- the second testing of the product is associated with a second tester.
- the act of determining the first part of the product that is different in the first image and the second image comprises performing an image subtraction based on the first image and the second image to obtain a subtracted image.
- the act of determining the first part of the product that is different in the first image and the second image also comprises analyzing a distribution of non-zero pixel values in the subtracted image.
- the mask is created based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image.
- the method further includes determining a second part of the product that is different in the first image and the second image, and wherein the mask is created for also covering the image of the second part of the product.
- the method further includes storing the mask in a non-transitory medium in association with an identity of the product.
- a processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving a first image of a product captured during a first testing of the product; receiving a second image of the product captured during a second testing of the product; determining a first part of the product that is different in the first image and the second image; and creating a mask for covering an image of the first part of the product.
- FIG. 1A illustrates a system for providing product testing.
- FIG. 1B illustrates an example of the system of FIG. 1A .
- FIG. 2A illustrates a method for providing product testing.
- FIG. 2B illustrates a method of tracking a progress of a product testing session.
- FIG. 3 illustrates an example of a user interface for providing a notification to a product tester.
- FIG. 4 illustrates an example of a testing environment having a user interface for allowing a product tester to perform product testing.
- FIG. 5 illustrates an example of a data structure for linking assigned product testing tasks with product testing questions, answers, and tracker identifiers.
- FIG. 6 illustrates an example of an image capturing an interaction of a product tester with a product being tested.
- FIG. 7 illustrates an example of a data structure for creating a graphic associated with an image of a web page being tested.
- FIG. 8A-8C illustrates an example of a report summarizing a result of a product testing.
- FIG. 9 illustrates an example of a user interface for allowing a user to create tasks for product testing and to define product testing parameters.
- FIG. 10A-10E illustrate an example of a report that is provided to an administrator of the system of FIG. 1A .
- FIG. 11 illustrates a system for providing product testing.
- FIG. 12 illustrates an example of the system of FIG. 11 .
- FIGS. 13A-13F illustrate an example of tracking actions of a tester performing product testing using a testing interface.
- FIG. 14 illustrates an example of an interface being used by a product testing machine to perform product testing.
- FIG. 15 illustrates an image processing technique
- FIG. 16 illustrates a concept of image capture for image matching.
- FIG. 17 illustrates a method for providing product testing.
- FIG. 18 illustrates a component of a product testing system.
- FIG. 19 illustrates a method for use in product testing.
- FIG. 20 illustrates a component of a product testing system.
- FIG. 21 illustrates a method for use in product testing.
- FIG. 22 illustrates a component of a product testing system.
- FIG. 23 illustrates a method for use in product testing.
- FIG. 24 is a block diagram of a specialized processing system.
- FIG. 1A illustrates a system 10 for providing product testing.
- the system 10 is configured to connect a party 12 that has developed a product with one or more product testers 14 .
- the product may be a web page, a web site, a computer application (e.g., an enterprise application), a mobile (e.g., handheld) device application, an application for a specialized processor (e.g., an image processor, a signal processor, a sound processor, a speech processor, a processor in a vehicle (such as a car, a plane, etc.), or any of other types of processor).
- the product testers 14 may be individuals residing in different parts of the world.
- the testers 14 may reside in different parts of a city, different cities, different states, and/or different countries.
- the system 10 is associated with a party 16 that is different from the party 12 .
- the party 12 (first party) providing the product may be a first company
- the party 16 (second party) interfacing with the party 12 and the product testers 14 may be a second company that is not the same as the first company.
- the product testers 14 are not employees of the first party 12 , and are not employees of the second party 16 .
- the product testers 14 may be individual contractors. In other embodiments, one or more of the product testers 14 may be employees of the party 16 .
- FIG. 1B illustrates an example of the system 10 of FIG. 1A .
- the system 10 includes one or more input(s) 1002 , a notification generator 1004 , a communication interface 1008 , a reply counter 1040 , a comparator 1042 , a filter 1050 , a product tester management module 1080 , a testing interface generator 1100 , a timer 1200 , a time-comparator 1202 , a tracker 1300 , a graphic generator 1302 , an image database 1304 , a video generator 1310 , a video database 1314 , a user interface generator 1350 , a testing monitoring module 1400 , a test result retrieval module 1500 , and an analyzer 1502 .
- system 10 is not limited to the example shown, and that the system 10 may have other configurations in other embodiments.
- the system 10 may not include one or more of the components shown in FIG. 1B .
- the system 10 may be implemented using multiple devices, having different respect sets of one or more of the components shown in FIG. 1B .
- the product testers 14 have respective memberships and accounts with the party 16 .
- the product tester management module 1080 in the system 10 is configured to manage the various product testers 14 .
- the product tester management module 1080 may be configured to provide a registration interface to receive information regarding a person who desires to be a product tester 14 , so that the person is registered as a product tester 14 in the system 10 .
- Each registered product tester 14 will have his/her login ID and password, which allow the product tester 14 to log into the system 10 .
- the product tester management module 1080 may also be configured to provide training on product testing to train the person so that the person can be qualified as a product tester 14 .
- the product tester management module 1080 also manages the accounts of the various product testers 14 . For example, after a product tester 14 completes a product testing project, the product tester management module 1080 may calculate a fee owed to the product tester 14 based on one or more features of the product testing project.
- the first party 12 informs the second party 16 that its product needs to be tested.
- the first party 12 may send a request to the system 10 , and may transmit information regarding the product to be tested to the system 10 .
- the request and/or the information regarding the product may be received by the input(s) 1002 of the system 10 .
- the first party 12 may provide a link for the web page, product testing parameters, and product testing tasks.
- the user interface generator 1350 in the system 10 may provide an user interface for allowing the first party 12 to define product testing parameters and product testing tasks. These information may also be received via the input(s) 1002 of the system 10 .
- the first party 12 may access an user interface provided by the user interface generator 1350 of the system 10 to generate a list of tasks for a product tester 14 to perform, and to create a list of questions corresponding to the respective tasks for the product tester to answer.
- the user interface generator 1350 is configured to generate an image of the user interface for display on a device being used by the first party 12 when the first party 12 is on-line, and has logged into an account with the second party 16 .
- FIG. 2A illustrates a processor-implemented method 200 performed by the system 10 of FIG. 1 for providing product testing.
- the method 200 may be described with reference to the system 10 of FIGS. 1A and 1B .
- the system 10 provides a notification 1005 to inform a plurality of product testers 14 that a product is available for product testing (item 202 ).
- the product is associated with the first party 12 and the notification generator 1004 is associated with a second party 16 that is not the same as the first party 14 .
- the notification 1005 provided by the system 10 is for display in a web browser.
- the product tester 14 may open a web browser on his/her device.
- the web browser may include an add-on feature, which allows the product tester 14 to receive the notification 1005 from the system 10 .
- the notification 1005 is “broadcasted” by the system 10 in the sense that multiple product testers 14 will receive the notification 1005 or will have access to such notification 1005 .
- the notification 1005 may be for display in a field created by a product testing notification application.
- the product tester 14 may install a product testing notification application onto his/her device, which allows the product tester 14 to receive the notification 1005 from the system 10 .
- the product testing notification application may be provided by the second party 16 for installation or downloading onto a device of a product tester 14 .
- the device being used by the product tester 14 may be a laptop, a desktop computer, or a handheld device (e.g., an iPhone, iPad, iPad mini, tablet, etc.).
- the notification 1005 may be sent to a job listing agent, or a crowd-testers provider, such as crowdflower or a mechanical turk, etc.
- the term “notification” may refer to any information for informing a product tester 14 , wherein such information may be sent directly to a user interface on a device being used by the product tester 14 , or to a job listing agent for allowing a product tester 14 to view.
- the notification may actively inform the product tester 14 , or may passively inform the product tester 14 (in that the notification may be posted at a location at which the product tester 14 may search or discover such notification).
- FIG. 3 illustrates an example of a user interface 300 for providing a notification to a product tester 14 .
- the user interface 300 includes a field 302 for displaying a notification 304 provided by the system 10 , indicating that a product testing project is available.
- the user interface 300 also includes a feature 306 for allowing a product tester 14 to accept the product testing project.
- the user interface 300 for providing the notification to the product tester 14 is not limited to the example described previously, and that the user interface 300 may have other configurations in other embodiments.
- an electronic reply 1010 is received from a device being used by a product tester 14 of the plurality of product testers through a network (item 204 ).
- item 204 may be performed by the communication interface 1008 at the system 10 .
- the reply 1010 indicates that the product tester 14 will perform the product testing.
- the network transmitting the electronic reply may be any network, such as the Internet, a telecommunication network, etc.
- the electronic reply 1010 may be generated using a web browser utilized by the product tester 14 .
- the web browser on a device utilized by the product tester 14 may include an add-on feature, which allows the product tester 14 to receive the notification 1005 (e.g., a ping, a message, a posting, etc.) from the system 10 , like the example shown in FIG. 3 .
- the same add-on feature may also allow the product tester 14 to provide his/her reply (for reception by the system 10 ) to accept or to sign up for a product testing project.
- the electronic reply 1010 may be generated using a product testing notification application utilized by the product tester 14 .
- the product tester 14 may install a product testing notification application onto his/her device, which allows the product tester 14 to receive the notification 1005 from the system 10 .
- the product testing notification application may be provided by the second party 16 .
- the same product testing notification application may also allow the product tester 14 to provide his/her reply (for reception by the system 10 ) to accept or to sign up for a product testing project.
- a product tester 14 may use crowdflower or a mechanical turk to obtain the notification 1005 regarding the product testing project.
- the reply 1010 accepting the product testing project will be generated by a device using the crowdflower or mechanical turk.
- the method 200 further includes updating a reply count in response to the received electronic reply (item 205 ).
- item 205 is performed by the reply counter 1040 of the system 10 .
- the method 200 may also include receiving additional electronic reply/replies 1010 , keeping track with a number of replies 1010 , and comparing the number of replies 1010 with a prescribed number.
- the communication interface 1008 of the system 10 is configured to receive one or more additional electronic replies 1010 from one or more additional product testers 14 from the plurality of product testers 14 until a prescribed number of electronic replies 1010 has been reached.
- the reply counter 1040 in the system 10 will increment the reply count by one. In such cases, after the communication interface 1008 received the first electronic reply 1010 from the product tester 14 , the product testing project is then assigned only to the product tester 14 , and not to any other product testers 14 .
- the communication interface 1008 continues to receive additional reply until the total number of replies 1010 is equal to the prescribed number of electronic replies 1010 , as determined by the comparator 1042 in the system 10 .
- the prescribed number of reply 1010 is one reply. In other embodiments, the prescribed number of replies 1010 may be more than one. For example, in some embodiments, the prescribed number of electronic replies 1010 may be three, four, five, six, or seven. In other embodiments, the prescribed number of electronic replies 1010 may two. In further embodiments, the prescribed number of electronic replies 1010 may be more than seven.
- the system 10 then provides a testing environment that comprises a testing interface for use by the product tester 14 (item 206 ).
- the testing interface may be generated by the testing interface generator 1100 in the system 10 .
- item 206 may be performed by the system 10 providing the testing interface for display on a device being used by the product tester 14 after the product tester 14 has accepted the product testing project.
- the generated testing interface may be output to a network (e.g., the Internet) for transmission to the device of the product tester 14 .
- item 206 may be performed by the testing interface generator 1100 , which opens up a virtual machine environment for presenting the testing interface for the product tester 14 in response to the product tester 14 accepting to take the product testing project.
- the testing interface is configured to present features of the product and the product testing instruction for allowing the first product tester 14 to perform the product testing on the product based on the product testing instruction.
- the product testing instruction provides a plurality of tasks for the product tester 14 to perform for testing the product.
- the product being tested comprises a web page
- the product testing instruction is configured to prescribe one or more actions be performed on the web page being tested.
- FIG. 4 illustrates an example of a testing environment 400 having a testing interface 402 for allowing a product tester 14 to perform product testing.
- the testing interface 402 includes a window 404 for presenting features of the product being tested.
- the product comprises a web page.
- the window 404 may allow the product tester 14 to access the web page via a link.
- the window 404 presents an image of a web page 410 for allowing the product tester 14 to perform product testing thereon.
- the web page 410 displayed in the window 404 includes one or more selectable features 411 .
- the testing interface 402 includes a field 420 providing one or more tasks 422 for the product tester 14 to perform on the web page 410 .
- the tasks 422 are parts of a product testing instruction.
- a task 422 may require the product tester 14 to perform an action on the image of the web page 410 .
- a task 422 may be to click on a tab on the web page 410 , to click on a link on the web page 410 , to enter a value in a field in the web page 410 , to click on a box in the web page 410 , etc.
- the testing interface 402 may be configured to present a question 412 for the product tester 14 to answer after the action has been performed based on the product testing instruction.
- the question 412 may ask the product tester 14 whether the product tester 14 sees a pop-up after selecting an object in the web page 410 being tested, whether the product tester 14 sees a new image after selecting a certain option in the web page 410 , etc.
- the testing interface 402 also provides only two possible answers 414 a , 414 b (“Yes” and “No”) for allowing the product tester 14 to select. Such technique reduces ambiguity in the answer provided by the product tester 14 .
- the testing interface 402 may provide more than two possible answers 414 for allowing the product tester 14 to select to answer a question baser the product tester 14 performs a task specified in the product testing instruction.
- the system 10 if the product tester 14 selects the “No” answer to any of the product testing question, the system 10 then terminates the product testing session, and the product testing is considered completed by the product tester 14 . In such cases, no further product testing tasks and no further product testing questions will be presented to the product tester 14 . This is because if the product being tested has a certain feature that fails, then the product provider may want to know this right away. Also, the failed feature may impact other features of the product. Accordingly, if a feature in the product has failed the product testing, then one or more other features may fail as well. In other embodiments, instead of terminating the product testing session, the system 10 may allow the product tester 14 to continue testing the product. For example, the system 10 may allow the product tester 14 to continue with the remaining tasks in the product testing prescribed by the product testing instruction. Also, the system 10 may allow the product tester 14 to test other features of the product that are not associated with the failed feature.
- the method 200 further includes storing an answer of the question in a test result file for the product being tested.
- the answer may be a “Yes” answer or a “No” answer in response to a question provided to the product tester 14 after the product tester 14 has performed a task to test the product.
- the answer, the question, and the associated task for testing the product may be stored in a unique data structure that associate these items together.
- FIG. 5 illustrates an example of a data structure 500 for linking product testing tasks 502 , respective product testing questions 504 , and the corresponding answers 506 to the product testing questions 504 .
- the data structure 500 also includes tracker identifiers 508 that identify files tracking interaction of the product tester 14 while testing the product.
- Each tracker identifier 508 may identify an image, a video file, or any of other interaction information that captures the interaction of the product tester 14 on the product being tested. These information are advantageous because they allow a user (from party 12 or party 16 ) to retroactively determine how a product tester 14 came to a conclusion based on the product tester's 14 interaction with the product being tested.
- the tracker identifier 508 will be described in further detail below.
- the testing interface 402 is configured for display on a computer screen or a laptop screen. In other embodiments, the testing interface 402 is configured for display on a hand-held device (e.g., an iPhone, iPad, iPad mini, tablet, etc.).
- a hand-held device e.g., an iPhone, iPad, iPad mini, tablet, etc.
- testing interface 402 is not limited to the example discussed previously, and that the testing interface 402 may have other configurations in other embodiments.
- the timer 1200 in the system 10 keeps track of the duration that has lapsed since the providing of the testing interface 402 .
- the method 200 may further include determining (by the timer 1200 ) an amount of time that has lapsed since the testing interface has been provided to the product tester 14 .
- the method 200 may also include comparing the amount of time with a prescribed duration using the time-comparator 1202 . If the lapsed time has exceed a the prescribed duration (e.g., a starting deadline), and the product tester 14 has not begun performing a product testing task, then the system 10 will revoke the product testing project from the product tester 14 .
- the system 10 may terminate the product testing session being used by the product tester 14 .
- the prescribed duration (starting deadline) may be set by the system 10 to be five minutes after a product testing session has begun.
- the prescribed duration may be set by an administrator of the system 10 to have other values, such as a duration that is more than five minutes, or less than five minutes.
- a method 230 of tracking a progress of a product testing session may be provided ( FIG. 2B ). The method 230 may be a part of the method 200 in some embodiments.
- the method 230 includes determining an amount of time that has lapsed since a beginning of a product testing session using a timer (item 232 ), comparing the amount of time with a prescribed duration (item 234 ), and revoking the product testing project from the product tester if the determined time equals to or exceeds the prescribed duration (item 236 ).
- the method 200 may also include terminating the product testing session.
- item 236 may be performed by the testing interface generator 1100 , which closes a virtual machine environment presenting the testing interface for the product tester 14 in response to the lapsed time meeting the prescribed duration.
- the method 200 further includes tracking an interaction of the product tester 14 with the web page.
- the product tester 14 may be using his/her device (e.g., laptop, desktop, handheld device, such as a cell phone, etc.) to perform the product testing.
- the tracker 1300 of the system 10 is configured to track a position of the cursor in the product tester's device as operated by the product tester 14 .
- the tracker 1300 may be configured to track a position of the finger position as applied on the touchscreen.
- the term “cursor” is not limited to a displayed item operated using a touchpad, a mouse, or a knob, and the term “cursor” may also include non-displayed item that is associated with a movement of a finger as applied on a touchscreen.
- the testing interface 402 may instruct the product tester 14 to click on a certain item on an image of a web page being tested. While the product tester 14 is manipulating the cursor in the web page, the tracker 1300 of the system 10 records the positions of the cursor as it appears in the web page.
- the system 10 may also use the graphic generator 1302 configured to generate a graphic representing the tracked movement.
- the graphic comprises a line traversing a plurality of cursor positions.
- the graphic may further comprise a selection identifier identifying a position in the image of the web page at which the product tester 14 performed a selection (e.g., a clicking of a button).
- the selection may be a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing, performed by the product tester 14 .
- FIG. 6 illustrates an example of an image 600 capturing an interaction of a product tester with a product being tested.
- the image 600 includes an image of a web page 602 being tested, the task 604 prescribed by the product testing instruction, and the question 606 corresponding to the task 604 .
- the task 604 instructs the product tester 14 to click on the “Archive” button, and the question 606 asks the product tester 14 whether the clicked item moved to the archived section.
- the image 600 also shows a graphic 608 generated by the graphic generator 1302 .
- the graphic 608 is in a form of a line, which indicates where the product tester 14 has moved the cursor while performing the task 604 .
- the graphic 608 also includes a plurality of circles 610 (example of selection identifiers) identifying a position in the image of the web page at which the product tester 14 has clicked on a button.
- the method 200 may further include storing the electronic image 600 in a non-transitory medium 1304 ( FIG. 1B ).
- the non-transitory medium 1304 is illustrated as an image database, but in other embodiments, the non-transitory medium 1304 may be any memory or storage device.
- the image 200 includes the image of the web page 602 and the graphic 608 superimposed with the image of the web page 602 .
- the system 10 is configured to generate positional data regarding the position of the cursor as the product tester 14 interacts with the web page 602 to perform the assigned task.
- the positional data may include a position (e.g., X and Y coordinates) of the cursor.
- the positional data may be later used by the graphic generator to generate the graphic 608 . For example, all of the positional data may be plotted to create the line shown in the example of the graphic 608 in FIG. 6 .
- the system 10 may also generate timing data that are associated with the respective positions of the cursor. For example, cursor position (X1, Y1) may occur at t 1 , and cursor position (X2, Y2) may occur at t 2 . Thus, the system 10 may generate the timing data t 1 , t 2 , etc., and store such timing data in association with the respective cursor positions in the non-transitory medium.
- FIG. 7 illustrates an example of a data structure 700 for storing cursor position data in association with timing data.
- the data structure 700 includes two columns for positional values in the x-coordinate and y-coordinate, respectively.
- the data structure 700 also includes a column for indicating whether the product tester 14 made a selection (e.g., by clicking a button) at a certain cursor position.
- the data structure 700 may be used by the graphic generator 1302 to create the graphic 608 that is associated with an image of a web page being tested.
- the positional values in the data structure 700 may be used to create the lines in the graphic 608 , and the select indicator(s) in the data structure 700 may be used to create the circle(s) 610 representing the position(s) at which the product tester 14 has made a selection.
- the data structure 700 may be stored in the non-transitory medium 1304 .
- the data structure 700 may be linked with a certain tracker identifier in the data structure 500 of FIG. 5 .
- the data structure 700 with the identifier “23” may contain data for creating the graphic 608 in the image file 342 in the data structure 500 .
- the image file 342 may contain an image of the web page being tested.
- the data structure 700 may also include timing data indicating the respective times at which the positions of the cursor occurred.
- the timing data is advantageous because it may allow the graphic 608 to be presented in a form of a video.
- the video generator 1310 may utilize the data structure 700 to create a video showing a changing of the position of the cursor over time.
- the video will indicate a tracked interaction of the product tester 14 with the web page being tested.
- the video provided by the video generator 1310 may include a moving cursor.
- the video provided by the video generator 1310 may include a growing line representing a collection of positional points by the cursor as the cursor is moved across the web page.
- the video may be stored in a non-transitory medium 1314 ( FIG. 1B ).
- the non-transitory medium 1314 is illustrated as a video database, but in other embodiments, the non-transitory medium 1314 may be any memory or storage device. Also, in other embodiments, instead of having separate non-transitory media 1304 , 1314 as image database and video database, the non-transitory media 1304 , 1314 may be integrated as a single database.
- the graphic 608 and the image of the web page being tested may be provided by the system 10 to a user associated with the first party 12 .
- the user interface provided by the user interface generator 1350 may be configured to output an image and/or a video having the graphic 608 and the image of the web page for viewing by the user of the system 10 .
- Such image and/or video may be provided as a part of a test result file so the user can see how the product tester 14 came to a certain product testing conclusion based on the interaction with the web page tested.
- the image and/or the video may be stored in association with the corresponding product testing task defined in the product testing instruction.
- the image and/or the video is for tracking the interaction of the product tester 14 while the product tester 14 is performing a certain task prescribed in the product testing instruction. Accordingly, each of the task prescribed to be performed by the product tester 14 will have a corresponding image and/or video tracking the interaction of the product tester 14 with the web page being tested. For example, if a product testing project has 28 tasks (steps), after the product tester 14 has finished the product testing project, the system 10 will have generated 28 images and/or 28 videos for the respective 28 tasks.
- all of the 28 images and/or the 28 videos in the example may be provided, or made available, to the user who is associated with the first party 12 (the provider of the product).
- only one image and/or one video may be provided, or made available, to the user who is associated with the first party 12 .
- the system 10 may provide only the image and/or only the video associated with the failed task. This may be advantageous because the user may not be concerned with tasks that have “pass” status, but may be more interested in viewing results for the task that results in a “failed” status.
- the system 10 may store only the image and/or only the video that is associated with a failed task, and may delete other images and videos for other tasks that have “pass” status after the product testing project is completed or after the product testing project is completed for a certain pre-determined duration.
- FIG. 8A-8C illustrates an example of a report 800 summarizing a result of a product testing.
- the system 10 is configured to gather information from the finished product testing by one or more product testers 14 , and generate the report 800 based on the gathered information.
- the report 800 is for a certain product that has been tested by the product testers 14 .
- the report 800 includes a list of product testing tasks 802 performed by the product testers 14 .
- the tasks 802 in the report 800 are the same tasks created (using the user interface provided by the user interface generator 1350 ) by the user associated with the first party 12 that provides the product for product testing.
- the report 800 also includes failed test identifier(s) 804 and passed test identifier(s) 806 next to different respective tasks.
- a task with a failed test identifier 804 indicates that the product testing failed when the product tester(s) performed that task.
- a task with a passed test identifier 806 indicates that the product testing passed when the product tester(s) 14 performed that task.
- the report 800 also includes an object 808 next to each of the tasks, which when selected by the user, will provide further details about the product testing on that specific task.
- the report 800 also includes a list of browsers 810 in which the product testing of the product has been performed.
- the user viewing the report 800 may be interested in viewing details of the product testing for a certain task.
- the user may select the corresponding object 808 next to the task 802 .
- the system 10 may present the report 820 shown in FIG. 8B for the user.
- the report 820 is for a certain task performed during the product testing.
- the report 820 includes a summary 821 of the product testing for that task.
- the summary 821 indicates that the specific task in question failed when the product testers 14 perform the product testing in 9 out of 31 browsers.
- the report 820 also shows the corresponding task 822 performed by the product testers 14 when the product testing failed, and the corresponding question 824 .
- the 9 browsers in which the performance of the task failed are shown by the browser icons 826 .
- the report 820 also includes pass/fail indicator 828 next to the different respective browser icons 826 .
- a failed indicator 828 next to a browser icon 826 indicates that the performance of the task failed when the product testers 14 performed the task in the type of browser represented by the browser icon 826 .
- the user viewing the report 820 has selected one of the pass/fail indicators 828 for a certain browser, as represented by the selector graphic 829 . Accordingly, the report 820 displays three images 830 a - 830 c that were captured when three respective different product testers 14 performed the task 822 in the browser type selected. From the images 830 , the user viewing the report 820 can see what were on the product testers' 14 screen when they performed that specific task that result in a “failed” status.
- the user viewing the report 820 can select one of the images 830 a - 830 c to see more detail.
- the system 10 may provide a report 840 shown in FIG. 8C to the user.
- the report 840 includes a description of the task 842 , and the corresponding product testing question 844 .
- the report 840 also includes an image 846 that includes an image 847 of the web page tested, and a graphic 848 .
- the graphic 848 includes a line 849 that tracks the position of the cursor when the product tester 14 interacted with the web page, and selection identifiers 850 indicating the positions where the product tester 14 made selections (e.g., clicked a button).
- image 846 may be provided by the graphic generator 1302 of the system 10 , as similarly discussed with reference to FIG. 6 .
- image 846 allows the user to retroactively view the interaction of the product tester 14 with the web page while performing the task 842 .
- the system 10 may provide a video showing a movement of the cursor and selection(s) (e.g., clicking of button) by the product tester 14 .
- the report 840 further includes an identifier of the product tester 14 who performed the product testing task.
- the identifier may be the actual name of the product tester 14 or other identifier that identifies the product tester 14 .
- the identity of the product tester 14 may be kept confidential and may not be presented by the system 10 to the user.
- the report 840 further includes a browser identifier 856 identifying the type of browser in which the task was conducted by the product tester 14 , and a pass/fail indicator 854 indicating whether the task in question failed or passed during the product testing.
- the test result reports 800 , 820 , 840 may be generated using the test result retrieval module 1500 in the system 10 .
- the test result retrieval module 1500 gather information regarding the product testing, and create the reports 800 , 820 , 840 for viewing by the user.
- the reports 800 , 820 , 840 may be presented through an user interface created by the user interface generator 1350 of the system 10 .
- the user interface generator 1350 may generate and provide an user interface for use by an administrator of the system 10 . In such cases, the reports 800 , 820 , 840 may be provided for viewing by the administrator through the user interface.
- the user interface generator 1350 may generate and provide an user interface for use by a user associated with the first party 12 providing the product for product testing.
- the reports 800 , 820 , 840 may be provided for viewing by the user through the user interface.
- test result reports 800 , 820 , 840 are not limited by the examples described previously, and that the system 10 may provide test result report(s) having different configurations in different embodiments.
- the reports 800 , 820 , 840 may have fewer information than those described in the above example.
- the system 10 may consolidate the product testing results from the multiple product testers 14 , and provide a consolidated product testing report to the user.
- the analyzer 1502 in the system 10 may employ a logical algorithm to determine whether a certain product testing result from a product tester 14 is reliable or not. If the testing result is considered as non-reliable, the analyzer 1502 then disregards that particular product testing result.
- the analyzer 1502 may compare two product testing results from two different product testers 14 . If the two product testing results indicate the same conclusion (e.g., pass or fail), then the analyzer 1502 may determine the product testing results as reliable. In such cases, the system 10 may simply report to the user that the particular task in question has a pass or fail status without informing the user the number of product testers 14 performed the testing.
- the analyzer 1502 may pick a result (e.g., pass or fail) that has the majority vote. For example, if two product testers 14 performing the task provide a “Yes” answer to the corresponding question, and the third product tester 14 provides a “No” answer, then the analyzer 1502 will pick the “Yes” answer and may determine that the testing of the task has a “pass” status. On the other hand, if two product testers 14 performing the task provide a “No” answer to the corresponding question, and the third product tester 14 provides a “Yes” answer, then the analyzer 1502 will pick the “No” answer and may determine that the testing of the task has a “fail” status.
- a result e.g., pass or fail
- the system 10 may be configured to provide a user interface for allowing a user to override a product testing result.
- the user interface providing the report 800 / 820 / 840 may also provide a control for allowing a user to change a product testing result. If a product testing result indicates that a particular task has a “pass” status, the user may utilize the control to change the status from “pass” to “failed”. Alternatively, if a product testing result indicates that a particular task has a “failed” status, the user may utilize the control to change the status from “failed” to “pass”.
- the analyzer 1502 of the system 10 is not limited to comparing product testing results. In other embodiments, the analyzer 1502 may also perform other analyses to determine different user metrics associated with the product testers 14 and/or different testing metrics relating to the reliability of the test results. For example, in some embodiments, the analyzer 1502 may compare the images (which tracked the actions of the product testers 14 ) stored in the image database 1304 to determine whether the three images are similar or not. If all three product testers 14 perform the same action prescribed by the task of the product testing instruction, the graphics representing the movements of the cursors in the three images may have some similar features.
- the graphics representing the movement of the cursors should all include one or more selection identifiers at the link. If one of the graphics indicate that there is no selection of the link, the analyzer 1502 may then determine that the product testing result by the corresponding product tester 14 is not reliable. This may be the case even if this product tester 14 provided the same “Yes” or “No” answer to reach the same conclusion as that of the other two product testers 14 .
- the testing monitoring module 1400 of the system 10 may gather some intelligence regarding the performance of the product testers 14 . After the product testing is finished, the analyzer 1502 may then retrieve the information from the testing monitoring module 1400 and perform further analysis based on the information. For example, the testing monitoring module 1400 may determine an amount of time for each product tester 14 to perform a certain task. Thus, after the product tester 14 finishes the product testing project, the testing monitoring module 1400 will have multiple time values for different respective tasks prescribed in the product testing instruction and performed by that product tester 14 . The testing monitoring module 1400 also does the same for the other two product testers 14 .
- the analyzer 1502 may then compare the three time values associated with the respective three product testers 14 for a given task, and determine if any of the product testing results for that task from the three product testers 14 is unreliable. For example, if a certain task takes a first product tester 14 to complete in 30 seconds, takes a second product tester 14 to complete in 37 seconds, and a third product tester 14 to complete in 4 seconds, then then analyzer 1502 may determine that the product testing result from the third product tester 14 is unreliable because the other two time values are closer to each other, and the third time value is different from both of the first two time values.
- the system 10 may insert one or more questions specifically designed to test the reliability of the product testers 14 .
- the system 10 may ask the product tester 14 a simple mathematical question, such as, “what is 14+6?” that is completely unrelated to the nature of the product being tested. If the product tester 14 is actively paying attention while performing the product testing, the product tester 14 is most likely to answer this question correctly. On the other hand, if the product tester 14 is not paying attention while performing the product testing, the product tester 14 may answer this question incorrectly, thereby indicating that the product testing result from this product tester 14 may be unreliable.
- This technique also has the benefit of detecting certain product tester 14 who may be carless, reckless, or who pretends to be performing the product testing.
- the testing monitoring module 1400 may be configured to compare an answer provided by the product tester 14 with an expected answer. If the answer provided by the product tester 14 matches the expected answer, then the testing monitoring module 1400 may determine that the product testing result by that product tester 14 is reliable. On the other hand, if the answer provided by the product tester 14 does not match the expected answer, then the testing monitoring module 1400 may determine that the product testing result by that product tester 14 is not reliable.
- the testing monitoring module 1400 may also perform other functions to monitor a progress of the product testing.
- the testing monitoring module 1400 may be configured to determine a percentage of the product testing completed, a duration spent by the product tester 14 on the product testing, a number of steps taken by the product tester 14 , time wasted by the product tester 14 , time lapsed before a link is clicked by the product tester 14 , etc.
- the user interface generator 1350 is configured to provide an interface for a user to generate tasks for product testing and to define product testing parameters.
- FIG. 9 illustrates an example of a user interface 900 for allowing a user to generate tasks for product testing and to define product testing parameters.
- the user may be associated with the first party 12 providing the product for product testing, and/or a person associated with the second party 16 providing the system 10 .
- the user interface 900 may be generated and provided by the user interface generator 1350 in the system 10 in some embodiments.
- a user at the first party 12 may then log into the system 10 (e.g., using user ID and password).
- the user interface generator 1350 of the system 10 may then provide the user interface 900 for the user.
- the user interface 900 includes a section 902 for allowing a user to create product testing tasks 904 and corresponding product testing questions 906 .
- Each product testing task 904 prescribes a product tester 14 to perform an action on the product being tested.
- Each corresponding question 906 asks the product tester 14 to confirm whether a certain event occurs or not based on the action performed by the product tester 14 in accordance with the assigned task.
- each of the product testing tasks 904 and each of the product testing questions 906 are designed by the user to test specific features in the product.
- the user may use the user interface 900 to add, delete, edit, and move task(s) 904 and question(s) 906 .
- the user interface 900 also includes a section 907 having a plurality of platform/browser icons 908 for selection by the user creating the product testing tasks.
- Each of the platform/browser icons 908 represents a type of platform or browser in which the web page is desired to be tested. If the user wants the web page to be tested under 34 different types of platform/browser, for example, the user can select the 34 corresponding platform/browser icons 908 to prescribe such testing parameters.
- the platform/browser icons 908 may identify Google Chrome, different versions of Chrome, different versions of Mozilla Firefox, different versions of Microsoft Internet Explorer, different iOS for different versions of iPhone, different versions of Safari, different versions of Android mobile browsers, different versions of iPhone 6 mobile browsers, different versions of Microsoft Office, etc.
- the user interface 900 may allow the user to prescribe how to test an application on a mobile device (e.g., iPhone, iPad, tablet, etc.). For example, the user may prescribe that a product testing be performed on a certain type of mobile device by using the mobile device to launch a browser to go to a website. Alternatively, the user may prescribe that the product testing be performed using mobile-native-device (through an actual mobile device) or mobile-simulator (simulated mobile environment).
- a mobile device e.g., iPhone, iPad, tablet, etc.
- the user may prescribe that a product testing be performed on a certain type of mobile device by using the mobile device to launch a browser to go to a website.
- the user may prescribe that the product testing be performed using mobile-native-device (through an actual mobile device) or mobile-simulator (simulated mobile environment).
- the user designing the product testing instruction may group multiple related web pages under one product testing project.
- the product being tested may have multiple web pages, and the user may divide the product into different features for different product testing projects.
- the user may save these information to generate a product testing instruction file.
- the product testing instruction file may be saved in a non-transitory medium (e.g., the product testing instruction database 1600 ) at the system 10 .
- the notification generator 1004 of the system 10 then provides the notification 1005 to inform the product testers 14 that the product testing project is available, as discussed.
- the testing interface generator 1100 of the system 10 When a product tester 14 has accepted the product testing project, the testing interface generator 1100 of the system 10 then provides a testing interface, along with the tasks and questions defined in the product testing instruction (stored in the database 1600 ) for the product tester 14 to conduct the product testing. Also, as discussed, in some embodiments, the system 10 may insert one or more questions into the product testing instruction specifically designed to test the reliability of the product testers 14 . For example, the system 10 may ask the product tester 14 a simple mathematical question, such as, “what is 14+6?” that is completely unrelated to the nature of the product being tested, and that is designed to determine reliability of the product testing result.
- the system 10 may be configured to provide an administrative product testing report for use by personnel at the second party 16 .
- Such report provides a user at the second party 16 a detailed view of all of the tasks in a product testing.
- the report may be generated using the test result retrieval module 1500 (which gathers and compiled all of the relevant information), and provided to the user via an user interface generated by the user interface generator 1350 .
- FIGS. 10A-10E illustrate an example of a report 1000 that is for viewing by a user at the second party 16 .
- the report 1000 includes data 1002 regarding the product testing performed, including name of client (product provider), product testing identification, type of platform/browser in which the product testing was conducted, etc.
- the report 1000 also includes the identifications 1004 a - 1004 c of three product testers 14 who performed the product testing.
- the report 1000 also includes a summary of the product testing organized by tasks. For example, as shown in FIG. 10B , the report 1000 includes a section that provides the product testing task 1010 and its corresponding product testing question 1012 .
- the report 1000 also includes respective results 1014 a - 1014 c associated with the respective product testers 14 .
- Each result 1014 indicates the product tester's 14 answer 1020 to the product testing question, a pass/fail indicator 1022 indicating whether the performance of the task passes or not, a time value 1024 indicating an amount of time it took for the product tester 14 to complete the task 1010 , and an image 1026 that tracked the action of the product tester 14 while performing the task 1010 .
- the image 1026 may be generated by the graphic generator 1302 as similarly discussed previously. In some cases, the user may click on the image 1026 , and the system 10 may then provide a more detailed view of the image 1026 ( FIG. 10C ).
- the image 1026 includes a graphic that indicates the action of the product tester 14 performed during the product testing, as similarly discussd. As shown in FIG.
- the report 1000 may also include respective results 1044 a - 1044 c associated with the respective product testers for a different task 1040 , which has a corresponding product testing question 1042 . Furthermore, as shown in FIG. 10E , the report 1000 may also include the inserted questions 1050 for the respective product testers 14 that tested the reliability of the product testing results.
- the system 10 may be configured to provide a user interface for allowing a user to override a product testing result.
- the user interface providing the report 1000 may also provide a control for allowing a user (e.g., an administrator, or a personnel associated with the second party 16 , etc.) to change a product testing result. If a product testing result indicates that a particular task has a “pass” status, the user may utilize the control to change the status from “pass” to “failed”. Alternatively, if a product testing result indicates that a particular task has a “failed” status, the user may utilize the control to change the status from “failed” to “pass”.
- the system 10 of FIG. 1B includes one or more input(s) 1002 for receiving a product testing request, information about the product, and product testing instruction.
- the system 10 also includes a notification generator 1004 configured to generate a notification 1005 to inform a plurality of product testers 14 that a product is available for product testing.
- the product is associated with the first party 12 developing the product
- the notification generator 1004 is associated with the second party 16 that is not the same as the first party 12 .
- the notification 1005 is for display in a web browser.
- the product tester 14 may open a web browser on his/her device.
- the web browser may include an add-on feature, which allows the product tester 14 to receive the notification 1005 from the system 10 .
- the notification 1005 may be for display in a field created by a product testing notification application.
- the product tester 14 may install a product testing notification application onto his/her device, which allows the product tester 14 to receive the notification 1005 from the system 10 .
- the notification may be transmitted to crowdflower or a mechanical turk.
- the system 10 also includes a communication interface 1008 configured to receive an electronic reply 1010 from a device 1020 being used by a first product tester 14 of the plurality of product testers, the reply 1010 indicating that the first product tester 14 will perform the product testing.
- the communication interface 1008 and the one or more input(s) 1002 may be integrated.
- the electronic reply 1010 may be generated using a web browser utilized by the product tester 14 .
- the web browser on a device utilized by the product tester 14 may include an add-on feature, which allows the product tester 14 to receive the notification from the system 10 .
- the same add-on feature may also allow the product tester 14 to provide his/her reply (for reception by the system 10 ) to accept or to sign up for a product testing project.
- the electronic reply 1010 may be generated using a product testing notification application utilized by the product tester 14 .
- the product tester 14 may install a product testing notification application onto his/her device, which allows the product tester 14 to receive the notification from the system 10 .
- the same product testing notification application may also allow the product tester 14 to provide his/her reply (for reception by the system 10 ) to accept or to sign up for a product testing project.
- the electronic reply may be generated by a device that is using crowdflower or a mechanical turk.
- the system 10 may also include a reply counter 1040 configured to keep track with a number of replies 1010 , and a comparator 1042 configured to compare the number of replies 1010 with a prescribed number.
- the communication interface 1008 is configured to receive one or more additional electronic replies from one or more additional product testers 14 from the plurality of product testers 14 until a prescribed number of electronic replies has been reached. In response to each reply received by the communication interface 1008 , the reply counter 1040 will increment by one. The communication interface 1008 continues to receive additional reply until the total number of replies is equal to the prescribed number of electronic replies, as determined by the comparator 1042 . In the illustrated embodiment, the prescribed number of replies is one reply.
- the prescribed number of replies may be more than one.
- the prescribed number of electronic replies may be three, four, five, six, or seven. In other embodiments, the prescribed number of electronic replies may two. In further embodiments, the prescribed number of electronic replies may be more than seven.
- the system 10 may further include a filter 1050 configured to select the plurality of product testers 14 from a list of available product testers 14 for providing the notification.
- the filter 1050 may be configured to select the plurality of product testers based at least in part on respective scores of the plurality of product testers, respective ages of the plurality of product testers, respective language skills of the plurality of product testers, respective locations of the plurality of product testers, respective age groups of the plurality of product testers, respective industry expertise of the plurality of product testers, or any combination of the foregoing.
- the filter 1050 may then perform filtering to obtain a list of all product testers 14 who can read Italian.
- the notification 1005 may be provided by the notification generator to only the product testers 14 who can read Italian.
- the system 10 further includes a testing interface generator 1100 configured to generate a testing interface for use in a testing environment.
- the testing interface may be the testing interface described with reference to FIG. 4 . In other embodiments, the testing interface may have other configurations.
- the testing interface is configured to present features of the product and product testing instruction for allowing the first product tester 14 to perform the product testing on the product based on the product testing instruction.
- the product testing instruction in the testing interface is configured to provide a plurality of tasks for testing the product. For example, the product testing instruction may prescribe one or more actions be performed by the product tester 14 on a web page being tested.
- the testing interface is configured for display on a hand-held device (e.g., an iPhone, iPad, iPad mini, tablet, etc.). In other embodiments, the testing interface is configured for display on a computer screen or a laptop screen.
- the product testing instruction may be created by a user through an user interface provided by the user interface generator 1350 .
- the user creating the product testing instruction may be associated with the first party 12 providing the product for testing, or may be associated with the second party 16 .
- the user interface allows the user to create multiple product testing tasks, and multiple corresponding product testing questions, to test a product.
- the product includes a web page, and the user interface allows the user to select one or more platforms/browsers in which to test the web page.
- the product testing instruction may be stored in the product testing instruction database 1600 .
- the user interface generator 1350 may be configured to provide a first product tester 14 access to a testing environment for allowing the first product tester 14 to perform product testing on a product based on the product testing instruction.
- the user interface generator 1350 may also be configured to provide a second product tester 14 access to another testing environment for allowing the second product tester 14 to perform another product testing on the same product based on the same product testing instruction.
- the user interface generator 1350 may provide different virtual environments for different respective product testers 14 . Accordingly, different product testers 14 may perform the product testing on different respective virtual machines that provide the testing interfaces for testing the product.
- the testing interface is configured to present an image of a web page (e.g., a web page being tested), and the product testing instruction is configured to instruct the first product tester 14 to perform an action on the image of the web page being tested.
- the testing interface may further be configured to present a question for the first product tester 14 to answer after the action has been performed based on the product testing instruction.
- the system 10 may further include a non-transitory medium for storing the product tester's answer to the question in a test result file.
- the system 10 also includes a timer 1200 that keeps track of the duration that has lapsed since the testing interface 402 was provided to the product tester 14 .
- the system 10 also includes a time-comparator 1202 , which compares the lapsed time with a prescribed threshold. If the lapsed time has exceeded the prescribed threshold and the product testing is not completed by the product tester 14 , then the system 10 will revoke the product testing project from the product tester 14 . For example, the system 10 may terminate the product testing session being used by the product tester 14 .
- the system 10 in response to the revoked product testing project from the product tester 14 , the system 10 will update the reply counter 1040 (e.g., by subtracting the total count by one) to indicate that a slot for the product testing project is available (due to the product testing project being released back to the pool of product testers 14 for acceptance). If another product tester 14 submits a reply to take the slot for the product testing project, the product testing project (which was not completed by the previous product tester 14 ) is then assigned to this other product tester 14 .
- the reply counter 1040 e.g., by subtracting the total count by one
- the system 10 also includes a tracker 1300 configured to track an interaction of the first product tester 14 with the product.
- the product may be a web page
- the tracker 1300 is configured to track an interaction of the first product tester 14 with an image of the web page.
- the tracker 1300 is configured to track a movement of a cursor operated by the first product tester 14 .
- the first product tester 14 may be using his/her device (e.g., laptop, desktop, handheld device, such as a cell phone, etc.) to perform the product testing.
- the tracker 1300 is configured to track a position of the cursor in the product tester's device as operated by the first product tester 14 .
- the tracker 1300 may be configured to track a position of the finger position as applied on the touchscreen.
- the term “cursor” is not limited to a displayed item operated using a touchpad, a mouse, or a knob, and the term “cursor” may also include non-displayed item that is associated with a movement of a finger as applied on a touchscreen.
- the tracker 1300 is configured to track a selection of a tab, recording a selection of a button, recording a selection of an icon, recording a typed text, or any combination of the foregoing, performed by the first product tester 14 .
- the system 10 further includes a graphic generator 1302 configured to generate a graphic representing the tracked movement by the tracker 1300 .
- the graphic comprises a line traversing a plurality of cursor positions.
- the graphic may also comprises a selection identifier identifying a position in the image of the web page at which the first product tester 14 performed a selection.
- the system 10 may also include an image database 1304 configured to store an electronic image in a non-transitory medium, the electronic image comprising the image of the web page and the graphic superimposed with the image of the web page.
- the image database 1304 is configured to store the electronic image in association with an identity of the first product tester 14 and in association with the product being tested.
- the image database 1304 may be one or more non-transitory medium located at a same facility or at different facilities.
- the system 10 may further include a video generator 1310 configured to generate a video of the tracked interaction.
- the video may show a movement of a cursor as operated by the product tester 14 while testing a web page.
- the video may also show a selection of an object in the web page by the product tester 14 .
- the video may be a recording of screenshots over time to show an interaction of the product tester 14 with the web page being tested.
- the video may contain images of a processor-generated graphic (tracking an interaction of the product tester 14 ) superimposed with image(s) of the web page being tested.
- the graphic may be a “growing” line that follows a position of a cursor, thereby representing cursor positions over time.
- the video may also show a selection identifier identifying a position in the image of the web page at which the first product tester 14 performed a selection (e.g., a clicking operation).
- the graphic may include an identifier (e.g., a circle) placed on the “growing line” wherever the product tester 14 performs a clicking operation.
- the system 10 may also include a video database 1314 configured to store the video in a non-transitory medium.
- the video database 1314 is configured to store the video in association with an identity of the first product tester 14 and in association with the product being tested.
- the image database 1314 may be one or more non-transitory medium located at a same facility or at different facilities.
- the system 10 also includes a testing monitoring module 1400 configured to monitor a progress of the product testing.
- the testing monitoring module 1400 is configured to determine a percentage of the product testing completed, a duration spent by the first product tester, a number of steps taken by the first product tester, time wasted by the first product tester, time lapsed before a first link is clicked by the first product tester, etc.
- the system 10 further includes a test result retrieval module 1500 configured to obtain a first testing result achieved by the first product tester 14 completing the product testing.
- the test result retrieval module 1500 is also configured to obtain additional testing result(s) from one or more additional product tester(s) 14 .
- the test result retrieval module 1500 may be configured to also obtain a second testing result achieved by the second product tester 14 completing the product testing.
- the system 10 further includes an analyzer 1502 configured to analyze the first testing result and the second testing result to determine whether the first testing result, the second testing result, or both of the first testing result and the second testing result, are reliable or not.
- the analyzer 1502 may also be configured to use other information obtained by the testing monitoring module 1400 , to determine whether one or more of the product testing results are reliable or not.
- the test result retrieval module 1500 may be configured to generate one or more product testing reports, such as those shown in FIGS. 8A-8C and FIGS. 10A-10E .
- the product testing reports may be provided to one or more users through one or more user interface(s) provided by the user interface generator 1350 .
- one or more reports may be provided to a user associated with the first party 12 providing the product being tested.
- one or more reports may be provided to an administrator or another user associated with the second party 16 .
- the system 10 may connect multiple product testers 14 to a certain product testing project.
- the testing interface module is configured to provide multiple instances of the testing interface to multiple product testers 14 .
- the testing interface e.g., an instance of it
- the system 10 may be configured to provide multiple instances of virtual testing environment for multiple product testers 14 to perform product testing.
- system 10 may connect multiple product testers 14 to multiple product testing projects to test different products created by different parties 12 .
- system 10 may be implemented using a single device, or using a plurality of devices.
- the entire system 10 may be implemented on a server in some embodiments.
- different components of the system 10 may be implemented on different machines, or on different sets of machines.
- the input(s) 1002 , the notification generator 1004 , the communication interface 1008 , the reply counter 1040 , the comparator 1042 , and the filter 1050 may be implemented using a first set of one or more devices
- the testing interface generator 1100 may be implemented using a second set of one or more devices
- the tracker 1300 , the graphic generator 1302 , and the video generator 1310 may be implemented using a third set of one or more devices
- the testing monitoring module 1400 may be implemented using a fourth set of one or more devices
- the test result retrieval module 1500 and the analyzer 1502 may be implemented using a fifth set of one or more devices.
- a device may be a processor, a computer, a server, a database, etc.
- the system and method described herein may be applied to test other products.
- the product may be any software, any hardware, any physical device, or any computer modeling.
- a component in the system 10 may be partially or completely implemented at a product tester's 14 device or at a device used by the first party 12 (e.g., a computer at the provider of the product being tested).
- all or a part of the testing interface generator 1100 may be implemented at a product tester's 14 device.
- a product tester may install an application provided by the second party 16 onto a device (e.g., a laptop, a desktop computer, a handheld device, etc.) of the product tester 14 , which allows the device to display a testing interface in response to the product tester 14 accepting a product testing project.
- the same application may also be installed by multiple product testers 14 .
- all or a part of the tracker 1300 , all or a part of the graphic generator 1302 , and/or all or a part of the video generator 1310 may be implemented at a product tester's 14 device.
- a product tester may install an application provided by the second party 16 onto a device (e.g., a laptop, a desktop computer, a handheld device, etc.) of the product tester 14 , which allows the device to track an action of the product tester 14 as the product tester 14 is using the device to perform the product testing, and to generate images and/or videos capturing the action of the product tester 14 .
- the same application may also be installed by multiple product testers 14 .
- all or a part of the user interface generator 1350 may be implemented at a product provider's (first party's 12 ) device.
- a product provider may install an application provided by the second party 16 onto a device (e.g., a laptop, a desktop computer, a handheld device, etc.) of the product provider, which allows the product provider to use its device to create product testing instruction, select product testing parameters, and provide information regarding the product that is desired to be tested.
- the application also allows the device at the product provider to view product testing results transmitted by the system 10 .
- the same application may also be installed by multiple product providers 12 .
- system 10 described herein is not limited to one or more devices associated with the second party 16 , and may include one or more devices being used by the product testers 14 , and/or one or more devices being used by users at the product provider (the first party 12 ).
- any of the components of the system 10 may be implemented using hardware, software, or a combination of hardware and software.
- each of the items below may be implemented using a hardware, software, or a combination of both: the one or more input(s) 1002 , the notification generator 1004 , the communication interface 1008 , the reply counter 1040 , the comparator 1042 , the filter 1050 , the product tester management module 1080 , the testing interface generator 1100 , the timer 1200 , the time-comparator 1202 , the tracker 1300 , the graphic generator 1302 , the video generator 1310 , the user interface generator 1350 , the testing monitoring module 1400 , the test result retrieval module 1500 , the analyzer 1502 .
- a processor-readable medium including a set of instructions for providing one or more features described herein.
- the instructions in the processor-readable medium when executed by a processing unit, will cause a method for providing a product testing to be performed.
- the instructions may include: instruction for providing a notification to inform a plurality of product testers that a product is available for product testing, wherein the product is associated with a first party and the notification generator is associated with a second party that is not the same as the first party; instruction for receiving an electronic reply from a device being used by a first product tester of the plurality of product testers through a network, the reply indicating that the first product tester will perform the product testing; instruction for updating a reply count in response to the received electronic reply; and instruction for, in response to the electronic reply, providing a testing environment that comprises a testing interface for the first product tester, the testing interface presenting features of the product and the product testing instruction for allowing the first product tester to perform the product testing on the product based on the product testing instruction, the product testing
- the system 10 and the method 200 described herein are advantageous because they allow a product to be tested efficiently under multiple different testing parameters.
- a software application may be tested under 10 different platforms by multiple product testers 14 .
- the product testing may be performed by multiple product testers 14 in parallel, the user at the product provider can obtain product testing results very quickly.
- multiple product testers 14 can be assigned to perform each product testing (e.g., testing an application under a certain platform), the product test result being provided to the product provider can be very accurate and reliable.
- the above benefits are provided for the product provider without the need for the product provider searching for qualified product testers. Accordingly, embodiments and features of the system 10 and the method 200 described herein have practical and real world utility, and they create tangible and concrete results that significantly improve the way product testing is performed.
- the system 10 is configured to obtain a product from the party 12 , and provide testing interface for allowing one or more tester(s) 14 to perform product testing on the product.
- the system 10 may be configured to perform product testing on one or more additional product(s) without requiring any human tester 14 .
- FIG. 11 illustrates an example of such scenario.
- the party 12 provides a product 1508 for product testing, and the system 10 provides testing interface for allowing one or more product testers 14 to perform product testing on the product 1508 .
- the product being tested comprises software.
- the party 12 may update the product to create a new version of the product.
- the party 12 may then send the updated product (e.g., new product) 1509 to the system 10 for product testing.
- the system in response to receiving a request for product testing from the party 12 to perform testing on the updated product 1509 , the system may create notification 1005 to initiate another round of product testing by one or more tester(s) 14 , as similarly discussed.
- the system 10 instead of having one or more human tester(s) 14 performing product testing on the updated product 1509 , the system 10 itself may perform product testing on behalf of a human tester 14 .
- the system 10 may utilize the tracked information obtained by the tracker 1300 to perform testing of the new product 1509 .
- the system 10 may re-execute the tracked actions of previous human tester 14 to test the new product 1509 . Accordingly, while the earlier product 1508 may be tested by human tester(s) 14 , a later product 1509 may be tested by the system 10 .
- an earlier product testing e.g., first product testing
- a later product testing e.g., a second product testing
- FIG. 12 illustrates a system 10 for providing product testing, wherein the system 10 includes additional features for allowing machine-testing of products.
- the system 10 is the same as the system 10 of FIG. 1B , except that the system 10 also includes a non-transitory medium 1520 (e.g., a tracked action database) for storing data based on a testing of a first product, a retrieving module 130 , and a product testing machine 1540 .
- the data stored in the non-transitory medium 1520 may be data regarding one or more tracked actions of tester(s) 14 performed while testing the first product 1508 .
- the retrieving module 1530 is configured to access an electronic file containing the data (generated based on the testing of the first product 1508 ) from the non-transitory medium 1520 .
- the product testing machine 1540 is configured to perform machine-testing for the second product 1509 based on the data in the electronic file.
- the second product 1509 may include one or more features that are different from the first product 1508 .
- the non-transitory medium 1520 is coupled to the tracker 1300 .
- the tracker 1300 is configured to track an interaction of a tester with a testing interface (e.g., testing interface 402 ) that presents features of a product being tested.
- the tracker 1300 is configured to provide data (representing tracked actions of testers 14 ) for storage in the non-transitory medium 1520 in a form of an electronic file, wherein the data is based on the tracked interaction of the testers 14 .
- the tracker 1300 may configured to track a movement of a cursor operated by the tester 14 .
- the tracker 1300 may be configured to track a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing.
- the tracker 1300 may also track a movement of a finger swipe, or a simulated finger swipe.
- the non-transitory medium 1520 is configured to store the electronic file in association with an identity of the first product 1508 .
- the electronic file may include information regarding tracked action(s) of a tester 14 that was performed to test a feature of the first product 1508 , and such electronic file is stored in the non-transitory medium 1520 in association with the identity of the first product 1508 .
- the non-transitory medium may also store one or more additional electronic files that are associated with the identity of the first product 1508 .
- the additional electronic file may include information regarding tracked action(s) of another tester 14 that was performed to test the same feature of the same first product 1508 .
- the retrieving module 1530 may then be configured to select one of the electronic file for use by the product testing machine 1540 .
- the product testing machine 1540 there may be a first electronic file having data regarding tracked actions of a first tester 14 who performed product testing on a product, and a second electronic file having data regarding tracked actions of a second tester 14 who performed product testing on the same product.
- the retrieving module 1530 may be configured to select one of the electronic files in the non-transitory medium 1520 having a latest time stamp for use by the product testing machine 1540 .
- the data in the electronic file may include information regarding tracked actions of a tester 14 , and respective time stamps of the tracked actions.
- the product testing machine 1540 is configured to re-execute the tracked actions for performing the testing of the second product based on the information in the electronic file regarding the tracked actions of the tester 14 .
- the time stamps allow the product testing machine 1540 to know the order of the actions to re-execute.
- the product testing machine 1540 may be configured to re-execute the tracked actions according to the same timing of the time stamps.
- the product testing machine 1540 may re-execute one or more of the tracked actions at timing that is different from those represented by the time stamps.
- the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard.
- the data in the electronic file may comprise: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing.
- the data in the electronic file may also be based on action(s) performed using a touchpad or touch screen.
- the tracked action(s) in the electronic file may be actions performed by a tester 14 while performing a prescribed task to test a feature of the first product 1508 . If the product testing of the first product 1508 involves multiple tasks, the electronic file may include multiple sets of tracked actions for the respective tasks.
- the non-transitory medium 1520 may store multiple electronic files for respective tasks to test the first product 1508 .
- a first electronic file may contain data regarding tracked action(s) of a tester who tested a first feature of the product
- a second electronic file may contain data regarding tracked action(s) of the tester who tested a second feature of the product.
- the first electronic file may be considered a first sub-file
- the second electronic file may be considered a second sub-file, wherein the first sub-file and the second sub-file are parts of a super-file that is associated with the testing of the product.
- file may be a single file, a sub-file that is a part of a super-file, multiple sub-files, multiple files that are associated with each other, or a folder that contains multiple files or sub-files.
- the data in an electronic file stored in the non-transitory medium 1520 may have the following data structure, or may be based on data having the following data structure: (Action type; details of tracked action). The following are some examples of action type and details of tracked action:
- Action type Details of tracked action Cursor movement (X1, Y1), (X2, Y2) Object selection (X1, Y1) Text/key typing (X1, Y1), Text/Key Finger/simulated swipe Swipe trajectory
- the associated detail of the tracked action may be a beginning position (X1, Y1) of the cursor, and an ending position (X2, Y2) of the cursor.
- the tracked action concerns object selection
- the associated detail of the tracked action may be a location (X1, Y1) of the object that was selected.
- the tracked action concerns text/key typing
- the associated detail of the tracked action may be a location (X1, Y1) of the text/key being typed, and the text/key being typed.
- the associated detail of the tracked action may be a trajectory of the swiping.
- the trajectory of the swiping may be a horizontal swipe, a vertical swipe, a diagonal swipe, a circular swipe, or any of other user-created swiping patterns.
- the electronic file retrieved by the retrieving module 1530 may comprise a script.
- the script may be generated by a script generator using data regarding tracked action(s) of a tester 14 . For example, if the data regarding tracked action is “Text/key typing, (225, 850), Blue”, the script generated based on such data may be a command or instruction prescribing that the text “Blue” be typed at the coordinate (225, 850) at a testing interface (e.g., testing interface 402 ) that is configured to test the product.
- the product testing machine 1540 is configured to run the script (which includes data based on tracked action(s) of a tester 14 while testing the first product 1508 ) for testing the second product 1509 .
- the script generator may be a part of the system 10 .
- the script generator may be a part of the product testing machine 1540 .
- the product testing machine 1540 is configured to access an electronic file in the non-transitory medium 1520 that contains data representing tracked actions of a tester 14 .
- the script generator in the product testing machine 1540 then generates a script based on the data representing the tracked actions, and the product testing machine 1540 then runs the script to perform machine-testing of the second product 1509 .
- the script generator may be implemented in the retrieving module 1530 and/or in the tracker 1300 .
- the script generator will be described in further detail below with reference to FIG. 22 , which illustrates an apparatus 2200 that may be used to implement the script generator.
- the script generator may be configured to consider the testing performed by multiple testers 14 (as opposed to just selecting data based on one tester 14 ).
- the script generator may be configured to examine the tracked actions from multiple testers 14 , which were performed to test the same feature of the same product, and extract the commonalities to create the script. For example, when interacting with a product to test a feature of the product, a first tester 14 may perform action A, and then may wait 30 seconds before performing action B. On the other hand, a second tester 14 may perform action A, and may then 5 seconds before performing action B to accomplish the same task to test the same feature of the product.
- the script generator may combine or merge these two sets of data to create a script, which prescribes that action A be performed, and then action B be performed 5 seconds after action A.
- the script generator performs a “MIN” function to select the smallest time gap between two actions A, B.
- the script generator may determine that the time gap between actions A, B does not affect a result of the testing.
- the script generator may create a script that prescribes action A be performed, and then action B be performed immediately or 1 second after action A.
- the script generator incorporate a time gap between actions A, B that is different from both the ones tracked in the first and second testers 14 .
- the script generator is advantageous because it converts the data representing previously tracked actions of a tester 14 into command(s) or instruction(s) executable by the product testing machine 1540 to perform machine-based product testing.
- the system 10 may not include the script generator.
- the product testing machine 1540 is configured to receive data representing previously tracked actions of a tester 14 , and use the data directly as input to perform a product testing on the product.
- the product testing machine 1540 itself is configured to understand the data representing the tracked actions of the tester 14 , and apply such data in a product testing algorithm to cause a product testing to be performed based on the data.
- the data is received by the product testing machine 1540 as input, and the product testing machine 1540 then runs an algorithm using the data to perform product testing on the second product 1509 .
- the script generator may not be needed in some embodiments.
- the product testing machine 1540 is configured to simulate actions of a tester 14 based on the data in the electronic file.
- the product testing machine 1540 may be configured to virtually move a cursor with respect to a testing interface (e.g., the testing interface 402 ) without input from a cursor control.
- the product testing machine 1540 may be configured to virtually make a selection in a testing interface without input from a user control.
- the product testing machine 1540 may be configured to virtually type a text in a field of a testing interface without input from a keyboard.
- the product testing machine 1540 may be configured to virtually create a finger/simulated swipe in a testing interface without input from a user control (e.g., touchpad, touch screen, etc.).
- the product testing machine 1540 may be configured to perform any combination of the foregoing to perform a product testing task.
- FIGS. 13A-13F illustrate an example of the above features regarding tracking actions of a tester 14 during testing of a first product, and using the tracked actions to perform machine-based product testing on a second product.
- the system 10 presents a testing interface 1800 for allowing a tester 14 to perform testing on a first product 1802 .
- the first product 1802 may be the first product 108 shown in FIG. 11 .
- the testing interface 1800 is similar to the testing interface 402 of FIG. 4 .
- the testing interface 1800 includes a window 1804 for presenting features of the first product 1802 being tested.
- the first product 1802 comprises a web page.
- the first product 1802 may be a web site, a computer application (e.g., an enterprise application), a mobile (e.g., handheld) device application, an application for a specialized processor, etc.
- the testing interface 1800 also includes a field 1810 providing one or more tasks 1812 for the product tester 14 to perform on the first product 1802 .
- the field 1810 may also provide a question for the tester 14 to answer in some cases.
- the first product 1802 being tested by the tester 14 via the testing interface 1800 includes tabs 1 - 5 .
- the testing interface 1800 is configured to test the feature of tab 4 in the example. Accordingly, the testing interface 1800 provides instruction in the field 1810 to instruct the tester 14 to select tab 4 . In response to the testing instruction to perform the tab 4 selection task, the tester 14 moves the cursor from the position shown in FIG. 13A to a new position shown in FIG. 13B .
- the tracker 1300 of the system 10 tracks the interaction of the tester 14 with respect to the first product 1802 presented in the testing interface 1800 .
- the tracker 1300 also tracks the selection.
- the first product 1802 presents an image 1820 of an apple ( FIG. 13D ), and the field 1810 of the testing interface 1800 asks the tester 14 to confirm whether he/she sees an apple.
- the tracker 1300 tracks the interaction of the tester 14 with respect to the testing interface 1800 .
- the tracker 1300 may generate the following data representing the tracked actions of the tester 14 :
- the above data may be stored in the non-transitory medium (e.g., tracked action database) 1520 of the system 10 for later use.
- the data may be stored in association with the first product 1802 tested by the tester 14 .
- the data may also be stored in association with an identity of the tester 14 .
- the data may be stored in association with metadata indicating the nature of the tester interaction.
- the above first two tracked actions may be stored with metadata “product feature selection” indicating that the actions were performed to select a feature in the product being tested.
- the non-transitory medium 1520 may store the image of FIG. 13F in association with the data representing the tracked actions. This image is useful because it includes a content (e.g., image of an apple in the example) indicating a successful result of the task for testing the tab 4 feature of the first product 1802 .
- the tracker 1300 may be configured to track cursor operation with respect to the product itself (i.e., features in the window 1804 ). In such cases, the tracker 1300 does not track cursor operations in the field 1810 of the testing interfaced 1800 . However, the tracker 1300 may still track other forms of tester interaction with the testing interface 1800 . For example, instead of asking the tester 14 to use the cursor to select “Y” or “N” to confirm whether he/she sees an apple, the testing interface 1800 may ask the tester 14 to press key “Y” or “N” in the keyboard, or may ask the tester 14 to say “Yes” or “No”. Accordingly, the tracker 1300 may be configured to track key stroke, voice input, etc. Data representing such tracked actions will then be stored in the non-transitory medium 1520 .
- the system 10 may later receive another request to test a new product (a second product) that is an updated version of the first product 1802 .
- a new product a second product
- the system 10 instead of having a tester 14 performing testing on the second product, the system 10 itself performs testing of the new product based on the data stored in the non-transitory medium 1520 .
- the retrieving module 1530 of the system 10 access the non-transitory medium 1520 to obtain the data representing the previously tracked actions of the tester 14 performed while testing the first product 1802 .
- the product testing machine 1540 then performs testing of the second product based on the data.
- the data may be used to create a script that prescribes actions to be performed by the product testing machine 1540 .
- the product testing machine 1540 executes the script, which causes the product testing machine 1540 to electronically operate a testing interface to test feature(s) of the second product.
- the product testing machine 1540 moves the cursor to position ( 1142 , 835 ), and selects the tab 4 at the position ( 1142 , 835 ).
- the second product 1830 (which may be the second product 1509 of FIG. 11 ) in the testing interface 1840 displays an apple in a window 1832 ( FIG. 14 ).
- the product testing machine 1540 does not repeat the tracked actions 3, 4. Instead, the product testing machine 1540 may compare the image from the testing interface 1840 obtained while the product testing machine 1540 is testing the new product 1830 , with the previously saved image (i.e., the image of FIG. 13F in the example) from the testing interface obtained while the tester 14 was testing the first product 1802 .
- FIG. 15 illustrates this concept.
- the product testing machine 1540 may obtain a first image 1850 that is associated with the testing of the first product 1802 , and obtain a second image 1852 that is associated with the testing of the second product 1830 .
- the first image 1850 is based on a completion of a first task (the task to test the tab 4 feature of the first product 1802 in the example) performed during the testing of the first product 1802 by the tester 14
- the second image 1852 may be based on a completion of a second task (the task to test the tab 4 feature of the second product 1830 in the example) performed during the testing of the second product 1830 by the product testing machine 1540 .
- the first image 1850 is the same as that shown in FIG.
- the first image 1850 comprises a first content (e.g., the image of the apple in the above example) of a first content of the first testing interface 1800 configured for testing the first product 1802 , the first content indicating a first result (e.g., a successful result) of a first task for testing the first product 1802 .
- a first content e.g., the image of the apple in the above example
- the first content indicating a first result (e.g., a successful result) of a first task for testing the first product 1802 .
- the second image 1852 comprises a second content (e.g., the image of the apple in the above example) of a second content of the second testing interface 1840 configured for testing the second product 1830 , the second content indicating a second result of a second task for testing the second product 1830 .
- a second content e.g., the image of the apple in the above example
- the first image 1850 may be an image of the first product 1802 without the first testing interface 1800
- the second image 1852 may be an image of the second product 1830 without the second testing interface 1840
- the first image 1850 comprises a first content (e.g., the image of the apple in the above example) of the first product 1802 , the first content indicating a first result (e.g., a successful result) of a first task for testing the first product 1802
- the second image 1852 comprises a second content (e.g., the image of the apple in the above example) of the second product 1830 , the second content indicating a second result of a second task for testing the second product 1830 .
- the product testing machine 1540 is also configured to apply a mask 1860 to the first image 1850 to create a first masked image 1862 , apply the mask 1860 to the second image 1852 to create a second masked image 1864 , and compare the first masked image 1862 with the second masked image 1864 .
- the mask 1860 is configured to block out one or more portions of the first image 1850 and the second image 1852 .
- the mask 1860 is advantageous because it blocks out information in the captured images 1850 , 1852 that are different from each other, but are not relevant in deciding whether the testing of the product feature fails or not. For example, as shown in the testing interface 1840 of FIG.
- the identity 1842 of the product being tested is different from that shown in FIG. 13F .
- the tester identity 1844 in the testing interface 1840 of FIG. 14 is “VM 3 ”, indicating that the testing is being performed by virtual machine No. 3, which is also different from that shown in FIG. 13F (showing the tester being “Tom”). In other cases, the tester identity 1844 may be shown in the product itself, as opposed to being displayed in a field of the testing interface.
- the testing date 1846 in the testing interface 1840 of FIG. 14 is also different from that shown in FIG. 13F .
- the product identity 1842 , the tester identity 1844 , and testing date 1846 are different between the first image 1850 and the second image 1852 .
- the mask 1860 contains one or more regions 1862 configured to block out these items in the first image 1850 and the second image 1852 .
- the mask 1860 may have one or more regions 1862 configured to block out items in the image of the first product 1802 , and corresponding items in the image of the second product 1830 .
- the product testing machine 1540 After the first masked image 1862 and the second masked image 1864 are obtained, the product testing machine 1540 then compares them to see if they are the same or sufficiently similar. If so, the product testing machine 1540 may then determine that the testing of the feature (e.g., the tab 4 feature in the above example) in the new product 1830 passes. On the other hand, if the comparison result indicates that the first masked image 1862 and the second masked image 1864 are not the same or not sufficiently similar, the product testing machine 1540 may then determine that the testing of the feature in the new product 1830 fails. Accordingly, the product testing machine 1540 is configured to determine whether the testing of a feature of a product fails or not based on the comparison of the first masked image 1862 and the second masked image 1864 .
- the product testing machine 1540 may be configured to perform cross correlation to determine a level of similarity between the first and second masked images 1862 , 1864 . If the level of similarity is above a certain prescribed threshold, then the product testing machine 1540 may consider the first and second masked images 1862 , 1864 as being the same or sufficiently similar.
- the prescribed threshold may be 0.8, 0.9, 0.95, etc, or any of other user-defined number (with 1.0 representing the situation in which the masked images 1862 , 1864 are identical).
- the product testing machine 1540 may be configured to perform an image subtraction between the first and second masked images 1862 , 1864 to obtain a subtracted image. If the first and second masked images 1862 , 1864 are identical, the subtracted image will have zero pixel values throughout. On the other hand, if the first and second masked images 1862 , 1864 are substantially similar, the subtracted image will have some non-zero pixel values, but not a lot. In one implementation, the product testing machine 1540 may be configured to count the number of non-zero pixel values in the subtracted image. If the number is below a certain prescribed threshold, the product testing machine 1540 may consider the first and second masked images 1862 , 1864 as being the same or sufficiently similar.
- the prescribed threshold may be 100 pixels, 80 pixels, 50 pixels, 10 pixels, etc, or any of other user-defined number.
- the prescribed threshold may be expressed as a percentage of the total number of pixels in the image.
- the prescribed threshold may be 5% of the total pixel numbers, 3% of the total pixel numbers, 1% of the total pixel numbers, etc, or any of other user-defined percentage.
- the product testing machine 1540 may also analyze the distribution of the non-zero pixel values in the subtracted image to determine whether the first and second masked images 1862 , 1864 are the same or substantially similar. If the non-zero pixel values in the subtracted image are spread out, then the product testing machine 1540 may determine that the non-zero pixel values are due to noise or due to inaccuracy in the alignment of the features in the two masked images 1862 , 1864 . In such cases, the two masked images 1862 , 1864 may be considered as being sufficiently similar. On the other hand, if the non-zero pixel values in the subtracted image are clustered in group(s), then the product testing machine 1540 may determine that the two masked images 1862 , 1864 are different or not substantially similar.
- the system 10 has been described with reference to testing a feature of the product 1830 .
- the system 10 may be configured to test multiple features of the product 1830 , wherein the multiple features includes at least a first feature and a second feature.
- the product testing machine 1540 may be configured to test the first feature, and the second feature.
- the product testing machine 1540 may be configured to test the first feature of the product 1830 by running a first script that is based on a first tracked action of a tester 14 , and test the second feature of the product 1830 by running a second script that is based on a second tracked action of the tester 14 .
- system 10 may be configured to test other features of other types of products.
- the system 10 may test a selection of a link, a selection of a button, an input of a command, etc.
- the first image 1850 of the testing interface 1800 may include a feature with varying configuration over time (e.g., a video, an animation, a moving object, etc.).
- the testing interface 1840 may also include the same feature with the varying configuration—i.e., when the same stage of the testing is reached.
- the image of the apple in the first image 1850 in the above example may be one of a plurality of image frames in a video of the first product 1802 that was captured during a testing session. In this example, the video shows a moving apple.
- the system 10 is configured to find an image (from a sequence of image frames in the video of the moving apple in the second product 1830 ) that matches the image of the apple in the first image 8150 (or in the first masked image 1862 ).
- FIG. 16 illustrates the above concept.
- the first image 1850 /the first masked image 1862 includes the image of the apple, which is one of the image frames in the video of the moving apple.
- the system 10 compares the image frames in the video with the image of the apple from the first image 1850 or from the first masked image 1862 .
- image frame 1864 b matches with the image of the apple associated with the first product 1802 . Accordingly, the system 10 can determine that the testing of the tab 4 feature of the second product 1830 passes.
- the image capturing feature described above may be performed by an image capturer 1550 (shown in FIG. 12 ).
- the image capturer 1550 is configured to determine a second image (which may be the second image 1852 or the second masked image 1864 ) by comparing a sequence of image frames 1864 with the first image (which may be the first image 1850 or the first masked image 1862 ), and selecting one of the image frames 1864 that matches the first image as the second image.
- the image capturer 1550 is configured to compare a region-of-interest in the first image with corresponding region-of-interest in the sequence of image frames.
- the image capturer 1550 is advantageous because it addresses the situation in which the stored first image 1802 (representing a success testing of a feature of the first product 1508 / 1802 ) is a part of a video or moving feature in the first product 1508 / 1802 .
- the machine-based testing by the product testing machine 1540 is based on a comparison of captured images (one from human-based testing, and another one from machine-based testing).
- the product testing machine 1540 will need to search through image frames from the same corresponding video or moving feature in the second product 1509 / 1830 in order to verify whether there is an image that matches with the first image (e.g., the first image 1850 /first masked image 1862 ).
- the system 10 may comprise a dispatch module 1560 configured to automatically send out a request to test the second product 1830 if the testing of the feature of the second product 1830 based on the comparison of the first and second masked images 1862 , 1864 fails.
- the testing of the new product by the product testing machine 1540 based on previously tracked actions of a tester 14 may result in a failed testing. This is a possible scenario because an updated product may have a feature that renders a previously tracked product testing action inapplicable for testing the updated product. If the machine-based product testing fails, the dispatch module 1560 then generates a signal to cause the notification generator 1004 to send out one or more requests for product testing by one or more testers 14 .
- the system 10 may then determine that the second product 1830 (e.g., the updated product) fails product testing (because it fails both the machine-based testing, and the human-based testing). On the other hand, if the product testing on the new product 1830 by one or more testers 14 passes, the system 10 may then determine that the new product 1830 passes product testing. In such cases, the system 10 then saves the tracked actions (the ones that results in the passing of the product testing on the new product 1830 ) of the tester 14 in the non-transitory medium 1520 for later use.
- the system 10 may then retrieve the electronic file with the latest tracked tester's actions for use by the product testing machine 1540 to perform machine-based product testing on the newest product.
- the product testing machine 1540 is described as repeating a selection of an object in the second product 1830 at a location in the second product 1830 that is the same as the location in the first product 1802 (as tracked by the tracker 1300 ). This is because the selection of the object in the first product 1802 by the tester 14 is tracked by the tracker 1300 , and it is assumed that the same object will appear in the second product 1830 when tested by the product testing machine 1540 . However, in some embodiments, the object selected in the first product 1802 may appear at a different location in the second product 1830 .
- the capturing of the image of a selected object may be performed by capturing a screenshot of the product when the tester 14 selects an object, and the coordinate of the object selection, which indicates the object being selected in the screenshot. Later on, when the product testing machine 1540 performs machine-testing of the second product 1830 , instead of repeating the selection of the object at the same location as that in the first product 1802 , the product testing machine 1540 searches an image of the second product 1830 to look for the same object that was previously selected by the tester 14 in the first product 1802 .
- the product testing machine 1540 may perform an image search to locate the tab 4 in the second product 1830 , and if the tab 4 is found, then product testing machine 1540 may then select the tab 4 , regardless of whether the tab 4 is at the same position with respect to the second product 1830 as that in the first product 1802 . Therefore, in other embodiments, instead of re-playing a testing action based on position (e.g., X, Y coordinates) of a previous testing action by a tester 14 , the product testing machine 1540 may re-play a previously tracked testing action based on appearance of an object and/or semantics.
- position e.g., X, Y coordinates
- the product being tested is not limited to the example and features described herein, and that the product being tested may have other features, and/or may be of different types.
- the product may comprise a web page, a web site, a computer application, a mobile device application, or a processor application.
- the system 10 is not limited to have the configuration shown in FIG. 12 , and that the system 10 is not limited to having the features described herein. In some embodiments, the system 10 may not include one or more of the items described with reference to FIG. 12 . Also, one or more of the items described with reference to FIG. 12 may be combined in some embodiments.
- the retrieving module 1530 and the product testing machine 1540 may be integrated. In such cases, the retrieving module 1530 may be one or more inputs, or one or more input interfaces, of a processing unit, wherein the processing unit may implement, or may be a part of, the product testing machine 1540 .
- the product testing machine 1540 may be a processing unit, or a part of a processing unit. Such processing unit may also be used to implement the tracker 1300 , the retrieving module 1530 , the image capturer 1550 , the dispatch module 1560 , or any combination of the foregoing. Alternatively, such processing unit may be communicatively coupled to the tracker 1300 , the retrieving module 1530 , the image capturer 1550 , the dispatch module 1560 , or any combination of the foregoing. Furthermore, in some embodiments, the electronic product testing system 10 may include only the product testing machine 1540 .
- the electronic product testing system 10 may not include the user interface generator 1350 , the product testing instruction database 1600 , the test result retrieval module 1500 , the testing monitoring module 1400 , the analyzer 1502 , or any combination of the foregoing. Also, in some embodiments, the electronic product testing system 10 may not include one or more items that are outside the dashed-box in FIG. 12 . In still further embodiments, the non-transitory medium 1520 may be excluded from the system 10 . In such cases, the system 10 is communicatively coupled to the non-transitory medium 1520 (e.g., via the Internet, a cable, or any of other types of network connection). Furthermore, in other embodiments, the product testing machine 1540 may be considered as a testing device. Such testing device may optionally include the image capturer 1550 and/or the dispatch module 1560 . Also, such testing device may include a processing unit for providing one or more features described herein.
- FIG. 17 illustrates a method 1900 in accordance with some embodiments.
- the method 1900 is a processor-implemented method for product testing.
- the method 1900 may be performed by the system 10 of FIG. 12 .
- the method 1900 includes accessing an electronic file, the electronic file containing data generated based on a testing of a first product (item 1902 ); and performing testing of a second product by a processing unit based on the data in the electronic file (item 1904 ).
- the second product may have at least one feature that is different from the first product.
- the first product may be the first product 1802 described in the previous example, and the second product may be the second product 1830 described in the previous example.
- the data in the electronic file comprises information regarding tracked actions of a tester, and respective time stamps of the tracked actions.
- the act of performing the testing of the second product comprises re-executing the tracked actions to test the second product based on the information in the electronic file regarding the tracked actions of the tester.
- the act of performing the testing of the second product comprises simulating actions of a tester.
- the electronic file comprises a script
- the act of performing the testing of the second product comprises running the script for testing the second product.
- the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard.
- the data in the electronic file comprises: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing.
- the electronic file is stored in a non-transitory medium in association with an identity of the first product.
- the non-transitory medium also stores one or more additional electronic files that are associated with the identity of the first product.
- the act of accessing the electronic file comprises selecting one of the electronic files in the non-transitory medium having a latest time stamp.
- the method 1900 may further include: obtaining a first image that is associated with the testing of the first product, and obtaining a second image that is associated with the testing of the second product.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product.
- the first image comprises a first content of a first testing interface configured for testing the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of a second testing interface configured for testing the second product, the second content indicating a second result of a second task for testing the second product.
- the method 1900 may further include: applying a mask to the first image to create a first masked image, applying the mask to the second image to create a second masked image, and comparing the first masked image with the second masked image.
- the mask is configured to block out one or more portions of the first image and the second image.
- the testing of the second product comprises testing a feature of the second product, and wherein the method further comprising determining whether the testing of the feature of the second product fails or not based on the comparison of the first masked image and the second masked image.
- the method 1900 may further include automatically sending out a request to test the second product if the testing of the feature of the second product based on the comparison of the first and second masked images fails.
- the processing unit is configured to test multiple features of the second product, the multiple features comprising at least a first feature and a second feature, wherein the act of performing testing of the second product comprises testing the first feature of the second product by running a first script that is based on a first tracked action of a tester, and testing the second feature of the second product by running a second script that is based on a second tracked action of the tester.
- the method 1900 may further include determining the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- the method 1900 may further include tracking an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction.
- the act of tracking comprises tracking a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing.
- the first product comprises a web page, a web site, a computer application, a mobile device application, or a processor application.
- the act of performing the testing of the second product comprises virtually moving a cursor with respect to a testing interface without input from a cursor control.
- the act of performing the testing of the second product comprises virtually typing a text in a field of a testing interface without input from a keyboard.
- the method 1900 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium.
- the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: accessing an electronic file, the electronic file containing data generated based on a testing of a first product; and performing testing of a second product based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- FIG. 18 illustrates an apparatus 1950 , which is a component of an electronic product testing system, wherein the component is configured to provide the above features.
- the component 1950 may be a processing unit.
- the apparatus 1950 itself may be considered as a product testing device/system, or a component of a product testing device/system.
- the apparatus 1950 may be implemented as a part of the product testing machine 1540 , or as a module that is communicatively coupled to the product testing machine 1540 .
- the apparatus 1950 includes one or more input(s) 1954 configured to obtain a first image that is associated with a testing of the first product, and to obtain a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product.
- the apparatus 1950 also includes a mask applicator 1954 configured to apply a mask to the first image to create a first masked image, and to apply the mask to the second image to create a second masked image.
- the apparatus 1950 also includes a comparator 1956 configured to compare the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- the first image may be the image 1850 of FIG. 15
- the second image may be the image 1852 of FIG. 15
- the mask may be the mask 1860 of FIG. 15 .
- the mask is configured to block out one or more portions of the first image and the second image.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product
- the first image comprises a first content of a first testing interface configured for testing the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of a second testing interface configured for testing the second product, the second content indicating a second result of a second task for testing the second product.
- the apparatus 1950 may further include an image capturer configured to determine the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- the method 1980 also includes: applying, by the mask applicator, the mask to the second image to create a second masked image (item 1986 ).
- the method 1980 further includes: comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not (item 1988 ).
- the first product may be the first product 1802 described in the previous example, and the second product may be the second product 1830 described in the previous example.
- the first image is based on a completion of a first task performed during the testing of the first product
- the second image is based on a completion of a second task performed during the testing of the second product
- the method 1980 further includes determining, by an image capturer, the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- the apparatus 2000 may be implemented as a part of the product testing machine 1540 , or as a module that is communicatively coupled to the product testing machine 1540 .
- the apparatus 2000 includes: one or more input(s) 2002 configured to receive a first image of a product captured during a first testing of the product, and a second image of the product captured during a second testing of the product.
- the apparatus 2000 also includes an image analyzer 2004 configured to determine a first part of the product that is different in the first image and the second image.
- the apparatus 2000 also includes a mask generator 2006 configured to create a mask for covering an image of the first part of the product.
- the first testing of the product is associated with a first tester
- the second testing of the product is associated with a second tester.
- the image analyzer 2004 is configured to perform an image subtraction based on the first image and the second image to obtain a subtracted image.
- the mask generator 2006 is configured to create the mask based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image.
- the image analyzer 2004 is configured to determine a second part of the product that is different in the first image and the second image, and wherein the mask generator 2006 is configured to create the mask for also covering the image of the second part of the product.
- the apparatus 2000 further includes a non-transitory medium configured to store the mask in association with an identity of the product.
- FIG. 21 illustrates a method 2100 in accordance with some embodiments.
- the method 2100 is a processor-implemented method for product testing.
- the method 2100 may be performed by the system 10 of FIG. 12 .
- the method 2100 may be performed by the apparatus 2000 of FIG. 20 .
- the method 2100 includes: receiving a first image of a product captured during a first testing of the product (item 2102 ); receiving a second image of the product captured during a second testing of the product (item 2104 ); determining a first part of the product that is different in the first image and the second image (item 2106 ); and creating a mask for covering an image of the first part of the product (item 2108 ).
- the first testing of the product is associated with a first tester
- the second testing of the product is associated with a second tester.
- the act of determining the first part of the product that is different in the first image and the second image comprises performing an image subtraction based on the first image and the second image to obtain a subtracted image.
- the act of determining the first part of the product that is different in the first image and the second image also comprises analyzing a distribution of non-zero pixel values in the subtracted image.
- the mask is created based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image.
- the method 2100 may further include determining a second part of the product that is different in the first image and the second image, and wherein the mask is created for also covering the image of the second part of the product.
- the method 2100 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium.
- the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving a first image of a product captured during a first testing of the product; receiving a second image of the product captured during a second testing of the product; determining a first part of the product that is different in the first image and the second image; and creating a mask for covering an image of the first part of the product.
- the product testing machine 1540 is configured perform machine-based product testing based on a script, wherein the script is based on a previous testing performed by a tester.
- the system 10 may further include a component configured to generate the script.
- FIG. 22 illustrates an apparatus 2200 , which is a component of an electronic product testing system, wherein the component is configured to create a script for execution by a product testing device.
- the component 2200 may be a processing unit.
- the apparatus 2200 itself may be considered as a component of a product testing device.
- the apparatus 2200 may be implemented as a part of the product testing machine 1540 , or as a module that is communicatively coupled to the product testing machine 1540 .
- the apparatus 2200 includes: an input 2202 configured to receive first data regarding a first tracked action performed while testing a first product; and a processing unit 2204 configured to create a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- the apparatus is a part of the product testing machine.
- the input 2202 is also configured to receive second data regarding a second tracked action performed while testing the first product, and wherein the processing unit 2204 is configured to create the script based also on the second data.
- the first tracked action was for testing a first feature of the first product
- the second tracked action was for testing a second feature of the first product.
- the first tracked action was for testing a feature of the first product by a first tester
- the second tracked action was for testing the feature of the first product by a second tester.
- the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the processing unit 2204 is configured to select a shorter one of the first period and the second period for inclusion in the script.
- the first data is stored in a first file
- the second data is stored in a second file
- the processing unit is configured to create the script by combining the first data and the second data.
- the apparatus 2200 further includes a non-transitory medium configured to store the script for access by the product testing machine.
- the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
- FIG. 23 illustrates a method 2300 in accordance with some embodiments.
- the method 2300 is a processor-implemented method for product testing.
- the method 2300 is for creating a script for execution by a product testing machine to perform machine-based product testing.
- the method 2300 may be performed by the system 10 of FIG. 12 .
- the method 2300 may be performed by the apparatus 2200 of FIG. 22 .
- the method 2300 includes: receiving first data regarding a first tracked action performed while testing a first product (item 2302 ); and creating, by a processing unit, a script based on the first data (item 2304 ).
- the script is electronically executable by a product testing machine (e.g., product testing machine 1540 ) to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- a product testing machine e.g., product testing machine 1540
- the processing unit is a part of the product testing machine.
- the method 2300 may further include receiving second data regarding a second tracked action performed while testing the first product, and wherein the script is created based also on the second data.
- the first tracked action was for testing a first feature of the first product
- the second tracked action was for testing a second feature of the first product.
- the first tracked action was for testing a feature of the first product by a first tester
- the second tracked action was for testing the feature of the first product by a second tester.
- the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the method further comprises selecting a shorter one of the first period and the second period for inclusion in the script.
- the first data is stored in a first file
- the second data is stored in a second file
- the script is created by combining the first data and the second data.
- the method 2300 may further include storing the script in a non-transitory medium for access by the product testing machine.
- the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
- the method 2300 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium.
- the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving first data regarding a first tracked action performed while testing a first product; and creating, by the processing unit, a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- FIG. 24 is a block diagram illustrating an embodiment of a specialized processing system 2600 that can be used to implement various embodiments or features described herein.
- the processing system 2600 may be used to implement the system 10 of FIG. 1A and FIG. 1B , the system 10 of FIG. 11 and FIG. 12 , or any component thereof.
- the processing system 2600 may be an example of a device being used by a product tester.
- the processing system 2600 may be used to implement the tracker 1300 , the retrieving module 1530 , the product testing machine 1540 , the image capturer 1550 , the dispatch module 1560 , a component of any of the foregoing, or any combination of the foregoing.
- the processing system 2600 may be considered a processing unit that is a part of the tracker 1300 , a part of the retrieving module 1530 , a part of the product testing machine 1540 , a part of the image capturer 1550 , a part of the dispatch module 1560 , or any combination of the foregoing.
- the processing system 2600 may be configured to implement the apparatus 1950 , the apparatus 2000 , the apparatus 2200 , or any combination of the foregoing.
- Processing system 2600 includes a bus 2602 or other communication mechanism for communicating information, and a processor 2604 coupled with the bus 2602 for processing information.
- the processor system 2600 also includes a main memory 2606 , such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 2602 for storing information and instructions to be executed by the processor 2604 .
- the main memory 2606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor 2604 .
- the processor system 2600 further includes a read only memory (ROM) 2608 or other static storage device coupled to the bus 2602 for storing static information and instructions for the processor 2604 .
- ROM read only memory
- a data storage device 2610 such as a magnetic disk or optical disk, is provided and coupled to the bus 2602 for storing information and instructions.
- the processor system 2600 may be coupled via the bus 2602 to a display 2612 , such as a cathode ray tube (CRT), for displaying information to a user.
- a display 2612 such as a cathode ray tube (CRT)
- An input device 2614 is coupled to the bus 2602 for communicating information and command selections to processor 2604 .
- cursor control 2616 is Another type of user input device
- cursor control 2616 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 2604 and for controlling cursor movement on display 2612 .
- This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
- the processor system 2600 can be used to perform various functions described herein. According to some embodiments, such use is provided by processor system 2600 in response to processor 2604 executing one or more sequences of one or more instructions contained in the main memory 2606 . Those skilled in the art will know how to prepare such instructions based on the functions and methods described herein. Such instructions may be read into the main memory 2606 from another processor-readable medium, such as storage device 2610 . Execution of the sequences of instructions contained in the main memory 2606 causes the processor 2604 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory 2606 . In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the various embodiments described herein. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
- processor-readable medium refers to any medium that participates in providing instructions to the processor 2604 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media.
- Non-volatile media includes, for example, optical or magnetic disks, such as the storage device 2610 .
- a non-volatile medium may be considered an example of non-transitory medium.
- Volatile media includes dynamic memory, such as the main memory 2606 .
- a volatile medium may be considered an example of non-transitory medium.
- Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise the bus 2602 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
- processor-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a processor can read.
- processor-readable media may be involved in carrying one or more sequences of one or more instructions to the processor 2604 for execution.
- the instructions may initially be carried on a magnetic disk of a remote computer.
- the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
- a modem local to the processing system 2600 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal.
- An infrared detector coupled to the bus 2602 can receive the data carried in the infrared signal and place the data on the bus 2602 .
- the bus 2602 carries the data to the main memory 2606 , from which the processor 2604 retrieves and executes the instructions.
- the instructions received by the main memory 2606 may optionally be stored on the storage device 2610 either before or after execution by the processor 2604 .
- the processing system 2600 also includes a communication interface 2618 coupled to the bus 2602 .
- the communication interface 2618 provides a two-way data communication coupling to a network link 2620 that is connected to a local network 2622 .
- the communication interface 2618 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line.
- ISDN integrated services digital network
- the communication interface 2618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
- LAN local area network
- Wireless links may also be implemented.
- the communication interface 2618 sends and receives electrical, electromagnetic or optical signals that carry data streams representing various types of information.
- the network link 2620 typically provides data communication through one or more networks to other devices.
- the network link 2620 may provide a connection through local network 2622 to a host computer 2624 or to equipment 2626 such as a radiation beam source or a switch operatively coupled to a radiation beam source.
- the data streams transported over the network link 2620 can comprise electrical, electromagnetic or optical signals.
- the signals through the various networks and the signals on the network link 2620 and through the communication interface 2618 which carry data to and from the processing system 2600 , are exemplary forms of carrier waves transporting the information.
- the processing system 2600 can send messages and receive data, including program code, through the network(s), the network link 2620 , and the communication interface 2618 .
- image is not limited to an image that is displayed, and may also include image that is not displayed, such as image data stored in a non-transitory medium.
- video is not limited to a video that is displayed, and may also include video that is not displayed, such as video data stored in a non-transitory medium.
- first”, “second”, “third”, etc. do not necessarily refer to order of items. Rather, these terms may be used to distinguish different items from each other.
- first product tester does not necessarily mean that the product tester is the first in order.
- second product tester does not necessarily mean that the product tester is the second in order. Rather, these terms are used to identify two different product testers.
- the term “machine” (as in the term “product testing machine”) may refer to a device, a component, a system, an application, software, a virtual machine, or any form of a processing unit or module, that is configured to perform one or more desired functions.
- a machine may include at least some hardware.
- the term “device” may refer to a physical device, a component, a system, an application, software, a virtual machine, or any form of a processing unit or module, that is configured to perform one or more desired functions.
- a device may include at least some hardware.
- processing unit may refer to hardware, software, or combination thereof.
- processing unit may refer to one or more processors, one or more pieces of software or applications, one or more computing systems or component(s) thereof, one or more virtual machines or component(s) thereof, etc.
- a processing unit may include at least some hardware.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Image Analysis (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Electric Vacuum Cleaner (AREA)
Abstract
Description
- This disclosure is related to U.S. patent application Ser. No. 15/784,064, filed on Oct. 13, 2017.
- This application relates generally to product testing, and more specifically, to systems and methods for providing product testing.
- Many products require product testing. Supplier of products generally require products be tested before they can be made available to customers. Testing of products can be a lengthy and complicated process. There may be many different technical features in the product that need to be tested under different testing parameters. Many product suppliers may not have in-house product testers. These product suppliers will need to outsource product testing to outside product testers. However, finding the right product testers who can adequately perform the product testing project can itself be a time consuming process, and can be challenging. If the product supplier needs fast turn-around time for the product testing for its product, such out-sourcing technique may not be suitable.
- An electronic product testing system includes: a retrieving module configured to access an electronic file, the electronic file containing data generated based on a testing of a first product; and a testing device having a processing unit configured to perform testing of a second product based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- Optionally, the data in the electronic file comprises information regarding tracked actions of a tester, and respective time stamps of the tracked actions.
- Optionally, the processing unit is configured to re-execute the tracked actions for performing the testing of the second product based on the information in the electronic file regarding the tracked actions of the tester.
- Optionally, the processing unit is configured to simulate actions of a tester based on the data in the electronic file.
- Optionally, the electronic file comprises a script, and wherein the processing unit is configured to run the script for testing the second product.
- Optionally, the script is based on tracked actions of multiple testers.
- Optionally, the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard.
- Optionally, the data in the electronic file comprises: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing.
- Optionally, the system further includes a non-transitory medium storing the electronic file in association with an identity of the first product.
- Optionally, the non-transitory medium is configured to store one or more additional electronic files that are associated with the identity of the first product.
- Optionally, the retrieving module is configured to obtain the electronic file by selecting one of the electronic files in the non-transitory medium having a latest time stamp.
- Optionally, the processing unit is configured to: obtain a first image that is associated with the testing of the first product, and obtain a second image that is associated with the testing of the second product.
- Optionally, the first image is stored in a non-transitory medium in association with the data, the data comprising information regarding a tracked action of a tester.
- Optionally, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product.
- Optionally, the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- Optionally, the processing unit is further configured to: apply a mask to the first image to create a first masked image, apply the mask to the second image to create a second masked image, and compare the first masked image with the second masked image.
- Optionally, the mask is configured to block out one or more portions of the first image and the second image.
- Optionally, the testing of the second product comprises testing a feature of the second product, and wherein the processing unit is configured to determine whether the testing of the feature of the second product fails or not based on the comparison of the first masked image and the second masked image.
- Optionally, the processing unit comprises a dispatch module configured to automatically send out a request to test the second product if the testing of the feature of the second product based on the comparison of the first and second masked images fails.
- Optionally, the processing unit is configured to test multiple features of the second product, the multiple features comprising at least a first feature and a second feature, wherein the processing unit is configured to test the first feature of the second product by running a first script that is based on a first tracked action of a tester, and wherein the processing unit is configured to test the second feature of the second product by running a second script that is based on a second tracked action of the tester.
- Optionally, the processing unit comprises an image capturer configured to determine the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- Optionally, the system further includes a tracker configured to track an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction.
- Optionally, the tracker is configured to track a movement of a cursor operated by the tester.
- Optionally, the tracker is configured to track a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing.
- Optionally, the tracker is configured to track a key stroke and/or a voice input.
- Optionally, the first product comprises a web page, a web site, a computer application, a mobile device application, or a processor application.
- Optionally, the processing unit is configured to virtually move a cursor with respect to a testing interface without input from a cursor control.
- Optionally, the processing unit is configured to virtually make a cursor selection in a testing interface without input from a cursor control.
- Optionally, the processing unit is configured to virtually type a text in a field of a testing interface without input from a keyboard.
- Optionally, the testing of the first product is human-based, and the testing of the second product is machine-based.
- Optionally, the data comprises information regarding a selection of a first object, the first object being at a first position in the first product; and wherein the processing unit is configured to perform the testing of the second product by selecting a second object in the second product based on the information regarding the selection of the first object in the first product, the second object being at a second position in the second product, wherein the second position is different from the first position.
- A processor-implemented method for product testing, includes: accessing an electronic file, the electronic file containing data generated based on a testing of a first product; and performing testing of a second product by a processing unit based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- Optionally, the data in the electronic file comprises information regarding tracked actions of a tester, and respective time stamps of the tracked actions.
- Optionally, the act of performing the testing of the second product comprises re-executing the tracked actions to test the second product based on the information in the electronic file regarding the tracked actions of the tester.
- Optionally, the act of performing the testing of the second product comprises simulating actions of a tester.
- Optionally, the electronic file comprises a script, and wherein the act of performing the testing of the second product comprises running the script for testing the second product.
- Optionally, the script is based on tracked actions of multiple testers.
- Optionally, the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard.
- Optionally, the data in the electronic file comprises: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing.
- Optionally, the electronic file is stored in a non-transitory medium in association with an identity of the first product.
- Optionally, the non-transitory medium also stores one or more additional electronic files that are associated with the identity of the first product.
- Optionally, the act of accessing the electronic file comprises selecting one of the electronic files in the non-transitory medium having a latest time stamp.
- Optionally, the method further includes: obtaining a first image that is associated with the testing of the first product, and obtaining a second image that is associated with the testing of the second product.
- Optionally, the first image is stored in a non-transitory medium in association with the data, the data comprising information regarding a tracked action of a tester.
- Optionally, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product.
- Optionally, the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- Optionally, the method further includes: applying a mask to the first image to create a first masked image, applying the mask to the second image to create a second masked image, and comparing the first masked image with the second masked image.
- Optionally, the mask is configured to block out one or more portions of the first image and the second image.
- Optionally, the testing of the second product comprises testing a feature of the second product, and wherein the method further comprising determining whether the testing of the feature of the second product fails or not based on the comparison of the first masked image and the second masked image.
- Optionally, the method further includes automatically sending out a request to test the second product if the testing of the feature of the second product based on the comparison of the first and second masked images fails.
- Optionally, the processing unit is configured to test multiple features of the second product, the multiple features comprising at least a first feature and a second feature, wherein the act of performing testing of the second product comprises testing the first feature of the second product by running a first script that is based on a first tracked action of a tester, and testing the second feature of the second product by running a second script that is based on a second tracked action of the tester.
- Optionally, the method further includes determining the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- Optionally, the method further includes tracking an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction.
- Optionally, the act of tracking comprises tracking a movement of a cursor operated by the tester.
- Optionally, the act of tracking comprises tracking a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing.
- Optionally, the act of tracking comprises tracking a key stroke and/or a voice input.
- Optionally, the first product comprises a web page, a web site, a computer application, a mobile device application, or a processor application.
- Optionally, the act of performing the testing of the second product comprises virtually moving a cursor with respect to a testing interface without input from a cursor control.
- Optionally, the act of performing the testing of the second product comprises virtually making a cursor selection in a testing interface without input from a cursor control.
- Optionally, the act of performing the testing of the second product comprises virtually typing a text in a field of a testing interface without input from a keyboard.
- Optionally, the testing of the first product is human-based, and the testing of the second product is machine-based.
- Optionally, wherein the data comprises information regarding a selection of a first object, the first object being at a first position in the first product; and wherein the testing of the second product comprises selecting a second object in the second product based on the information regarding the selection of the first object in the first product, the second object being at a second position in the second product, wherein the second position is different from the first position.
- A processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: accessing an electronic file, the electronic file containing data generated based on a testing of a first product; and performing testing of a second product based on the data in the electronic file, the second product having at least one feature that is different from the first product.
- An electronic product testing system includes: one or more input(s) configured to obtain a first image that is associated with a testing of the first product, and to obtain a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; a mask applicator configured to apply a mask to the first image to create a first masked image, and to apply the mask to the second image to create a second masked image; and a comparator configured to compare the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- Optionally, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product.
- Optionally, the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- Optionally, the mask is configured to block out one or more portions of the first image and the second image.
- Optionally, the system further includes an image capturer configured to determine the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- A processor-implemented method for product testing, includes: obtaining, by one or more input(s), a first image that is associated with a testing of the first product, and a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; applying, by a mask applicator, a mask to the first image to create a first masked image; applying, by the mask applicator, the mask to the second image to create a second masked image; and comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- Optionally, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product.
- Optionally, the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product.
- Optionally, the mask is configured to block out one or more portions of the first image and the second image.
- Optionally, the method further includes determining, by an image capturer, the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image.
- A processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: obtaining, by one or more input(s), a first image that is associated with a testing of the first product, and a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; applying, by a mask applicator, a mask to the first image to create a first masked image; applying, by the mask applicator, the mask to the second image to create a second masked image; and comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not.
- An apparatus for use in product testing, includes: an input configured to receive first data regarding a first tracked action performed while testing a first product; and a processing unit configured to create a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- Optionally, the apparatus is a part of the product testing machine.
- Optionally, the input is also configured to receive second data regarding a second tracked action performed while testing the first product, and wherein the processing unit is configured to create the script based also on the second data.
- Optionally, the first tracked action was for testing a first feature of the first product, and the second tracked action was for testing a second feature of the first product.
- Optionally, the first tracked action was for testing a feature of the first product by a first tester, and the second tracked action was for testing the feature of the first product by a second tester.
- Optionally, the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the processing unit is configured to select a shorter one of the first period and the second period for inclusion in the script.
- Optionally, the first data is stored in a first file, the second data is stored in a second file, and wherein the processing unit is configured to create the script by combining the first data and the second data.
- Optionally, the apparatus further includes a non-transitory medium configured to store the script for access by the product testing machine.
- Optionally, the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
- A processor-implemented method for product testing, includes: receiving first data regarding a first tracked action performed while testing a first product; and creating, by a processing unit, a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- Optionally, the processing unit is a part of the product testing machine.
- Optionally, the method further includes receiving second data regarding a second tracked action performed while testing the first product, and wherein the script is created based also on the second data.
- Optionally, the first tracked action was for testing a first feature of the first product, and the second tracked action was for testing a second feature of the first product.
- Optionally, the first tracked action was for testing a feature of the first product by a first tester, and the second tracked action was for testing the feature of the first product by a second tester.
- Optionally, the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the method further comprises selecting a shorter one of the first period and the second period for inclusion in the script.
- Optionally, the first data is stored in a first file, the second data is stored in a second file, and wherein the script is created by combining the first data and the second data.
- Optionally, the method further includes storing the script in a non-transitory medium for access by the product testing machine.
- Optionally, the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
- A processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving first data regarding a first tracked action performed while testing a first product; and creating, by the processing unit, a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product.
- An apparatus for use in product testing, includes: one or more input(s) configured to receive a first image of a product captured during a first testing of the product, and a second image of the product captured during a second testing of the product; an image analyzer configured to determine a first part of the product that is different in the first image and the second image; and a mask generator configured to create a mask for covering an image of the first part of the product.
- Optionally, the first testing of the product is associated with a first tester, and the second testing of the product is associated with a second tester.
- Optionally, the image analyzer is configured to perform an image subtraction based on the first image and the second image to obtain a subtracted image.
- Optionally, the image analyzer is configured to analyze a distribution of non-zero pixel values in the subtracted image.
- Optionally, the mask generator is configured to create the mask based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image.
- Optionally, the image analyzer is configured to determine a second part of the product that is different in the first image and the second image, and wherein the mask generator is configured to create the mask for also covering the image of the second part of the product.
- Optionally, the apparatus further includes a non-transitory medium configured to store the mask in association with an identity of the product.
- A processor-implemented method for product testing, includes: receiving a first image of a product captured during a first testing of the product; receiving a second image of the product captured during a second testing of the product; determining a first part of the product that is different in the first image and the second image; and creating a mask for covering an image of the first part of the product.
- Optionally, the first testing of the product is associated with a first tester, and the second testing of the product is associated with a second tester.
- Optionally, the act of determining the first part of the product that is different in the first image and the second image comprises performing an image subtraction based on the first image and the second image to obtain a subtracted image.
- Optionally, the act of determining the first part of the product that is different in the first image and the second image also comprises analyzing a distribution of non-zero pixel values in the subtracted image.
- Optionally, the mask is created based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image.
- Optionally, the method further includes determining a second part of the product that is different in the first image and the second image, and wherein the mask is created for also covering the image of the second part of the product.
- Optionally, the method further includes storing the mask in a non-transitory medium in association with an identity of the product.
- A processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving a first image of a product captured during a first testing of the product; receiving a second image of the product captured during a second testing of the product; determining a first part of the product that is different in the first image and the second image; and creating a mask for covering an image of the first part of the product.
- Other and further aspects and features will be evident from reading the following detailed description of the embodiments.
- The drawings illustrate the design and utility of embodiments, in which similar elements are referred to by common reference numerals. These drawings are not necessarily drawn to scale. In order to better appreciate how the above-recited and other advantages and objects are obtained, a more particular description of the embodiments will be rendered, which are illustrated in the accompanying drawings. These drawings depict only typical embodiments and are not therefore to be considered limiting of its scope.
-
FIG. 1A illustrates a system for providing product testing. -
FIG. 1B illustrates an example of the system ofFIG. 1A . -
FIG. 2A illustrates a method for providing product testing. -
FIG. 2B illustrates a method of tracking a progress of a product testing session. -
FIG. 3 illustrates an example of a user interface for providing a notification to a product tester. -
FIG. 4 illustrates an example of a testing environment having a user interface for allowing a product tester to perform product testing. -
FIG. 5 illustrates an example of a data structure for linking assigned product testing tasks with product testing questions, answers, and tracker identifiers. -
FIG. 6 illustrates an example of an image capturing an interaction of a product tester with a product being tested. -
FIG. 7 illustrates an example of a data structure for creating a graphic associated with an image of a web page being tested. -
FIG. 8A-8C illustrates an example of a report summarizing a result of a product testing. -
FIG. 9 illustrates an example of a user interface for allowing a user to create tasks for product testing and to define product testing parameters. -
FIG. 10A-10E illustrate an example of a report that is provided to an administrator of the system ofFIG. 1A . -
FIG. 11 illustrates a system for providing product testing. -
FIG. 12 illustrates an example of the system ofFIG. 11 . -
FIGS. 13A-13F illustrate an example of tracking actions of a tester performing product testing using a testing interface. -
FIG. 14 illustrates an example of an interface being used by a product testing machine to perform product testing. -
FIG. 15 illustrates an image processing technique. -
FIG. 16 illustrates a concept of image capture for image matching. -
FIG. 17 illustrates a method for providing product testing. -
FIG. 18 illustrates a component of a product testing system. -
FIG. 19 illustrates a method for use in product testing. -
FIG. 20 illustrates a component of a product testing system. -
FIG. 21 illustrates a method for use in product testing. -
FIG. 22 illustrates a component of a product testing system. -
FIG. 23 illustrates a method for use in product testing. -
FIG. 24 is a block diagram of a specialized processing system. - Various embodiments are described hereinafter with reference to the figures. It should be noted that the figures are not drawn to scale and that elements of similar structures or functions are represented by like reference numerals throughout the figures. It should also be noted that the figures are only intended to facilitate the description of the embodiments. They are not intended as an exhaustive description of the invention or as a limitation on the scope of the invention. In addition, an illustrated embodiment needs not have all the aspects or advantages shown. An aspect or an advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiments even if not so illustrated.
-
FIG. 1A illustrates asystem 10 for providing product testing. Thesystem 10 is configured to connect aparty 12 that has developed a product with one ormore product testers 14. By means of non-limiting examples, the product may be a web page, a web site, a computer application (e.g., an enterprise application), a mobile (e.g., handheld) device application, an application for a specialized processor (e.g., an image processor, a signal processor, a sound processor, a speech processor, a processor in a vehicle (such as a car, a plane, etc.), or any of other types of processor). Theproduct testers 14 may be individuals residing in different parts of the world. For example, thetesters 14 may reside in different parts of a city, different cities, different states, and/or different countries. In the illustrated embodiments, thesystem 10 is associated with aparty 16 that is different from theparty 12. For example, the party 12 (first party) providing the product may be a first company, and the party 16 (second party) interfacing with theparty 12 and theproduct testers 14 may be a second company that is not the same as the first company. Also, in some embodiments, theproduct testers 14 are not employees of thefirst party 12, and are not employees of thesecond party 16. For example, theproduct testers 14 may be individual contractors. In other embodiments, one or more of theproduct testers 14 may be employees of theparty 16. -
FIG. 1B illustrates an example of thesystem 10 ofFIG. 1A . Thesystem 10 includes one or more input(s) 1002, anotification generator 1004, acommunication interface 1008, areply counter 1040, acomparator 1042, afilter 1050, a producttester management module 1080, atesting interface generator 1100, atimer 1200, a time-comparator 1202, atracker 1300, agraphic generator 1302, animage database 1304, avideo generator 1310, avideo database 1314, auser interface generator 1350, atesting monitoring module 1400, a testresult retrieval module 1500, and ananalyzer 1502. Details of these components will be described in further detail below. It should be noted that thesystem 10 is not limited to the example shown, and that thesystem 10 may have other configurations in other embodiments. For example, in other embodiments, thesystem 10 may not include one or more of the components shown inFIG. 1B . In further embodiments, thesystem 10 may be implemented using multiple devices, having different respect sets of one or more of the components shown inFIG. 1B . - In the illustrated embodiments, the
product testers 14 have respective memberships and accounts with theparty 16. For example, in order for a person to qualify as a product tester for theparty 16, the person may need to go through a registration process with thesystem 10 to become aproduct tester 14. The producttester management module 1080 in thesystem 10 is configured to manage thevarious product testers 14. The producttester management module 1080 may be configured to provide a registration interface to receive information regarding a person who desires to be aproduct tester 14, so that the person is registered as aproduct tester 14 in thesystem 10. Each registeredproduct tester 14 will have his/her login ID and password, which allow theproduct tester 14 to log into thesystem 10. The producttester management module 1080 may also be configured to provide training on product testing to train the person so that the person can be qualified as aproduct tester 14. In some embodiments, the producttester management module 1080 also manages the accounts of thevarious product testers 14. For example, after aproduct tester 14 completes a product testing project, the producttester management module 1080 may calculate a fee owed to theproduct tester 14 based on one or more features of the product testing project. - In some embodiments, the product
tester management module 1080 also manages the accounts of thevarious product testers 14. For example, after aproduct tester 14 completes a product testing project, the producttester management module 1080 may calculate a fee owed to theproduct tester 14 based on one or more features of the product testing project. In one implementation, the fee owed to aproduct tester 14 may be calculated based on a number of tasks (steps) involved in the product testing. For example, if the product testing project involves 39 tasks, and the agreed rate between theproduct tester 14 and thesecond party 16 is $2 per task, then the fee for theproduct tester 14 for this project would be 39×2=$78. In some embodiments, all of theproduct testers 14 registered with thesystem 10 have the same pay rate. In other embodiments,different product testers 14 may have different scores indicating their level of experiences, reliabilities, etc. In such cases, theproduct testers 14 may have different respective pay rates based on these metrics. - During use of the
system 10, when thefirst party 12 has developed a product, thefirst party 12 informs thesecond party 16 that its product needs to be tested. For example, thefirst party 12 may send a request to thesystem 10, and may transmit information regarding the product to be tested to thesystem 10. The request and/or the information regarding the product may be received by the input(s) 1002 of thesystem 10. For example, if the product is a web page, thefirst party 12 may provide a link for the web page, product testing parameters, and product testing tasks. In some embodiments, theuser interface generator 1350 in thesystem 10 may provide an user interface for allowing thefirst party 12 to define product testing parameters and product testing tasks. These information may also be received via the input(s) 1002 of thesystem 10. For example, thefirst party 12 may access an user interface provided by theuser interface generator 1350 of thesystem 10 to generate a list of tasks for aproduct tester 14 to perform, and to create a list of questions corresponding to the respective tasks for the product tester to answer. In one implementation, theuser interface generator 1350 is configured to generate an image of the user interface for display on a device being used by thefirst party 12 when thefirst party 12 is on-line, and has logged into an account with thesecond party 16. -
FIG. 2A illustrates a processor-implementedmethod 200 performed by thesystem 10 ofFIG. 1 for providing product testing. Themethod 200 may be described with reference to thesystem 10 ofFIGS. 1A and 1B . In response to the request from thefirst party 12, thesystem 10 provides anotification 1005 to inform a plurality ofproduct testers 14 that a product is available for product testing (item 202). In the illustrated embodiments, the product is associated with thefirst party 12 and thenotification generator 1004 is associated with asecond party 16 that is not the same as thefirst party 14. - In some embodiments, the
notification 1005 provided by thesystem 10 is for display in a web browser. For example, theproduct tester 14 may open a web browser on his/her device. The web browser may include an add-on feature, which allows theproduct tester 14 to receive thenotification 1005 from thesystem 10. In such cases, if theproduct tester 14 is on-line, theproduct tester 14 will receive thenotification 1005. On the other hand, if theproduct tester 14 is off-line, then theproduct tester 14 will not receive thenotification 1005. In the illustrated embodiments, thenotification 1005 is “broadcasted” by thesystem 10 in the sense thatmultiple product testers 14 will receive thenotification 1005 or will have access tosuch notification 1005. - In other embodiments, the
notification 1005 may be for display in a field created by a product testing notification application. For example, theproduct tester 14 may install a product testing notification application onto his/her device, which allows theproduct tester 14 to receive thenotification 1005 from thesystem 10. The product testing notification application may be provided by thesecond party 16 for installation or downloading onto a device of aproduct tester 14. The device being used by theproduct tester 14 may be a laptop, a desktop computer, or a handheld device (e.g., an iPhone, iPad, iPad mini, tablet, etc.). - In further embodiments, the
notification 1005 may be sent to a job listing agent, or a crowd-testers provider, such as crowdflower or a mechanical turk, etc. - Accordingly, as used in this specification, the term “notification” may refer to any information for informing a
product tester 14, wherein such information may be sent directly to a user interface on a device being used by theproduct tester 14, or to a job listing agent for allowing aproduct tester 14 to view. The notification may actively inform theproduct tester 14, or may passively inform the product tester 14 (in that the notification may be posted at a location at which theproduct tester 14 may search or discover such notification). -
FIG. 3 illustrates an example of auser interface 300 for providing a notification to aproduct tester 14. Theuser interface 300 includes afield 302 for displaying anotification 304 provided by thesystem 10, indicating that a product testing project is available. Theuser interface 300 also includes afeature 306 for allowing aproduct tester 14 to accept the product testing project. - It should be noted that the
user interface 300 for providing the notification to theproduct tester 14 is not limited to the example described previously, and that theuser interface 300 may have other configurations in other embodiments. - Returning to the
method 200 ofFIG. 2 , and thesystem 10 ofFIGS. 1A and 1B , next, anelectronic reply 1010 is received from a device being used by aproduct tester 14 of the plurality of product testers through a network (item 204). In the illustrated embodiments,item 204 may be performed by thecommunication interface 1008 at thesystem 10. Thereply 1010 indicates that theproduct tester 14 will perform the product testing. The network transmitting the electronic reply may be any network, such as the Internet, a telecommunication network, etc. In some cases, theelectronic reply 1010 may be generated using a web browser utilized by theproduct tester 14. For example, the web browser on a device utilized by theproduct tester 14 may include an add-on feature, which allows theproduct tester 14 to receive the notification 1005 (e.g., a ping, a message, a posting, etc.) from thesystem 10, like the example shown inFIG. 3 . The same add-on feature may also allow theproduct tester 14 to provide his/her reply (for reception by the system 10) to accept or to sign up for a product testing project. - In other cases, the
electronic reply 1010 may be generated using a product testing notification application utilized by theproduct tester 14. For example, theproduct tester 14 may install a product testing notification application onto his/her device, which allows theproduct tester 14 to receive thenotification 1005 from thesystem 10. As discussed, the product testing notification application may be provided by thesecond party 16. The same product testing notification application may also allow theproduct tester 14 to provide his/her reply (for reception by the system 10) to accept or to sign up for a product testing project. - In further embodiments, as discussed, a
product tester 14 may use crowdflower or a mechanical turk to obtain thenotification 1005 regarding the product testing project. In such cases, thereply 1010 accepting the product testing project will be generated by a device using the crowdflower or mechanical turk. - As shown in the figure, the
method 200 further includes updating a reply count in response to the received electronic reply (item 205). In the illustrated embodiments,item 205 is performed by thereply counter 1040 of thesystem 10. - In some embodiments, the
method 200 may also include receiving additional electronic reply/replies 1010, keeping track with a number ofreplies 1010, and comparing the number ofreplies 1010 with a prescribed number. In some embodiments, thecommunication interface 1008 of thesystem 10 is configured to receive one or more additionalelectronic replies 1010 from one or moreadditional product testers 14 from the plurality ofproduct testers 14 until a prescribed number ofelectronic replies 1010 has been reached. In response to each reply received by thecommunication interface 1008, thereply counter 1040 in thesystem 10 will increment the reply count by one. In such cases, after thecommunication interface 1008 received the firstelectronic reply 1010 from theproduct tester 14, the product testing project is then assigned only to theproduct tester 14, and not to anyother product testers 14. Thecommunication interface 1008 continues to receive additional reply until the total number ofreplies 1010 is equal to the prescribed number ofelectronic replies 1010, as determined by thecomparator 1042 in thesystem 10. In the illustrated embodiment, the prescribed number ofreply 1010 is one reply. In other embodiments, the prescribed number ofreplies 1010 may be more than one. For example, in some embodiments, the prescribed number ofelectronic replies 1010 may be three, four, five, six, or seven. In other embodiments, the prescribed number ofelectronic replies 1010 may two. In further embodiments, the prescribed number ofelectronic replies 1010 may be more than seven. - Referring to
FIG. 2 , next, in response to the electronic reply, thesystem 10 then provides a testing environment that comprises a testing interface for use by the product tester 14 (item 206). In some embodiments, the testing interface may be generated by thetesting interface generator 1100 in thesystem 10. Also, in one implementation,item 206 may be performed by thesystem 10 providing the testing interface for display on a device being used by theproduct tester 14 after theproduct tester 14 has accepted the product testing project. For example, the generated testing interface may be output to a network (e.g., the Internet) for transmission to the device of theproduct tester 14. Also, in one implementation,item 206 may be performed by thetesting interface generator 1100, which opens up a virtual machine environment for presenting the testing interface for theproduct tester 14 in response to theproduct tester 14 accepting to take the product testing project. - The testing interface is configured to present features of the product and the product testing instruction for allowing the
first product tester 14 to perform the product testing on the product based on the product testing instruction. In some embodiments, the product testing instruction provides a plurality of tasks for theproduct tester 14 to perform for testing the product. For example, in some cases, the product being tested comprises a web page, and the product testing instruction is configured to prescribe one or more actions be performed on the web page being tested. -
FIG. 4 illustrates an example of atesting environment 400 having atesting interface 402 for allowing aproduct tester 14 to perform product testing. Thetesting interface 402 includes awindow 404 for presenting features of the product being tested. In the illustrated example, the product comprises a web page. Thewindow 404 may allow theproduct tester 14 to access the web page via a link. In response to theproduct tester 14 entering or clicking the link, thewindow 404 then presents an image of aweb page 410 for allowing theproduct tester 14 to perform product testing thereon. Also, in the illustrated example, theweb page 410 displayed in thewindow 404 includes one or more selectable features 411. Thetesting interface 402 includes afield 420 providing one ormore tasks 422 for theproduct tester 14 to perform on theweb page 410. - In some embodiments, the
tasks 422 are parts of a product testing instruction. Atask 422 may require theproduct tester 14 to perform an action on the image of theweb page 410. For example, atask 422 may be to click on a tab on theweb page 410, to click on a link on theweb page 410, to enter a value in a field in theweb page 410, to click on a box in theweb page 410, etc. - As shown in
FIG. 4 , thetesting interface 402 may be configured to present aquestion 412 for theproduct tester 14 to answer after the action has been performed based on the product testing instruction. For example, thequestion 412 may ask theproduct tester 14 whether theproduct tester 14 sees a pop-up after selecting an object in theweb page 410 being tested, whether theproduct tester 14 sees a new image after selecting a certain option in theweb page 410, etc. In the illustrated example, thetesting interface 402 also provides only twopossible answers 414 a, 414 b (“Yes” and “No”) for allowing theproduct tester 14 to select. Such technique reduces ambiguity in the answer provided by theproduct tester 14. In other embodiments, thetesting interface 402 may provide more than two possible answers 414 for allowing theproduct tester 14 to select to answer a question baser theproduct tester 14 performs a task specified in the product testing instruction. - In some embodiments, if the
product tester 14 selects the “No” answer to any of the product testing question, thesystem 10 then terminates the product testing session, and the product testing is considered completed by theproduct tester 14. In such cases, no further product testing tasks and no further product testing questions will be presented to theproduct tester 14. This is because if the product being tested has a certain feature that fails, then the product provider may want to know this right away. Also, the failed feature may impact other features of the product. Accordingly, if a feature in the product has failed the product testing, then one or more other features may fail as well. In other embodiments, instead of terminating the product testing session, thesystem 10 may allow theproduct tester 14 to continue testing the product. For example, thesystem 10 may allow theproduct tester 14 to continue with the remaining tasks in the product testing prescribed by the product testing instruction. Also, thesystem 10 may allow theproduct tester 14 to test other features of the product that are not associated with the failed feature. - In some embodiments, the
method 200 further includes storing an answer of the question in a test result file for the product being tested. As described, the answer may be a “Yes” answer or a “No” answer in response to a question provided to theproduct tester 14 after theproduct tester 14 has performed a task to test the product. Thus, in some embodiments, the answer, the question, and the associated task for testing the product may be stored in a unique data structure that associate these items together.FIG. 5 illustrates an example of adata structure 500 for linking product testing tasks 502, respective product testing questions 504, and the corresponding answers 506 to the product testing questions 504. Thedata structure 500 also includes tracker identifiers 508 that identify files tracking interaction of theproduct tester 14 while testing the product. Each tracker identifier 508 may identify an image, a video file, or any of other interaction information that captures the interaction of theproduct tester 14 on the product being tested. These information are advantageous because they allow a user (fromparty 12 or party 16) to retroactively determine how aproduct tester 14 came to a conclusion based on the product tester's 14 interaction with the product being tested. The tracker identifier 508 will be described in further detail below. - In some embodiments, the
testing interface 402 is configured for display on a computer screen or a laptop screen. In other embodiments, thetesting interface 402 is configured for display on a hand-held device (e.g., an iPhone, iPad, iPad mini, tablet, etc.). - It should be noted that the
testing interface 402 is not limited to the example discussed previously, and that thetesting interface 402 may have other configurations in other embodiments. - In some embodiments, after the
testing interface 402 is provided to theproduct tester 14, thetimer 1200 in thesystem 10 keeps track of the duration that has lapsed since the providing of thetesting interface 402. In such cases, themethod 200 may further include determining (by the timer 1200) an amount of time that has lapsed since the testing interface has been provided to theproduct tester 14. Themethod 200 may also include comparing the amount of time with a prescribed duration using the time-comparator 1202. If the lapsed time has exceed a the prescribed duration (e.g., a starting deadline), and theproduct tester 14 has not begun performing a product testing task, then thesystem 10 will revoke the product testing project from theproduct tester 14. For example, thesystem 10 may terminate the product testing session being used by theproduct tester 14. In some embodiments, the prescribed duration (starting deadline) may be set by thesystem 10 to be five minutes after a product testing session has begun. In other embodiments, the prescribed duration may be set by an administrator of thesystem 10 to have other values, such as a duration that is more than five minutes, or less than five minutes. Accordingly in some embodiments, amethod 230 of tracking a progress of a product testing session may be provided (FIG. 2B ). Themethod 230 may be a part of themethod 200 in some embodiments. Themethod 230 includes determining an amount of time that has lapsed since a beginning of a product testing session using a timer (item 232), comparing the amount of time with a prescribed duration (item 234), and revoking the product testing project from the product tester if the determined time equals to or exceeds the prescribed duration (item 236). In some embodiments, themethod 200 may also include terminating the product testing session. Also, in one implementation,item 236 may be performed by thetesting interface generator 1100, which closes a virtual machine environment presenting the testing interface for theproduct tester 14 in response to the lapsed time meeting the prescribed duration. - In some embodiments, after the
testing interface 402 is provided to theproduct tester 14, themethod 200 further includes tracking an interaction of theproduct tester 14 with the web page. For example, theproduct tester 14 may be using his/her device (e.g., laptop, desktop, handheld device, such as a cell phone, etc.) to perform the product testing. In such cases, thetracker 1300 of thesystem 10 is configured to track a position of the cursor in the product tester's device as operated by theproduct tester 14. In some cases, if theproduct tester 14 is using a cell phone with a touchscreen to perform the product testing, thetracker 1300 may be configured to track a position of the finger position as applied on the touchscreen. Thus, as used in this specification, the term “cursor” is not limited to a displayed item operated using a touchpad, a mouse, or a knob, and the term “cursor” may also include non-displayed item that is associated with a movement of a finger as applied on a touchscreen. - In one implementation, the
testing interface 402 may instruct theproduct tester 14 to click on a certain item on an image of a web page being tested. While theproduct tester 14 is manipulating the cursor in the web page, thetracker 1300 of thesystem 10 records the positions of the cursor as it appears in the web page. Thesystem 10 may also use thegraphic generator 1302 configured to generate a graphic representing the tracked movement. In some embodiments, the graphic comprises a line traversing a plurality of cursor positions. Also, the graphic may further comprise a selection identifier identifying a position in the image of the web page at which theproduct tester 14 performed a selection (e.g., a clicking of a button). For example, the selection may be a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing, performed by theproduct tester 14. -
FIG. 6 illustrates an example of animage 600 capturing an interaction of a product tester with a product being tested. As shown in the figure, theimage 600 includes an image of a web page 602 being tested, thetask 604 prescribed by the product testing instruction, and thequestion 606 corresponding to thetask 604. In the example, thetask 604 instructs theproduct tester 14 to click on the “Archive” button, and thequestion 606 asks theproduct tester 14 whether the clicked item moved to the archived section. Theimage 600 also shows a graphic 608 generated by thegraphic generator 1302. The graphic 608 is in a form of a line, which indicates where theproduct tester 14 has moved the cursor while performing thetask 604. The graphic 608 also includes a plurality of circles 610 (example of selection identifiers) identifying a position in the image of the web page at which theproduct tester 14 has clicked on a button. - In some embodiments, the
method 200 may further include storing theelectronic image 600 in a non-transitory medium 1304 (FIG. 1B ). The non-transitory medium 1304 is illustrated as an image database, but in other embodiments, the non-transitory medium 1304 may be any memory or storage device. Theimage 200 includes the image of the web page 602 and the graphic 608 superimposed with the image of the web page 602. In one implementation, for a given product testing task, thesystem 10 is configured to generate positional data regarding the position of the cursor as theproduct tester 14 interacts with the web page 602 to perform the assigned task. The positional data may include a position (e.g., X and Y coordinates) of the cursor. The positional data may be later used by the graphic generator to generate the graphic 608. For example, all of the positional data may be plotted to create the line shown in the example of the graphic 608 inFIG. 6 . Also, in some embodiments, thesystem 10 may also generate timing data that are associated with the respective positions of the cursor. For example, cursor position (X1, Y1) may occur at t1, and cursor position (X2, Y2) may occur at t2. Thus, thesystem 10 may generate the timing data t1, t2, etc., and store such timing data in association with the respective cursor positions in the non-transitory medium. -
FIG. 7 illustrates an example of adata structure 700 for storing cursor position data in association with timing data. Thedata structure 700 includes two columns for positional values in the x-coordinate and y-coordinate, respectively. Thedata structure 700 also includes a column for indicating whether theproduct tester 14 made a selection (e.g., by clicking a button) at a certain cursor position. In some embodiments, thedata structure 700 may be used by thegraphic generator 1302 to create the graphic 608 that is associated with an image of a web page being tested. In particular, the positional values in thedata structure 700 may be used to create the lines in the graphic 608, and the select indicator(s) in thedata structure 700 may be used to create the circle(s) 610 representing the position(s) at which theproduct tester 14 has made a selection. In some embodiments, thedata structure 700 may be stored in the non-transitory medium 1304. - Also, in some embodiments, the
data structure 700 may be linked with a certain tracker identifier in thedata structure 500 ofFIG. 5 . For example, thedata structure 700 with the identifier “23” may contain data for creating the graphic 608 in theimage file 342 in thedata structure 500. Theimage file 342 may contain an image of the web page being tested. In such cases, the data structure [Image file 342; ID=23] may be used to link thedata structure 700 with theimage file 342. Accordingly, when thesystem 10 presents an image for indicating a tracked action of aproduct tester 14 for the task No. 1 listed in thedata structure 500, thesystem 10 will use the above data structure to look up thedata structure 700 with the ID “23”. The data in thedata structure 700 are then used to generate the graphic 608 for presentation with an image of the web page. - As shown in
FIG. 7 , thedata structure 700 may also include timing data indicating the respective times at which the positions of the cursor occurred. The timing data is advantageous because it may allow the graphic 608 to be presented in a form of a video. For example, thevideo generator 1310 may utilize thedata structure 700 to create a video showing a changing of the position of the cursor over time. Thus, the video will indicate a tracked interaction of theproduct tester 14 with the web page being tested. In some embodiments, the video provided by thevideo generator 1310 may include a moving cursor. In other embodiments, the video provided by thevideo generator 1310 may include a growing line representing a collection of positional points by the cursor as the cursor is moved across the web page. In some embodiments, the video may be stored in a non-transitory medium 1314 (FIG. 1B ). The non-transitory medium 1314 is illustrated as a video database, but in other embodiments, the non-transitory medium 1314 may be any memory or storage device. Also, in other embodiments, instead of having separate 1304, 1314 as image database and video database, thenon-transitory media 1304, 1314 may be integrated as a single database.non-transitory media - The graphic 608 and the image of the web page being tested may be provided by the
system 10 to a user associated with thefirst party 12. For example, in some embodiments, the user interface provided by theuser interface generator 1350 may be configured to output an image and/or a video having the graphic 608 and the image of the web page for viewing by the user of thesystem 10. Such image and/or video may be provided as a part of a test result file so the user can see how theproduct tester 14 came to a certain product testing conclusion based on the interaction with the web page tested. - In some embodiments, the image and/or the video may be stored in association with the corresponding product testing task defined in the product testing instruction. In particular, the image and/or the video is for tracking the interaction of the
product tester 14 while theproduct tester 14 is performing a certain task prescribed in the product testing instruction. Accordingly, each of the task prescribed to be performed by theproduct tester 14 will have a corresponding image and/or video tracking the interaction of theproduct tester 14 with the web page being tested. For example, if a product testing project has 28 tasks (steps), after theproduct tester 14 has finished the product testing project, thesystem 10 will have generated 28 images and/or 28 videos for the respective 28 tasks. - In some embodiments, all of the 28 images and/or the 28 videos in the example may be provided, or made available, to the user who is associated with the first party 12 (the provider of the product). In other embodiments, only one image and/or one video may be provided, or made available, to the user who is associated with the
first party 12. For example, if a certain task in the product testing results in a “failed” result for the product testing, then thesystem 10 may provide only the image and/or only the video associated with the failed task. This may be advantageous because the user may not be concerned with tasks that have “pass” status, but may be more interested in viewing results for the task that results in a “failed” status. Furthermore, in some embodiments, thesystem 10 may store only the image and/or only the video that is associated with a failed task, and may delete other images and videos for other tasks that have “pass” status after the product testing project is completed or after the product testing project is completed for a certain pre-determined duration. -
FIG. 8A-8C illustrates an example of areport 800 summarizing a result of a product testing. In some embodiments, thesystem 10 is configured to gather information from the finished product testing by one ormore product testers 14, and generate thereport 800 based on the gathered information. In the illustrated example, thereport 800 is for a certain product that has been tested by theproduct testers 14. Thereport 800 includes a list ofproduct testing tasks 802 performed by theproduct testers 14. Thetasks 802 in thereport 800 are the same tasks created (using the user interface provided by the user interface generator 1350) by the user associated with thefirst party 12 that provides the product for product testing. Thereport 800 also includes failed test identifier(s) 804 and passed test identifier(s) 806 next to different respective tasks. A task with a failed test identifier 804 indicates that the product testing failed when the product tester(s) performed that task. A task with a passedtest identifier 806 indicates that the product testing passed when the product tester(s) 14 performed that task. - As shown in
FIG. 8A , thereport 800 also includes anobject 808 next to each of the tasks, which when selected by the user, will provide further details about the product testing on that specific task. Thereport 800 also includes a list ofbrowsers 810 in which the product testing of the product has been performed. - In some cases, the user viewing the
report 800 may be interested in viewing details of the product testing for a certain task. In such cases, the user may select thecorresponding object 808 next to thetask 802. In response, thesystem 10 may present thereport 820 shown inFIG. 8B for the user. Thereport 820 is for a certain task performed during the product testing. As shown in the figure, thereport 820 includes asummary 821 of the product testing for that task. In the illustrated example, thesummary 821 indicates that the specific task in question failed when theproduct testers 14 perform the product testing in 9 out of 31 browsers. Thereport 820 also shows thecorresponding task 822 performed by theproduct testers 14 when the product testing failed, and thecorresponding question 824. The 9 browsers in which the performance of the task failed are shown by thebrowser icons 826. Thereport 820 also includes pass/fail indicator 828 next to the differentrespective browser icons 826. In the example, a failedindicator 828 next to abrowser icon 826 indicates that the performance of the task failed when theproduct testers 14 performed the task in the type of browser represented by thebrowser icon 826. - Also, in the illustrated example, the user viewing the
report 820 has selected one of the pass/fail indicators 828 for a certain browser, as represented by the selector graphic 829. Accordingly, thereport 820 displays threeimages 830 a-830 c that were captured when three respectivedifferent product testers 14 performed thetask 822 in the browser type selected. From theimages 830, the user viewing thereport 820 can see what were on the product testers' 14 screen when they performed that specific task that result in a “failed” status. - The user viewing the
report 820 can select one of theimages 830 a-830 c to see more detail. For example, when the user selects one of theimages 830 a-830 c, thesystem 10 may provide areport 840 shown inFIG. 8C to the user. Thereport 840 includes a description of thetask 842, and the corresponding product testing question 844. Thereport 840 also includes animage 846 that includes animage 847 of the web page tested, and a graphic 848. The graphic 848 includes a line 849 that tracks the position of the cursor when theproduct tester 14 interacted with the web page, andselection identifiers 850 indicating the positions where theproduct tester 14 made selections (e.g., clicked a button). The features in theimage 846 may be provided by thegraphic generator 1302 of thesystem 10, as similarly discussed with reference toFIG. 6 . Thus,image 846 allows the user to retroactively view the interaction of theproduct tester 14 with the web page while performing thetask 842. In other embodiments, instead of afixed image 846, thesystem 10 may provide a video showing a movement of the cursor and selection(s) (e.g., clicking of button) by theproduct tester 14. - As shown in the figure, the
report 840 further includes an identifier of theproduct tester 14 who performed the product testing task. The identifier may be the actual name of theproduct tester 14 or other identifier that identifies theproduct tester 14. Also, in some embodiments, the identity of theproduct tester 14 may be kept confidential and may not be presented by thesystem 10 to the user. - The
report 840 further includes abrowser identifier 856 identifying the type of browser in which the task was conducted by theproduct tester 14, and a pass/fail indicator 854 indicating whether the task in question failed or passed during the product testing. - In some embodiments, the test result reports 800, 820, 840 may be generated using the test
result retrieval module 1500 in thesystem 10. The testresult retrieval module 1500 gather information regarding the product testing, and create the 800, 820, 840 for viewing by the user. Thereports 800, 820, 840 may be presented through an user interface created by thereports user interface generator 1350 of thesystem 10. For example, in some embodiments, theuser interface generator 1350 may generate and provide an user interface for use by an administrator of thesystem 10. In such cases, the 800, 820, 840 may be provided for viewing by the administrator through the user interface. Alternatively or additionally, thereports user interface generator 1350 may generate and provide an user interface for use by a user associated with thefirst party 12 providing the product for product testing. In such cases, the 800, 820, 840 may be provided for viewing by the user through the user interface.reports - It should be noted that the test result reports 800, 820, 840 are not limited by the examples described previously, and that the
system 10 may provide test result report(s) having different configurations in different embodiments. For example, in other embodiments, the 800, 820, 840 may have fewer information than those described in the above example.reports - Also, in other embodiments, instead of providing reports associated with all of the
product testers 14 for each task, thesystem 10 may consolidate the product testing results from themultiple product testers 14, and provide a consolidated product testing report to the user. For example, theanalyzer 1502 in thesystem 10 may employ a logical algorithm to determine whether a certain product testing result from aproduct tester 14 is reliable or not. If the testing result is considered as non-reliable, theanalyzer 1502 then disregards that particular product testing result. - As another example, the
analyzer 1502 may compare two product testing results from twodifferent product testers 14. If the two product testing results indicate the same conclusion (e.g., pass or fail), then theanalyzer 1502 may determine the product testing results as reliable. In such cases, thesystem 10 may simply report to the user that the particular task in question has a pass or fail status without informing the user the number ofproduct testers 14 performed the testing. - In some cases, if there are three
product testers 14 for a particular task, theanalyzer 1502 may pick a result (e.g., pass or fail) that has the majority vote. For example, if twoproduct testers 14 performing the task provide a “Yes” answer to the corresponding question, and thethird product tester 14 provides a “No” answer, then theanalyzer 1502 will pick the “Yes” answer and may determine that the testing of the task has a “pass” status. On the other hand, if twoproduct testers 14 performing the task provide a “No” answer to the corresponding question, and thethird product tester 14 provides a “Yes” answer, then theanalyzer 1502 will pick the “No” answer and may determine that the testing of the task has a “fail” status. - Accordingly, it is advantageous to have three
product testers 14 assigned for a product testing project, and to have only two mutually exclusive answers (e.g., “Yes” and “No”) as possibilities for answering the corresponding product testing question. This is because such arrangement allows theanalyzer 1502 to be able to decide on a final product testing result even if a product testing result from oneproduct tester 14 contradicts another product testing result from anotherproduct tester 14. Also, assigning the same product testing project tomultiple product testers 14 allows different results to be compared for detection of non-reliable result. However, in other embodiments, more or fewer than threeproduct testers 14 may be assigned for a product testing project, as discussed, and the number of answers may be more than two. For example, in other embodiments, the answers may be in multiple choice formats with three or more choices. - In some embodiments, the
system 10 may be configured to provide a user interface for allowing a user to override a product testing result. For example, the user interface providing thereport 800/820/840 may also provide a control for allowing a user to change a product testing result. If a product testing result indicates that a particular task has a “pass” status, the user may utilize the control to change the status from “pass” to “failed”. Alternatively, if a product testing result indicates that a particular task has a “failed” status, the user may utilize the control to change the status from “failed” to “pass”. - It should be noted that the
analyzer 1502 of thesystem 10 is not limited to comparing product testing results. In other embodiments, theanalyzer 1502 may also perform other analyses to determine different user metrics associated with theproduct testers 14 and/or different testing metrics relating to the reliability of the test results. For example, in some embodiments, theanalyzer 1502 may compare the images (which tracked the actions of the product testers 14) stored in theimage database 1304 to determine whether the three images are similar or not. If all threeproduct testers 14 perform the same action prescribed by the task of the product testing instruction, the graphics representing the movements of the cursors in the three images may have some similar features. For example, if the product testing task requires theproduct testers 14 to move the cursor to a link and click on the link, the graphics representing the movement of the cursors should all include one or more selection identifiers at the link. If one of the graphics indicate that there is no selection of the link, theanalyzer 1502 may then determine that the product testing result by the correspondingproduct tester 14 is not reliable. This may be the case even if thisproduct tester 14 provided the same “Yes” or “No” answer to reach the same conclusion as that of the other twoproduct testers 14. - As another example, during a product testing, the
testing monitoring module 1400 of thesystem 10 may gather some intelligence regarding the performance of theproduct testers 14. After the product testing is finished, theanalyzer 1502 may then retrieve the information from thetesting monitoring module 1400 and perform further analysis based on the information. For example, thetesting monitoring module 1400 may determine an amount of time for eachproduct tester 14 to perform a certain task. Thus, after theproduct tester 14 finishes the product testing project, thetesting monitoring module 1400 will have multiple time values for different respective tasks prescribed in the product testing instruction and performed by thatproduct tester 14. Thetesting monitoring module 1400 also does the same for the other twoproduct testers 14. After all threeproduct testers 14 have finished the product testing, theanalyzer 1502 may then compare the three time values associated with the respective threeproduct testers 14 for a given task, and determine if any of the product testing results for that task from the threeproduct testers 14 is unreliable. For example, if a certain task takes afirst product tester 14 to complete in 30 seconds, takes asecond product tester 14 to complete in 37 seconds, and athird product tester 14 to complete in 4 seconds, then then analyzer 1502 may determine that the product testing result from thethird product tester 14 is unreliable because the other two time values are closer to each other, and the third time value is different from both of the first two time values. - As a further example, when the
system 10 provides the task for theproduct testers 14 to perform based on the pre-determined product testing instruction, thesystem 10 may insert one or more questions specifically designed to test the reliability of theproduct testers 14. For example, thesystem 10 may ask the product tester 14 a simple mathematical question, such as, “what is 14+6?” that is completely unrelated to the nature of the product being tested. If theproduct tester 14 is actively paying attention while performing the product testing, theproduct tester 14 is most likely to answer this question correctly. On the other hand, if theproduct tester 14 is not paying attention while performing the product testing, theproduct tester 14 may answer this question incorrectly, thereby indicating that the product testing result from thisproduct tester 14 may be unreliable. This technique also has the benefit of detectingcertain product tester 14 who may be carless, reckless, or who pretends to be performing the product testing. - Accordingly, in some embodiments, the
testing monitoring module 1400 may be configured to compare an answer provided by theproduct tester 14 with an expected answer. If the answer provided by theproduct tester 14 matches the expected answer, then thetesting monitoring module 1400 may determine that the product testing result by thatproduct tester 14 is reliable. On the other hand, if the answer provided by theproduct tester 14 does not match the expected answer, then thetesting monitoring module 1400 may determine that the product testing result by thatproduct tester 14 is not reliable. - The
testing monitoring module 1400 may also perform other functions to monitor a progress of the product testing. For example, thetesting monitoring module 1400 may be configured to determine a percentage of the product testing completed, a duration spent by theproduct tester 14 on the product testing, a number of steps taken by theproduct tester 14, time wasted by theproduct tester 14, time lapsed before a link is clicked by theproduct tester 14, etc. - As discussed, the
user interface generator 1350 is configured to provide an interface for a user to generate tasks for product testing and to define product testing parameters.FIG. 9 illustrates an example of auser interface 900 for allowing a user to generate tasks for product testing and to define product testing parameters. The user may be associated with thefirst party 12 providing the product for product testing, and/or a person associated with thesecond party 16 providing thesystem 10. Theuser interface 900 may be generated and provided by theuser interface generator 1350 in thesystem 10 in some embodiments. In one implementation, after the product provider (first party 12) has registered with thesystem 10, a user at thefirst party 12 may then log into the system 10 (e.g., using user ID and password). After the user has logged into thesystem 10, theuser interface generator 1350 of thesystem 10 may then provide theuser interface 900 for the user. In some cases, there may be multiple different product providers (different first parties 12) providing different products for product testing. In such cases, each of theparties 12 will have its own unique set of user ID and password. - As shown in the figure, the
user interface 900 includes asection 902 for allowing a user to create product testing tasks 904 and corresponding product testing questions 906. Each product testing task 904 prescribes aproduct tester 14 to perform an action on the product being tested. Eachcorresponding question 906 asks theproduct tester 14 to confirm whether a certain event occurs or not based on the action performed by theproduct tester 14 in accordance with the assigned task. Accordingly, each of the product testing tasks 904 and each of theproduct testing questions 906 are designed by the user to test specific features in the product. The user may use theuser interface 900 to add, delete, edit, and move task(s) 904 and question(s) 906. - The
user interface 900 also includes asection 907 having a plurality of platform/browser icons 908 for selection by the user creating the product testing tasks. Each of the platform/browser icons 908 represents a type of platform or browser in which the web page is desired to be tested. If the user wants the web page to be tested under 34 different types of platform/browser, for example, the user can select the 34 corresponding platform/browser icons 908 to prescribe such testing parameters. By means of non-limiting examples, the platform/browser icons 908 may identify Google Chrome, different versions of Chrome, different versions of Mozilla Firefox, different versions of Microsoft Internet Explorer, different iOS for different versions of iPhone, different versions of Safari, different versions of Android mobile browsers, different versions ofiPhone 6 mobile browsers, different versions of Microsoft Office, etc. - Furthermore, in some embodiments, the
user interface 900 may allow the user to prescribe how to test an application on a mobile device (e.g., iPhone, iPad, tablet, etc.). For example, the user may prescribe that a product testing be performed on a certain type of mobile device by using the mobile device to launch a browser to go to a website. Alternatively, the user may prescribe that the product testing be performed using mobile-native-device (through an actual mobile device) or mobile-simulator (simulated mobile environment). - In some embodiments, the
system 10 is configured to package each product testing under each selected platform/browser as one product testing project (job). Following the above example in which the user has selected 34 different types of platform/browser for testing the product, and assuming that each product testing project is desired to be performed by threeproduct testers 14, thesystem 10 will then generate 3×34=102 product testing projects. These 102 product testing projects will then be notified to theproduct testers 14 based on thenotification 1005 provided by thenotification generator 1004. - Also, in some embodiments, the user designing the product testing instruction may group multiple related web pages under one product testing project. In other embodiments, the product being tested may have multiple web pages, and the user may divide the product into different features for different product testing projects.
- In some embodiments, after the user has created the product testing tasks and product testing parameters using the
user interface 900, the user may save these information to generate a product testing instruction file. The product testing instruction file may be saved in a non-transitory medium (e.g., the product testing instruction database 1600) at thesystem 10. When the user determines that the product is ready for product testing, thesystem 10 is notified, and thenotification generator 1004 of thesystem 10 then provides thenotification 1005 to inform theproduct testers 14 that the product testing project is available, as discussed. When aproduct tester 14 has accepted the product testing project, thetesting interface generator 1100 of thesystem 10 then provides a testing interface, along with the tasks and questions defined in the product testing instruction (stored in the database 1600) for theproduct tester 14 to conduct the product testing. Also, as discussed, in some embodiments, thesystem 10 may insert one or more questions into the product testing instruction specifically designed to test the reliability of theproduct testers 14. For example, thesystem 10 may ask the product tester 14 a simple mathematical question, such as, “what is 14+6?” that is completely unrelated to the nature of the product being tested, and that is designed to determine reliability of the product testing result. - In some embodiments, the
system 10 may be configured to provide an administrative product testing report for use by personnel at thesecond party 16. Such report provides a user at the second party 16 a detailed view of all of the tasks in a product testing. The report may be generated using the test result retrieval module 1500 (which gathers and compiled all of the relevant information), and provided to the user via an user interface generated by theuser interface generator 1350.FIGS. 10A-10E illustrate an example of areport 1000 that is for viewing by a user at thesecond party 16. Thereport 1000 includesdata 1002 regarding the product testing performed, including name of client (product provider), product testing identification, type of platform/browser in which the product testing was conducted, etc. Thereport 1000 also includes theidentifications 1004 a-1004 c of threeproduct testers 14 who performed the product testing. Thereport 1000 also includes a summary of the product testing organized by tasks. For example, as shown inFIG. 10B , thereport 1000 includes a section that provides theproduct testing task 1010 and its correspondingproduct testing question 1012. Thereport 1000 also includesrespective results 1014 a-1014 c associated with therespective product testers 14. Eachresult 1014 indicates the product tester's 14 answer 1020 to the product testing question, a pass/fail indicator 1022 indicating whether the performance of the task passes or not, atime value 1024 indicating an amount of time it took for theproduct tester 14 to complete thetask 1010, and animage 1026 that tracked the action of theproduct tester 14 while performing thetask 1010. Theimage 1026 may be generated by thegraphic generator 1302 as similarly discussed previously. In some cases, the user may click on theimage 1026, and thesystem 10 may then provide a more detailed view of the image 1026 (FIG. 10C ). Theimage 1026 includes a graphic that indicates the action of theproduct tester 14 performed during the product testing, as similarly discussd. As shown inFIG. 10D , thereport 1000 may also include respective results 1044 a-1044 c associated with the respective product testers for adifferent task 1040, which has a correspondingproduct testing question 1042. Furthermore, as shown inFIG. 10E , thereport 1000 may also include the insertedquestions 1050 for therespective product testers 14 that tested the reliability of the product testing results. - As discussed, in some embodiments, the
system 10 may be configured to provide a user interface for allowing a user to override a product testing result. For example, the user interface providing thereport 1000 may also provide a control for allowing a user (e.g., an administrator, or a personnel associated with thesecond party 16, etc.) to change a product testing result. If a product testing result indicates that a particular task has a “pass” status, the user may utilize the control to change the status from “pass” to “failed”. Alternatively, if a product testing result indicates that a particular task has a “failed” status, the user may utilize the control to change the status from “failed” to “pass”. - The
system 10 ofFIG. 1B will now be described in further detail. Thesystem 10 includes one or more input(s) 1002 for receiving a product testing request, information about the product, and product testing instruction. Thesystem 10 also includes anotification generator 1004 configured to generate anotification 1005 to inform a plurality ofproduct testers 14 that a product is available for product testing. As discussed, in some embodiments, the product is associated with thefirst party 12 developing the product, and thenotification generator 1004 is associated with thesecond party 16 that is not the same as thefirst party 12. - In some embodiments, the
notification 1005 is for display in a web browser. For example, theproduct tester 14 may open a web browser on his/her device. The web browser may include an add-on feature, which allows theproduct tester 14 to receive thenotification 1005 from thesystem 10. In other embodiments, thenotification 1005 may be for display in a field created by a product testing notification application. For example, theproduct tester 14 may install a product testing notification application onto his/her device, which allows theproduct tester 14 to receive thenotification 1005 from thesystem 10. - In further embodiments, the notification may be transmitted to crowdflower or a mechanical turk.
- The
system 10 also includes acommunication interface 1008 configured to receive anelectronic reply 1010 from a device 1020 being used by afirst product tester 14 of the plurality of product testers, thereply 1010 indicating that thefirst product tester 14 will perform the product testing. In some embodiments, thecommunication interface 1008 and the one or more input(s) 1002 may be integrated. - In some cases, the
electronic reply 1010 may be generated using a web browser utilized by theproduct tester 14. For example, as similarly discussed, the web browser on a device utilized by theproduct tester 14 may include an add-on feature, which allows theproduct tester 14 to receive the notification from thesystem 10. The same add-on feature may also allow theproduct tester 14 to provide his/her reply (for reception by the system 10) to accept or to sign up for a product testing project. - In other cases, the
electronic reply 1010 may be generated using a product testing notification application utilized by theproduct tester 14. For example, as also similarly discussed, theproduct tester 14 may install a product testing notification application onto his/her device, which allows theproduct tester 14 to receive the notification from thesystem 10. The same product testing notification application may also allow theproduct tester 14 to provide his/her reply (for reception by the system 10) to accept or to sign up for a product testing project. - As similarly discussed, in other embodiments, the electronic reply may be generated by a device that is using crowdflower or a mechanical turk.
- In some embodiments, the
system 10 may also include areply counter 1040 configured to keep track with a number ofreplies 1010, and acomparator 1042 configured to compare the number ofreplies 1010 with a prescribed number. In some embodiments, thecommunication interface 1008 is configured to receive one or more additional electronic replies from one or moreadditional product testers 14 from the plurality ofproduct testers 14 until a prescribed number of electronic replies has been reached. In response to each reply received by thecommunication interface 1008, thereply counter 1040 will increment by one. Thecommunication interface 1008 continues to receive additional reply until the total number of replies is equal to the prescribed number of electronic replies, as determined by thecomparator 1042. In the illustrated embodiment, the prescribed number of replies is one reply. In other embodiments, the prescribed number of replies may be more than one. For example, in some embodiments, the prescribed number of electronic replies may be three, four, five, six, or seven. In other embodiments, the prescribed number of electronic replies may two. In further embodiments, the prescribed number of electronic replies may be more than seven. - In some embodiments, the
system 10 may further include afilter 1050 configured to select the plurality ofproduct testers 14 from a list ofavailable product testers 14 for providing the notification. For example, by means of non-limiting examples, thefilter 1050 may be configured to select the plurality of product testers based at least in part on respective scores of the plurality of product testers, respective ages of the plurality of product testers, respective language skills of the plurality of product testers, respective locations of the plurality of product testers, respective age groups of the plurality of product testers, respective industry expertise of the plurality of product testers, or any combination of the foregoing. Also, in one example, if a product is desired to be tested by individuals who can read Italian, thefilter 1050 may then perform filtering to obtain a list of allproduct testers 14 who can read Italian. In such cases, thenotification 1005 may be provided by the notification generator to only theproduct testers 14 who can read Italian. - The
system 10 further includes atesting interface generator 1100 configured to generate a testing interface for use in a testing environment. The testing interface may be the testing interface described with reference toFIG. 4 . In other embodiments, the testing interface may have other configurations. As similarly discussed, the testing interface is configured to present features of the product and product testing instruction for allowing thefirst product tester 14 to perform the product testing on the product based on the product testing instruction. The product testing instruction in the testing interface is configured to provide a plurality of tasks for testing the product. For example, the product testing instruction may prescribe one or more actions be performed by theproduct tester 14 on a web page being tested. In some embodiments, the testing interface is configured for display on a hand-held device (e.g., an iPhone, iPad, iPad mini, tablet, etc.). In other embodiments, the testing interface is configured for display on a computer screen or a laptop screen. - In some embodiments, the product testing instruction may be created by a user through an user interface provided by the
user interface generator 1350. The user creating the product testing instruction may be associated with thefirst party 12 providing the product for testing, or may be associated with thesecond party 16. The user interface allows the user to create multiple product testing tasks, and multiple corresponding product testing questions, to test a product. In some cases, the product includes a web page, and the user interface allows the user to select one or more platforms/browsers in which to test the web page. The product testing instruction may be stored in the producttesting instruction database 1600. - In some embodiments, the
user interface generator 1350 may be configured to provide afirst product tester 14 access to a testing environment for allowing thefirst product tester 14 to perform product testing on a product based on the product testing instruction. Theuser interface generator 1350 may also be configured to provide asecond product tester 14 access to another testing environment for allowing thesecond product tester 14 to perform another product testing on the same product based on the same product testing instruction. In one implementation, theuser interface generator 1350 may provide different virtual environments for differentrespective product testers 14. Accordingly,different product testers 14 may perform the product testing on different respective virtual machines that provide the testing interfaces for testing the product. - Also, in some embodiments, the testing interface is configured to present an image of a web page (e.g., a web page being tested), and the product testing instruction is configured to instruct the
first product tester 14 to perform an action on the image of the web page being tested. The testing interface may further be configured to present a question for thefirst product tester 14 to answer after the action has been performed based on the product testing instruction. Thesystem 10 may further include a non-transitory medium for storing the product tester's answer to the question in a test result file. - In some embodiments, the
system 10 also includes atimer 1200 that keeps track of the duration that has lapsed since thetesting interface 402 was provided to theproduct tester 14. Thesystem 10 also includes a time-comparator 1202, which compares the lapsed time with a prescribed threshold. If the lapsed time has exceeded the prescribed threshold and the product testing is not completed by theproduct tester 14, then thesystem 10 will revoke the product testing project from theproduct tester 14. For example, thesystem 10 may terminate the product testing session being used by theproduct tester 14. In some embodiments, in response to the revoked product testing project from theproduct tester 14, thesystem 10 will update the reply counter 1040 (e.g., by subtracting the total count by one) to indicate that a slot for the product testing project is available (due to the product testing project being released back to the pool ofproduct testers 14 for acceptance). If anotherproduct tester 14 submits a reply to take the slot for the product testing project, the product testing project (which was not completed by the previous product tester 14) is then assigned to thisother product tester 14. - As shown in
FIG. 1B , thesystem 10 also includes atracker 1300 configured to track an interaction of thefirst product tester 14 with the product. In some embodiments, the product may be a web page, and thetracker 1300 is configured to track an interaction of thefirst product tester 14 with an image of the web page. - Also, in some embodiments, the
tracker 1300 is configured to track a movement of a cursor operated by thefirst product tester 14. For example, thefirst product tester 14 may be using his/her device (e.g., laptop, desktop, handheld device, such as a cell phone, etc.) to perform the product testing. In such cases, thetracker 1300 is configured to track a position of the cursor in the product tester's device as operated by thefirst product tester 14. In some cases, if theproduct tester 14 is using a cell phone with a touchscreen to perform the product testing, thetracker 1300 may be configured to track a position of the finger position as applied on the touchscreen. Thus, as used in this specification, the term “cursor” is not limited to a displayed item operated using a touchpad, a mouse, or a knob, and the term “cursor” may also include non-displayed item that is associated with a movement of a finger as applied on a touchscreen. - Also, in some embodiments, the
tracker 1300 is configured to track a selection of a tab, recording a selection of a button, recording a selection of an icon, recording a typed text, or any combination of the foregoing, performed by thefirst product tester 14. - The
system 10 further includes agraphic generator 1302 configured to generate a graphic representing the tracked movement by thetracker 1300. In some embodiments, the graphic comprises a line traversing a plurality of cursor positions. In some embodiments, the graphic may also comprises a selection identifier identifying a position in the image of the web page at which thefirst product tester 14 performed a selection. - The
system 10 may also include animage database 1304 configured to store an electronic image in a non-transitory medium, the electronic image comprising the image of the web page and the graphic superimposed with the image of the web page. In some embodiments, theimage database 1304 is configured to store the electronic image in association with an identity of thefirst product tester 14 and in association with the product being tested. Theimage database 1304 may be one or more non-transitory medium located at a same facility or at different facilities. - Alternatively or additionally, the
system 10 may further include avideo generator 1310 configured to generate a video of the tracked interaction. In some embodiments, the video may show a movement of a cursor as operated by theproduct tester 14 while testing a web page. The video may also show a selection of an object in the web page by theproduct tester 14. In one implementation, the video may be a recording of screenshots over time to show an interaction of theproduct tester 14 with the web page being tested. In other embodiments, the video may contain images of a processor-generated graphic (tracking an interaction of the product tester 14) superimposed with image(s) of the web page being tested. For example, the graphic may be a “growing” line that follows a position of a cursor, thereby representing cursor positions over time. In some embodiments, the video may also show a selection identifier identifying a position in the image of the web page at which thefirst product tester 14 performed a selection (e.g., a clicking operation). For example, the graphic may include an identifier (e.g., a circle) placed on the “growing line” wherever theproduct tester 14 performs a clicking operation. - In some embodiments, the
system 10 may also include avideo database 1314 configured to store the video in a non-transitory medium. In some embodiments, thevideo database 1314 is configured to store the video in association with an identity of thefirst product tester 14 and in association with the product being tested. Theimage database 1314 may be one or more non-transitory medium located at a same facility or at different facilities. - As shown in
FIG. 1B , thesystem 10 also includes atesting monitoring module 1400 configured to monitor a progress of the product testing. By means of non-limiting examples, thetesting monitoring module 1400 is configured to determine a percentage of the product testing completed, a duration spent by the first product tester, a number of steps taken by the first product tester, time wasted by the first product tester, time lapsed before a first link is clicked by the first product tester, etc. - The
system 10 further includes a testresult retrieval module 1500 configured to obtain a first testing result achieved by thefirst product tester 14 completing the product testing. The testresult retrieval module 1500 is also configured to obtain additional testing result(s) from one or more additional product tester(s) 14. For example, the testresult retrieval module 1500 may be configured to also obtain a second testing result achieved by thesecond product tester 14 completing the product testing. Thesystem 10 further includes ananalyzer 1502 configured to analyze the first testing result and the second testing result to determine whether the first testing result, the second testing result, or both of the first testing result and the second testing result, are reliable or not. - In some embodiments, the
analyzer 1502 may also be configured to use other information obtained by thetesting monitoring module 1400, to determine whether one or more of the product testing results are reliable or not. - The test
result retrieval module 1500 may be configured to generate one or more product testing reports, such as those shown inFIGS. 8A-8C andFIGS. 10A-10E . The product testing reports may be provided to one or more users through one or more user interface(s) provided by theuser interface generator 1350. For example, one or more reports may be provided to a user associated with thefirst party 12 providing the product being tested. As another example, one or more reports may be provided to an administrator or another user associated with thesecond party 16. - Although the
system 10 has been described with reference to connecting aproduct tester 14 with a certain product testing project to test a certain product created by aparty 12, in other embodiments, thesystem 10 may connectmultiple product testers 14 to a certain product testing project. In one implementation, the testing interface module is configured to provide multiple instances of the testing interface tomultiple product testers 14. For example, the testing interface (e.g., an instance of it) may provide the features of the product and the product testing instruction for allowing asecond product tester 14 to perform the product testing on the product based on the product testing instruction. Also, in some embodiments, thesystem 10 may be configured to provide multiple instances of virtual testing environment formultiple product testers 14 to perform product testing. - In addition, in other embodiments, the
system 10 may connectmultiple product testers 14 to multiple product testing projects to test different products created bydifferent parties 12. - It should be noted that the
system 10 may be implemented using a single device, or using a plurality of devices. For example, theentire system 10 may be implemented on a server in some embodiments. In other embodiments, different components of thesystem 10 may be implemented on different machines, or on different sets of machines. For example, in some embodiments, the input(s) 1002, thenotification generator 1004, thecommunication interface 1008, thereply counter 1040, thecomparator 1042, and thefilter 1050 may be implemented using a first set of one or more devices, thetesting interface generator 1100 may be implemented using a second set of one or more devices, thetracker 1300, thegraphic generator 1302, and thevideo generator 1310 may be implemented using a third set of one or more devices, thetesting monitoring module 1400 may be implemented using a fourth set of one or more devices, and the testresult retrieval module 1500 and theanalyzer 1502 may be implemented using a fifth set of one or more devices. A device may be a processor, a computer, a server, a database, etc. - Although the above embodiments have been described with reference to testing a product that is a web page or a web site, in other embodiments, the system and method described herein may be applied to test other products. By means of non-limiting examples, the product may be any software, any hardware, any physical device, or any computer modeling.
- Also, in some embodiments, a component in the
system 10 may be partially or completely implemented at a product tester's 14 device or at a device used by the first party 12 (e.g., a computer at the provider of the product being tested). For example, in some embodiments, all or a part of thetesting interface generator 1100 may be implemented at a product tester's 14 device. In one implementation, a product tester may install an application provided by thesecond party 16 onto a device (e.g., a laptop, a desktop computer, a handheld device, etc.) of theproduct tester 14, which allows the device to display a testing interface in response to theproduct tester 14 accepting a product testing project. The same application may also be installed bymultiple product testers 14. - Similarly, all or a part of the
tracker 1300, all or a part of thegraphic generator 1302, and/or all or a part of thevideo generator 1310 may be implemented at a product tester's 14 device. In one implementation, a product tester may install an application provided by thesecond party 16 onto a device (e.g., a laptop, a desktop computer, a handheld device, etc.) of theproduct tester 14, which allows the device to track an action of theproduct tester 14 as theproduct tester 14 is using the device to perform the product testing, and to generate images and/or videos capturing the action of theproduct tester 14. The same application may also be installed bymultiple product testers 14. - As another example, all or a part of the
user interface generator 1350 may be implemented at a product provider's (first party's 12) device. In one implementation, a product provider may install an application provided by thesecond party 16 onto a device (e.g., a laptop, a desktop computer, a handheld device, etc.) of the product provider, which allows the product provider to use its device to create product testing instruction, select product testing parameters, and provide information regarding the product that is desired to be tested. The application also allows the device at the product provider to view product testing results transmitted by thesystem 10. The same application may also be installed bymultiple product providers 12. - Accordingly, the
system 10 described herein is not limited to one or more devices associated with thesecond party 16, and may include one or more devices being used by theproduct testers 14, and/or one or more devices being used by users at the product provider (the first party 12). - Furthermore, in some embodiments, any of the components of the
system 10 may be implemented using hardware, software, or a combination of hardware and software. For example, each of the items below may be implemented using a hardware, software, or a combination of both: the one or more input(s) 1002, thenotification generator 1004, thecommunication interface 1008, thereply counter 1040, thecomparator 1042, thefilter 1050, the producttester management module 1080, thetesting interface generator 1100, thetimer 1200, the time-comparator 1202, thetracker 1300, thegraphic generator 1302, thevideo generator 1310, theuser interface generator 1350, thetesting monitoring module 1400, the testresult retrieval module 1500, theanalyzer 1502. - Also, in some embodiments, a processor-readable medium including a set of instructions for providing one or more features described herein is provided. The instructions in the processor-readable medium, when executed by a processing unit, will cause a method for providing a product testing to be performed. The instructions may include: instruction for providing a notification to inform a plurality of product testers that a product is available for product testing, wherein the product is associated with a first party and the notification generator is associated with a second party that is not the same as the first party; instruction for receiving an electronic reply from a device being used by a first product tester of the plurality of product testers through a network, the reply indicating that the first product tester will perform the product testing; instruction for updating a reply count in response to the received electronic reply; and instruction for, in response to the electronic reply, providing a testing environment that comprises a testing interface for the first product tester, the testing interface presenting features of the product and the product testing instruction for allowing the first product tester to perform the product testing on the product based on the product testing instruction, the product testing instruction providing a plurality of tasks for testing the product.
- As illustrated in the above embodiments and examples, the
system 10 and themethod 200 described herein are advantageous because they allow a product to be tested efficiently under multiple different testing parameters. For example, a software application may be tested under 10 different platforms bymultiple product testers 14. Because the product testing may be performed bymultiple product testers 14 in parallel, the user at the product provider can obtain product testing results very quickly. Also, becausemultiple product testers 14 can be assigned to perform each product testing (e.g., testing an application under a certain platform), the product test result being provided to the product provider can be very accurate and reliable. More importantly, the above benefits are provided for the product provider without the need for the product provider searching for qualified product testers. Accordingly, embodiments and features of thesystem 10 and themethod 200 described herein have practical and real world utility, and they create tangible and concrete results that significantly improve the way product testing is performed. - Machine-Based Product Testing Performed by Product Testing Device
- As described in the above embodiments, the
system 10 is configured to obtain a product from theparty 12, and provide testing interface for allowing one or more tester(s) 14 to perform product testing on the product. In some embodiments, thesystem 10 may be configured to perform product testing on one or more additional product(s) without requiring anyhuman tester 14.FIG. 11 illustrates an example of such scenario. As shown in the figure, theparty 12 provides aproduct 1508 for product testing, and thesystem 10 provides testing interface for allowing one ormore product testers 14 to perform product testing on theproduct 1508. In the illustrated example, the product being tested comprises software. Subsequent to the product testing performed by the tester(s) 14, theparty 12 may update the product to create a new version of the product. Theparty 12 may then send the updated product (e.g., new product) 1509 to thesystem 10 for product testing. In some embodiments, in response to receiving a request for product testing from theparty 12 to perform testing on the updatedproduct 1509, the system may createnotification 1005 to initiate another round of product testing by one or more tester(s) 14, as similarly discussed. Alternatively, in other embodiments, instead of having one or more human tester(s) 14 performing product testing on the updatedproduct 1509, thesystem 10 itself may perform product testing on behalf of ahuman tester 14. - In one implementation, the
system 10 may utilize the tracked information obtained by thetracker 1300 to perform testing of thenew product 1509. Thesystem 10 may re-execute the tracked actions of previoushuman tester 14 to test thenew product 1509. Accordingly, while theearlier product 1508 may be tested by human tester(s) 14, alater product 1509 may be tested by thesystem 10. In other words, an earlier product testing (e.g., first product testing) may be human-based, and a later product testing (e.g., a second product testing) may be machine-based. -
FIG. 12 illustrates asystem 10 for providing product testing, wherein thesystem 10 includes additional features for allowing machine-testing of products. Thesystem 10 is the same as thesystem 10 ofFIG. 1B , except that thesystem 10 also includes a non-transitory medium 1520 (e.g., a tracked action database) for storing data based on a testing of a first product, a retrieving module 130, and aproduct testing machine 1540. The data stored in the non-transitory medium 1520 may be data regarding one or more tracked actions of tester(s) 14 performed while testing thefirst product 1508. The retrievingmodule 1530 is configured to access an electronic file containing the data (generated based on the testing of the first product 1508) from the non-transitory medium 1520. Theproduct testing machine 1540 is configured to perform machine-testing for thesecond product 1509 based on the data in the electronic file. Thesecond product 1509 may include one or more features that are different from thefirst product 1508. - As shown in the figure, the non-transitory medium 1520 is coupled to the
tracker 1300. As similarly discussed, thetracker 1300 is configured to track an interaction of a tester with a testing interface (e.g., testing interface 402) that presents features of a product being tested. Thetracker 1300 is configured to provide data (representing tracked actions of testers 14) for storage in the non-transitory medium 1520 in a form of an electronic file, wherein the data is based on the tracked interaction of thetesters 14. Thetracker 1300 may configured to track a movement of a cursor operated by thetester 14. Additionally, or alternatively, thetracker 1300 may be configured to track a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing. Thetracker 1300 may also track a movement of a finger swipe, or a simulated finger swipe. - The non-transitory medium 1520 is configured to store the electronic file in association with an identity of the
first product 1508. For example, the electronic file may include information regarding tracked action(s) of atester 14 that was performed to test a feature of thefirst product 1508, and such electronic file is stored in the non-transitory medium 1520 in association with the identity of thefirst product 1508. The non-transitory medium may also store one or more additional electronic files that are associated with the identity of thefirst product 1508. For example, the additional electronic file may include information regarding tracked action(s) of anothertester 14 that was performed to test the same feature of the samefirst product 1508. - In some cases, if there are multiple electronic files in the non-transitory medium 1520 that are associated with the same tested product, the retrieving
module 1530 may then be configured to select one of the electronic file for use by theproduct testing machine 1540. For example, there may be a first electronic file having data regarding tracked actions of afirst tester 14 who performed product testing on a product, and a second electronic file having data regarding tracked actions of asecond tester 14 who performed product testing on the same product. In such cases, the retrievingmodule 1530 may be configured to select one of the electronic files in the non-transitory medium 1520 having a latest time stamp for use by theproduct testing machine 1540. - In some embodiments, the data in the electronic file may include information regarding tracked actions of a
tester 14, and respective time stamps of the tracked actions. Theproduct testing machine 1540 is configured to re-execute the tracked actions for performing the testing of the second product based on the information in the electronic file regarding the tracked actions of thetester 14. The time stamps allow theproduct testing machine 1540 to know the order of the actions to re-execute. In some embodiments, theproduct testing machine 1540 may be configured to re-execute the tracked actions according to the same timing of the time stamps. In other embodiments, theproduct testing machine 1540 may re-execute one or more of the tracked actions at timing that is different from those represented by the time stamps. - In some embodiments, the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard. For example, the data in the electronic file may comprise: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing. The data in the electronic file may also be based on action(s) performed using a touchpad or touch screen. The tracked action(s) in the electronic file may be actions performed by a
tester 14 while performing a prescribed task to test a feature of thefirst product 1508. If the product testing of thefirst product 1508 involves multiple tasks, the electronic file may include multiple sets of tracked actions for the respective tasks. Alternatively, the non-transitory medium 1520 may store multiple electronic files for respective tasks to test thefirst product 1508. For example, a first electronic file may contain data regarding tracked action(s) of a tester who tested a first feature of the product, and a second electronic file may contain data regarding tracked action(s) of the tester who tested a second feature of the product. In such cases, the first electronic file may be considered a first sub-file, and the second electronic file may be considered a second sub-file, wherein the first sub-file and the second sub-file are parts of a super-file that is associated with the testing of the product. Thus, as used in this specification, the term “file” may be a single file, a sub-file that is a part of a super-file, multiple sub-files, multiple files that are associated with each other, or a folder that contains multiple files or sub-files. - In some cases, the data in an electronic file stored in the non-transitory medium 1520 may have the following data structure, or may be based on data having the following data structure: (Action type; details of tracked action). The following are some examples of action type and details of tracked action:
-
Action type Details of tracked action Cursor movement (X1, Y1), (X2, Y2) Object selection (X1, Y1) Text/key typing (X1, Y1), Text/Key Finger/simulated swipe Swipe trajectory
In the above examples, if a tracked action concerns cursor movement, then the associated detail of the tracked action may be a beginning position (X1, Y1) of the cursor, and an ending position (X2, Y2) of the cursor. If the tracked action concerns object selection, then the associated detail of the tracked action may be a location (X1, Y1) of the object that was selected. If the tracked action concerns text/key typing, then the associated detail of the tracked action may be a location (X1, Y1) of the text/key being typed, and the text/key being typed. If the tracked action concerns a finger/simulated swiping, then the associated detail of the tracked action may be a trajectory of the swiping. By means of non-limiting examples, the trajectory of the swiping may be a horizontal swipe, a vertical swipe, a diagonal swipe, a circular swipe, or any of other user-created swiping patterns. - In some embodiments, the electronic file retrieved by the retrieving
module 1530 may comprise a script. The script may be generated by a script generator using data regarding tracked action(s) of atester 14. For example, if the data regarding tracked action is “Text/key typing, (225, 850), Blue”, the script generated based on such data may be a command or instruction prescribing that the text “Blue” be typed at the coordinate (225, 850) at a testing interface (e.g., testing interface 402) that is configured to test the product. Theproduct testing machine 1540 is configured to run the script (which includes data based on tracked action(s) of atester 14 while testing the first product 1508) for testing thesecond product 1509. The script generator may be a part of thesystem 10. In some cases, the script generator may be a part of theproduct testing machine 1540. In such cases, theproduct testing machine 1540 is configured to access an electronic file in the non-transitory medium 1520 that contains data representing tracked actions of atester 14. The script generator in theproduct testing machine 1540 then generates a script based on the data representing the tracked actions, and theproduct testing machine 1540 then runs the script to perform machine-testing of thesecond product 1509. In other embodiments, the script generator may be implemented in the retrievingmodule 1530 and/or in thetracker 1300. The script generator will be described in further detail below with reference toFIG. 22 , which illustrates anapparatus 2200 that may be used to implement the script generator. - In some embodiments, the script generator may be configured to consider the testing performed by multiple testers 14 (as opposed to just selecting data based on one tester 14). In particular, the script generator may be configured to examine the tracked actions from
multiple testers 14, which were performed to test the same feature of the same product, and extract the commonalities to create the script. For example, when interacting with a product to test a feature of the product, afirst tester 14 may perform action A, and then may wait 30 seconds before performing action B. On the other hand, asecond tester 14 may perform action A, and may then 5 seconds before performing action B to accomplish the same task to test the same feature of the product. In such case, the script generator may combine or merge these two sets of data to create a script, which prescribes that action A be performed, and then action B be performed 5 seconds after action A. In this example, the script generator performs a “MIN” function to select the smallest time gap between two actions A, B. In other embodiments, the script generator may determine that the time gap between actions A, B does not affect a result of the testing. In such cases, the script generator may create a script that prescribes action A be performed, and then action B be performed immediately or 1 second after action A. In such cases, the script generator incorporate a time gap between actions A, B that is different from both the ones tracked in the first andsecond testers 14. - The script generator is advantageous because it converts the data representing previously tracked actions of a
tester 14 into command(s) or instruction(s) executable by theproduct testing machine 1540 to perform machine-based product testing. In other embodiments, thesystem 10 may not include the script generator. Instead, theproduct testing machine 1540 is configured to receive data representing previously tracked actions of atester 14, and use the data directly as input to perform a product testing on the product. In such cases, theproduct testing machine 1540 itself is configured to understand the data representing the tracked actions of thetester 14, and apply such data in a product testing algorithm to cause a product testing to be performed based on the data. In one implementation, the data is received by theproduct testing machine 1540 as input, and theproduct testing machine 1540 then runs an algorithm using the data to perform product testing on thesecond product 1509. Thus, the script generator may not be needed in some embodiments. - Returning to
FIG. 12 , in some embodiments, theproduct testing machine 1540 is configured to simulate actions of atester 14 based on the data in the electronic file. For example, theproduct testing machine 1540 may be configured to virtually move a cursor with respect to a testing interface (e.g., the testing interface 402) without input from a cursor control. As another example, theproduct testing machine 1540 may be configured to virtually make a selection in a testing interface without input from a user control. As a further example, theproduct testing machine 1540 may be configured to virtually type a text in a field of a testing interface without input from a keyboard. As another example, theproduct testing machine 1540 may be configured to virtually create a finger/simulated swipe in a testing interface without input from a user control (e.g., touchpad, touch screen, etc.). Theproduct testing machine 1540 may be configured to perform any combination of the foregoing to perform a product testing task. -
FIGS. 13A-13F illustrate an example of the above features regarding tracking actions of atester 14 during testing of a first product, and using the tracked actions to perform machine-based product testing on a second product. As shown inFIG. 13A , thesystem 10 presents atesting interface 1800 for allowing atester 14 to perform testing on afirst product 1802. Thefirst product 1802 may be the first product 108 shown inFIG. 11 . Thetesting interface 1800 is similar to thetesting interface 402 ofFIG. 4 . Thetesting interface 1800 includes awindow 1804 for presenting features of thefirst product 1802 being tested. In the illustrated example, thefirst product 1802 comprises a web page. In other examples, thefirst product 1802 may be a web site, a computer application (e.g., an enterprise application), a mobile (e.g., handheld) device application, an application for a specialized processor, etc. - As shown in
FIG. 13A , thetesting interface 1800 also includes afield 1810 providing one ormore tasks 1812 for theproduct tester 14 to perform on thefirst product 1802. Thefield 1810 may also provide a question for thetester 14 to answer in some cases. As shown inFIG. 13A , thefirst product 1802 being tested by thetester 14 via thetesting interface 1800 includes tabs 1-5. Thetesting interface 1800 is configured to test the feature oftab 4 in the example. Accordingly, thetesting interface 1800 provides instruction in thefield 1810 to instruct thetester 14 to selecttab 4. In response to the testing instruction to perform thetab 4 selection task, thetester 14 moves the cursor from the position shown inFIG. 13A to a new position shown inFIG. 13B . While thetester 14 is performing this action, thetracker 1300 of thesystem 10 tracks the interaction of thetester 14 with respect to thefirst product 1802 presented in thetesting interface 1800. For example, thetracker 1300 may determine that the cursor is at position (X=1270, Y=510) inFIG. 13A , and is then moved to new position (X=1142, Y=835) inFIG. 13B . When thetester 14 selects tab 4 (shown inFIG. 13C ), thetracker 1300 also tracks the selection. In the illustrated example, after thetester 14 selectstab 4, thefirst product 1802 presents animage 1820 of an apple (FIG. 13D ), and thefield 1810 of thetesting interface 1800 asks thetester 14 to confirm whether he/she sees an apple. Thetester 14 then answers the question by moving the cursor from the position (X=1142, Y=835) shown inFIG. 13D to a new position (X=1490, Y=362) shown inFIG. 13E . Thetester 14 then clicks on the “Y” button at the cursor position (X=1490, Y=362) to confirm that thetester 14 can see the apple. While thetester 14 is performing these actions, thetracker 1300 tracks the interaction of thetester 14 with respect to thetesting interface 1800. As a result of testing the feature oftab 4 in the above example, thetracker 1300 may generate the following data representing the tracked actions of the tester 14: -
No. Action type Details of tracked action 1 Cursor movement (1270, 510), (1142, 835) 2 Object selection (1142, 835) 3 Cursor movement (1142, 835), (1490, 362) 4 Object selection (1490, 362)
The above data may be stored in the non-transitory medium (e.g., tracked action database) 1520 of thesystem 10 for later use. The data may be stored in association with thefirst product 1802 tested by thetester 14. The data may also be stored in association with an identity of thetester 14. Also, in some embodiments, the data may be stored in association with metadata indicating the nature of the tester interaction. For example, the above first two tracked actions (actions 1, 2) may be stored with metadata “product feature selection” indicating that the actions were performed to select a feature in the product being tested. Similarly, the last two tracked actions (actions 3, 4) in the above example may be stored with metadata “confirm feature=Y” indicating that the actions were performed to confirm a presence of a feature in the product being tested, and that the testing of thetab 4 is successful because thetester 14 confirmed the presence of the feature. Furthermore, the non-transitory medium 1520 may store the image ofFIG. 13F in association with the data representing the tracked actions. This image is useful because it includes a content (e.g., image of an apple in the example) indicating a successful result of the task for testing thetab 4 feature of thefirst product 1802. - In other embodiments, instead of tracking cursor operations anywhere in the
testing interface 1800, thetracker 1300 may be configured to track cursor operation with respect to the product itself (i.e., features in the window 1804). In such cases, thetracker 1300 does not track cursor operations in thefield 1810 of the testing interfaced 1800. However, thetracker 1300 may still track other forms of tester interaction with thetesting interface 1800. For example, instead of asking thetester 14 to use the cursor to select “Y” or “N” to confirm whether he/she sees an apple, thetesting interface 1800 may ask thetester 14 to press key “Y” or “N” in the keyboard, or may ask thetester 14 to say “Yes” or “No”. Accordingly, thetracker 1300 may be configured to track key stroke, voice input, etc. Data representing such tracked actions will then be stored in the non-transitory medium 1520. - After the
first product 1802 has been tested, thesystem 10 may later receive another request to test a new product (a second product) that is an updated version of thefirst product 1802. When this happens, instead of having atester 14 performing testing on the second product, thesystem 10 itself performs testing of the new product based on the data stored in the non-transitory medium 1520. Following the above example, the retrievingmodule 1530 of thesystem 10 access the non-transitory medium 1520 to obtain the data representing the previously tracked actions of thetester 14 performed while testing thefirst product 1802. Theproduct testing machine 1540 then performs testing of the second product based on the data. In some embodiments, the data may be used to create a script that prescribes actions to be performed by theproduct testing machine 1540. Accordingly, theproduct testing machine 1540 executes the script, which causes theproduct testing machine 1540 to electronically operate a testing interface to test feature(s) of the second product. In particular, when testing thetab 4 feature of the second product based on the previously tracked actions ( 1, 2 in the example), theactions product testing machine 1540 moves the cursor to position (1142, 835), and selects thetab 4 at the position (1142, 835). As a result of these operations by theproduct testing machine 1540, the second product 1830 (which may be thesecond product 1509 ofFIG. 11 ) in thetesting interface 1840 displays an apple in a window 1832 (FIG. 14 ). Because the next two tracked actions ( 3, 4 in the example) are for confirming a presence of an object in the product to determine if the testing of the feature in the product is successful or not, theactions product testing machine 1540 does not repeat the tracked 3, 4. Instead, theactions product testing machine 1540 may compare the image from thetesting interface 1840 obtained while theproduct testing machine 1540 is testing thenew product 1830, with the previously saved image (i.e., the image ofFIG. 13F in the example) from the testing interface obtained while thetester 14 was testing thefirst product 1802.FIG. 15 illustrates this concept. - As shown in
FIG. 15 , theproduct testing machine 1540 may obtain afirst image 1850 that is associated with the testing of thefirst product 1802, and obtain asecond image 1852 that is associated with the testing of thesecond product 1830. Thefirst image 1850 is based on a completion of a first task (the task to test thetab 4 feature of thefirst product 1802 in the example) performed during the testing of thefirst product 1802 by thetester 14, and thesecond image 1852 may be based on a completion of a second task (the task to test thetab 4 feature of thesecond product 1830 in the example) performed during the testing of thesecond product 1830 by theproduct testing machine 1540. In the illustrated example, thefirst image 1850 is the same as that shown inFIG. 13F (which was previously stored after thetester 14 performs the task to test thetab 4 feature in the first product 1802), and thesecond image 1852 is the same as that shown inFIG. 14 (which is obtained after theproduct testing machine 1540 has tested thetab 4 feature in the second product 1830). Accordingly, thefirst image 1850 comprises a first content (e.g., the image of the apple in the above example) of a first content of thefirst testing interface 1800 configured for testing thefirst product 1802, the first content indicating a first result (e.g., a successful result) of a first task for testing thefirst product 1802. Also, thesecond image 1852 comprises a second content (e.g., the image of the apple in the above example) of a second content of thesecond testing interface 1840 configured for testing thesecond product 1830, the second content indicating a second result of a second task for testing thesecond product 1830. - In other embodiments, the
first image 1850 may be an image of thefirst product 1802 without thefirst testing interface 1800, and thesecond image 1852 may be an image of thesecond product 1830 without thesecond testing interface 1840. Accordingly, thefirst image 1850 comprises a first content (e.g., the image of the apple in the above example) of thefirst product 1802, the first content indicating a first result (e.g., a successful result) of a first task for testing thefirst product 1802. Also, thesecond image 1852 comprises a second content (e.g., the image of the apple in the above example) of thesecond product 1830, the second content indicating a second result of a second task for testing thesecond product 1830. - As shown in
FIG. 15 , theproduct testing machine 1540 is also configured to apply amask 1860 to thefirst image 1850 to create a firstmasked image 1862, apply themask 1860 to thesecond image 1852 to create a secondmasked image 1864, and compare the firstmasked image 1862 with the secondmasked image 1864. Themask 1860 is configured to block out one or more portions of thefirst image 1850 and thesecond image 1852. Themask 1860 is advantageous because it blocks out information in the captured 1850, 1852 that are different from each other, but are not relevant in deciding whether the testing of the product feature fails or not. For example, as shown in theimages testing interface 1840 ofFIG. 14 , theidentity 1842 of the product being tested is different from that shown inFIG. 13F . Also, thetester identity 1844 in thetesting interface 1840 ofFIG. 14 is “VM3”, indicating that the testing is being performed by virtual machine No. 3, which is also different from that shown inFIG. 13F (showing the tester being “Tom”). In other cases, thetester identity 1844 may be shown in the product itself, as opposed to being displayed in a field of the testing interface. Thetesting date 1846 in thetesting interface 1840 ofFIG. 14 is also different from that shown inFIG. 13F . Theproduct identity 1842, thetester identity 1844, andtesting date 1846 are different between thefirst image 1850 and thesecond image 1852. However, they are not relevant in deciding whether the testing of the product feature fails or not. Accordingly, themask 1860 contains one ormore regions 1862 configured to block out these items in thefirst image 1850 and thesecond image 1852. In some embodiments, if thefirst image 1850 includes an image of the first product 1802 (without the first testing interface 1800), and if thesecond image 1852 includes an image of the second product 1830 (without the second testing interface 1840), then themask 1860 may have one ormore regions 1862 configured to block out items in the image of thefirst product 1802, and corresponding items in the image of thesecond product 1830. - After the first
masked image 1862 and the secondmasked image 1864 are obtained, theproduct testing machine 1540 then compares them to see if they are the same or sufficiently similar. If so, theproduct testing machine 1540 may then determine that the testing of the feature (e.g., thetab 4 feature in the above example) in thenew product 1830 passes. On the other hand, if the comparison result indicates that the firstmasked image 1862 and the secondmasked image 1864 are not the same or not sufficiently similar, theproduct testing machine 1540 may then determine that the testing of the feature in thenew product 1830 fails. Accordingly, theproduct testing machine 1540 is configured to determine whether the testing of a feature of a product fails or not based on the comparison of the firstmasked image 1862 and the secondmasked image 1864. - Various techniques may be employed in different embodiments to compare the first
masked image 1862 and the secondmasked image 1864 with each other. In some embodiments, theproduct testing machine 1540 may be configured to perform cross correlation to determine a level of similarity between the first and second 1862, 1864. If the level of similarity is above a certain prescribed threshold, then themasked images product testing machine 1540 may consider the first and second 1862, 1864 as being the same or sufficiently similar. The prescribed threshold may be 0.8, 0.9, 0.95, etc, or any of other user-defined number (with 1.0 representing the situation in which themasked images 1862, 1864 are identical).masked images - In other embodiments, the
product testing machine 1540 may be configured to perform an image subtraction between the first and second 1862, 1864 to obtain a subtracted image. If the first and secondmasked images 1862, 1864 are identical, the subtracted image will have zero pixel values throughout. On the other hand, if the first and secondmasked images 1862, 1864 are substantially similar, the subtracted image will have some non-zero pixel values, but not a lot. In one implementation, themasked images product testing machine 1540 may be configured to count the number of non-zero pixel values in the subtracted image. If the number is below a certain prescribed threshold, theproduct testing machine 1540 may consider the first and second 1862, 1864 as being the same or sufficiently similar. The prescribed threshold may be 100 pixels, 80 pixels, 50 pixels, 10 pixels, etc, or any of other user-defined number. Alternatively, the prescribed threshold may be expressed as a percentage of the total number of pixels in the image. For example, the prescribed threshold may be 5% of the total pixel numbers, 3% of the total pixel numbers, 1% of the total pixel numbers, etc, or any of other user-defined percentage.masked images - In some embodiments, in addition to, or in the alternative of, considering the number of non-zero pixel values in the subtracted image, the
product testing machine 1540 may also analyze the distribution of the non-zero pixel values in the subtracted image to determine whether the first and second 1862, 1864 are the same or substantially similar. If the non-zero pixel values in the subtracted image are spread out, then themasked images product testing machine 1540 may determine that the non-zero pixel values are due to noise or due to inaccuracy in the alignment of the features in the two 1862, 1864. In such cases, the twomasked images 1862, 1864 may be considered as being sufficiently similar. On the other hand, if the non-zero pixel values in the subtracted image are clustered in group(s), then themasked images product testing machine 1540 may determine that the two 1862, 1864 are different or not substantially similar.masked images - In the above example, the
system 10 has been described with reference to testing a feature of theproduct 1830. In other embodiments, thesystem 10 may be configured to test multiple features of theproduct 1830, wherein the multiple features includes at least a first feature and a second feature. In such cases, theproduct testing machine 1540 may be configured to test the first feature, and the second feature. In one implementation, theproduct testing machine 1540 may be configured to test the first feature of theproduct 1830 by running a first script that is based on a first tracked action of atester 14, and test the second feature of theproduct 1830 by running a second script that is based on a second tracked action of thetester 14. - Also, the above example is described with reference to testing a tab feature of a webpage. In other embodiments, the
system 10 may be configured to test other features of other types of products. For example, thesystem 10 may test a selection of a link, a selection of a button, an input of a command, etc. - In some cases, the
first image 1850 of the testing interface 1800 (that was captured during a previous testing of an earlier product 1802) may include a feature with varying configuration over time (e.g., a video, an animation, a moving object, etc.). In such cases, when theproduct testing machine 1540 performs machine-testing of thelater product 1830, thetesting interface 1840 may also include the same feature with the varying configuration—i.e., when the same stage of the testing is reached. For example, instead of being a still image, the image of the apple in thefirst image 1850 in the above example may be one of a plurality of image frames in a video of thefirst product 1802 that was captured during a testing session. In this example, the video shows a moving apple. Following this example, in order to determine whether the machine-based product testing being performed on thesecond product 1830 fails or not, thesystem 10 is configured to find an image (from a sequence of image frames in the video of the moving apple in the second product 1830) that matches the image of the apple in the first image 8150 (or in the first masked image 1862).FIG. 16 illustrates the above concept. As shown in the figure, thefirst image 1850/the firstmasked image 1862 includes the image of the apple, which is one of the image frames in the video of the moving apple. When the machine-based testing performed by theproduct testing machine 1540 reaches the same stage (e.g., at the page of thesecond product 1830 showing a video of a moving apple), thesystem 10 then compares the image frames in the video with the image of the apple from thefirst image 1850 or from the firstmasked image 1862. In the illustrated example, there are fourimage frames 1864 a-1864 d in the video of the moving apple in thesecond product 1830. Accordingly, thesystem 10 performs the image comparison to compare each of these fourimage frames 1864 a-1864 d with the image of the apple from thefirst image 1850 or firstmasked image 1862. As shown in the figure, image frame 1864 b matches with the image of the apple associated with thefirst product 1802. Accordingly, thesystem 10 can determine that the testing of thetab 4 feature of thesecond product 1830 passes. In one implementation, the image capturing feature described above may be performed by an image capturer 1550 (shown inFIG. 12 ). Theimage capturer 1550 is configured to determine a second image (which may be thesecond image 1852 or the second masked image 1864) by comparing a sequence of image frames 1864 with the first image (which may be thefirst image 1850 or the first masked image 1862), and selecting one of the image frames 1864 that matches the first image as the second image. In some embodiments, theimage capturer 1550 is configured to compare a region-of-interest in the first image with corresponding region-of-interest in the sequence of image frames. Theimage capturer 1550 is advantageous because it addresses the situation in which the stored first image 1802 (representing a success testing of a feature of thefirst product 1508/1802) is a part of a video or moving feature in thefirst product 1508/1802. As shown in the above example, the machine-based testing by theproduct testing machine 1540 is based on a comparison of captured images (one from human-based testing, and another one from machine-based testing). If the first captured image is from a video or a moving feature of thefirst product 1508/1802, then theproduct testing machine 1540 will need to search through image frames from the same corresponding video or moving feature in thesecond product 1509/1830 in order to verify whether there is an image that matches with the first image (e.g., thefirst image 1850/first masked image 1862). - Returning to
FIG. 12 , in some embodiments, thesystem 10 may comprise adispatch module 1560 configured to automatically send out a request to test thesecond product 1830 if the testing of the feature of thesecond product 1830 based on the comparison of the first and second 1862, 1864 fails. In some cases, the testing of the new product by themasked images product testing machine 1540 based on previously tracked actions of atester 14 may result in a failed testing. This is a possible scenario because an updated product may have a feature that renders a previously tracked product testing action inapplicable for testing the updated product. If the machine-based product testing fails, thedispatch module 1560 then generates a signal to cause thenotification generator 1004 to send out one or more requests for product testing by one ormore testers 14. The technique and features associated with product testing bytesters 14 were previously described, and will not be repeated here. If the product testing by one ormore testers 14 fails, thesystem 10 may then determine that the second product 1830 (e.g., the updated product) fails product testing (because it fails both the machine-based testing, and the human-based testing). On the other hand, if the product testing on thenew product 1830 by one ormore testers 14 passes, thesystem 10 may then determine that thenew product 1830 passes product testing. In such cases, thesystem 10 then saves the tracked actions (the ones that results in the passing of the product testing on the new product 1830) of thetester 14 in the non-transitory medium 1520 for later use. For example, if another new product later (e.g., another updated product) is received by thesystem 10 for product testing, thesystem 10 may then retrieve the electronic file with the latest tracked tester's actions for use by theproduct testing machine 1540 to perform machine-based product testing on the newest product. - In the above example, the
product testing machine 1540 is described as repeating a selection of an object in thesecond product 1830 at a location in thesecond product 1830 that is the same as the location in the first product 1802 (as tracked by the tracker 1300). This is because the selection of the object in thefirst product 1802 by thetester 14 is tracked by thetracker 1300, and it is assumed that the same object will appear in thesecond product 1830 when tested by theproduct testing machine 1540. However, in some embodiments, the object selected in thefirst product 1802 may appear at a different location in thesecond product 1830. For example, when theparty 16 updates thefirst product 1802 to create thesecond product 1830, theparty 16 may move the object (e.g., a tab) in thefirst product 1802 to another location in thesecond product 1830. Accordingly, in some embodiments, when thetracker 1300 tracks a selection of an object when thetester 14 tests the product, thetracker 1300 may also capture an image of the object being selected. In the above example, thetracker 1300 may capture an image oftab 4 when thetester 14 selectstab 4. The captured image of the object may then be stored in the non-transitory medium 1520 in association with the data representing the tracked action (e.g., the tracked selection of thetab 4 in the example). In one implementation, the capturing of the image of a selected object may be performed by capturing a screenshot of the product when thetester 14 selects an object, and the coordinate of the object selection, which indicates the object being selected in the screenshot. Later on, when theproduct testing machine 1540 performs machine-testing of thesecond product 1830, instead of repeating the selection of the object at the same location as that in thefirst product 1802, theproduct testing machine 1540 searches an image of thesecond product 1830 to look for the same object that was previously selected by thetester 14 in thefirst product 1802. For example, theproduct testing machine 1540 may perform an image search to locate thetab 4 in thesecond product 1830, and if thetab 4 is found, thenproduct testing machine 1540 may then select thetab 4, regardless of whether thetab 4 is at the same position with respect to thesecond product 1830 as that in thefirst product 1802. Therefore, in other embodiments, instead of re-playing a testing action based on position (e.g., X, Y coordinates) of a previous testing action by atester 14, theproduct testing machine 1540 may re-play a previously tracked testing action based on appearance of an object and/or semantics. - It should be noted that the product being tested is not limited to the example and features described herein, and that the product being tested may have other features, and/or may be of different types. By means of non-limiting examples, the product may comprise a web page, a web site, a computer application, a mobile device application, or a processor application.
- It should be noted that the
system 10 is not limited to have the configuration shown inFIG. 12 , and that thesystem 10 is not limited to having the features described herein. In some embodiments, thesystem 10 may not include one or more of the items described with reference toFIG. 12 . Also, one or more of the items described with reference toFIG. 12 may be combined in some embodiments. For example in some embodiments, the retrievingmodule 1530 and theproduct testing machine 1540 may be integrated. In such cases, the retrievingmodule 1530 may be one or more inputs, or one or more input interfaces, of a processing unit, wherein the processing unit may implement, or may be a part of, theproduct testing machine 1540. In addition, in some embodiments, theproduct testing machine 1540 may be a processing unit, or a part of a processing unit. Such processing unit may also be used to implement thetracker 1300, the retrievingmodule 1530, theimage capturer 1550, thedispatch module 1560, or any combination of the foregoing. Alternatively, such processing unit may be communicatively coupled to thetracker 1300, the retrievingmodule 1530, theimage capturer 1550, thedispatch module 1560, or any combination of the foregoing. Furthermore, in some embodiments, the electronicproduct testing system 10 may include only theproduct testing machine 1540. In other embodiments, the electronicproduct testing system 10 may not include theuser interface generator 1350, the producttesting instruction database 1600, the testresult retrieval module 1500, thetesting monitoring module 1400, theanalyzer 1502, or any combination of the foregoing. Also, in some embodiments, the electronicproduct testing system 10 may not include one or more items that are outside the dashed-box inFIG. 12 . In still further embodiments, the non-transitory medium 1520 may be excluded from thesystem 10. In such cases, thesystem 10 is communicatively coupled to the non-transitory medium 1520 (e.g., via the Internet, a cable, or any of other types of network connection). Furthermore, in other embodiments, theproduct testing machine 1540 may be considered as a testing device. Such testing device may optionally include theimage capturer 1550 and/or thedispatch module 1560. Also, such testing device may include a processing unit for providing one or more features described herein. -
FIG. 17 illustrates amethod 1900 in accordance with some embodiments. Themethod 1900 is a processor-implemented method for product testing. Themethod 1900 may be performed by thesystem 10 ofFIG. 12 . As shown in the figure, themethod 1900 includes accessing an electronic file, the electronic file containing data generated based on a testing of a first product (item 1902); and performing testing of a second product by a processing unit based on the data in the electronic file (item 1904). The second product may have at least one feature that is different from the first product. The first product may be thefirst product 1802 described in the previous example, and the second product may be thesecond product 1830 described in the previous example. - In some embodiments, with respect to the
method 1900, the data in the electronic file comprises information regarding tracked actions of a tester, and respective time stamps of the tracked actions. - In some embodiments, with respect to the
method 1900, the act of performing the testing of the second product comprises re-executing the tracked actions to test the second product based on the information in the electronic file regarding the tracked actions of the tester. - In some embodiments, with respect to the
method 1900, the act of performing the testing of the second product comprises simulating actions of a tester. - In some embodiments, with respect to the
method 1900, the electronic file comprises a script, and wherein the act of performing the testing of the second product comprises running the script for testing the second product. - In some embodiments, with respect to the
method 1900, the data in the electronic file are based on tracked action(s) performed using a cursor and/or a keyboard. - In some embodiments, with respect to the
method 1900, the data in the electronic file comprises: cursor positions; a text typed by a tester; a location of the text typed by the tester, a location of an object selection; or any combination of the foregoing. - In some embodiments, with respect to the
method 1900, the electronic file is stored in a non-transitory medium in association with an identity of the first product. - In some embodiments, with respect to the
method 1900, the non-transitory medium also stores one or more additional electronic files that are associated with the identity of the first product. - In some embodiments, with respect to the
method 1900, the act of accessing the electronic file comprises selecting one of the electronic files in the non-transitory medium having a latest time stamp. - In some embodiments, the
method 1900 may further include: obtaining a first image that is associated with the testing of the first product, and obtaining a second image that is associated with the testing of the second product. - In some embodiments, with respect to the
method 1900, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product. - In some embodiments, with respect to the
method 1900, the first image comprises a first content of a first testing interface configured for testing the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of a second testing interface configured for testing the second product, the second content indicating a second result of a second task for testing the second product. - In some embodiments, the
method 1900 may further include: applying a mask to the first image to create a first masked image, applying the mask to the second image to create a second masked image, and comparing the first masked image with the second masked image. - In some embodiments, with respect to the
method 1900, the mask is configured to block out one or more portions of the first image and the second image. - In some embodiments, with respect to the
method 1900, the testing of the second product comprises testing a feature of the second product, and wherein the method further comprising determining whether the testing of the feature of the second product fails or not based on the comparison of the first masked image and the second masked image. - In some embodiments, the
method 1900 may further include automatically sending out a request to test the second product if the testing of the feature of the second product based on the comparison of the first and second masked images fails. - In some embodiments, with respect to the
method 1900, the processing unit is configured to test multiple features of the second product, the multiple features comprising at least a first feature and a second feature, wherein the act of performing testing of the second product comprises testing the first feature of the second product by running a first script that is based on a first tracked action of a tester, and testing the second feature of the second product by running a second script that is based on a second tracked action of the tester. - In some embodiments, the
method 1900 may further include determining the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image. - In some embodiments, the
method 1900 may further include tracking an interaction of a tester with a web page, wherein the data in the electronic file is based on the tracked interaction. - In some embodiments, with respect to the
method 1900, the act of tracking comprises tracking a movement of a cursor operated by the tester. - In some embodiments, with respect to the
method 1900, the act of tracking comprises tracking a selection of a tab, a selection of a button, a selection of an icon, a selection of a text, or any combination of the foregoing. - In some embodiments, with respect to the
method 1900, the first product comprises a web page, a web site, a computer application, a mobile device application, or a processor application. - In some embodiments, with respect to the
method 1900, the act of performing the testing of the second product comprises virtually moving a cursor with respect to a testing interface without input from a cursor control. - In some embodiments, with respect to the
method 1900, the act of performing the testing of the second product comprises virtually making a cursor selection in a testing interface without input from a cursor control. - In some embodiments, with respect to the
method 1900, the act of performing the testing of the second product comprises virtually typing a text in a field of a testing interface without input from a keyboard. - In some embodiments, with respect to the
method 1900, the testing of the first product is human-based, and the testing of the second product is machine-based. - In some embodiments, the
method 1900 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium. In particular, the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: accessing an electronic file, the electronic file containing data generated based on a testing of a first product; and performing testing of a second product based on the data in the electronic file, the second product having at least one feature that is different from the first product. - As discussed, the
product testing machine 1540 is configured to compare two masked images to determine whether they are the same or substantially similar, and if so, theproduct testing machine 1540 may then determine that the machine-based testing performed to test the feature of the new product passes.FIG. 18 illustrates anapparatus 1950, which is a component of an electronic product testing system, wherein the component is configured to provide the above features. Thecomponent 1950 may be a processing unit. Also, in some embodiments, theapparatus 1950 itself may be considered as a product testing device/system, or a component of a product testing device/system. In addition, in some embodiments, theapparatus 1950 may be implemented as a part of theproduct testing machine 1540, or as a module that is communicatively coupled to theproduct testing machine 1540. As shown in the figure, theapparatus 1950 includes one or more input(s) 1954 configured to obtain a first image that is associated with a testing of the first product, and to obtain a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product. Theapparatus 1950 also includes amask applicator 1954 configured to apply a mask to the first image to create a first masked image, and to apply the mask to the second image to create a second masked image. Theapparatus 1950 also includes acomparator 1956 configured to compare the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not. In some embodiments, the first image may be theimage 1850 ofFIG. 15 , and the second image may be theimage 1852 ofFIG. 15 . Also, the mask may be themask 1860 ofFIG. 15 . - The mask is configured to block out one or more portions of the first image and the second image.
- In some embodiments, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product.
- In some embodiments, the first image comprises a first content of a first testing interface configured for testing the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of a second testing interface configured for testing the second product, the second content indicating a second result of a second task for testing the second product.
- In some embodiments, the
apparatus 1950 may further include an image capturer configured to determine the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image. -
FIG. 19 illustrates amethod 1980 in accordance with some embodiments. Themethod 1980 is a processor-implemented method for product testing. Themethod 1980 may be performed by thesystem 10 ofFIG. 12 . In one implementation, themethod 1980 may be performed by theapparatus 1950 ofFIG. 18 . As shown in the figure, themethod 1980 includes: obtaining, by one or more input(s), a first image that is associated with a testing of the first product, and a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product (item 1982). Themethod 1980 also includes: applying, by a mask applicator, a mask to the first image to create a first masked image (item 1984). Themethod 1980 also includes: applying, by the mask applicator, the mask to the second image to create a second masked image (item 1986). Themethod 1980 further includes: comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not (item 1988). The first product may be thefirst product 1802 described in the previous example, and the second product may be thesecond product 1830 described in the previous example. - In some embodiments, with respect to the
method 1980, the first image is based on a completion of a first task performed during the testing of the first product, and wherein the second image is based on a completion of a second task performed during the testing of the second product. - In some embodiments, with respect to the
method 1980, the first image comprises a first content of the first product, the first content indicating a first result of a first task for testing the first product; and wherein the second image comprises a second content of the second product, the second content indicating a second result of a second task for testing the second product. - In some embodiments, with respect to the
method 1980, the mask is configured to block out one or more portions of the first image and the second image. - In some embodiments, the
method 1980 further includes determining, by an image capturer, the second image by comparing a sequence of image frames with the first image, and selecting one of the image frames that matches the first image as the second image. - In some embodiments, the
method 1980 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium. In particular, the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for product testing to be performed, the method comprising: obtaining, by one or more input(s), a first image that is associated with a testing of the first product, and a second image that is associated with a testing of the second product, wherein the testing of the second product comprises a testing of a feature of the second product; applying, by a mask applicator, a mask to the first image to create a first masked image; applying, by the mask applicator, the mask to the second image to create a second masked image; and comparing, by a comparator, the first masked image with the second masked image to determine whether the testing of the feature of the second product fails or not. - Mask Generator
- As discussed, the
product testing machine 1540 is configured to compare two masked images to determine whether they are the same or substantially similar, and if so, theproduct testing machine 1540 may then determine that the machine-based testing performed to test the feature of the new product passes. In some embodiments, thesystem 10 may further include a component configured to generate the mask.FIG. 20 illustrates anapparatus 2000, which is a component of an electronic product testing system, wherein the component is configured to create a mask for masking one or more images of different products obtained during testing of the products. Thecomponent 2000 may be a processing unit. Also, in some embodiments, theapparatus 2000 itself may be considered as a component of a product testing device. In addition, in some embodiments, theapparatus 2000 may be implemented as a part of theproduct testing machine 1540, or as a module that is communicatively coupled to theproduct testing machine 1540. As shown in the figure, theapparatus 2000 includes: one or more input(s) 2002 configured to receive a first image of a product captured during a first testing of the product, and a second image of the product captured during a second testing of the product. Theapparatus 2000 also includes animage analyzer 2004 configured to determine a first part of the product that is different in the first image and the second image. Theapparatus 2000 also includes amask generator 2006 configured to create a mask for covering an image of the first part of the product. - Optionally, the first testing of the product is associated with a first tester, and the second testing of the product is associated with a second tester.
- Optionally, the
image analyzer 2004 is configured to perform an image subtraction based on the first image and the second image to obtain a subtracted image. - Optionally, the
image analyzer 2004 is configured to analyze a distribution of non-zero pixel values in the subtracted image. - Optionally, the
mask generator 2006 is configured to create the mask based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image. - Optionally, the
image analyzer 2004 is configured to determine a second part of the product that is different in the first image and the second image, and wherein themask generator 2006 is configured to create the mask for also covering the image of the second part of the product. - Optionally, the
apparatus 2000 further includes a non-transitory medium configured to store the mask in association with an identity of the product. -
FIG. 21 illustrates amethod 2100 in accordance with some embodiments. Themethod 2100 is a processor-implemented method for product testing. Themethod 2100 may be performed by thesystem 10 ofFIG. 12 . In one implementation, themethod 2100 may be performed by theapparatus 2000 ofFIG. 20 . As shown in the figure, themethod 2100 includes: receiving a first image of a product captured during a first testing of the product (item 2102); receiving a second image of the product captured during a second testing of the product (item 2104); determining a first part of the product that is different in the first image and the second image (item 2106); and creating a mask for covering an image of the first part of the product (item 2108). - In some embodiments, with respect to the
method 2100, the first testing of the product is associated with a first tester, and the second testing of the product is associated with a second tester. - In some embodiments, with respect to the
method 2100, the act of determining the first part of the product that is different in the first image and the second image comprises performing an image subtraction based on the first image and the second image to obtain a subtracted image. - In some embodiments, with respect to the
method 2100, the act of determining the first part of the product that is different in the first image and the second image also comprises analyzing a distribution of non-zero pixel values in the subtracted image. - In some embodiments, with respect to the
method 2100, the mask is created based on a result of the analysis of the distribution of the non-zero pixel values in the subtracted image. - In some embodiments, the
method 2100 may further include determining a second part of the product that is different in the first image and the second image, and wherein the mask is created for also covering the image of the second part of the product. - In some embodiments, the
method 2100 may further include storing the mask in a non-transitory medium in association with an identity of the product. - In some embodiments, the
method 2100 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium. In particular, the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving a first image of a product captured during a first testing of the product; receiving a second image of the product captured during a second testing of the product; determining a first part of the product that is different in the first image and the second image; and creating a mask for covering an image of the first part of the product. - Script Generator
- As discussed, in some embodiments, the
product testing machine 1540 is configured perform machine-based product testing based on a script, wherein the script is based on a previous testing performed by a tester. In some embodiments, thesystem 10 may further include a component configured to generate the script.FIG. 22 illustrates anapparatus 2200, which is a component of an electronic product testing system, wherein the component is configured to create a script for execution by a product testing device. Thecomponent 2200 may be a processing unit. Also, in some embodiments, theapparatus 2200 itself may be considered as a component of a product testing device. In addition, in some embodiments, theapparatus 2200 may be implemented as a part of theproduct testing machine 1540, or as a module that is communicatively coupled to theproduct testing machine 1540. As shown in the figure, theapparatus 2200 includes: aninput 2202 configured to receive first data regarding a first tracked action performed while testing a first product; and aprocessing unit 2204 configured to create a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product. - Optionally, the apparatus is a part of the product testing machine.
- Optionally, the
input 2202 is also configured to receive second data regarding a second tracked action performed while testing the first product, and wherein theprocessing unit 2204 is configured to create the script based also on the second data. - Optionally, the first tracked action was for testing a first feature of the first product, and the second tracked action was for testing a second feature of the first product.
- Optionally, the first tracked action was for testing a feature of the first product by a first tester, and the second tracked action was for testing the feature of the first product by a second tester.
- Optionally, the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the
processing unit 2204 is configured to select a shorter one of the first period and the second period for inclusion in the script. - Optionally, the first data is stored in a first file, the second data is stored in a second file, and wherein the processing unit is configured to create the script by combining the first data and the second data.
- Optionally, the
apparatus 2200 further includes a non-transitory medium configured to store the script for access by the product testing machine. - Optionally, the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice.
-
FIG. 23 illustrates amethod 2300 in accordance with some embodiments. Themethod 2300 is a processor-implemented method for product testing. In particular, themethod 2300 is for creating a script for execution by a product testing machine to perform machine-based product testing. Themethod 2300 may be performed by thesystem 10 ofFIG. 12 . In one implementation, themethod 2300 may be performed by theapparatus 2200 ofFIG. 22 . As shown in the figure, themethod 2300 includes: receiving first data regarding a first tracked action performed while testing a first product (item 2302); and creating, by a processing unit, a script based on the first data (item 2304). The script is electronically executable by a product testing machine (e.g., product testing machine 1540) to perform machine-testing of a second product, the second product having at least one feature that is different from the first product. - In some embodiments, with respect to the
method 2300, the processing unit is a part of the product testing machine. - In some embodiments, the
method 2300 may further include receiving second data regarding a second tracked action performed while testing the first product, and wherein the script is created based also on the second data. - In some embodiments, with respect to the
method 2300, the first tracked action was for testing a first feature of the first product, and the second tracked action was for testing a second feature of the first product. - In some embodiments, with respect to the
method 2300, the first tracked action was for testing a feature of the first product by a first tester, and the second tracked action was for testing the feature of the first product by a second tester. - In some embodiments, with respect to the
method 2300, the first data indicates a first period between the first tracked action and another tracked action performed by the first tester while testing the feature of the first product; wherein the second data indicates a second period between the second tracked action and another tracked action performed by the second tester while testing the feature of the first product; and wherein the method further comprises selecting a shorter one of the first period and the second period for inclusion in the script. - In some embodiments, with respect to the
method 2300, the first data is stored in a first file, the second data is stored in a second file, and wherein the script is created by combining the first data and the second data. - In some embodiments, the
method 2300 may further include storing the script in a non-transitory medium for access by the product testing machine. - In some embodiments, with respect to the
method 2300, the first tracked action comprises a tracked cursor movement, a tracked object selection, a typing of a text, an inputting of a key, or an outputting of a voice. - In some embodiments, the
method 2300 may be performed in response to a processing unit processing a set of instructions stored in a processor-readable medium. In particular, the processor-readable medium includes a set of instructions, wherein an execution of the instructions by a processing unit will cause a method for to be performed, the method comprising: receiving first data regarding a first tracked action performed while testing a first product; and creating, by the processing unit, a script based on the first data, wherein the script is electronically executable by a product testing machine to perform machine-testing of a second product, the second product having at least one feature that is different from the first product. - Specialized Processing System
-
FIG. 24 is a block diagram illustrating an embodiment of a specialized processing system 2600 that can be used to implement various embodiments or features described herein. For example, the processing system 2600 may be used to implement thesystem 10 ofFIG. 1A andFIG. 1B , thesystem 10 ofFIG. 11 andFIG. 12 , or any component thereof. As another example, the processing system 2600 may be an example of a device being used by a product tester. Also, in some embodiments, the processing system 2600 may be used to implement thetracker 1300, the retrievingmodule 1530, theproduct testing machine 1540, theimage capturer 1550, thedispatch module 1560, a component of any of the foregoing, or any combination of the foregoing. Furthermore, in some embodiments, the processing system 2600 may be considered a processing unit that is a part of thetracker 1300, a part of the retrievingmodule 1530, a part of theproduct testing machine 1540, a part of theimage capturer 1550, a part of thedispatch module 1560, or any combination of the foregoing. In addition, in some embodiments, the processing system 2600 may be configured to implement theapparatus 1950, theapparatus 2000, theapparatus 2200, or any combination of the foregoing. - Processing system 2600 includes a
bus 2602 or other communication mechanism for communicating information, and a processor 2604 coupled with thebus 2602 for processing information. The processor system 2600 also includes a main memory 2606, such as a random access memory (RAM) or other dynamic storage device, coupled to thebus 2602 for storing information and instructions to be executed by the processor 2604. The main memory 2606 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by the processor 2604. The processor system 2600 further includes a read only memory (ROM) 2608 or other static storage device coupled to thebus 2602 for storing static information and instructions for the processor 2604. A data storage device 2610, such as a magnetic disk or optical disk, is provided and coupled to thebus 2602 for storing information and instructions. - The processor system 2600 may be coupled via the
bus 2602 to a display 2612, such as a cathode ray tube (CRT), for displaying information to a user. Aninput device 2614, including alphanumeric and other keys, is coupled to thebus 2602 for communicating information and command selections to processor 2604. Another type of user input device iscursor control 2616, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 2604 and for controlling cursor movement on display 2612. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. - In some embodiments, the processor system 2600 can be used to perform various functions described herein. According to some embodiments, such use is provided by processor system 2600 in response to processor 2604 executing one or more sequences of one or more instructions contained in the main memory 2606. Those skilled in the art will know how to prepare such instructions based on the functions and methods described herein. Such instructions may be read into the main memory 2606 from another processor-readable medium, such as storage device 2610. Execution of the sequences of instructions contained in the main memory 2606 causes the processor 2604 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory 2606. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the various embodiments described herein. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
- The term “processor-readable medium” as used herein refers to any medium that participates in providing instructions to the processor 2604 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as the storage device 2610. A non-volatile medium may be considered an example of non-transitory medium. Volatile media includes dynamic memory, such as the main memory 2606. A volatile medium may be considered an example of non-transitory medium. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise the
bus 2602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. - Common forms of processor-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a processor can read.
- Various forms of processor-readable media may be involved in carrying one or more sequences of one or more instructions to the processor 2604 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to the processing system 2600 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the
bus 2602 can receive the data carried in the infrared signal and place the data on thebus 2602. Thebus 2602 carries the data to the main memory 2606, from which the processor 2604 retrieves and executes the instructions. The instructions received by the main memory 2606 may optionally be stored on the storage device 2610 either before or after execution by the processor 2604. - The processing system 2600 also includes a
communication interface 2618 coupled to thebus 2602. Thecommunication interface 2618 provides a two-way data communication coupling to anetwork link 2620 that is connected to a local network 2622. For example, thecommunication interface 2618 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, thecommunication interface 2618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, thecommunication interface 2618 sends and receives electrical, electromagnetic or optical signals that carry data streams representing various types of information. - The
network link 2620 typically provides data communication through one or more networks to other devices. For example, thenetwork link 2620 may provide a connection through local network 2622 to ahost computer 2624 or to equipment 2626 such as a radiation beam source or a switch operatively coupled to a radiation beam source. The data streams transported over thenetwork link 2620 can comprise electrical, electromagnetic or optical signals. The signals through the various networks and the signals on thenetwork link 2620 and through thecommunication interface 2618, which carry data to and from the processing system 2600, are exemplary forms of carrier waves transporting the information. The processing system 2600 can send messages and receive data, including program code, through the network(s), thenetwork link 2620, and thecommunication interface 2618. - It should be noted that as used in this specification, the term “image” is not limited to an image that is displayed, and may also include image that is not displayed, such as image data stored in a non-transitory medium. Similarly, as used in this specification, the term “video” is not limited to a video that is displayed, and may also include video that is not displayed, such as video data stored in a non-transitory medium.
- Also, as used in this specification, the terms “first”, “second”, “third”, etc., do not necessarily refer to order of items. Rather, these terms may be used to distinguish different items from each other. For example, “first product tester” does not necessarily mean that the product tester is the first in order. Also, “second product tester” does not necessarily mean that the product tester is the second in order. Rather, these terms are used to identify two different product testers.
- Furthermore, as used in this specification, the term “machine” (as in the term “product testing machine”) may refer to a device, a component, a system, an application, software, a virtual machine, or any form of a processing unit or module, that is configured to perform one or more desired functions. In some embodiments, a machine may include at least some hardware. Similarly, as used in this specification, the term “device” may refer to a physical device, a component, a system, an application, software, a virtual machine, or any form of a processing unit or module, that is configured to perform one or more desired functions. In some embodiments, a device may include at least some hardware.
- In addition, as used in this specification, the term “processing unit” may refer to hardware, software, or combination thereof. Also, the term “processing unit” may refer to one or more processors, one or more pieces of software or applications, one or more computing systems or component(s) thereof, one or more virtual machines or component(s) thereof, etc. In one implementation, a processing unit may include at least some hardware.
- Although particular embodiments have been shown and described, it will be understood that they are not intended to limit the present inventions, and it will be obvious to those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the present inventions. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense. The present inventions are intended to cover alternatives, modifications, and equivalents, which may be included within the spirit and scope of the present inventions as defined by the claims.
Claims (63)
Priority Applications (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/849,475 US20190188122A1 (en) | 2017-12-20 | 2017-12-20 | Electronic product testing systems |
| CN201880085544.9A CN111556993A (en) | 2017-12-20 | 2018-12-17 | Electronic product testing system and method |
| PCT/IB2018/060170 WO2019123199A1 (en) | 2017-12-20 | 2018-12-17 | Electronic product testing system and method |
| EP18847146.0A EP3729275B1 (en) | 2017-12-20 | 2018-12-17 | Electronic product testing method and medium |
| IL275428A IL275428B (en) | 2017-12-20 | 2020-06-16 | Electronic product testing system and method |
| US17/145,393 US20210349816A1 (en) | 2011-01-03 | 2021-01-10 | Swarm Management |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/849,475 US20190188122A1 (en) | 2017-12-20 | 2017-12-20 | Electronic product testing systems |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/720,808 Division US9857792B2 (en) | 2011-01-03 | 2015-05-24 | Swarm management |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/145,393 Continuation US20210349816A1 (en) | 2011-01-03 | 2021-01-10 | Swarm Management |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20190188122A1 true US20190188122A1 (en) | 2019-06-20 |
Family
ID=65409109
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/849,475 Abandoned US20190188122A1 (en) | 2011-01-03 | 2017-12-20 | Electronic product testing systems |
| US17/145,393 Pending US20210349816A1 (en) | 2011-01-03 | 2021-01-10 | Swarm Management |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/145,393 Pending US20210349816A1 (en) | 2011-01-03 | 2021-01-10 | Swarm Management |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US20190188122A1 (en) |
| EP (1) | EP3729275B1 (en) |
| CN (1) | CN111556993A (en) |
| IL (1) | IL275428B (en) |
| WO (1) | WO2019123199A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190324890A1 (en) * | 2018-04-19 | 2019-10-24 | Think Research Corporation | System and Method for Testing Electronic Visual User Interface Outputs |
| CN116204417A (en) * | 2023-01-09 | 2023-06-02 | 睿智合创(北京)科技有限公司 | Method for rapidly generating decision test data |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5596714A (en) * | 1994-07-11 | 1997-01-21 | Pure Atria Corporation | Method for simultaneously testing multiple graphic user interface programs |
| US8885984B1 (en) * | 2013-05-07 | 2014-11-11 | Picscout (Israel) Ltd. | Efficient image matching for large sets of images |
| US20150086115A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Screenshot database for application verification |
| US20150310308A1 (en) * | 2012-11-27 | 2015-10-29 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for recognizing client feature, and storage medium |
| US20170039121A1 (en) * | 2015-08-06 | 2017-02-09 | International Business Machines Corporation | Test self-verification with integrated transparent self-diagnose |
| US20170372171A1 (en) * | 2016-06-27 | 2017-12-28 | International Business Machines Corporation | On demand testing as a service for base text direction verification testing |
| US10853229B2 (en) * | 2016-02-10 | 2020-12-01 | Eggplant Limited | Method of, and apparatus for, testing computer hardware and software |
Family Cites Families (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040070920A1 (en) * | 2000-12-21 | 2004-04-15 | Adolf Flueli | Personal computer |
| US8769478B2 (en) * | 2001-03-07 | 2014-07-01 | Hewlett-Packard Development Company, L.P. | Aggregation of multiple headless computer entities into a single computer entity group |
| MXPA03011976A (en) * | 2001-06-22 | 2005-07-01 | Nervana Inc | SYSTEM AND METHOD FOR RECOVERY, HANDLING, DELIVERY AND PRESENTATION OF KNOWLEDGE. |
| US20030055718A1 (en) * | 2001-09-18 | 2003-03-20 | Cimini Michael Orlando | Methods and systems for evaluating process production performance |
| WO2004018158A2 (en) * | 2002-08-21 | 2004-03-04 | Neal Solomon | Organizing groups of self-configurable mobile robotic agents |
| CN100356339C (en) * | 2004-01-07 | 2007-12-19 | 北京北阳电子技术有限公司 | Method and system for measuring functions of electronic product with keyboard |
| JP4377744B2 (en) * | 2004-05-13 | 2009-12-02 | 本田技研工業株式会社 | Robot controller |
| US20050288808A1 (en) * | 2004-06-14 | 2005-12-29 | Lopez George A | Computer system for efficient design and manufacture of multiple-component devices |
| US20090011397A1 (en) * | 2007-07-02 | 2009-01-08 | Greg Writer | Method, system and device for managing compensated educational interaction |
| US8406687B2 (en) * | 2008-06-13 | 2013-03-26 | Kyocera Corporation | Managing a dynamic data pool on ad-hoc networks |
| JP5546784B2 (en) * | 2009-03-24 | 2014-07-09 | シャープ株式会社 | Notification device, notification system, control method for notification device, control program, and computer-readable recording medium recording the program |
| US8539282B1 (en) * | 2009-06-30 | 2013-09-17 | Emc Corporation | Managing quality testing |
| US8555253B2 (en) * | 2009-11-02 | 2013-10-08 | Hewlett-Packard Development Company, L.P. | System and method for monitoring exploratory testing by a plurality of testers |
| US8965981B2 (en) * | 2009-11-25 | 2015-02-24 | At&T Intellectual Property I, L.P. | Method and apparatus for botnet analysis and visualization |
| KR101277452B1 (en) * | 2009-12-09 | 2013-07-05 | 한국전자통신연구원 | Mobile robot based on a crowed intelligence, method for controlling the same and watching robot system |
| BRPI1014815A2 (en) * | 2010-05-20 | 2017-01-31 | ERICSSON TELEFON AB L M (publ) | crawler module for use in a non-hierarchical communications network, system and method for managing content data transfers in a non-hierarchical communications network, network element, method for managing data in a non-hierarchical communications network, computer program, and, computer program product. |
| US8448056B2 (en) * | 2010-12-17 | 2013-05-21 | Microsoft Corporation | Validation analysis of human target |
| US8667468B2 (en) * | 2011-06-14 | 2014-03-04 | International Business Machines Corporation | Software accessibility testing |
| US20130263090A1 (en) * | 2012-03-30 | 2013-10-03 | Sony Online Entertainment Llc | System and method for automated testing |
| US8898643B2 (en) * | 2012-06-19 | 2014-11-25 | Sap Se | Application trace replay and simulation systems and methods |
| US20140189576A1 (en) * | 2012-09-10 | 2014-07-03 | Applitools Ltd. | System and method for visual matching of application screenshots |
| JP6383799B2 (en) * | 2014-03-10 | 2018-08-29 | エスケー テックス カンパニー、リミテッド | Cloud streaming server test method, apparatus and system therefor |
| EP3272077B1 (en) * | 2015-03-20 | 2019-03-20 | British Telecommunications public limited company | Diagnostic testing |
| WO2017123203A1 (en) * | 2016-01-12 | 2017-07-20 | Entit Software Llc | Determining visual testing coverages |
-
2017
- 2017-12-20 US US15/849,475 patent/US20190188122A1/en not_active Abandoned
-
2018
- 2018-12-17 CN CN201880085544.9A patent/CN111556993A/en active Pending
- 2018-12-17 WO PCT/IB2018/060170 patent/WO2019123199A1/en not_active Ceased
- 2018-12-17 EP EP18847146.0A patent/EP3729275B1/en not_active Not-in-force
-
2020
- 2020-06-16 IL IL275428A patent/IL275428B/en unknown
-
2021
- 2021-01-10 US US17/145,393 patent/US20210349816A1/en active Pending
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5596714A (en) * | 1994-07-11 | 1997-01-21 | Pure Atria Corporation | Method for simultaneously testing multiple graphic user interface programs |
| US20150310308A1 (en) * | 2012-11-27 | 2015-10-29 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for recognizing client feature, and storage medium |
| US8885984B1 (en) * | 2013-05-07 | 2014-11-11 | Picscout (Israel) Ltd. | Efficient image matching for large sets of images |
| US20150086115A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Screenshot database for application verification |
| US20170039121A1 (en) * | 2015-08-06 | 2017-02-09 | International Business Machines Corporation | Test self-verification with integrated transparent self-diagnose |
| US10853229B2 (en) * | 2016-02-10 | 2020-12-01 | Eggplant Limited | Method of, and apparatus for, testing computer hardware and software |
| US20170372171A1 (en) * | 2016-06-27 | 2017-12-28 | International Business Machines Corporation | On demand testing as a service for base text direction verification testing |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190324890A1 (en) * | 2018-04-19 | 2019-10-24 | Think Research Corporation | System and Method for Testing Electronic Visual User Interface Outputs |
| US10909024B2 (en) * | 2018-04-19 | 2021-02-02 | Think Research Corporation | System and method for testing electronic visual user interface outputs |
| CN116204417A (en) * | 2023-01-09 | 2023-06-02 | 睿智合创(北京)科技有限公司 | Method for rapidly generating decision test data |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3729275B1 (en) | 2022-01-12 |
| WO2019123199A1 (en) | 2019-06-27 |
| CN111556993A (en) | 2020-08-18 |
| EP3729275A1 (en) | 2020-10-28 |
| US20210349816A1 (en) | 2021-11-11 |
| IL275428A (en) | 2020-07-30 |
| IL275428B (en) | 2021-09-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11907621B2 (en) | Electronic product testing systems for providing automated product testing | |
| US12038832B2 (en) | Electronic product testing systems for providing automated product testing with human-in-the loop component and/or object detection | |
| US11334473B2 (en) | Electronic product testing systems | |
| EP3215900B1 (en) | Robotic process automation | |
| US8935176B2 (en) | Cursor path vector analysis for detecting click fraud | |
| US8935175B2 (en) | Cursor path vector analysis for detecting click fraud | |
| US20200050540A1 (en) | Interactive automation test | |
| CN111147431B (en) | Method and apparatus for generating information | |
| US20200026502A1 (en) | Method and system for determining inefficiencies in a user interface | |
| CN110659569A (en) | Electronic signature method, device, storage medium and electronic equipment | |
| WO2017001560A1 (en) | Robotic process automation | |
| US20240231567A1 (en) | Method, apparatus and electronic device for session menu processing | |
| EP3729275B1 (en) | Electronic product testing method and medium | |
| US11392278B2 (en) | Electronic product testing systems | |
| WO2018119149A1 (en) | Electronic product testing systems | |
| CN110866205A (en) | Method and apparatus for storing information | |
| US11947447B2 (en) | Systems and methods for evaluating product testing | |
| HK40030988B (en) | Electronic product testing method and medium | |
| HK40030988A (en) | Electronic product testing method and medium | |
| US20190087462A1 (en) | Report generation for a digital task | |
| CN120669887B (en) | Interactive guiding method and device, storage medium and electronic equipment | |
| US20250363034A1 (en) | Electronic systems generating product testing instructions and for providing automated product testing | |
| US20250363500A1 (en) | Electronic systems generating product testing instructions and for providing automated product testing | |
| CN121351060A (en) | Verification code processing method, device, equipment, medium and product | |
| CN117234399A (en) | Behavioral data analysis methods, devices, equipment and storage media |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: RAINFOREST QA, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GRYKA, MACIEJ;SIWEK, MACIEJ;SMITH, RUSSELL HOWARD;SIGNING DATES FROM 20180523 TO 20180608;REEL/FRAME:046418/0677 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |