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 Number | 20130137498 13/307498 |
Document ID | / |
Family ID | 48467366 |
Filed Date | 2013-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.
* * * * *