Electronic Gaming Machine Automated Testing

Willyard; Rodney Lynn

Patent Application Summary

U.S. patent application number 13/307498 was filed with the patent office on 2013-05-30 for electronic gaming machine automated testing. This patent application is currently assigned to MULTIMEDIA GAMES, INC.. The applicant listed for this patent is Rodney Lynn Willyard. Invention is credited to Rodney Lynn Willyard.

Application Number20130137498 13/307498
Document ID /
Family ID48467366
Filed Date2013-05-30

United States Patent Application 20130137498
Kind Code A1
Willyard; Rodney Lynn May 30, 2013

Electronic Gaming Machine Automated Testing

Abstract

A method for testing an electronic gaming machine includes generating a test sequence comprising tests to be conducted on the electronic gaming machine, generating a test script from the test sequence, accessing a protocol dictionary to determine values for the inputs, emulating parts of the electronic gaming machine by applying the specific values for the inputs to the electronic gaming machine, receiving outputs from the electronic gaming machine, accessing the protocol dictionary to determine conditions associated with the outputs, and interpreting the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met. The tests include a criteria indicating inappropriate or appropriate operation of the electronic gaming machine. The test script includes inputs to be applied to the electronic gaming machine. The inputs are associated with wagering game play. The values emulate parts of the electronic gaming machine.


Inventors: Willyard; Rodney Lynn; (Austin, TX)
Applicant:
Name City State Country Type

Willyard; Rodney Lynn

Austin

TX

US
Assignee: MULTIMEDIA GAMES, INC.
Austin
TX

Family ID: 48467366
Appl. No.: 13/307498
Filed: November 30, 2011

Current U.S. Class: 463/16 ; 463/42
Current CPC Class: G06F 11/3688 20130101; G06F 11/3664 20130101; G07F 17/3204 20130101; G07F 17/3234 20130101; G07F 9/026 20130101
Class at Publication: 463/16 ; 463/42
International Class: A63F 9/24 20060101 A63F009/24

Claims



1. A method for testing an electronic gaming machine, comprising: generating a test sequence comprising one or more tests to be conducted on the electronic gaming machine, the tests including a criteria indicating inappropriate or appropriate operation of the electronic gaming machine; generating a test script from the test sequence, the test script comprising one or more inputs to be applied to the electronic gaming machine, the one or more inputs associated with wagering game play; accessing a protocol dictionary to determine values for the inputs, the values emulating one or more parts of the electronic gaming machine; emulating one or more parts of the electronic gaming machine by applying the specific values for the inputs to the electronic gaming machine; receiving one or more outputs from the electronic gaming machine; accessing the protocol dictionary to determine conditions associated with the outputs; and interpreting the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met.

2. The method of claim 1, wherein emulating one or more parts of the electronic gaming machine includes emulating a bill acceptor.

3. The method of claim 1, wherein emulating one or more parts of the electronic gaming machine includes emulating pressing inputs into the electronic gaming machine.

4. The method of claim 1, wherein emulating one or more parts of the electronic gaming machine includes emulating communication from a casino server.

5. The method of claim 1, wherein emulating one or more parts of the electronic gaming machine includes emulating swiping of a player card.

6. The method of claim 1, wherein receiving one or more outputs from the electronic gaming machine includes receiving outputs indicating the result of wagering game play.

7. An article of manufacture, comprising: a computer readable medium; and computer-executable instructions carried on the computer readable medium, the instructions readable by a processor, the instructions, when read and executed, for causing the processor to: generate a test sequence comprising one or more tests to be conducted on the electronic gaming machine, the tests including a criteria indicating inappropriate or appropriate operation of the electronic gaming machine; generate a test script from the test sequence, the test script comprising one or more inputs to be applied to the electronic gaming machine, the one or more inputs associated with wagering game play; access a protocol dictionary to determine values for the inputs, the values emulating one or more parts of the electronic gaming machine; emulate one or more parts of the electronic gaming machine by applying the values for the inputs to the electronic gaming machine; receive one or more outputs from the electronic gaming machine; access the protocol dictionary to determine conditions associated with the outputs; and interpret the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met.

8. The article of claim 7, wherein emulating one or more parts of the electronic gaming machine includes emulating a bill acceptor.

9. The article of claim 7, wherein emulating one or more parts of the electronic gaming machine includes emulating pressing inputs into the electronic gaming machine.

10. The article of claim 7, wherein emulating one or more parts of the electronic gaming machine includes emulating communication from a casino server.

11. The article of claim 7, wherein emulating one or more parts of the electronic gaming machine includes emulating swiping of a player card.

12. The article of claim 7, wherein receiving one or more outputs from the electronic gaming machine includes receiving outputs indicating the result of wagering game play.

13. A system for testing an electronic gaming machine, comprising: a test server comprising a server processor coupled to a server memory; a test fixture comprising an emulator, the test fixture communicatively coupled to the test server; the server memory containing instructions for causing the server processor to: generate a test sequence comprising one or more tests to be conducted on the electronic gaming machine, the tests including a criteria indicating inappropriate or appropriate operation of the electronic gaming machine; generate a test script from the test sequence, the test script comprising one or more inputs to be applied to the electronic gaming machine, the one or more inputs associated with wagering game play; access a protocol dictionary to determine values for the inputs, the values emulating one or more parts of the electronic gaming machine; and communicate the values to the test fixture; the emulator configured to: emulate one or more parts of the electronic gaming machine by applying the values for the inputs to the electronic gaming machine; receive one or more outputs from the electronic gaming machine; and communicate the outputs to the test server; the server memory containing further instructions for causing the server processor to: access the protocol dictionary to determine conditions associated with the outputs; and interpret the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met.

14. The system of claim 13, wherein the emulator is configured to emulate a bill acceptor.

15. The system of claim 13, wherein the emulator is configured to emulate pressing inputs into the electronic gaming machine.

16. The system of claim 13, wherein the emulator is configured to emulate communication from a casino server.

17. The system of claim 13, wherein the emulator is configured to emulate swiping of a player card.

18. The system of claim 13, wherein receiving one or more outputs from the electronic gaming machine includes receiving outputs indicating the result of wagering game play.

19. A method of determining a protocol dictionary, comprising: determining an input to be applied to an electronic gaming machine, the input associated with wagering game play; applying the input to the electronic gaming machine; monitoring the application of input to the electronic gaming machine; recording the input to the electronic gaming machine in an operational trace; associating the operational trace with the input; and storing the association in the protocol dictionary.

20. A method of determining a protocol dictionary, comprising: determining an input to be applied to an electronic gaming machine, the input associated with wagering game play; applying the input to the electronic gaming machine; receiving an output from the electronic gaming machine in response to the input; recording the output to the electronic gaming machine in an operational trace; associating the operational trace with the output; and storing the association in the protocol dictionary.
Description



TECHNICAL FIELD OF THE INVENTION

[0001] The present invention relates generally to gaming systems, machines, and methods used to provide wagering games, and, more particularly, to electronic gaming machine automated testing.

BACKGROUND

[0002] Gaming systems, machines, and methods used to provide wagering games may be electronically implemented by mechanisms akin to traditional slot machines. These may be referred to as "slot machines" because they commonly show the result of a wager by displaying reels of symbols or empty spaces, and indicating a payout based on particular alignments or combinations of the symbols or empty spaces. In an electronic slot machine, the results may be determined by generating a random number to select a payout from a set or range of possible payouts.

[0003] Gaming systems, machines, and methods used to provide wagering games may be electronically implemented by instant lottery systems. These may be referred to as "video lottery" systems because they commonly show the result of a play in the lottery game on a video display device at the player terminal. In an electronic lottery gaming system, the results may be identified by a set of electronic lottery records. The set of electronic lottery records may be analogous to a set of printed paper lottery game tickets. Individual lottery game play records may be assigned from the set of electronic lottery game play records in some random order in response to requests for plays in the lottery game. The result defined by an assigned electronic lottery game play record may be displayed at an electronic lottery player station rather than on a printed lottery ticket. As in traditional paper lotteries, the rules by which the set of lottery records is created for an electronic lottery game determines the overall prize distribution for the game. For example, an electronic lottery game set may include one million records, with one record associated with the top prize, ten records associated with a next highest prize, and so forth throughout all of the potential results available in the lottery game set.

[0004] Gaming systems, machines, and methods used to provide wagering games may be electronically implemented by predetermined cards or displays and include a number of designations randomly arranged in a grid, matrix, or other layout of locations. The may be referred to as "bingo" systems. The game board or display may be represented by a data structure which defines a representation having various card or display locations and designations associated with the locations. For example, in a traditional bingo game sequence, a number of the predetermined bingo cards are first sold for a particular bingo game. After the sale of bingo cards is closed for a given game, designations are randomly selected from a pool of available designations and matched to the designations on each bingo card that is in play in the bingo game. This matching of bingo designations randomly selected for a game and bingo designations associated with a bingo card in play in the game may be referred to as daubing the card.

SUMMARY

[0005] In one embodiment, a method for testing an electronic gaming machine includes generating a test sequence comprising one or more tests to be conducted on the electronic gaming machine, generating a test script from the test sequence, accessing a protocol dictionary to determine values for the inputs, emulating one or more parts of the electronic gaming machine by applying the specific values for the inputs to the electronic gaming machine, receiving one or more outputs from the electronic gaming machine, accessing the protocol dictionary to determine conditions associated with the outputs, and interpreting the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met. The tests include a criteria indicating inappropriate or appropriate operation of the electronic gaming machine. The test script includes one or more inputs to be applied to the electronic gaming machine. The one or more inputs are associated with wagering game play. The values emulate one or more parts of the electronic gaming machine.

[0006] In another embodiment, an article of manufacture includes a computer readable medium and computer-executable instructions carried on the computer readable medium. The instructions are readable by a processor. The instructions, when read and executed, cause the processor to generate a test sequence comprising one or more tests to be conducted on the electronic gaming machine, generate a test script from the test sequence, access a protocol dictionary to determine values for the inputs, the values emulating one or more parts of the electronic gaming machine, emulate one or more parts of the electronic gaming machine by applying the values for the inputs to the electronic gaming machine, receive one or more outputs from the electronic gaming machine, access the protocol dictionary to determine conditions associated with the outputs, and interpret the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met. The tests include a criteria indicating inappropriate or appropriate operation of the electronic gaming machine. The test script includes one or more inputs to be applied to the electronic gaming machine. The one or more inputs are associated with wagering game play.

[0007] In yet another embodiment, a system for testing an electronic gaming machine includes a test server comprising a server processor coupled to a server memory and a test fixture comprising an emulator. The server memory containing instructions for causing the server processor to generate a test sequence comprising one or more tests to be conducted on the electronic gaming machine, generate a test script from the test sequence, the test script comprising one or more inputs to be applied to the electronic gaming machine, access a protocol dictionary to determine values for the inputs, the values emulating one or more parts of the electronic gaming machine, and communicate the values to the test fixture. The emulator is configured to emulate one or more parts of the electronic gaming machine by applying the values for the inputs to the electronic gaming machine, receive one or more outputs from the electronic gaming machine, and communicate the outputs to the test server. The server memory contains further instructions for causing the server processor to access the protocol dictionary to determine conditions associated with the outputs and interpret the determined conditions to determine whether the criteria for appropriate operation of the electronic gaming machine has been met. The test fixture is communicatively coupled to the test server. The tests include a criteria indicating inappropriate or appropriate operation of the electronic gaming machine. The one or more inputs are associated with wagering game play;

[0008] In an additional embodiment, a method of determining a protocol dictionary, includes determining an input to be applied to an electronic gaming machine, applying the input to the electronic gaming machine, monitoring the application of input to the electronic gaming machine, recording the input to the electronic gaming machine in an operational trace, associating the operational trace with the input, and storing the association in the protocol dictionary. The input associated with wagering game play.

[0009] In a yet additional embodiment, a method of determining a protocol dictionary includes determining an input to be applied to an electronic gaming machine, the input associated with wagering game play, applying the input to the electronic gaming machine, receiving an output from the electronic gaming machine in response to the input, recording the output to the electronic gaming machine in an operational trace, associating the operational trace with the output, and storing the association in the protocol dictionary.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010] For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:

[0011] FIG. 1 is an example and embodiment of a system for electronic gaming machine ("EGM") automated testing;

[0012] FIG. 2 is another illustration of a system for providing EGM automated testing;

[0013] FIG. 3 is an example embodiment of a system for determining a protocol dictionary for use in subsequent testing of an EGM-under-test;

[0014] FIG. 4 is an example method for applying a test to an EGM-under-test; and

[0015] FIG. 5 is an example illustration of a method for determining a protocol dictionary for translating test steps to be communicated to an EGM or for translating test results from an EGM.

DETAILED DESCRIPTION

[0016] FIG. 1 is an example and embodiment of a system 100 for electronic gaming machine ("EGM") automated testing. System 100 may be configured to perform validation, verification, or other test on a wagering game based in an EGM. In one embodiment, system 100 may be configured to test EGM software 106. System 100 may include an EGM-under-test 102 communicatively coupled to an EGM test fixture 104. EGM test fixture 104 may be configured to send one or more signals, messages, or other communication to EGM-under-test 102. EGM-under-test 102 may be configured to process the signals, messages, or other communication as input to EGM software 106. EGM-under-test 102 may be configured to send one or more signals, messages, or other communication to EGM test fixture 104. EGM test fixture 104 may be configured to capture and process such signals, messages, or other communication as output of EGM software 106.

[0017] System 100 may be configured to test a wagering game embodied within EGM software 106. One or more different instances of EGM software 106 may be tested by system 100. For example, system 100 may test an individual game or a game based on a common software platform. EGM software 106 may be developed as a new wagering casino game that may require testing to ensure proper operation within a casino environment. EGM software 106 may require testing for any suitable parameter, such as appropriate response to funding or defunding actions, game play, payouts, or response to input or output.

[0018] System 100 may provide automated testing of EGM software 106. Manual testing may be used to test EGM software 106. However, such a method may be slow, error-prone, or incomplete. In one embodiment, debugging or testing hooks may be added to EGM software 106 such that EGM software 106 provides particular values at particular points in the execution of the EGM software 106. However, such debugging or testing hooks may alter the performance of the software and thus may be undesirable. In one embodiment, system 100 may be configured to test EGM software 106 as EGM software 106 will be deployed in an actual, production EGM. In such an embodiment, EGM software 106 may be used without any debugging or testing hooks. System 100 may be configured to conduct full regression, automated testing of EGM software 106. System 100 may be configured to use automated testing of EGM software 106 to emulate corner or edge cases, such as where a player card or voucher would be inserted at the same time. System 100 may provide testing of any suitable part of EGM software 106, including game play, funding operations, defunding operations, input/output controls, or payouts.

[0019] EGM-under-test 102 may include one or more modules for accepting signals, commands, or other communication. In one embodiment, such modules may be included in EGM software 106. In another embodiment, such modules may be external interfaces to EGM software 106. Such modules may include digital-analog converters configured to transform digital signals to analog and vice-versa; data busses; communication ports; software and/or software application programming interfaces (APIs); digital ports; or other suitable mechanisms for communicating between EGM software 106 and devices external to the software. Such modules may be present in a production EGM.

[0020] For example, EGM-under-test 102 may include a touch screen input module 110 configured to accept signals, messages, or commands indicative of input from a touch screen. Such signals may include those that would be input from a user playing a casino wagering game on an EGM.

[0021] EGM-under-test 102 may include a video output module configured to output signals, messages, or commands related to video output. Such signals may be associated with that sent as output to a display of an EGM from EGM software 106.

[0022] EGM-under-test 102 may include a SAS communication module 118 configured to accept signals, messages, or commands indicative of input from an SAS test host. While SAS communication may be used, EGM 102 may include any suitable communication module corresponding to a communication used by EGM.

[0023] EGM-under-test 102 may include a bill acceptor input module 122 configured to accept signals, messages, or commands indicative of input from a bill accepter on an EGM. Such signals may be associated with inserting currency into an EGM for wagering game play.

[0024] EGM-under-test 102 may include a card reader input module 126 configured to accept signals, messages, or commands indicative of input from a card reader on an EGM. Such signals may be associated with a player inserting a player card, used to track game play for affinity and marketing purposes, into an EGM.

[0025] EGM-under-test 102 may include a voucher reader input module 128 configured to accept signals, messages, or commands indicative of input from a voucher reader on an EGM. Such signals may be associated with a player inserting a voucher, indicating a balance of credits or currency available for wagering game play, into an EGM.

[0026] EGM-under-test 102 may include a voucher printer output module 132 configured to output signals, messages, or commands indicative of output to a voucher printer on an EGM. Such signals may be associated with output from EGM software 106 to refund unplayed credits on the EGM by attempting to print a voucher for a user to move credits to another EGM or take to a cashier.

[0027] EGM-under-test 102 may include a button input module 134 configured to receive signals, messages, or commands indicative of buttons, levers, or other input of an EGM. Such signals may be associated with a user pressing buttons, pulling levers, or taking other actions on an EGM. The buttons may include buttons for selecting wagers, lines of game play, hold cards, or other actions for an EGM.

[0028] EGM-under-test 102 may include a lights output module 138 configured to output signals, messages, or commands indicative of lights displayed on an EGM. Such signals may be associated with turning lights on or off, playing sounds, or other display actions on an EGM.

[0029] EGM-under-test 102 may include a switches output module 142 configured to output signals, messages, or commands to control switches on an EGM. Such signals may be associated with display mechanisms of an EGM, such as spinning a wheel.

[0030] EGM-under-test 102 may include a universal serial bus ("USB") I/O module 146 configured to output signals, messages, or commands for input or output to accessories, communication modules, or other portions of an EGM using USB.

[0031] EGM-under-test 102 may include a mechanical reel output module 150 configured to output signals, messages, or commands for mechanical reels, which may display the result of a slot machine.

[0032] Although a particular number of modules are shown in EGM-under-test 102, any suitable kind or number may be used. The functionality of one or more of the modules may be bundled within a fewer number of modules. One or more of the modules may be included within EGM software 106.

[0033] Each of such modules of EGM-under-test 102 may be communicatively coupled to corresponding modules in test fixture 104. Test fixture 104 may include any suitable number of such modules for interfacing with EGM-under-test 102. The modules may be communicatively coupled to test module 108.

[0034] Test fixture 104 may include test module 108. Test module may be configured to control or coordinate operation of test fixture 104. Test module 108 may be configured to send or receive signals, commands, or other communication through various modules to EGM-under-test 102.

[0035] Although a particular number of interface modules are shown in test fixture 104 for interfacing with EGM-under-test 102, any suitable kind or number may be used. The functionality of one or more of the modules may be bundled within a fewer number of modules. Each of the interfaces in test fixture 104 may be configured to simulate, emulate, or record the operation of part of a casino wagering machine or system. Such operations may be provided to provide a test environment for EGM-under-test 102. Each of the interfaces may include digital-analog converters configured to transform digital signals to analog and vice-versa; power control busses; serial ports; digital input and output lines and cards; data busses; communication ports; software and/or software application programming interfaces (APIs); digital ports; or other suitable mechanisms for communicating with EGM-under-test 102.

[0036] For example, test fixture 104 may include a touch screen emulator 112 configured to provide signals, messages, or commands emulating the input of a touch screen to EGM-under-test 102. Touch screen emulator 112 may be communicatively coupled to touch screen input module 110. Touch screen emulator 112 may provide input from test module 108 or from other suitable mechanisms for evaluating the operation of EGM-under-test 102. Touch screen emulator may emulate, for example, input from buttons for placing wagers, selecting paylines, cashing out of an EGM, selecting hold cards, or other input or output associated with a user using an EGM.

[0037] Test fixture 104 may include a Virtual Network Computing ("VNC")-Kernel-based Virtual Machine ("KVM") switch module 116 communicatively coupled to video output module 114 and configured to receive signals, messages, or commands from video output module 114. VNC-KVM switch module 116 may provide output from touch screen input module 110 to test module 108 or to other suitable mechanisms for evaluating the operation of EGM-under-test 102. VNC-KVM switch module 116 may provide interactive and/or automated control of input and output between a test server and an EGM-under-test. VNC-KVM switch module 116 may be configured to sense digital or analog video interfaces, audio, or other user input and output.

[0038] In one embodiment, test fixture 104 may include an SAS test host 120. In another embodiment, test fixture 104 may be included in another portion of system 100. SAS test host 120 may be communicatively coupled to SAS communication module 118 and configured to send and receive signals, messages, or commands to or from SAS communication module 118. SAS test host 120 may be configured to simulate or emulate SAS communication between an EGM and other portions of a casino network system. SAS test host 120 may provide signals to or from test module or to or from other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0039] Test fixture 104 may include a bill acceptor emulator 124 communicatively coupled to bill acceptor input module 122. Bill acceptor emulator 124 may be configured to provide signals, messages, or commands to emulate acceptance of currency at an EGM. Bill acceptor emulator 124 may be configured to receive input from test module 108 or from other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0040] Test fixture 104 may include a card reader emulator 128 configured to provide signals, messages, or commands emulating the input of a player card used to access an EGM to EGM-under-test 102. Card reader emulator 128 may be communicatively coupled to card reader input module 126. Card reader emulator 128 may provide input from test module 108 or from other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0041] Test fixture 104 may include a voucher input/output ("I/O") emulator 130 configured to provide or receive signals, messages, or commands emulating or containing vouchers for transferring funds between an EGM to EGM-under-test 102. Voucher I/O emulator 130 may be communicatively coupled to voucher reader input module 128 and/or voucher reader output module 132. Card reader emulator 118 may communicate I/O for test module 108 or for other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0042] Test fixture 104 may include a button emulator 136 configured to provide signals, messages, or commands emulating the input of a buttons on an EGM to EGM-under-test 102. Button emulator 136 may be communicatively coupled to button input module 134. Button emulator 136 may provide input from test module 108 or from other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0043] Test fixture 104 may include a light reader 140 configured to receive signals, messages, or commands from lights output module 138 in EGM-under-test 102. Light reader 140 may be communicatively coupled to lights output module 138. Light reader 140 may provide output from lights output module 138 to test module 108 or to other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0044] Test fixture 104 may include a switch reader 144 configured to receive signals, messages, or commands from switch output module 142 in EGM-under-test 102. Switch reader 144 may be communicatively coupled to switch output module 142. Switch reader 144 may provide output from switch output module 142 to test module 108 or to other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0045] Test fixture 104 may include a USB I/O emulator 148 configured to send and receive signals, messages, or commands with USB I/O module 146 in EGM-under-test 102. USB I/O emulator 148 may be communicatively coupled to USB I/O module 146. USB I/O emulator 148 may facilitate I/O with test module 108 or other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0046] Test fixture 104 may include a mechanical reel reader 152 configured to receive signals, messages, or commands from mechanical reel output module 150 in EGM-under-test 102. Mechanical reel reader 152 may be communicatively coupled to mechanical reel output module 150. Mechanical reel reader 152 may provide output from mechanical reel output module 150 to test module 108 or to other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0047] Test module 108 may be configured to send or receive signals to EGM-under-test 102 through interface modules such as shown in FIG. 1 to test the operation of EGM-under-test 102. Test module 108 may be configured to record resulting signals from EGM-under-test 102.

[0048] Test fixture 104 may include a processor 158 coupled to a memory 162. EGM-under-test 102 may include a processor 156 coupled to a memory 160. Test module 108 may be implemented by logic or instructions resident in memory 162 to be executed by processor 158. EGM software 106 may be implemented by logic or instructions resident in memory 160 to be executed by processor 156.

[0049] Test fixture 104 may include a touch screen emulator 112 configured to provide signals, messages, or commands emulating the input of a touch screen to EGM-under-test 102. Touch screen emulator 112 may be communicatively coupled to touch screen input module 110. Touch screen emulator 112 may provide input from test module 108 or from other suitable mechanisms for evaluating the operation of EGM-under-test 102.

[0050] Processors 156, 158 may comprise, for example a microprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit (ASIC), or any other digital or analog circuitry configured to interpret and/or execute program instructions and/or process data. In some embodiments, processors 156, 158 may interpret and/or execute program instructions and/or process data stored in memories 160, 162. Memories 160, 162 may be configured in part or whole as application memory, system memory, or both. Memories 160, 162 may include any system, device, or apparatus configured to hold and/or house one or more memory modules. Each memory module may include any system, device or apparatus configured to retain program instructions and/or data for a period of time (e.g., computer-readable media).

[0051] EGM-under-test 102 may include some or all of an EGM including any casino or wagering system configured to provide wagering or casino games on devices such as EGMs to a user. The EGM may include any suitable electronic device for providing wagering or casino game play, such as a slot machine, video poker machine, bingo machine, or lottery machine.

[0052] FIG. 2 is another illustration of system 100 for providing EGM automated testing. System 100 may include a test server 206 communicatively coupled to test fixture 206. In one embodiment, test server 206 may be communicatively coupled to SAS test host 120. Test server 206 may be configured to communicate with test fixture 104 to provide tests to be conducted on EGM-under-test 102 and to receive the results of such tests.

[0053] Test server 206 may include any suitable components for determining and executing tests to be conducted upon EGM-under-test 102, including a test sequence module, test script generator 214, test result logger 226, test script interpreter 218, or result interpreter 224. Test server 206 may include or may be communicatively coupled to sources of information for conducting tests upon EGM-under-test such as test sequence database 210, results database 228, or protocol dictionary 222. Although a single test server 206 and a certain number and kind of components and sources of information are shown, the functionality of test server 206 and such components and information may be implemented in any suitable number and kind of entities configured to perform the functionality described herein.

[0054] Test server 206 may include a processor 230 coupled a memory 232. The memory 232 may include logic or instructions to be executed to perform the functionality of test server 206 as described herein. Processor 230 may comprise, for example a microprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit (ASIC), or any other digital or analog circuitry configured to interpret and/or execute program instructions and/or process data. In some embodiments, processor 230 may interpret and/or execute program instructions and/or process data stored in memory 232. Memory 232 may be configured in part or whole as application memory, system memory, or both. Memory 232 may include any system, device, or apparatus configured to hold and/or house one or more memory modules. Each memory module may include any system, device or apparatus configured to retain program instructions and/or data for a period of time (e.g., computer-readable media).

[0055] Test sequence module 208 may be configured to control operation of test server 206 and provide a user interface to an operator of test server 206. Test sequence module 208 may include commands, instructions, or options for loading tests to be conducted upon EGM-under-test 102, configuring system 100 for testing EGM-under-test 102, logging results from testing EGM-under-test 102, or any other suitable operation. Test sequence module 208 may be implemented by, for example, an application, software module, or library.

[0056] Test sequence module 208 may be communicatively coupled to test sequence database 210. Test sequence module 208 may be configured to query test sequence database 210 to obtain a test sequence 212 to be conducted upon EGM-under-test 102. Test sequence module 208 may be configured to provide operations for a user of test sequence module 208 to develop test sequence 212. Test sequence module 208 may be configured to save a developed or modified test sequence 212 to test sequence database 210 for later use.

[0057] Test sequence database 210 may be implemented in, for example, a database, record, file, or any other suitable structure. Test sequence database 210 may include one or more test sequences for use by test sequence module 208. Test sequence database 210 may store test sequences according to the range of tests required for a given EGM. For example, all EGMs may be subject to a common set of tests, such as accepting currency or affinity player cards and registering such input in available credit or communicating game play to a server. In another example, an EGM developed from a common platform or family of EGM games may be tested for a common feature, such as simulated or physical, mechanical slot machine reels. In yet another example, a particular type of EGM game may require tests common to the type of EGM, such as a video poker EGM requiring testing of "keep" buttons. In a still another example, an EGM may require testing specific to the EGM itself as determined by a developer of the EGM. In one embodiment, for a given EGM a single test sequence may be created or stored. In another embodiment, multiple test sequences testing a subset of functionality may be created or stored for a given EGM.

[0058] Test sequence 212 may include an ordered sequence of tests that may be conducted upon EGM-under-test 102. Test sequence 212 may include one or more subsequences, which may each be stored separately in test sequence database. Test sequence 212 may contain commands of input that are to be passed to EGM-under-test 102 and may contain conditions that are to be subsequently checked after the commands are issued. The ordered sequence of tests in test sequence 212 may include logical descriptions of the tests to be conducted upon EGM-under-test 102. Test sequence 212 may include indications of multiple steps, timing, operations to be conducted with a given module of the test fixture, parameters for such operations, or expected outputs or output criteria. For example, test sequence 212 may include indications of a test step such as [0059] (Simultaneously) [insert $5 bill into bill acceptor] and [swipe player card] [0060] [player logged in?] [0061] [credits increased by $5?] [0062] [Cash out] [0063] [balance received on voucher=$5+previous balance?] [0064] [reset] Such steps may direct that a $5 bill be inserted (or emulated) into the EGM simultaneously with a player card being swiped (or emulated) at the EGM. After such an action, whether or not the EGM recognizes that a player has successfully logged in to the EGM may be tested. The available balance of credits may be tested for an increase of $5. A cash-out command may be sent to the EGM and the remaining balance to be printed on a printed voucher may be tested. The system may be reset after such tests to an original starting state.

[0065] The steps described in test sequence 212 may be implemented using Boolean logic, execution loop logic, functions, or any suitable programmatic instructions. Test sequence 212 may contain elements sufficiently abstracted to enable a user of test server 206 to quickly and efficiently create or modify test sequences.

[0066] Test sequence module 208 may be communicatively coupled to test script generator 214. Test sequence 212 may be sent by test sequence module 208 to test script generator 214. Test script generator 214 may be configured to generate a test script based upon test sequence 212. In one embodiment, test script generator 214 may be included within test sequence module 208 to provide operational parameters, setup information, headers, or other tasks associated with testing EGM-under-test 102. Test script generator 214 may be configured to generate a test script 216 from test sequence 212. Test script generator 214 may be configured to determine specific portions of EGM-under-test 106 that are to be tested. For example, a test sequence 212 may indicate that $5 may be deposited within EGM-under-test 102 for each currency acceptance method on the EGM-under. Test script generator 214 may be configured to determine the methods by which EGM-under-test 102 may be configured to implement the deposit of $5. For example, EGM-under-test 102 may be configured to accept a $5 bill from a particular make, model, or kind of bill acceptor or a bill acceptor with a particular interface. In another example, EGM-under-test 102 may be configured to accept a $5 deposit from a bill collector or from a voucher reader. Test script generator 214 may generate a test script 218 identifying the specific bill acceptor used by EGM-under-test 102, the range of bill acceptors that may be used by EGM-under-test 102, or the range of methods--such as insertion of a bill or insertion of a voucher--that may be used to fund game play.

[0067] Test script generator 214 may be implemented by, for example, an application, software module, or library. Test script 216 may include a set of steps to be conducted for testing EGM-under-test 102 that are more detailed compared to test sequence 212. The steps may contain, for example, commands, functions, parameters specific to the hardware used or emulated for EGM-under-test 102. Test script 216 may include setup, termination, or other background steps necessary to test EGM-under-test 102.

[0068] Test script generator 214 may be communicatively coupled to test script interpreter 218. Test script generator 214 may be configured to send test script 216 to test script interpreter 218. Test script interpreter 218 may be configured to interpret test script 216 and communicate specific actions to be conducted upon EGM-under-test 102 by test fixture 104. Such actions may include the signals, commands, voltages, or other communication to be sent by test fixture 104 to EGM-under-test 102, or the signals, commands, voltages, or other communication from EGM-under-test 102 that will be observed or recorded by test fixture 104. For example, test script 216 may designate that the bill acceptor emulator 124 of test fixture 104 should emulate acceptance of a $5 bill. Test script generator 214 may be configured to send commands to test fixture 104 to issue the specific voltages, commands, data bits, or other indicia of information to bill acceptor input module 122 representing input of a $5 bill.

[0069] To interpret test script 216 and determine what signals to send to test fixture 104, test script interpreter 218 may be configured to access protocol dictionary 222. Protocol dictionary 222 may be implemented by a database, library, record, file, or any other suitable mechanism. Protocol dictionary 222 may include an association of a set of specific voltages, commands, data bits, or other indicia of information for a given value to be sent or received from EGM-under-test 102. Protocol dictionary 222 may include such associations indexed by EGM type, interface type, action, or any other suitable criteria.

[0070] Test script interpreter 218 may be configured to communicate specific voltages, commands, data bits, or other information determined by interpreting test script 216 to test fixture 104 to be applied to EGM-under-test 102. Test fixture 104 may be configured to apply the specific voltages, commands, data bits, or other information to EGM-under-test 102 as shown in FIG. 1.

[0071] Test fixture 104 may be configured to receive voltages, commands, data bits, or other information from EGM-under-test 102 as a result of tests applied to EGM-under-test 102 as shown in FIG. 1. Test fixture 104 may be configured to communicate such results or output values to test server 206. Result interpreter 224 may be configured to receive such information. Result interpreter 224 may be implemented by, for example, an application, software module, or library.

[0072] Result interpreter 224 may be configured to access protocol dictionary 222 to interpret results received from test fixture 104. For example, test fixture 104 may return a particular data stream from printer voucher output module 132. Result interpreter 224 may be configured to look up some or all of the data stream in protocol dictionary 222 to determine the value of the printed voucher. For example, the particular received data stream may correspond to a printed voucher output of $10.30, or another particular denomination.

[0073] Result interpreter 224 may be configured to send interpreted results to test result logger 226. Test result logger 226 may be implemented by, for example, an application, software module, or library. Test result logger 226 may be configured to compare results from applying a test to EGM-under-test 102 against expected values. Test result logger 226 may be configured to store results of applying tests to EGM-under-test 102 in results database 228. For example, a cashed out value of credits received from EGM-under-test 102 may not equal the correct, expected amount. In such a case, a user of system 100 may be notified that EGM-under-test 102 failed a validation test and may require additional debugging or troubleshooting. Results database may be implemented by a database, file, record, or any other suitable mechanism. Test result logger 226 may be configured to present test results to a user of test server through test sequence module 208.

[0074] In operation, a user operating system 100 may apply one or more tests to an EGM-under-test 102 using a test server 206 to control a test fixture 104. In one embodiment, the user may use system 100 to test the operational validity of newly developed EGM software 106. The user may select various options or features on test server 206 to determine what tests to be applied to EGM-under-test 102. Test server 206 may transform, translate, or otherwise enable the tests selected by the user of system 100 into signals, commands, or instructions recognizable by EGM-under-test 102 and causing EGM-under-test 102 to perform various functions associated with an EGM. Test fixture 104 may relay the results of applying a test to EGM-under-test 102 to test server 206. Test server 206 may interpret such results and compare the results against expected values. A user of test server 206 may determine that test results meet acceptable thresholds or expected values and validate the operation of EGM-under-test 102.

[0075] In one embodiment, a user may generate a test sequence 212 using test sequence module 208. Generating test sequence 212 may be accomplished by selecting specific functional tests to be completed by an EGM, tests specific to EGM-under-test 102, prescribed tests for a family or type of EGM, or other criteria. Test sequence module 208 may generate one or more test sequences 212 and/or access a known set of test sequences from test sequence database 210. The user of test server 206 may retrieve a specific test sequence 212 from test sequence database 210. Threshold criteria or expected results may be defined.

[0076] After one or more test sequences 212 are selected, the test sequence 212 may be used to generate a test script 216 by test script generator 214. Test script generator 214 may assemble test script 216 based on steps identified by test sequence module 208. Test script generator 214 may add initialization, operational parameters, communication, and other steps necessary to add to test sequence 212 to test EGM-under-test 102. Test script generator 214 may repeat certain steps of test sequence 212, for example, in a conditional loop or across a range of test parameters.

[0077] Test script generator 214 may create a test script 216 and communicate the script to test script interpreter 218. Test script interpreter 218 may interpret the elements of test script 216 and translate them into specific commands, voltages, instructions, or other communication specific to interfaces of EGM-under-test 102 and test fixture 104. Test script interpreter 218 may access protocol dictionary 222 to translate or interpret various portions of test script 218. Test script interpreter 218 may be configured to send the resulting input commands to test fixture 104.

[0078] When test fixture 104 receives input commands, voltages, instructions, or other communication to be applied to EGM-under-test 102, test module 108 may route the appropriate communication to EGM-under-test 102 through an appropriate channel or module. For example, signals indicating user input on a touch screen may be sent through touch screen emulator 112; signals indicating communication over SAS from network casino components to the EGM may be sent through SAS test host 120; signals indicating bills inserted into a bill accepter may be sent through bill acceptor emulator 124; signals indicating swiping of a card in a card reader may be sent through card reader emulator 128; signals indicating insertion of a voucher into a voucher reader may be sent through voucher I/O emulator 130; signals indicating pressed buttons or pulled levers may be sent through button emulator 136; and/or signals indicating USB communication through--for example--peripheral devices configured to connect to an EGM may be sent through USB I/O emulator 148.

[0079] EGM-under-test 102 may receive signals for testing various portions of the EGM and the response of the EGM software 106. EGM software 106 may receive such signals through the interfaces of EGM-under-test 102 as if the signals would be used in production on an actual EGM, such as an EGM in a casino wagering environment, although such signals may be provided instead by test fixture 104. For example, EGM software 106 may receive signals indicating actions on a touch screen through touch screen input module 110; receive signals indicating communication over SAS through SAS communication module 118; receive signals indicating bills inserted in a bill acceptor through bill acceptor input module 122; receive signals indicating a card swiped on a card reader through card reader input module 126; receive signals indicating insertion or reading a voucher through voucher reader input module 128; and/or receive signals indicating actions on buttons through button input module 134. The EGM software 106 may execute to conduct activities associated with wagering game play, such as adding or removing credits, determining available credits, determining displays of the wagering game, or other suitable activities of an EGM. EGM software 106 may operate--and thus be tested--as if EGM software 106 was deployed in a casino wagering environment.

[0080] The EGM software 106 may cause resulting signals to be sent from EGM-under-test 102 in response to the received signals, wagering game play, or other determinations by EGM software 106. For example, EGM-under-test 102 may send signals indicating video output of a game and other options to be displayed through video output module 114; send signals indicating communication with casino network components--such as a casino server--over SAS through SAS communication module 118; send signals indicating vouchers to be printed through voucher printer output module 132; send signals indicating lights on the EGM to be operated through lights output module 138; send signals indicating the turning-on or turning-off of switches--such as those controlling mechanical displays on the EGM--through switches output module; send signals indicating USB communication through USB I/O module 146; and/or send signals indicating spinning and stopping of mechanical reels of the EGM through mechanical reel output module 150.

[0081] EGM software 106 may send such signals through its interfaces as if the signals would be used in production on an actual EGM, such as an EGM in a casino wagering environment, although the signals may be received instead by test fixture 104. For example, test fixture may receive signals indicating video to be displayed through VNC-KVM module 116; signals indicating SAS communication through SAS test host 120; signals indicating vouchers to be printed through voucher I/O emulator 130; signals indicating lights to be displayed through light reader 140; signals indicating switches to be operated through switch reader 144; signals indicating USB communication through USB I/O emulator 148; and/or signals indicating the spinning and stopping of mechanical reels through mechanical reel reader 152.

[0082] The nature of the signals exchanged between the interfaces of EGM-under-test 102 and test fixture 104 may depend upon the type of input or output and may vary between interfaces. For example, SAS communication between interfaces 118, 120 may be conducted using serial communication conforming to SAS standards. In another example, switch signals between interfaces 142, 144 may include sets wherein each set includes a "0" or "1" to turn a given switch on or off.

[0083] Although a certain number of interfaces are shown on EGM-under-test 102 and test fixture 104, the actual organization of interfaces may include any suitable number of interfaces or any suitable organization of interfaces. Signals between particular interfaces may be combined with signals of other interfaces. For example, signals for card readers or bill acceptors as shown with interfaces 122, 124, 126, 128 may be communicated together over USB interfaces 146, 148. In such cases, test module 108 and/or EGM software 106 or other portions of system 100 may disassemble and parse the signals to obtain the specific signals for the interfaces shown.

[0084] Test module 108, upon receipt of signals from EGM-under-test 102, may communicate such information as output values to test server 206. Result interpreter 224 may receive the output values and may interpret the signals to determine the results as communicated by EGM software 106. Result interpreter 224 may access protocol dictionary 222 to determine the meaning of various received signals. Result interpreter 224 may send the determined results to test result logger 226. Test result logger 226 may store the results of the test in results database 228 and send the results to test sequence module 212. Test sequence module 212 may display the results to a user of test server 206.

[0085] The operations of designating tests, conducting the tests, and receiving the results may happen repeatedly and in parallel with each other. For example, a test script 216 may indicate conditional operations, wherein a result determined by result interpreter 224 may be used to determine a subsequent action to be tested upon EGM-under-test 102. Result interpreter 224 may send interim results to test script interpreter 218, which may send subsequent input signals to test fixture 104.

[0086] FIG. 3 is an example embodiment of a system 300 for determining a protocol dictionary 222 for use in subsequent testing of an EGM-under-test. The system 100 of FIGS. 1-2 may rely upon determining, for a given input of EGM-under-test 102, what signals to send to the EGM-under-test 102 to stimulate operation of the EGM-under-test 102. The system 100 may rely upon determining, for a given input of EGM-under-test 102, how to interpret signals received from the EGM-under-test 102 to evaluate whether the EGM-under-test 102 has performed according to specifications. Such determinations and associations may be made by the system 300 of FIG. 3 and stored in protocol dictionary 222.

[0087] A given instance of system 300 may be used to monitor a particular EGM, a particular kind of EGM, a platform or family of EGMs wherein the EGMs share common features or components, or an EGM with a particular component such as a particular kind of interface. Operation of such a system 300 may be used to generate a protocol dictionary 222 for the particular EGM, particular kind of EGM, platform or family of EGMs, or an EGM with a particular component. Subsequently, the protocol dictionary 222 may be used by system 100 of FIGS. 1-2 to test another such particular EGM, another EGM of the same particular kind, another EGM from the same platform or family, or another EGM with the particular component. Development of protocol dictionary 222 may reduce the need to develop a fully functional emulator for various parts of test fixture 104. Such functionality may be used, for example, for faster development or when components of an EGM are developed by a third party.

[0088] System 300 may include an EGM 302 communicatively coupled to a listener 354 configured to trace the operation of EGM 302 to yield an operational trace 356. System 300 may include a protocol discoverer 358 configured to parse operational trace 356 to associate particular actions or inputs with elements in operational trace 356. EGM 302 may include any EGM to be tested as described above. Protocol discoverer 358 may be communicatively coupled to EGM 302 to input commands into EGM 302. Protocol discoverer 358 may be configured to associate an operational trace 356 with a previously issued input to EGM 302. Such an association may be stored in protocol dictionary 222.

[0089] In one embodiment, monitor 354 and/or protocol discoverer 358 may be implemented in a test fixture or test server such as those shown in FIGS. 1 and 2. In another embodiment, monitor 354 and/or protocol discoverer 358 may be implemented in one or more electronic devices separate from the test fixture 104 or test server 106 of FIGS. 1 and 2. In such an embodiment, monitor 354 and/or protocol discoverer may include a processor coupled to a memory, or reside on an electronic device including a processor coupled to a memory. The memory may contain logic or instructions for execution on the processor. The executed instructions may carry out some or all of the functionality of monitor 354 and/or protocol discoverer 358.

[0090] Monitor 354 may contain one or more modules, components, or electronic devices for monitoring the communication of signals within an EGM, between an EGM and other casino entities, or between an EGM and a peripheral device. For example, monitor 354 may include a serial communication monitor, a USB device monitor, digital I/O boards, analog-to-digital ports and converters, a mechanical reels monitor-validator, or any other suitable mechanism for gathering information regarding the communication of signals from the EGM.

[0091] Monitor 354 may be configured to intercept or monitor one or more such signals within an EGM, between an EGM and other casino entities, or between an EGM and a peripheral device. Monitor 354 may be configured to switch such signals such that they are redirected to monitor 354. Monitor 354 may be configured to record such signals as a pass-through monitor, wherein the signals maintain their original destination.

[0092] System 300 may be configured to monitor an EGM 302 to determine entries to populate protocol dictionary 222. As described above, EGM 302 may be selected to be monitored because the particular EGM 302 requires testing--and thus its communications protocols need to be recorded in protocol dictionary 222, the particular kind of EGM 302 requires testing, the platform or family to which EGM 303 belongs requires testing, EGMs with common features or components to EGM 302 require testing, or EGM 302 includes a particular component which requires testing.

[0093] In one embodiment, EGM 302 may be implemented by EGM-under-test 102 of FIGS. 1 and 2. In such an embodiment, protocol dictionary 222 may be created as EGM-under-test 102 is tested. EGM 302 may be communicatively coupled to test server 206 and/or test fixture 104 as illustrated by EGM-under-test 102 in FIGS. 1 and 2. In another embodiment, EGM 302 may be used to establish protocol dictionary 222 so that EGM-under-test 102 of FIGS. 1 and 2 may be tested.

[0094] EGM 302 may include EGM software 306 communicatively coupled to one or more interfaces. Such interfaces may include instances of interfaces similar to those described in FIG. 1 for EGM-under-test 102, such as a touch screen input module 310, video output module 314, SAS communication module 318, bill acceptor input module 322, card reader input module 326, voucher reader input module 328, voucher printer output module 332, button input module 334, lights output module 338, switches output module 342, USB I/O module 346, or mechanical reel output module 350. Such interfaces may be configured to receive or send signals indicative of EGM operations as described in conjunction with EGM-under-test 102 in FIG. 1.

[0095] In one embodiment, monitor 354 may be configured to monitor communication signals between the EGM 302 interfaces and the interfaces of a test fixture such as test fixture 104 of FIGS. 1 and 2. In such an embodiment, monitor 354 may be configured to perform monitoring operations and protocol discoverer 358 may be configured to determine protocol associations for an EGM-under-test. In such an embodiment, EGM 302 may be implemented by such an EGM-under-test 102 shown in FIG. 1. In another embodiment, monitor 354 may be configured to monitor communication signals between EGM 302 and its components, casino entities communicatively coupled to EGM 302, or peripherals communicatively coupled to EGM 302. In such an embodiment, EGM 302 may contain or be communicatively coupled to such components, entities, or peripherals as shown in FIG. 3. For example, such signals may transmitted between the interfaces of EGM 302 and a touch screen 312, video device 316, SAS test host 320, bill acceptor 324, card reader 328, voucher reader 330, voucher printer 331, button 336, lights 340, switches 344, USB device 348, or mechanical reels 352.

[0096] Protocol discoverer 358 may be configured to log serial communications, detect values or sequences, or determine other such output from EGM 302 in response to inputs provided to EGM 302. Protocol discoverer 358 may be configured to run a monitoring script, wherein a script of inputs is provided to EGM 302 and the associated output recorded. The association between such an input and an associated output may be stored within protocol discoverer. By knowing the outcome of a particular input, protocol discoverer 358 may associate the output signals in the operational trace 356 with the known outcome. Thus, a protocol for the set of output signals may be established, associated logically with the known condition, and stored in protocol dictionary 222. In subsequent use of protocol dictionary 222, recognition of the same pattern of output signals encountered by a test server may be used to evaluate the nature of a received output.

[0097] Monitor 302 may be configured to log the signals associated with a given input applied to EGM 302, applied by protocol discoverer 358. Such input may include pressing a button on EGM 302, sending a message from another entity on the casino network to the EGM, inputting currency or a voucher, or swiping a player card. Protocol discoverer may be configured to associate the resulting operational trace with the input that was applied to the EGM 302. Thus, a protocol for the set of input signals as applied to the EGM 302 may be established, associated logically with the known input, and stored in protocol dictionary 222. In subsequent use of protocol dictionary 222, the set of signals associated with the known input may be applied to an EGM-under-test to emulate the input operation.

[0098] In operation, protocol discoverer 358 may issue inputs to EGM 302. In one embodiment, protocol discoverer 358 may be operated manually by a user of system 300. In another embodiment, protocol discoverer may be operated automatically according to a script of inputs to be applied to EGM 302.

[0099] The inputs may include, for example, using various portions of EGM 302 such as causing buttons, levers, or touch screens to be pushed, communications to arrive from networked casino components, bills inserted into a bill acceptor, or a card swiped by a card reader. Such inputs may be made through, for example, touch screen 312, SAS test host 320, bill acceptor 324, card reader 328, voucher reader 330, button 336, or USB device 344. In one embodiment, wherein EGM 302 implements an EGM-under-test 102 of FIGS. 1 and 2, the inputs may be emulated.

[0100] While the inputs are sent to EGM 302, monitor 354 may monitor the specific signals used to communicate the inputs to EGM 302. Monitor 354 may record such monitored signals into operational trace 356 and provide operational trace 356 to protocol discoverer 358. Protocol discoverer 358 may associate the inputs applied to EGM 302 with the observations from operational trace 356. Protocol discoverer may store such associations in protocol dictionary 222.

[0101] For example, protocol discoverer 358 may insert a $5 bill into EGM 302 and subsequently press a cash-out button. Monitor 354 may detect the communication between bill acceptor 324 and bill acceptor input module 322 and then the communication between touch screen 312 and touch screen input module 310. Monitor 354 may capture the signals associated with the input operations and record them in operational trace 356. Protocol discoverer 358 may parse the recorded signals from the input operations and associate them with the commands "InsertBill 5, `Stack` and "Press `Cash Out.`"

[0102] In another example, a voucher reader 330 may have a serial interface with commands for controlling the voucher reader 330. Protocol discoverer 358 may communicate with voucher reader 330 to instruct voucher reader 330 to send a signal to the rest of EGM 302 that a particular voucher with a given identification and a given balance has been deposited. Monitor 354 may capture the signals associated with the input operation and record the signals into operational trace 356, which may be parsed by protocol discoverer 358. Protocol discoverer 358 may thus have access to the commands used by voucher reader 330 itself in such a case. After storing the association of the observed signals with the action caused in protocol dictionary 222, a subsequent test of an EGM may be made emulating the action of the voucher reader 330 without requiring the voucher reader 330 to be present.

[0103] EGM 302 may conduct various activities in response to the applied input, such as conduct a wagering game, update credits, award payouts, conduct bonuses, activate peripherals, contact networked casino entities, or other suitable action. EGM 302 may provide such signals through its interfaces. Monitor 354 may record signals generated as a result of such activities. For example, monitor 354 may record output signals sent from the interfaces of EGM 302 to a video device 316, SAS test host 320, voucher printer 331, lights 340, switches 344, USB device 348, or mechanical reels 352. Monitor 354 may record such information in operational trace 356 and send operational trace 356 to protocol discoverer 358. Protocol discoverer 358 may determine an association between the input signals sent to EGM 302 and the resultant output signals. Protocol discoverer 358 may record such an association in protocol dictionary 222.

[0104] FIG. 4 is an example method 400 for applying a test to an EGM-under-test. In step 405, a sequence of test steps to be applied to the EGM may be determined. Such test steps may be abstracted to logical steps that may be applied to an EGM. The test sequence may be loaded from pre-defined or previously used test sequences. In step 410, the sequence or steps therein may be created or modified. In step 415, the test sequence may be saved.

[0105] In step 420, a test script based upon the test sequence may be generated. Generating the test script may include adding overhead, configuration, or initialization steps, adding loops or conditional tests, or other tasks. In step 425, a protocol dictionary may be accessed to determine, for a given portion of the test script, how the test script may be represented by signals communicated to the EGM. In step 430, the test script may be interpreted to determine the signals, timing, and other operation of sending test signals to the EGM.

[0106] In step 435, the signals may be applied to the EGM. The signals may be applied to interfaces for, for example, bill readers, voucher readers, buttons, touch screens, SAS hosts, or other suitable interfaces. The signals may emulate, for example, the actions, inputs, or signals of various components of the EGM, entities coupled over a network with the EGM, or peripherals connected to the EGM.

