CN111752840A - 一种跨系统的金融自助设备sp自动测试方法、设备及介质 - Google Patents
一种跨系统的金融自助设备sp自动测试方法、设备及介质 Download PDFInfo
- Publication number
- CN111752840A CN111752840A CN202010594849.1A CN202010594849A CN111752840A CN 111752840 A CN111752840 A CN 111752840A CN 202010594849 A CN202010594849 A CN 202010594849A CN 111752840 A CN111752840 A CN 111752840A
- Authority
- CN
- China
- Prior art keywords
- xfs
- cen
- test
- json
- simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F19/00—Complete banking systems; Coded card-freed arrangements adapted for dispensing or receiving monies or the like and posting such transactions to existing accounts, e.g. automatic teller machines
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种跨系统的金融自助设备SP自动测试方法、设备及介质,其中方法为:测试工具生成基于JSON对象的测试指令;转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令;金融自助设备的SP服务接收基于CEN/XFS结构体的测试指令,并将其分配给测试指令对应的金融自助设备待测模块,由待测模块执行测试指令并生成基于CEN/XFS结构体的测试结果;转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果;测试工具接收基于JSON对象的测试结果,并解析和显示测试结果。本发明通用性强、扩展性好,可以实现对金融自助设备SP程序的功能、性能进行自动化测试,支持多种操作系统。
Description
技术领域
本发明涉及金融自助设备技术领域,特别涉及一种跨系统的金融自助设备SP自动测试方法、设备及介质。
背景技术
WOSA(Windows Open System Architecture,Windows开放式系统体系结构),是微软公司提出的一种在Windows操作系统下的软件架构。WOSA/XFS(Windows Open SystemArchitecture/Extensions for Financial Services),又称CEN/XFS协议,是基于WOSA的扩展金融服务,是微软公司为全球金融行业软件提出的一种软件架构,它在WOSA软件架构的基础上针对全球金融行业进行了一些相应修改。
CEN/XFS协议为金融自助设备技术领域提供了一套标准的、统一的协议,是一个通用的、公开的协议,在金融自助设备技术领域已经被广泛使用。随着金融自助行业的不断发展,金融设备集成的基础模块越来越多,人员对模块的熟悉度不够;SP程序的测试工作量大、测试不完善、周期长、效率低;SP程序不够稳定等等,这一系列的问题,都无形中影响了项目的效率和质量。尤其是近年来,随着国家自主安全工作在金融行业的广泛推广和试点,金融自助行业也逐步推出了类WOSA协议的PISA、LFS等自助设备接口规范,并逐步在金融行业应用。但是一直没有相应配套的、成熟的、高效的,同时支持Windows、Linux系统的测试工具来验证SP程序的正确性和稳定性。
发明内容
本发明所要解决的技术问题在于,提供一种跨系统的金融自助设备SP自动测试方法、设备及介质,通用性强、扩展性好,可以实现对金融自助设备SP程序的功能、性能进行自动化测试,支持多种操作系统,解决SP测试工作量大、测试效率低、无法支持多个操作系统等问题。
为实现上述技术目的,本发明采用如下技术方案:
一种跨系统的金融自助设备SP自动测试方法,包括以下步骤:
步骤1,测试工具生成基于JSON对象的测试指令;
步骤2,转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令;
步骤3,金融自助设备的SP服务接收基于CEN/XFS结构体的测试指令,并将其分配给测试指令对应的金融自助设备待测模块,由待测模块执行测试指令并生成基于CEN/XFS结构体的测试结果;
步骤4,转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果;
步骤5,测试工具接收基于JSON对象的测试结果,并解析和显示测试结果。
在更优的技术方案中,所述待测模块采用程序仿真的模拟器。
在更优的技术方案中,所述模拟器包括仿真驱动、仿真配置文件和仿真配置工具,所述采用程序仿真的模拟器执行测试指令并生成基于CEN/XFS结构体的测试结果,实现过程为:
仿真驱动在接收到测试指令后,通过写配置文件通知仿真配置工具进行动作或改变设备状态显示;
仿真配置工具读取仿真配置文件的相关配置信息并对配置文件进行设置,且以动画的方式展示模拟器的状态变化,然后返回动作结果给仿真驱动;所述动作结果包括动作成功时的接口数据或者动作失败所对应的错误码;
仿真配置文件保存仿真配置工具返回给仿真驱动的动作结果或接口参数的返回数据、以及仿真驱动与仿真配置工具之间交互信息的配置项。
在更优的技术方案中,所述待测模块包括读卡器、密码键盘、凭条打印。
在更优的技术方案中,转换模块包括由执行命令、状态命令、事件这三类配置信息转换生成的配置文件,且金融自助设备的每个待测模块均有各自对应的配置文件;
每个配置文件均参照金融自助设备的CEN/XFS文件中的定义,包括以下信息:
第1部分:待测模块的类定义信息;
第2部分:执行命令的关键字和具体数值的对应关系,状态命令的关键字和具体数值的对应关系,事件的关键字和具体数字的对应关系;
第3部分:结构体信息,包含执行命令、状态命令和事件的结构体;在结构体中用整型表示该结构体是执行命令、状态命令还是事件;其中,每个结构体中的简单数据元素的关键字,按与CEN/XFS文档相同进行定义;结构体指针使用关键字定义;结构体中的非简单数据元素的关键字,在结构体配置信息中做配置;
第4部分:执行命令、状态命令的输入项和输出项,事件的结果说明项。
在更优的技术方案中,所述转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令,具体方法为:
步骤A1,输入基于JSON对象的测试指令,提取参数命令字、类型字段和JSON对象;
步骤A2,根据类型字段和命令字查找配置信息,如果配置信息无,表示结构体为NULL,不需要转换,转换结果成功,结构体指针为NULL,执行步骤A5;否则执行步骤A3,默认节点为父节点;
步骤A3:根据结构体配置信息、节点信息分配空间,并且根据配置信息中的结构体项的关键字查找JSON对象的对应关键字的值:如果不存在或者JSON对象类型错,则报错,执行步骤A5;如果存在且该子项为简单对象,执行步骤A4;如果存在且该子项为结构体指针,递归执行步骤A3,节点为子节点;执行完配置信息中的配置项,执行步骤A6;
步骤A4:将简单对象转换成CEN/XFS结构体中的一项:对于简单的数据类型根据配置信息中字段长度分配空间,然后把数据类型的值进行赋值转换;对于复杂的CEN/XFS结构体类型按以下方式进行处理:
两个0x00结尾的字符串,字符串都是可见字符使用JSON字符串数组来表示,0x00结尾的字符串是数组的一项,两个0x00结尾的字符串表示数组完成;
三个0x00结尾的字符串,字符串都是可见字符使用JSON二维字符串数组表示,0x00结尾的字符串组成数组的一项,两个0x00结尾的字符串一维数组完成,三个0x00结尾二维数组完成;
对于LPBYTE类型的,字符是不可见字符,提供一个扩展的字符串,把扩展的字符串中的两个字节压缩压缩成一个字节,完成JSON对象转换成LPBYTE;
对于一个结构体数组指针,提供JSON传递结构体数组,按照数组元素的个数,分配个数+1个指针数组空间,每个指针指向对应元素结构体转换的空间;最后一个指针内容指向空;
执行完该步骤,如果执行成功继续跳转到步骤A3,执行失败执行步骤A5;
步骤A5:释放已经分配的空间,执行结果失败,执行步骤A6;
步骤A6:输出转换的结果和转换后的结构体指针,得到基于CEN/XFS结构体的测试指令。
在更优的技术方案中,所述转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果,具体方法为:
步骤B1:输入基于CEN/XFS结构体的测试结果,提取参数命名字、类型字段和C语言结构体;
步骤B2:通过命令字和类型字段查找配置信息,如果配置信息无,表示结构体为NULL,不需要转换,转换结果成功,JSON对象为空对象,执行步骤B4;否则执行步骤B3;
步骤B3:根据配置信息描述的结构体,来完成CEN/XFS结构体跟JSON对象之间的转换,配置信息结构体由多个子结构组成,如果子结构体为简单对象,执行步骤B4完成转换;如果该子结构体为结构体指针,需要递归执行步骤B3,执行完成执行步骤B5;如果转换失败,则转换失败,执行步骤B5;
步骤B4:CEN/XFS结构体中的一项转换成JSON对象的值,如果简单的数据类型WORD、DWORD、LPSTR类型的转换直接转换即可;对于复杂的CEN/XFS类型按以下方式进行处理:
两个0x00结尾的字符串,字符串都是可见字符使用JSON字符串数组来表示,0x00结尾的字符串是数组的一项,两个0x00结尾的字符串表示数组完成;
三个0x00结尾的字符串,字符串都是可见字符使用JSON二维字符串数组表示,0x00结尾的字符串组成数组的一项,两个0x00结尾的字符串一维数组完成,三个0x00结尾二维数组完成;
对于LPBYTE类型的,需要先根据配置信息找到决定长度的字段,并获取到字段的值,这个数值就是要转换的LPBYTE的长度。由于LPBYTE指向的字符是不可见字符,JSON对象不能表示不可见字符,方法就是把一个字符扩展成两个字符,再把这些字符拼接成一个字符串,成为一个JSON字符串对象,即完成LPBYTE转换成JSON字符串对象;
对于一个结构体数组指针,如果数组的结构体指针不是空,那么就把指向结构体的指针转换成JSON的一个对象,在把这个JSON对象放入数组中。结构体指针为空,完成结构体数组指针JSON数组;
执行完该步骤,继续跳转到步骤B3;
步骤B5:输出转换的结果和转换后JSON对象。
本发明还提供一种设备,包括处理器和存储器;其中:所述存储器用于存储计算机指令;所述处理器用于执行所述存储器存储的计算机指令,具体执行上述任一方法所述技术方案。
本发明还提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现上述任一方法所述技术方案。
有益效果
本发明具有的技术效果为:
1、本发明可以将测试工具生成的基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令,适用于金融自助设备的模块SP服务调用,同时还可将模块SP服务返回的基于CEN/XFS结构体的测试结果,再转换为基于JSON对象的测试结果给测试工具,使测试工具可适用于Linux、Windows、Android等系统,相当于该测试工具可以跨系统调用SP设备服务,为提升SP设备服务的稳定性健壮性提供有效的途径。
2、对于CEN/XFS结构体中非标准的复杂结构类型,通过重定义数据类型关键字和配置文件的方法,来完成CEN/XFS结构体与JSON对象的转换。整个转换的过程都是通过对配置文件类型解析来完成。根据不同版本的CEN/XFS的结构体和不同应用自定义的结构体都存在个体性的差异,为了适配这些情况,只需要配置好配置文件,解析这些配置文件,就可以适配不同结构体之间的差异,很方便的适应不同版本CEN/XFS类和不同应用的需求。
3、采用程序仿真的模拟器,可以实现流程自动测试,从而代替手动测试,可以提升测试效率,同时有利益大家快速学习SP等。
4、采用程序仿真的模拟器,还可以支持各种SP设备的正常、异常功能的模拟,支持各种不常见介质的返回数据的模拟,完善测试场景。
附图说明
图1为现有技术中金融自助设备SP测试系统结构示意图;
图2为本发明所述跨系统SP自动测试系统结构示意图;
图3为本发明所述CEN/XFS结构体和JSON对象的相互转换实现方法三个模块之间的关系图;
图4为本发明所述配置文件生成过程图;
图5为本发明所述JSON对象转CEN/XFS结构体模块处理过程图;
图6为本发明所述CEN/XFS结构体转JSON对象处理过程图;
图7为本发明所述模拟器功能结构图;
图8为本发明所述CEN/XFS结构体和JSON对象相互转换的实施例图;
图9为本发明所述读卡器仿真配置工具实施例图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例以本发明的技术方案为依据开展,给出了详细的实施方式和具体的操作过程,对本发明的技术方案作进一步解释说明。
本实施例提供一种跨系统的金融自助设备SP自动测试方法,适用于采用WOSA标准或者类WOSA标准的金融自助设备。
在现有技术中,金融自助设备的SP测试系统如图1所示,包括:测试程序、SP服务和各硬件模块。其中,
测试程序用于通过调用SP服务的接口,实现对各硬件模块的功能接口测试;
SP服务包括管理器(Manager库)和模块SP服务。其中管理器指管理程序调度过程中的句柄、请求ID、消息分发、内存管理等管理控制层,负责实现SPI和API之间的转换,调用相应厂商定制的模块SP服务程序;
模块SP服务通过SP API接口收到的测试指令,完成设备具体操作并返回执行结果,例如读卡器SP完成对读卡器模块的功能封装,实现对读卡器的操作并返回执行结果。
为了实现跨系统的SP自动化测试,本发明选用基于脚本语言的SP测试工具,在现有的SP测试系统中增加转换模块和模拟器,如图2所示。转换模块用于CEN/XFS结构体和JSON对象之间相互转换,模拟器即采用程序仿真实现以用于模拟真实的硬件模块。各部分之间的关系如图2所示。网页如果需要直接调用CEN/XFS,通过脚本语言方便的参数来代替CEN/XFS API层对应命令的结构体(本文将CEN/XFS API层对应命令的结构体简称为CEN/XFS结构体)完成调用,并且把CEN/XFS SP服务返回的完成消息和事件转换成脚本语言可以识别的参数。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。CEN/XFS结构体和JSON对象相互转换模块,通过建立JSON对象和CEN/XFS中的C语言结构体的关系方式,确保网页通过JavaScript、Python等脚本语言能够访问SP服务。
具体地,本实施例提供的跨系统的金融自助设备SP自动测试方法,包括以下步骤:
步骤1,测试工具生成基于JSON对象的测试指令。
步骤2,转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令。
如图3所示,转换模块包括配置模块、JSON对象转CEN/XFS结构体模块、CEN/XFS结构体转JSON对象模块。相互转换的特殊性在于CEN/XFS结构体是复杂的C语言结构体,存在非简单类型的字段。例如双0x00字符结尾的字符串、三个0x00字符结尾的字符串等,这些字段长度由别的字段决定,0x00字符又是不可见字符,JSON对象不可以直接表示。对于JSON对象的数值型值,在转换成CEN/XFS结构体的时候,结构体对应字段占用的空间不同,存在转换成一个字节的WORD,两个字节的DWORD,和四个字节的LONG等多种可能。这些特殊的字段需要设计相应的方法才能实现JSON对象跟CEN/XFS结构体相互转换。各模块之间的关系如图3所示,各模块的功能描述如下:
配置模块:CEN/XFS协议硬件设备分IDC(读卡模块)、PIN(密码键盘)、SIU(指示灯或传感器)等类型,每类设备的执行命令、状态命令对应的结构体都是不一样的。因此,可通过配置模块把每类设备的执行命令、状态命令的输入参数、返回结果、事件(包括服务事件、用户事件、系统事件、执行事件)都做成配置,方便后续扩展协议。
JSON对象转CEN/XFS结构体模块:通过执行命令和获取状态的类型关键字,查找配置文件对应转换的结构体信息转换成CEN/XFS结构体。
CEN/XFS结构体转JSON对象模块:通过完成结果和事件的命令字,查找配置文件对应转换的结构体信息转换成JSON对象。
在执行JSON对象与CEN/XFS结构体相互转换之前,需要先通过配置模块将执行命令、状态命令、事件这三类配置信息转换成配置文件。其中,对金融自助设备的每类CEN/XFS设备,即本实施例中的每个待测模块,均要生成各自对应的配置文件;具体生成过程如图4所示。
其中,每类CEN/XFS设备的配置文件,所包含的信息,均参考CEN/XFS对该类设备的定义,主要包括以下4个部分:
第1部分:类型定义信息,例如打印机扫描仪类型就是1。
第2部分:执行命令的关键字和具体数值的对应关系,状态命令的关键字和具体数值的对应关系,事件关键字和具体数字的对应关系。
第3部分:结构体信息,包含执行命令、状态命令和事件的结构体。每个结构体中的简单数据元素定义的关键字和CEN/XFS中定义相同,例如:LPSTR、WORD、DWORD、USHORT等。结构体指针用关键字(lpstruct结构体名)来定义。非简单类型不能直接转换,需要在结构体配置信息中做配置,转换模块再根据配置信息转换。例如CEN/XFS结构体中双0x00字符结尾的字符串、三个0x00字符结尾的字符串,就需要用特殊的关键字区分。LPBYTE类型的数据是不可见字符,字段的长度由结构体的其他字段来决定,需要再配置信息配置决定长度字段的名称。
第4部分:按照执行命令、状态命令、事件的CEN/XFS文档中描述,这些配置需要有命令字(调用命令的数值例如101)、类型(区分执行命令、状态命令、事件)、结构体说明等。配置执行命令和状态命令的输入项、输出项,事件一般只需要一个结果说明项。如果对应输入项没有参数,可以不用在配置参数中配置。
配置模块根据以上配置信息,生成对应的配置文件,方便后续程序执行的过程中加载和调用。因此,转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令,如图5所示,具体方法为:
步骤A1,输入基于JSON对象的测试指令,提取参数命令字、命令类型和JSON对象;
步骤A2,根据命令字查找配置信息,如果配置信息无,表示结构体为NULL,不需要转换,转换结果成功,结构体指针为NULL,执行步骤A5;否则执行步骤A3,默认节点为父节点;因为存在结构体里面嵌套多层结构体的情况,方便内存分配和释放,需要增加节点信息;
步骤A3:根据结构体配置信息、节点信息分配空间(分配空间用CEN/XFS内存分配的提供的方法,父节点重新分配空间,子节点增加空间),并且根据配置信息中的结构体项的关键字查找JSON对象的对应关键字的值:如果不存在或者JSON对象类型错,则报错,执行步骤A5;如果存在且该子项为简单对象,执行步骤A4;如果存在且该子项为结构体指针,递归执行步骤A3,节点为子节点;执行完成执行步骤A6;
步骤A4:将简单对象转换成CEN/XFS结构体中的一项:对于简单的数据类型根据配置信息中字段长度分配空间,然后把数据类型的值进行赋值转换;对于复杂的CEN/XFS结构体类型按以下方式进行处理:
两个0x00结尾的字符串,字符串都是可见字符使用JSON字符串数组来表示,0x00结尾的字符串是数组的一项,两个0x00结尾的字符串表示数组完成;
三个0x00结尾的字符串,字符串都是可见字符使用JSON二维字符串数组表示,0x00结尾的字符串组成数组的一项,两个0x00结尾的字符串一维数组完成,三个0x00结尾二维数组完成;
对于LPBYTE类型的,字符是不可见字符,提供一个扩展的字符串,把扩展的字符串中的两个字节压缩压缩成一个字节,完成JSON对象转换成LPBYTE;
对于一个结构体数组指针,提供JSON传递结构体数组,按照数组元素的个数,分配(个数+1)个指针数组空间,每个指针指向对应元素结构体转换的空间;最后一个指针内容指向空;
执行完该步骤,继续跳转到步骤A3;
步骤A5:释放已经分配的空间,执行结果失败,执行步骤A6;
步骤A6:输出转换的结果和转换后的结构体指针,得到基于CEN/XFS结构体的测试指令。
步骤3,金融自助设备的SP服务接收基于CEN/XFS结构体的测试指令,并将其分配给测试指令对应的金融自助设备待测模块,由待测模块执行测试指令并生成基于CEN/XFS结构体的测试结果。
JSON对象转CEN/XFS结构体模块把JSON对象转换成CEN/XFS可以调用的CEN/XFS结构体,就可以提供给各CEN/XFS的API层调用,完成CEN/XFS的命令调用。
由于真实的硬件模块,在执行测试过程中,必须要人来参与测试过程的操作,比如读卡器读卡时要人手动插入卡片,输入密码时需要人手动按下键盘按键来输入密码等等。本实施例提出了采用程序仿真的模拟器来替代真实硬件模块,实现SP的自动化测试。
其中,所述模拟器包括仿真驱动、仿真配置文件和仿真配置工具,如图7所示。
具体地,仿真驱动主要实现真实设备驱动的所有接口,以动态链接库的形式(DLL或SO)提供。仿真驱动在接到SP指令经过简单的处理后,通过写配置文件通知仿真配置工具进行动作或改变设备状态显示;通过读取配置文件的相关配置信息,实现动作结果返回(包括成功时接口数据、失败时具体对应的错误码等)。
仿真配置文件主要用于保存相关动作的返回结果或接口参数的返回数据,以及模拟驱动与模拟设备之间交互信息的配置项。可以XML或ini等格式文件呈现,按照WOSA定义的设备类提供,如IDC_Virtual_Driver.xml。仿真配置文件的设计,根据实际需要可以有多个,例如可以设计一个接口仿真配置文件和一个模块能力仿真配置文件。仿真配置文件是仿真驱动与仿真配置工具之间数据交互的媒介。
仿真配置工具是在一个界面上,通过对配置文件设置,完成对仿真驱动中对应接口返回数据和状态的设置,并以动画的方式展示所实现模块的相应状态,例如设备状态、介质状态等。动画的设计让使用者能够更好的理解模块的功能和特性。为了支持Windows、Linux等操作系统,实现跨系统,采用Sokect通信机制,各模块按需定制相应的flash交互协议。
因此,本实施例采用程序仿真的模拟器执行测试指令并生成基于CEN/XFS结构体的测试结果,如图7所示,实现过程为:
仿真驱动在接收到测试指令后,通过写配置文件通知仿真配置工具进行动作或改变设备状态显示;
仿真配置工具读取仿真配置文件的相关配置信息并对配置文件进行设置,且以动画的方式展示模拟器的状态变化,然后返回动作结果给仿真驱动;所述动作结果包括动作成功时的接口数据或者动作失败所对应的错误码;
仿真配置文件保存仿真配置工具返回给仿真驱动的动作结果或接口参数的返回数据、以及仿真驱动与仿真配置工具之间交互信息的配置项。
实现SP自动测试时,可以通过SP测试工具来代替仿真配置工具对配置文件进行相关设置的方式,替代真实模块人工干预步骤,按照测试案例流程进行测试,达到自动测试SP的目的。
步骤4,转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果。
基于配置文件,所述转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果,如图所6示,具体方法为:
步骤B1:输入基于CEN/XFS结构体的测试结果,提取参数命名字、类型和C语言结构体;
步骤B2:通过命令字查找配置信息,如果配置信息无,表示结构体为NULL,不需要转换,转换结果成功,JSON对象为空对象,执行步骤B4;否则执行步骤B3;
步骤B3:根据配置信息中的结构体项的关键字为JSON对象的对应关键字的,对应结构体子项的值为简单对象,执行步骤B4完成转换;如果该子项为结构体指针,需要递归执行步骤B3,执行完成执行步骤B5;如果转换失败,则转换失败,执行步骤B5;
步骤B4:CEN/XFS结构体中的一项转换成JSON对象的值,如果简单的数据类型WORD、DWORD、LPSTR类型的转换直接转换即可;对于复杂的CEN/XFS类型按以下方式进行处理:
两个0x00结尾的字符串,字符串都是可见字符使用JSON字符串数组来表示,0x00结尾的字符串是数组的一项,两个0x00结尾的字符串表示数组完成;
三个0x00结尾的字符串,字符串都是可见字符使用JSON二维字符串数组表示,0x00结尾的字符串组成数组的一项,两个0x00结尾的字符串一维数组完成,三个0x00结尾二维数组完成;
对于LPBYTE类型的,需要先根据配置信息找到决定长度的字段,并获取到字段的值,这个数值就是要转换的LPBYTE的长度。由于LPBYTE指向的字符是不可见字符,JSON对象不能表示不可见字符,方法就是把一个字符扩展成两个字符,再把这些字符拼接成一个字符串,成为一个JSON字符串对象,即完成LPBYTE转换成JSON字符串对象;
对于一个结构体数组指针,如果数组的结构体指针不是空,那么就把指向结构体的指针转换成JSON的一个对象,在把这个JSON对象放入数组中。结构体指针为空,完成结构体数组指针JSON数组;
执行完该步骤,继续跳转到步骤B3;
步骤B5:输出转换的结果和转换后JSON对象。
步骤5,测试工具接收基于JSON对象的测试结果,并解析和显示测试结果。
本发明还提供一种设备,包括处理器和存储器;其中:所述存储器用于存储计算机指令;所述处理器用于执行所述存储器存储的计算机指令,具体执行上述实施例所述的方法。
本发明还提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现上述实施例所述的方法。
实施例一:
基于JavaScript网页或python开发的测试工具,支持Windows、Linux等多个操作系统,且页面,本发明方便JavaScript、Python等脚本语言访问基于WOSA或类WOSA协议的SP服务,从而开发基于JavaScript网页或python的SP测试工具。
如图8所示,基于脚本语言的SP测试工具,通过JSON对象转CEN/XFS结构体模块,将SP执行命令、状态命令JSON对象转换为对应C语言的CEN/XFS结构体,然后调用对应SP接口。SP程序执行对应的命令后,将输出结果的C语言结构体,通过C语言结构体转JSON对象模块转换成对应的JSON对象,返回给测试程序显示SP执行结果。
基于真实驱动的测试程序,在执行流程化测试时,如果需要人参与的步骤,可以通过弹框提示等方式,提醒测试人员进行相应场景模拟操作,工具仍然可以完成案例的自动执行及返回结果的判断,可达到半自动的效果。
实施例二:
本发明提供的模拟器,可以适用于对真实设备的模拟,在没有硬件模块的情况下,可以完成SP、中间件、应用等相关开发和联调测试工作,节省开发效率。下面以读卡器为例描述实施案例:
仿真驱动按照读卡器真实驱动库的接口实现各个功能,以动态链接库的形式(DLL或SO)实现。
仿真配置文件以XML文件实现,可以根据实际需要分类为多个XML实现。例如:接口功能的实现都通过接口仿真配置文件;而鉴于不同设备类型的能力集不一致,且为避免反复修改代码,故将能力集作为单独XML配置,设计能力仿真配置文件;为了屏蔽设备类型对同类设备仿真驱动的影响,将错误码映射关系导入能力集配置中,各模块按需配置。
仿真配置工具为了便于跨平台,采用Socket通信机制,各模块按需定制相应的flash协议,设计过程中所需的相关信息,如服务器端口号、flash文件路径等通过配置实现。例如读卡器类可以设计如下:
{“cmd”:”1”,“mode”:”内容”}—模式,显示当前模式以及自动进卡/卡拿走时间
{“cmd”:”2”,“text”:”内容”}—显示当前设备执行错误(作为保留)
{“cmd”:”3”,“text”:”00000”}—控制模块状态
第1位:设备状态,取值:0:正常;1:故障;2:掉线;
第2位:介质状态,取值:0:无介质;1:卡在卡口;2:卡在卡机内;3:卡在上电位;4:卡在卡机尾部;5:卡堵塞(卡口);
第3位:允许进卡指示灯,取值:0:不允许进卡;1:允许进卡;
第4位:上电状态指示灯,取值:0:未上电;1:上电;2:上电故障状态;
第5位:回收箱状态,取值:0:正常;1:满;
读卡器的仿真配置工具界面的设计可参考如图9所示,其他模块(例如凭条打印机、密码键盘、电子签名、摄像头等)的仿真方案类似。
以上实施例为本申请的优选实施例,本领域的普通技术人员还可以在此基础上进行各种变换或改进,在不脱离本申请总的构思的前提下,这些变换或改进都应当属于本申请要求保护的范围之内。
Claims (9)
1.一种跨系统的金融自助设备SP自动测试方法,其特征在于,包括以下步骤:
步骤1,测试工具生成基于JSON对象的测试指令;
步骤2,转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令;
步骤3,金融自助设备的SP服务接收基于CEN/XFS结构体的测试指令,并将其分配给测试指令对应的金融自助设备待测模块,由待测模块执行测试指令并生成基于CEN/XFS结构体的测试结果;
步骤4,转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果;
步骤5,测试工具接收基于JSON对象的测试结果,并解析和显示测试结果。
2.根据权利要求1所述的方法,其特征在于,所述待测模块采用程序仿真的模拟器。
3.根据权利要求2所述的方法,其特征在于,所述模拟器包括仿真驱动、仿真配置文件和仿真配置工具,所述采用程序仿真的模拟器执行测试指令并生成基于CEN/XFS结构体的测试结果,实现过程为:
仿真驱动在接收到测试指令后,通过写配置文件通知仿真配置工具进行动作或改变设备状态显示;
仿真配置工具读取仿真配置文件的相关配置信息并对配置文件进行设置,且以动画的方式展示模拟器的状态变化,然后返回动作结果给仿真驱动;所述动作结果包括动作成功时的接口数据或者动作失败所对应的错误码;
仿真配置文件保存仿真配置工具返回给仿真驱动的动作结果或接口参数的返回数据、以及仿真驱动与仿真配置工具之间交互信息的配置项。
4.根据权利要求1所述的方法,其特征在于,所述待测模块包括读卡器、密码键盘、凭条打印。
5.根据权利要求1所述的方法,其特征在于,转换模块包括由执行命令、状态命令、事件这三类配置信息转换生成的配置文件,且金融自助设备的每个待测模块均有各自对应的配置文件;
每个配置文件均参照金融自助设备的CEN/XFS文件中的定义,包括以下信息:
第1部分:待测模块的类定义信息;
第2部分:执行命令的关键字和具体数值的对应关系,状态命令的关键字和具体数值的对应关系,事件的关键字和具体数字的对应关系;
第3部分:结构体信息,包含执行命令、状态命令和事件的结构体;在结构体中用整型表示该结构体是执行命令、状态命令还是事件;其中,每个结构体中的简单数据元素的关键字,按与CEN/XFS文档相同进行定义;结构体指针使用关键字定义;结构体中的非简单数据元素的关键字,在结构体配置信息中做配置;
第4部分:执行命令、状态命令的输入项和输出项,事件的结果说明项。
6.根据权利要求5所述的方法,其特征在于,所述转换模块将基于JSON对象的测试指令转换为基于CEN/XFS结构体的测试指令,具体方法为:
步骤A1,输入基于JSON对象的测试指令,提取参数命令字、类型字段和JSON对象;
步骤A2,根据类型字段和命令字查找配置信息,如果配置信息无,表示结构体为NULL,不需要转换,转换结果成功,结构体指针为NULL,执行步骤A5;否则执行步骤A3,默认节点为父节点;
步骤A3:根据结构体配置信息、节点信息分配空间,并且根据配置信息中的结构体项的关键字查找JSON对象的对应关键字的值:如果不存在或者JSON对象类型错,则报错,执行步骤A5;如果存在且该子项为简单对象,执行步骤A4;如果存在且该子项为结构体指针,递归执行步骤A3,节点为子节点;执行完配置信息中的配置项,执行步骤A6;
步骤A4:将简单对象转换成CEN/XFS结构体中的一项:对于简单的数据类型根据配置信息中字段长度分配空间,然后把数据类型的值进行赋值转换;对于复杂的CEN/XFS结构体类型按以下方式进行处理:
两个0x00结尾的字符串,字符串都是可见字符使用JSON字符串数组来表示,0x00结尾的字符串是数组的一项,两个0x00结尾的字符串表示数组完成;
三个0x00结尾的字符串,字符串都是可见字符使用JSON二维字符串数组表示,0x00结尾的字符串组成数组的一项,两个0x00结尾的字符串一维数组完成,三个0x00结尾二维数组完成;
对于LPBYTE类型的,字符是不可见字符,提供一个扩展的字符串,把扩展的字符串中的两个字节压缩压缩成一个字节,完成JSON对象转换成LPBYTE;
对于一个结构体数组指针,提供JSON传递结构体数组,按照数组元素的个数,分配个数+1个指针数组空间,每个指针指向对应元素结构体转换的空间;最后一个指针内容指向空;
执行完该步骤,如果执行成功继续跳转到步骤A3,执行失败执行步骤A5;
步骤A5:释放已经分配的空间,执行结果失败,执行步骤A6;
步骤A6:输出转换的结果和转换后的结构体指针,得到基于CEN/XFS结构体的测试指令。
7.根据权利要求1所述的方法,其特征在于,所述转换模块将基于CEN/XFS结构体的测试结果转换为基于JSON对象的测试结果,具体方法为:
步骤B1:输入基于CEN/XFS结构体的测试结果,提取参数命名字、类型字段和C语言结构体;
步骤B2:通过命令字和类型字段查找配置信息,如果配置信息无,表示结构体为NULL,不需要转换,转换结果成功,JSON对象为空对象,执行步骤B4;否则执行步骤B3;
步骤B3:根据配置信息描述的结构体,来完成CEN/XFS结构体跟JSON对象之间的转换,配置信息结构体由多个子结构组成,如果子结构体为简单对象,执行步骤B4完成转换;如果该子结构体为结构体指针,需要递归执行步骤B3,执行完成执行步骤B5;如果转换失败,则转换失败,执行步骤B5;
步骤B4:CEN/XFS结构体中的一项转换成JSON对象的值,如果简单的数据类型WORD、DWORD、LPSTR类型的转换直接转换即可;对于复杂的CEN/XFS类型按以下方式进行处理:
两个0x00结尾的字符串,字符串都是可见字符使用JSON字符串数组来表示,0x00结尾的字符串是数组的一项,两个0x00结尾的字符串表示数组完成;
三个0x00结尾的字符串,字符串都是可见字符使用JSON二维字符串数组表示,0x00结尾的字符串组成数组的一项,两个0x00结尾的字符串一维数组完成,三个0x00结尾二维数组完成;
对于LPBYTE类型的,需要先根据配置信息找到决定长度的字段,并获取到字段的值,这个数值就是要转换的LPBYTE的长度。由于LPBYTE指向的字符是不可见字符,JSON对象不能表示不可见字符,方法就是把一个字符扩展成两个字符,再把这些字符拼接成一个字符串,成为一个JSON字符串对象,即完成LPBYTE转换成JSON字符串对象;
对于一个结构体数组指针,如果数组的结构体指针不是空,那么就把指向结构体的指针转换成JSON的一个对象,在把这个JSON对象放入数组中。结构体指针为空,完成结构体数组指针JSON数组;
执行完该步骤,继续跳转到步骤B3;
步骤B5:输出转换的结果和转换后JSON对象。
8.一种设备,其特征在于,包括处理器和存储器;其中:所述存储器用于存储计算机指令;所述处理器用于执行所述存储器存储的计算机指令,具体执行如权利要求1-7任一所述的方法。
9.一种计算机存储介质,其特征在于,用于存储程序,所述程序被执行时,用于实现如权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010594849.1A CN111752840B (zh) | 2020-06-28 | 2020-06-28 | 一种跨系统的金融自助设备sp自动测试方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010594849.1A CN111752840B (zh) | 2020-06-28 | 2020-06-28 | 一种跨系统的金融自助设备sp自动测试方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752840A true CN111752840A (zh) | 2020-10-09 |
CN111752840B CN111752840B (zh) | 2023-08-08 |
Family
ID=72677370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010594849.1A Active CN111752840B (zh) | 2020-06-28 | 2020-06-28 | 一种跨系统的金融自助设备sp自动测试方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752840B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968770A (zh) * | 2010-11-01 | 2011-02-09 | 北京航空航天大学 | 一种可复用的嵌入式软件测试开发方法和系统 |
CN103716127A (zh) * | 2013-12-02 | 2014-04-09 | 北京星河亮点技术股份有限公司 | 一种基于ttcn-3的压缩编解码的方法和系统 |
CN105068854A (zh) * | 2015-08-07 | 2015-11-18 | 杭州古北电子科技有限公司 | 一种使用相同规则实现对不同产品的控制的方法 |
WO2016086655A1 (zh) * | 2014-12-03 | 2016-06-09 | 广州广电运通金融电子股份有限公司 | 一种基于linux系统的CEN/XFS标准的架构以及实现方法 |
CN106371962A (zh) * | 2016-08-30 | 2017-02-01 | 广州广电运通金融电子股份有限公司 | 一种跨平台的驱动测试方法、装置及系统 |
CN107493266A (zh) * | 2017-07-26 | 2017-12-19 | 广州广电运通金融电子股份有限公司 | 嵌入式自助终端的通信系统、方法及装置 |
CN109299003A (zh) * | 2018-08-31 | 2019-02-01 | 苏州洞察云信息技术有限公司 | 一种面向复杂软件的全自动测试用例驱动生成系统 |
US20190102389A1 (en) * | 2017-10-04 | 2019-04-04 | Dell Products Lp | Storing and processing json documents in a sql database table |
CN109614329A (zh) * | 2018-12-06 | 2019-04-12 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于接口控制文件的软件测试用例辅助设计方法 |
-
2020
- 2020-06-28 CN CN202010594849.1A patent/CN111752840B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968770A (zh) * | 2010-11-01 | 2011-02-09 | 北京航空航天大学 | 一种可复用的嵌入式软件测试开发方法和系统 |
CN103716127A (zh) * | 2013-12-02 | 2014-04-09 | 北京星河亮点技术股份有限公司 | 一种基于ttcn-3的压缩编解码的方法和系统 |
WO2016086655A1 (zh) * | 2014-12-03 | 2016-06-09 | 广州广电运通金融电子股份有限公司 | 一种基于linux系统的CEN/XFS标准的架构以及实现方法 |
CN105068854A (zh) * | 2015-08-07 | 2015-11-18 | 杭州古北电子科技有限公司 | 一种使用相同规则实现对不同产品的控制的方法 |
CN106371962A (zh) * | 2016-08-30 | 2017-02-01 | 广州广电运通金融电子股份有限公司 | 一种跨平台的驱动测试方法、装置及系统 |
CN107493266A (zh) * | 2017-07-26 | 2017-12-19 | 广州广电运通金融电子股份有限公司 | 嵌入式自助终端的通信系统、方法及装置 |
US20190102389A1 (en) * | 2017-10-04 | 2019-04-04 | Dell Products Lp | Storing and processing json documents in a sql database table |
CN109299003A (zh) * | 2018-08-31 | 2019-02-01 | 苏州洞察云信息技术有限公司 | 一种面向复杂软件的全自动测试用例驱动生成系统 |
CN109614329A (zh) * | 2018-12-06 | 2019-04-12 | 中国航空工业集团公司洛阳电光设备研究所 | 一种基于接口控制文件的软件测试用例辅助设计方法 |
Non-Patent Citations (2)
Title |
---|
程君: "基于Lua的移动互联网中间件系统的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 01 * |
黑色幽默2018: "C/C++由字符串转JSON/JSON转字符串/数组解析/数组添加", Retrieved from the Internet <URL:https://www.cnblogs.com/blackhumour2018/p/9467232.html> * |
Also Published As
Publication number | Publication date |
---|---|
CN111752840B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106919509B (zh) | 一种客户端生成方法、装置及电子设备 | |
US7334219B2 (en) | Method and system for object level software testing | |
US9189377B1 (en) | Automation testing using descriptive maps | |
US20120311467A1 (en) | Computer-implemented method, system and computer program product for displaying a user interface component | |
US20080209405A1 (en) | Distributed debugging for a visual programming language | |
CN111176629A (zh) | 一种应用开发的方法和装置 | |
CN110727429A (zh) | 一种前端页面的生成方法、装置及设备 | |
CN111475390A (zh) | 日志采集系统部署方法、装置、设备及存储介质 | |
CN107391119A (zh) | 一种横竖屏实现方法及装置 | |
CN107748715B (zh) | 基于Unity的纹理贴图配置信息检测方法及其系统 | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN113127108A (zh) | 业务请求的处理方法及装置、存储介质以及电子设备 | |
CN111797020A (zh) | 基于动态字节码的mock数据方法及装置 | |
CN113821565A (zh) | 一种多数据源同步数据的方法 | |
CN112667219A (zh) | 代码生成方法及装置、设备、计算机可读存储介质 | |
KR20090000199A (ko) | 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는컴퓨터로 읽을 수 있는 기록 매체 | |
CN111752840A (zh) | 一种跨系统的金融自助设备sp自动测试方法、设备及介质 | |
CN111061466A (zh) | 行为控制脚本语言的自动化转化方法、系统、终端及介质 | |
CN111831277B (zh) | 虚拟数据生成方法、系统、设备及计算机可读存储介质 | |
CN114679491A (zh) | 微前端服务应用方法、装置、存储介质及电子设备 | |
CN112100187A (zh) | 一种基于VueJS的学生学习数据存储方法及装置 | |
CN113971024B (zh) | 接口管理方法、装置、电子设备以及可读存储介质 | |
CN111124913B (zh) | 数据模板的生成方法、数据模板的生成装置及存储介质 | |
CN116594960B (zh) | 描述性文件格式转换方法、装置、计算机设备及存储介质 | |
CN115705272A (zh) | 一种页面测试的方法、相关装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |