http://meiwiki.relisource.com/index.php?title=Special:NewPages&feed=atom&hideliu=&hidepatrolled=&hidebots=&hideredirs=1&limit=50&namespace=0ReliSourceWiki - New pages [en]2024-03-28T19:53:08ZFrom ReliSourceWikiMediaWiki 1.16.5http://meiwiki.relisource.com/index.php/Easitrax/AboutEasitrax/About2011-12-15T06:00:23Z<p>Aforkan: Created page with "About"</p>
<hr />
<div>About</div>Aforkanhttp://meiwiki.relisource.com/index.php/EasitraxEasitrax2011-12-15T05:58:26Z<p>Aforkan: </p>
<hr />
<div>* [[Easitrax/About|About The Tool]]<br />
* [[Easitrax/User Guide|User Guide]]<br />
* [[Easitrax/Operations Guide|Operations Guide]]<br />
* [[Easitrax/Development|Development]]<br />
* [[Easitrax/Deployment|Deployment]]</div>Aforkanhttp://meiwiki.relisource.com/index.php/Protocol_LayerProtocol Layer2011-09-19T10:20:06Z<p>Ymurshed: /* Protocol Layer Classes */</p>
<hr />
<div><br />
<br />
= General Overview Of Protocol Layer =<br />
<br />
Protocol Layer is the mid level layer, which receives various requests from Application Layer and sends commands to the Cash Flow Device according to the requests. The Cash Flow Device then echo backs some values against the requested command to the Protocol Layer. Finally Protocol Layer sends those values to the Application Layer.<br />
<br />
Figure-1 shows how Application Layer communicates with Protocol Layer and Protocol Layer communicates with the Cash Flow Device.<br />
<br />
[[File:High_Level Architecture_Protocol Layer_1.PNG]]<br />
[[File:High_Level Architecture_Protocol Layer_2.PNG]]<br />
<br />
= Protocol Layer Architecture =<br />
<br />
Protocol Layer directly handles all the requests come from Application Layer and further processes them to send to the Cash Flow Device. Protocol layer provides the flexibility to select a specific Protocol out of multiple supported protocols and communicate with the device with the selected protocol. The various portion of Protocol Layer are described below:<br />
<br />
== Protocol Manager ==<br />
<br />
Test Case Generator requests to the Protocol Manager for command byte information required for generating the test case XML files. Protocol Manager sends back the information with the supported method/trigger for the selected protocol to the Test Case Generator. Test Case Generator can also query the Protocol Manager to validate the command byte information while editing any existing test case file. Test Executor also queries the Protocol Manager for validation of test case files.<br />
<br />
Protocol Manager provides support for various types of Protocol. Although current implementation only supports EBDS protocol, we are keeping flexibility to add support for additional protocol in future. Each type of protocol will be able to independently communicate with Command Byte Mapping/Validation and Command Executor portion. Protocol Manager also supports some utility functions for the usage of application layer.<br />
<br />
== EBDS Protocol == <br />
<br />
EBDS Protocol contains EBDS related basic information and then communicates with Command Byte Mapping/Validation, UI Mapping Generation and Command Executor portion. <br />
<br />
Packet format may vary depending on different protocol. Also various types of error can occurred during the communication with the cash flow device. These communication errors may also vary depending on the usage of different types of protocol. <br />
<br />
EBDS protocol supports following command types in the tool:<br />
<br />
* Omnibus Command<br />
* Calibration Command<br />
* Auxiliary Command Request<br />
* Extended Command <br />
<br />
Those commands are generated here according to the application layer requests using OPM list which is the Command Byte Mapping/Validation portion. It provides support for polling and timeout issues. It also supports bad CRC and random ACK/NAK generation.<br />
<br />
=== Error Handling In EBDS Protocol ===<br />
<br />
<u>'''Checksum Error Checking'''</u><br />
<br />
Checksum error is one of the major communication errors which can be occurred during communication between host and cash flow device. Checksum is the last byte of the data packet which is calculated by performing XOR operation among the byte 2 through Len-2 of a data packet. <br />
<br />
To communicate with the cash flow device host must send a command with specific packet format with correct checksum value to the cash flow device. After receiving the command, device echo back a data packet with correct checksum value to the host. If the incoming command to the device contains wrong checksum value a checksum error occurred and then no data packet are echoed back by device to the host.<br />
<br />
<u>'''ACK/NAK Bit Checking''' </u><br />
<br />
Another type of error can be occurred related to ACK/NAK bit in the control byte. It is documented in EBDS protocol spec that ACK and NAK bit must be set alternatively in the control byte when a command is sent to device. When a command is sent with ACK bit in the control byte it is expected that in the reply ACK bit is present in the control byte. Same behavior is expected for the NAK bit. If any mismatch is found between these bits in control byte of sending and receiving command it is assumed a communication error is occurred. <br />
<br />
Handling of this type of communication errors are supported by the EBDS protocol.<br />
<br />
== Command Byte Mapping/Validation ==<br />
<br />
When Test Case Generator and Test Case Executor request to the Protocol Manger for mapping/validation, it actually passes the requested OPM/IMF to the Command Byte Mapping/Validation portion. This portion actually checks requested OPM/IMF with the EBDS_Command_List id and then sends back the mapping/validation information of the associated id reading from the list to the Test Case Generator and Test Case Executor via Protocol Manager.<br />
<br />
== UI Mapping Generation ==<br />
<br />
Test Case Generator requests to the Protocol Manager to ask supported OMP/IMF information supported by the EBDS protocol. The request then passes to the UI Mapping Generation portion. Then the UI Mapping Generation portion echo backs the relevant information reading from the EBDS_UI_Mapping list to the Test Case Generator through the Protocol Manger. <br />
<br />
== Command Executor ==<br />
<br />
Command Executor takes instruction from Protocol Manger that which command or a set of commands will have to be executed immediately. <br />
<br />
Command executor executes following command types on the basis of EBDS protocol: <br />
<br />
* Omnibus Command<br />
* Calibration Command<br />
* Auxiliary Command Request<br />
* Extended Command <br />
<br />
Depending on the requests any of the above command will be executed with the appropriate value and then passed to Cash Flow Device by Command Executor. Against the command that was executed, the incoming response from the device will be set to some predefined delegates. Protocol Manager then sends the test result through these callback/delegates.<br />
<br />
= Protocol Layer Classes =<br />
<br />
This section introduces the classes of protocol layer and provides the basic idea of their functionality.<br />
<br />
== MeiProtocolManager ==<br />
<br />
This is the main class of the protocol layer. Application layer communicates with the cash flow device through this class. This class initiates the communication with the device and sends back the responses of the device to the application layer. The class also provides some utility functions for the necessity of application layer. <br />
<br />
== MeiProtocol ==<br />
<br />
This class initializes the some main protocol attributes and important function definitions of the supported protocol.<br />
<br />
== MeiIMF ==<br />
<br />
Protocol layer provides an excel file named as '''EBDS_Command_List''' which contains all OPM/IMF id supported by EBDS protocol and their respective control byte, length, data bytes, extra bytes, reply value, reply value byte no and reply mask. This class initializes these attributes and reset them.<br />
<br />
== MeiUIMapping ==<br />
<br />
Protocol layer provides another excel file named as '''EBDS_UI_Mapping''' which contains all OPM/IMF UI name of EBDS protocol supported by application layer and their respective OPM name, IMF name, number of bits/bytes, recommended value, possible value, reserved value and field type. This class initializes these attributes and reset them.<br />
<br />
== EBDS_ParseFile ==<br />
<br />
This class parses the two excel file '''EBDS_Command_List''' and '''EBDS_UI_Mapping''' and load their values to their respective attributes those are initialized in the '''MeiIMF''' and '''MeiUIMapping''' class.<br />
<br />
== EBDS ==<br />
<br />
This class inherits the '''MeiProtocol''' class. The class performs EBDS protocol related specific tasks such as initializing COM port, alternating ACK/NAK bit, generating checksum, handling polling and timeout issues etc. <br />
<br />
In the test tool currently four commands are supported for the EBDS protocol. They are: <br />
<br />
(1) Omnibus Command <br />
(2) Auxiliary Command <br />
(3) Extended Command and <br />
(4) Calibration Command. <br />
<br />
Command generation, sending command execution request to another class and receives device response related tasks are also handled in this class. To generate these four types of commands and parse their responses from the device the class has four partial classes. Naming of the partial classes is given according to their command name.<br />
<br />
== EBDS_OmnibusCommand ==<br />
<br />
This is the partial class of the '''EBDS''' class. The class generates the omnibus command and parses the omnibus reply.<br />
<br />
== EBDS_AuxiliaryCommand ==<br />
<br />
This is the partial class of the '''EBDS''' class. The class generates the auxiliary command and parses the auxiliary reply.<br />
<br />
== EBDS_ExtendedCommand == <br />
<br />
This is the partial class of the '''EBDS''' class. The class generates the extended command and parses the extended reply.<br />
<br />
== EBDS_CalibrationCommand ==<br />
<br />
This is the partial class of the '''EBDS''' class. The class generates the calibration command and parses the calibration reply.<br />
<br />
== MeiCommandExecutor ==<br />
<br />
This class executes the requested command to send to the cash flow device and receives raw bytes reply from the device. Then it echo backs these device response to the '''MeiProtocolManager''' class.<br />
<br />
== MeiArguments ==<br />
<br />
This class defines the property of argument list’s constant key for the omnibus, auxiliary and extended commands and also defines some other constant key’s property.</div>Ymurshedhttp://meiwiki.relisource.com/index.php/DevelopmentDevelopment2011-09-19T10:14:43Z<p>Ymurshed: </p>
<hr />
<div>* [[Protocol Layer |Protocol Layer]]</div>Ymurshedhttp://meiwiki.relisource.com/index.php/User_GuideUser Guide2011-08-08T10:07:37Z<p>192.168.50.39: /* Workspace */</p>
<hr />
<div>= Workspace =<br />
== Workspace Creation ==<br />
Users set their local workspace at times of selecting their role as "Test Generator" or "Test Executor". Then a windows form comes having 6 textfields :<br />
*Perforce Port : Server address along with port given here. As for example it should be like this : 192.168.50.39:1666. But if the server address has the port number alliasing with the address, then user does not need to put any port number.<br />
<br />
*Username : User puts a valid username in the textfield that is already enlisted in the perforce server.<br />
<br />
*Password : User puts a valid password for that username that has been put in the username texfield.<br />
<br />
*Workspace name : A new client is created here.It should be noted that the same name client is not present in the perforce server.<br />
<br />
*Perforce Root : User selects the specific directory for the newly created client where the files and folders from the perforce server will be checked out.User can create new directory or any existing directory for the root. <br />
<br />
*Perforce View : User puts only depot view here.If users want to make the Automated Test Tool application faster,the perforce view should look like:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//p4.wcr/proj/10093/trunk/MAIN/Automated_Test_Tool/ <br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or, <br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//p4.wcr/proj/10093/trunk/MAIN/Automated_Test_Tool/Library/<br />
<br />
*Users selects the checkbox to save password for future use.<br />
<br />
== Client Login ==<br />
Users have their workspace set selecting their role as "Test Generator" or "Test Executor".If users want to login to the application, they will find two textfields :<br />
*username : User puts valid username that is available in the perforce server.<br />
<br />
*password: User puts password that is valid for that username.<br/><br />
If username and password matches, the user logs in to the application as the client that was created last time using the application.<br/ ><br />
User can select the checkbox to save the information so that login is not required every time when the application starts.<br />
<br />
== Changing Workspace ==<br />
Users can change workspace name and can communicate with perforce server with different client using the application.<br /><br />
In the application go to 'Settings' tab. Select 'Perforce Connection'. A windows form comes that shows the workspace names created from current workstation.<br /><br />
Users can select any of the workspaces and can login through that perforce client.<br /><br />
Users can create new workspace here that is discussed in section 1.1<br />
<br />
== Offline Mode==<br />
Users select 'Offline Mode' where no perforce connection is needed for 'Test Generator' as well as "Test Executor".Users select a directory where workspace will be pointed.Inside that directory 'Suite' and 'Case' folders will be created automatically.Valid suite and case files should be put in respective folders.<br /><br />
Users as 'Test Executor' can execute testcases selecting a valid suite file.<br /><br />
Users as 'Test Generator' can generate new suites and save it in the offline workspace.<br />
<br />
= Test Generator =<br />
<br />
= Test Executor =<br />
= Test Library =<br />
==Overview==<br />
Library section is integrated with the perforce server and it shows the current perforce status of files like suites and cases. For "Offline Mode" the library section is disabled because it needs perforce server connection to generate the file list. There are basically two treeview in library section - workspace treeview and perforce depot treeview.<br />
<br />
<br />
==Workspace Treeview==<br />
Users set their local workspace at times of selecting their role as "Test Generator" or "Test Executor". The workspace treeview tab binds the default workspace file structure in treeview. At times of binding, it connects with the perforce server and retrieves the current file status of every file. Workspace treeview shows different file icons to represent different file status. The legend of file types are described in section 5.1. Depending of file status there are 5 types of files :<br />
<br />
* Local file: These files are saved in local workspace but not saved in the perforce server depot.<br />
*Up to date file: This files are saved both in local workspace and perforce server depot. And both files are up to date and same.<br />
* Added file: These files are saved in local workspace and also added to the perforce change list to add in the perforce server depot.<br />
* Deleted file: This files are saved both in local workspace and perforce depot. And it is added to the perforce change list to delete from the perforce depot at next submission.<br />
* Edited file: This files are saved both in local workspace and perforce depot. But it is edited in the local workspace but the change is not submitted to the perforce depot yet.<br />
<br />
<br />
Users get different types of context menu when they right click on any file in treeview. Context menu differs on file status :<br />
<br />
* Local file<br />
** Mark for add. (Added the file in perforce change list to add to the perforce server depot)<br />
** Delete. (Delete the local file form workspace)<br />
** Refresh.<br />
* Up to date file<br />
** Get Latest Revision. (Get the latest file status and revision from perforce server depot)<br />
** Mark for delete. (Added the perforce change list to delete from the perforce server depot)<br />
** Refresh.<br />
* Added file<br />
** Submit. (Submit the current change list to perforce server depot)<br />
** Revert. (Revert the file addition from the perforce change list)<br />
** Refresh.<br />
* Edited file<br />
** Get Latest Revision. (Get the latest file status and revision from perforce server depot)<br />
** Submit. (Submit the current change list to perforce server depot)<br />
** Revert. (Revert the file edition from the perforce change list)<br />
** Refresh.<br />
<br />
<br />
==Depot Treeview==<br />
Depot treeview show the current perforce server depot file structure and status. User can update or refresh the files by right clicking the files in the treeview.<br />
<br />
<br />
== Legend of file types==<br />
<br />
* [[File:AddedFile.png]] &nbsp;Added file image icon.<br />
* [[File:DeletedfFile.png]] &nbsp;Deleted file image icon.<br />
* [[File:EditedFile.png]] &nbsp;Edited file image icon.<br />
* [[File:LocalFile.png]] &nbsp;Local file image icon.<br />
* [[File:SameFile.png]] &nbsp;Up to date file image icon.</div>192.168.50.5http://meiwiki.relisource.com/index.php/Operations_GuideOperations Guide2011-07-22T09:33:51Z<p>Aforkan: /* Installation */</p>
<hr />
<div>= Introduction =<br />
<br />
== Overview ==<br />
This test tool should provide the ability to define and execute formal suites of manual and automated test scripts for the MEI Cashflow SC Bill Acceptor. The application should provide an efficient and user friendly environment to allow test suites to be executed by non-technical personnel. The application should allow for future expansion to test other protocols.<br />
<br />
<br />
<br />
= Installation =<br />
<br />
== Prerequisites ==<br />
* Windows Installer 3.1<br />
* '''.Net version''' Microsoft .Net Framework 4 Client Profile<br />
<br />
== Install ==<br />
<br />
* To install the tool run MEI Automated Test Tool/setup.exe file. At the following screen click "Next"<br />
<br />
[[File:Install_1.JPG]]<br />
<br />
* Then select your installation location according to following screen and click "Next"<br />
<br />
[[File:Install_2.JPG]]<br />
<br />
* Installation will begin and you will see the installation progress.<br />
<br />
[[File:Install_3.JPG]]<br />
<br />
* At end Click "Close" to finish Installation.<br />
<br />
== How to use the application ==<br />
<br />
== Online Mode ==<br />
=== Installing perforce SCM ===<br />
* Install Perforce server on a host machine from [http://perforce.com/downloads/complete_list Perforce site]<br />
* Setup a Port for the perforce server. i.e.: 203.106.70.31:1666<br />
* Ensure that perforce server connection is okay<br />
* Install any perforce client (P4V or perforce web client)<br />
* Create some user with password and access permission using either of the perforce client<br />
<br />
=== Running the program ===<br />
* '''Online Mode'''<br />
* Form '''Start > All Programs''' look for the application "MEI Automated Test Tool"<br />
* Click on the icon to start the application. <br />
* For Online mode: Click on Generator or Executor icon in Welcome scree.<br />
* Create a perforce workspace using any credential that was already stored in perforce server. You need to provide an existing perforce user id and password. Then provide a new name for workspace and a new local path location.<br />
* After workspace creation all the latest files will be automatically cheked in at selected workspace.<br />
* Then user will be able to create and execute test case from there and also do version control operation from test library section.<br />
<br />
* '''Offline Mode'''<br />
* Form '''Start > All Programs''' look for the application "MEI Automated Test Tool"<br />
* Click on the offline button from welcome screen<br />
* Select a local workspace path.<br />
* Populate Suite and Case directory with some delivered Cases and Suites file.<br />
* Try to Generate some test suites and test cases using the video demos as reference.<br />
* Save the suites and cases.<br />
* Connect SC83 device at your workstation. <br />
* From Settings>Configuration make sure that Com Port is set at proper value (i.e. COM1)<br />
* Now switch at executor section<br />
* Open a Suite.<br />
* Try to run the test cases of the suite according to the instruction in video demo.<br />
<br />
= Uninstall =</div>Aforkanhttp://meiwiki.relisource.com/index.php/Sample_Test_CasesSample Test Cases2011-07-22T06:25:36Z<p>192.168.50.5: </p>
<hr />
<div>{| {{table}} style="width:600px"<br />
| align="center" style="background:#a2c093;"|'''Test Case Name'''<br />
| align="center" style="background:#a2c093;"|'''Stack standard note'''<br />
| align="center" style="background:#a2c093;"|<br />
| align="center" style="background:#a2c093;"|<br />
|- style="background:#c2ebae;"<br />
| Phase 0||Wait for Idle||||<br />
|- <br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Idle and LRC bit on.||Next phase||Idle<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase ||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 1||Idle||||<br />
|-<br />
| User prompt||"Feed a $5 note"||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Escrow bit AND note index 3. Remove prompt.||Next phase||Escrow<br />
|-<br />
| Trigger Timeout||Wait 20s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 2||Escrow||||<br />
|-<br />
| OPM||Standard poll AND stack checkbox.||||<br />
|-<br />
| Trigger IMF||Escrow bit AND note index 3||Next Phase||Note Acceptance<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 3||Note Acceptance||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Stacked AND Idle bits AND note index 3||Next phase||PASS<br />
|-<br />
| Trigger Timeout||Wait 5s||Next phase||FAIL<br />
|-<br />
| <br />
|}<br />
<br />
* The XML structure that is generated by MEI Automated Test Tool of the case will look like as follows:<br />
<pre><br />
<?xml version="1.0"?><br />
<testcase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="standard_stack_note"><br />
<description>standard stack note test</description><br />
<phases><br />
<phase name="phase0_wait"><br />
<description>wait for idle</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger0" type="Message"><br />
<next>phase1_idle</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_LRC_ON</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase1_idle"><br />
<description>idle check</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_DENOM1_ON</request><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<prompt><br />
<template>0</template><br />
<display_message>FEED 100 TAKA NOTE</display_message><br />
</prompt><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger1" type="Message"><br />
<next>phase2_escrow</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_ESCROWED</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>20000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase2_escrow"><br />
<description>escrow mode test</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_DENOM1_ON</request><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_BILL_STACK_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger2" type="Message"><br />
<next>phase3_acceptance</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_ESCROWED</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase3_acceptance"><br />
<description>acceptance check</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_DENOM1_ON</request><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger3" type="Message"><br />
<next>PASS</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_STACKED</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>5000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="PASS" /><br />
<phase name="FAIL" /><br />
</phases><br />
</testcase><br />
</pre><br />
<br />
{| {{table}} style="width:600px"<br />
| align="center" style="background:#a2c093;"|'''Test Case Name'''<br />
| align="center" style="background:#a2c093;"|'''Remove cashbox'''<br />
| align="center" style="background:#a2c093;"|''''''<br />
| align="center" style="background:#a2c093;"|''''''<br />
|- style="background:#c2ebae;"<br />
| Phase 0||Wait for Idle||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Idle and LRC bit on.||Next phase||Idle<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase ||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 1||Idle||||<br />
|-<br />
| User prompt||"Remove the cashbox"||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||LRC bit off. Remove prompt.||Next phase||Verify Removed<br />
|-<br />
| Trigger Timeout||Wait 20s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 2||Verify Removed||||<br />
|-<br />
| User prompt||"Is the yellow LED on?" Yes or No buttons.||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger Manual||Yes button pressed. Remove prompt.||Next phase||PASS<br />
|-<br />
| Trigger Manual||No button pressed. Remove prompt.||Next phase||FAIL<br />
|-<br />
| <br />
|}<br />
<br />
* The XML structure that is generated by MEI Automated Test Tool of the case will look like as follows:<br />
<pre><br />
<?xml version="1.0"?><br />
<testcase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="remove_cashbox"><br />
<description>this case is uesd to check remove cashbox</description><br />
<phases><br />
<phase name="phase0_wait"><br />
<description>wait for idle</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger0" type="Message"><br />
<next>phase1_idle</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_LRC_ON</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase1_idle"><br />
<description>phase idle</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<prompt><br />
<template>0</template><br />
<display_message>Remove cashbox</display_message><br />
</prompt><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger1" type="Message"><br />
<next>phase2_verify</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_LRC_OFF</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>15000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase2_verify"><br />
<description>verification of cashbox removal</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<prompt><br />
<template>1</template><br />
<display_message>IS THE YELLOW BUTTON ON?</display_message><br />
</prompt><br />
<triggers><br />
<trigger xsi:type="ManualTrigger" name="trigger2_yes" type="Manual"><br />
<next>PASS</next><br />
</trigger><br />
<trigger xsi:type="ManualTrigger" name="trigger2_no" type="Manual"><br />
<next>FAIL</next><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>15000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="PASS" /><br />
<phase name="FAIL" /><br />
</phases><br />
</testcase><br />
</pre><br />
<br />
{| {{table}} style="width:600px"<br />
| align="center" style="background:#a2c093;"|'''Test Case Name'''<br />
| align="center" style="background:#a2c093;"|'''Stack extended note'''<br />
| align="center" style="background:#a2c093;"|''''''<br />
| align="center" style="background:#a2c093;"|''''''<br />
|- style="background:#c2ebae;"<br />
| Phase 0||Wait for Idle||||<br />
|- <br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Idle and LRC bit on.||Next phase||Idle<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase ||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 1||Idle||||<br />
|-<br />
| User prompt||"Feed a $5 note"||||<br />
|-<br />
| OPM||Standard poll AND extended note checkbox AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Escrow bit AND extended type 7 subtype 2 message with ASCII data "USD005". Remove prompt.||Next phase||Escrow<br />
|-<br />
| Trigger Timeout||Wait 20s. Remove prompt.||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 2||Escrow||||<br />
|-<br />
| OPM||Standard poll AND extended note checkbox AND stack checkbox AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Escrow bit AND extended type 7 subtype 2 message with ASCII data "USD005".||Next Phase||Note Acceptance<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 3||Note Acceptance||||<br />
|-<br />
| OPM||Standard poll AND extended note checkbox AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Stacked AND Idle bits AND extended type 7 subtype 2 message with ASCII data "USD005".||Next phase||PASS<br />
|-<br />
| Trigger Timeout||Wait 5s||Next phase||FAIL<br />
|-<br />
| <br />
|}<br />
<br />
* The XML structure that is generated by MEI Automated Test Tool of the case will look like as follows:<br />
<pre><br />
<?xml version="1.0"?><br />
<testcase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="stack_extended_note"><br />
<description>stack extended note check</description><br />
<phases><br />
<phase name="phase0_wait"><br />
<description>wait for idle</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger0" type="Message"><br />
<next>phase1_idle</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_LRC_ON</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase1_idle"><br />
<description>idle mode</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
<request>EBDS_EXPANDED_NOTE_REPORTING_ON</request><br />
</opm><br />
<prompt><br />
<template>0</template><br />
<display_message>FEED 100 TAKA NOTE</display_message><br />
</prompt><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger1" type="Message"><br />
<next>phase2_escrow</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_EXPANDED_NOTE_REPLY</response><br />
<value>BDT0100</value><br />
</IMF><br />
<IMF><br />
<response>EBDS_ESCROWED</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" type="Timeout"><br />
<next>FAIL</next><br />
<duration>20000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase2_escrow"><br />
<description>escrow mode</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
<request>EBDS_BILL_STACK_ON</request><br />
<request>EBDS_EXPANDED_NOTE_REPORTING_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger2" type="Message"><br />
<next>phase3_acceptance</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_EXPANDED_NOTE_REPLY</response><br />
<value>BDT0100</value><br />
</IMF><br />
<IMF><br />
<response>EBDS_ESCROWED</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase3_acceptance"><br />
<description>acceptance</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
<request>EBDS_EXPANDED_NOTE_REPORTING_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger3" type="Message"><br />
<next>PASS</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_STACKED</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_EXPANDED_NOTE_REPLY</response><br />
<value>BDT0100</value><br />
</IMF><br />
</conditions><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="PASS" /><br />
<phase name="FAIL" /><br />
</phases><br />
</testcase><br />
</pre><br />
<br />
<br />
{| {{table}} style="width:600px"<br />
| align="center" style="background:#a2c093;"|'''Test Case Name'''<br />
| align="center" style="background:#a2c093;"|'''Return standard note'''<br />
| align="center" style="background:#a2c093;"|''''''<br />
| align="center" style="background:#a2c093;"|''''''<br />
|- style="background:#c2ebae;"<br />
| Phase 0||Wait for Idle||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Idle and LRC bit on.||Next phase||Idle<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase ||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 1||Idle||||<br />
|-<br />
| User prompt||"Feed a $5 note"||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Escrow bit AND note index 3. Remove prompt.||Next phase||Escrow<br />
|-<br />
| Trigger Timeout||Wait 20s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 2||Escrow||||<br />
|-<br />
| OPM||Standard poll AND return checkbox AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Escrow bit AND note index 3||Next Phase||Note Returning<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 3||Note Returning||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Returned AND Idle bits.||Next phase||Verify Return<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 4||Verify Return||||<br />
|-<br />
| User prompt||"Was a $5 note returned" Yes or No buttons.||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger Manual||Yes button pressed. Remove prompt.||Next phase||PASS<br />
|-<br />
| Trigger Manual||No button pressed. Remove prompt.||Next phase||FAIL<br />
|-<br />
| <br />
|}<br />
<br />
* The XML structure Generated by MEI Automated Test Tool will look like as follows:<br />
<pre><br />
<?xml version="1.0"?><br />
<testcase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="return_standard_note"><br />
<description>case of returning standard note</description><br />
<phases><br />
<phase name="phase0_wait"><br />
<description>wait for idle</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger0" type="Message"><br />
<next>phase1_idle</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_LRC_ON</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase1_idle"><br />
<description>idle mode</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_DENOM1_ON</request><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<prompt><br />
<template>0</template><br />
<display_message>FEED A 100 TAKA NOTE</display_message><br />
</prompt><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger1" type="Message"><br />
<next>phase2_escrow</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_ESCROWED</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>20000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase2_escrow"><br />
<description>escrow check</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_DENOM1_ON</request><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
<request>EBDS_BILL_RETURN_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger2" type="Message"><br />
<next>phase3_returning</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_ESCROWED</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase3_returning"><br />
<description>returning standard note</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<triggers><br />
<trigger xsi:type="MessageTrigger" name="trigger3" type="Message"><br />
<next>phase4_verify</next><br />
<conditions><br />
<IMF><br />
<response>EBDS_RETURNED</response><br />
</IMF><br />
<IMF><br />
<response>EBDS_IDLE</response><br />
</IMF><br />
</conditions><br />
</trigger><br />
<trigger xsi:type="TimeoutTrigger" name="triggertimeout" type="Timeout"><br />
<next>FAIL</next><br />
<duration>10000</duration><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="phase4_verify"><br />
<description>verify return</description><br />
<pollRate><br />
<min_rate>200</min_rate><br />
<max_rate>200</max_rate><br />
</pollRate><br />
<opm><br />
<request>EBDS_ORIENTATION_CONTROL_4_way</request><br />
<request>EBDS_PUP_A</request><br />
<request>EBDS_ESCROW_MODE_ON</request><br />
</opm><br />
<prompt><br />
<template>1</template><br />
<display_message>WAS A 100 TAKA NOTE RETURNED??</display_message><br />
</prompt><br />
<triggers><br />
<trigger xsi:type="ManualTrigger" name="trigger4_yes" type="Manual"><br />
<next>PASS</next><br />
</trigger><br />
<trigger xsi:type="ManualTrigger" name="trigger4_no" type="Manual"><br />
<next>FAIL</next><br />
</trigger><br />
</triggers><br />
</phase><br />
<phase name="PASS" /><br />
<phase name="FAIL" /><br />
</phases><br />
</testcase><br />
</pre><br />
<br />
<br />
{| {{table}} style="width:600px"<br />
| align="center" style="background:#a2c093;"|'''Test Case Name'''<br />
| align="center" style="background:#a2c093;"|'''Request Application Software Version'''<br />
| align="center" style="background:#a2c093;"|''''''<br />
| align="center" style="background:#a2c093;"|''''''<br />
|- style="background:#c2ebae;"<br />
| Phase 0||Wait for Idle||||<br />
|-<br />
| OPM||Standard poll AND Escrow checkbox||||<br />
|-<br />
| Trigger IMF||Idle and LRC bit on.||Next phase||Idle<br />
|-<br />
| Trigger Timeout||Wait 10s||Next phase ||FAIL<br />
|- style="background:#c2ebae;"<br />
| Phase 1||Idle||||<br />
|-<br />
| OPM||Extended type 6 message - Request application software version||||<br />
|-<br />
| Trigger IMF||Extended type 6 AND data0 byte 0x0 AND data1 byte 0x0 AND 9 ASCII data bytes that match user configured application software part number.||Next phase||PASS<br />
|- style="background:#c2ebae;"<br />
| Trigger Timeout||Wait 20s||Next phase||FAIL<br />
|-<br />
| <br />
|}</div>Aforkanhttp://meiwiki.relisource.com/index.php//About/About2011-07-22T06:14:27Z<p>Aforkan: Blanked the page</p>
<hr />
<div></div>Aforkanhttp://meiwiki.relisource.com/index.php/MEI_Automated_Test_ToolMEI Automated Test Tool2011-07-22T06:11:40Z<p>Aforkan: </p>
<hr />
<div>* [[About|About The Tool]]<br />
* [[User Guide|User Guide]]<br />
* [[Operations Guide|Operations Guide]]<br />
* [[Development|Development]]<br />
* [[Deployment|Deployment]]<br />
* [[Sample Test Cases | Test Case Samples]]</div>Aforkan