[0107] In step 440, response output signals from the EGM may be received. A series of such signals may be received. Such signals may be include information sent from the EGM intended for various components of the EGM, entities coupled over a network with the EGM, or peripherals connected to the EGM.

[0108] In step 445, the protocol dictionary may be accessed to determine, for a given received signal, the associated meaning In step 450, the received signals may be translated into test results. The translation may be made based upon references to the protocol dictionary. In step 455, the status of the test script may be evaluated. The test script applied to the EGM may have conditional or iterative elements. For example, if an input causes an acceptable response from the EGM, a second test may be applied to the EGM by varying the input to a second value, or by conducting a second input that depended upon the first. If the test script is not complete, then method 400 may return to step 425 and continue to execute the test script. If the test script is complete, then the method 400 may continue in step 460.

[0109] In step 460, the test results may be logged. In step 460, the test results may be analyzed to determine whether the results indicate a malfunction, bug, successful operation, or other outcome.

[0110] FIG. 5 is an example illustration of a method 500 for determining a protocol dictionary for translating test steps to be communicated to an EGM or for translating test results from an EGM. Method 500 may include application of an input and/or receipt of an output.

[0111] In one embodiment, method 500 may include application of an input whose emulation, operational trace, or protocol is unknown. In such an embodiment, method 500 may be used to determine the emulation, operational trace, or protocol of the input. Application of the input may be accomplished directly. Depending upon the nature of the input or output, such application may be accomplished manually, while in other embodiments such application may be automated. For example, pushing a button on an EGM may be accomplished by manually pressing the button or by programming a solenoid coupled to a test fixture to move a testing member to press the button. In another example, a signal from a SAS server may be sent to the EGM.

[0112] In another embodiment, method 500 may include application of an input whose emulation, operational trace, or protocol is known. In such an embodiment, method 500 may be used to determine the emulation, operational trace, or protocol of the resulting output from such an input.

[0113] In step 505, a series of protocols to be discovered may be determined. Each of the protocols may represent the input or output signals associated with an action of an EGM. The protocols may be used to emulate input to or interpret output from an EGM. Some protocols may require more than one input or output step. The protocols may be conditional, iterative, or otherwise compound. In step 510, an input to be sent to an EGM may be determined. The input to be sent may be determined as one of several input or output steps to be conducted in association with determining a protocol. The input to be sent may be determined by selecting a protocol to be discovered.

[0114] In step 515, it may be determined whether the input will be emulated. In one embodiment, the input may be emulated such that signals representing the input may be sent to the EGM without actually conducting the action associated with the input. For example, a bill collector may be emulated to emulate the signal associated with inserting a certain amount of money into the EGM. In another example, the input may be actually applied such that signals representing the input may be sent to the EGM. For example, a button on an EGM may be pressed. The selection of whether to emulate an input may be made based on whether protocol has been discovered for a given input. For example, during a first execution of step 515 a protocol for the input associated with pressing a button may not be known and the input may actually be conducted, but during a second execution of method 515 the protocol for the input may have been discovered and thus emulated. The protocol may have been discovered using the remaining steps of method 500 as described herein.

[0115] If the input is to be emulated, then in step 520 the input may be emulated and applied to the EGM. The input may be emulated by, for example, sending signals, voltages, digital signals or data, switch signals, electronic communication, text strings or other information to the EGM. The emulated input may be sent through, for example, digital input/output boards, serial interfaces, Ethernet, SAS, or any other suitable mechanism. To emulate the input, the protocol dictionary may be accessed and an operational trace associated with the input may be retrieved. The operational trace may be applied to the EGM as an emulation of the input. Method 500 may then proceed to step 555.

[0116] If the input is not to be emulated, then in step 525 the input may be applied to the EGM. In step 535, the application of input may be monitored. In one embodiment, the application of input may be monitored with a pass-through technique or mechanism. For example, application of an input configured to be input using serial communication may be monitored with a serial listening device configured to send the input to its original destination and a copy of the input to a listening point. In another embodiment, the application of input may be redirected to a listening point. For example, application of button inputs may be wired to be redirected to digital input boards to be monitored. In such embodiments where inputs are redirected, method 500 might not execute steps to monitor output associated with the input.

[0117] In step 540, an operational trace of the input signals may be determined based on the monitored input. The operational trace may include a recording, measurement, or other indication of the input. The indication of the input may be recorded, measured, or otherwise indicated over time. In step 545, the operational trace may be associated with the input. In step 550, the association of the operational trace and the input may be stored in the protocol dictionary. Subsequent emulation of the input may be conducted by accessing the protocol dictionary.

[0118] In step 555, operations on the EGM may be conducted in response to the input. For example, if a wager button is input, a wager may be made on the EGM; if a "Spin Wheels" button is input, a wagering game may be conducted; or if currency is input, a total amount of funds available for wagering may be updated.

[0119] In step 560, output signals in response to such operations may be generated and returned from the EGM. Such output signals may include voltages, digital signals or data, switch signals, electronic communication, text strings or other information from EGM. In step 565, the output signals may be monitored. The output signals may be monitored by, for example, digital input/output boards, serial interfaces, Ethernet, SAS, or any other suitable mechanism. The reception of output signals may be monitored with, for example, a pass-through technique or mechanism or by redirecting output to a listening point. In step 570, an operational trace of the input signals may be determined based on the monitored output. The operational trace may include a recording, measurement, or other indication of the output. The indication of the output may be recorded, measured, or otherwise indicated over time.

[0120] In step 575, the operational trace may be associated with the output. Determination of the output may be made by programmatic determinations of expected output given an input. The programmatic determinations may be embodied in, for example, a state machine represented in logic or instructions stored in a memory. For example, given an input of a cash-out option, output signals corresponding to printing a voucher may be expected and subsequently monitored. In step 580, the association of the operational trace and the output may be stored in the protocol dictionary. Subsequent interpretation of received signals corresponding to the output signals may be determined by accessing the protocol dictionary.

[0121] In step 585, it may be determined whether additional protocols, or additional input or output steps need to be monitored. Such additional monitoring may be required as an additional protocol in a series of regressive tests or learning to be determined, or as an additional input or output as part of a compound operation. If so, the method 500 may repeat starting at step 510. If not, method 500 may terminate.

[0122] Methods 400 and 500 may be implemented using the system of FIGS. 1-3, or any other system operable to implement methods 400 and 500. As such, the preferred initialization point for methods 400 and 500 and the order of its steps may depend on the implementation chosen. In some embodiments, some steps may be optionally omitted, repeated, or combined. In some embodiments, some steps of methods 400 and 500 may be executed in parallel with other steps of methods 400 500. In certain embodiments, methods 400 and 500 may be implemented partially or fully in software embodied in computer-readable media.

[0123] For the purposes of this disclosure, computer-readable media may include any instrumentality or aggregation of instrumentalities that may retain data and/or instructions for a period of time. Computer-readable media may include, without limitation, storage media such as a direct access storage device (e.g., a hard disk drive or floppy disk), a sequential access storage device (e.g., a tape disk drive), compact disk, CD-ROM, DVD, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), and/or flash memory; as well as communications media such wires, optical fibers, and other electromagnetic and/or optical carriers; and/or any combination of the foregoing.

[0124] Although the present disclosure has been described in detail, it should be understood that various changes, substitutions, and alterations can be made hereto without departing from the spirit and the scope of the disclosure as defined by the appended claims.

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed