CN111949543A - 基于分布式平台的测试方法、装置、电子设备及存储介质 - Google Patents
基于分布式平台的测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111949543A CN111949543A CN202010822505.1A CN202010822505A CN111949543A CN 111949543 A CN111949543 A CN 111949543A CN 202010822505 A CN202010822505 A CN 202010822505A CN 111949543 A CN111949543 A CN 111949543A
- Authority
- CN
- China
- Prior art keywords
- test
- attribute
- class
- output
- input
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于大数据技术领域,本发明提供了一种基于分布式平台的测试方法、装置、电子设备及存储介质,基于分布式平台的测试方法包括:获取用户的测试请求;根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。本发明提供的基于分布式平台的测试方法及装置,可以在分布式平台的测试过程中,减少测试人员开发编码的工作量,最大化地实现自动化测试的目的。
Description
技术领域
本发明涉及计算机技术领域,尤其是涉及软件测试技术领域,具体涉及一种基于分布式平台的测试方法、装置、电子设备及存储介质
背景技术
传统的分布式平台服务最简单直接的方法是使用网页调用的方式实现,该方法的优点是简单、直接,快速测试服务的功能,然而却无法集成各种测试方法,并无法运用断言等测试技巧进行精细化测试。所以该方法一般是开发人员自测、调试程序时使用,不适用于专业的测试人员进行集成测试。
目前,TESTNG是业内专业的测试人员普遍使用进行分布式平台服务测试的测试工具,该工具支持使用编程的方式实现服务调用,输入/输出打印,测试断言判断以及各种函数使用,大大地满足了测试人员进行大型集成测试的需求。然而,该工具是一个通用的工具,测试人员的编程能力大大决定了测试案例脚本的质量。在大型的IT企业中,由于测试人员的技术水平高低不均,编写的测试案例脚本存在质量参差不齐、风格各异的情况。而且测试人员如果需要编写大量的断言为后面的自动化测试做准备时,需要编写大量的代码,测试效率也比较低。服务运行的结果只在控制台上显示,需要把各个输出值分拆检查,不直观,给测试人员造成困扰和增加检查工作量。
发明内容
本发明属于大数据技术领域,针对现有技术中的问题,本发明提供的基于分布式平台的测试方法及装置,可以在分布式平台的测试过程中,减少测试人员开发编码的工作量,最大化地实现自动化测试的目的。
为解决上述技术问题,本发明提供以下技术方案:
第一方面,本发明提供一种基于分布式平台的测试方法,包括:
获取用户的测试请求;
根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
一实施例中,所述根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性包括:
利用JAVA中的暴力反射方法,根据框架服务类型获取所述输入类属性以及输出类属性;
利用字段属性递归方法,根据所述输入类属性以及输出类属性获取输入类子类信息、输出类子类信息以及对象类型属性的字段信息。
一实施例中,所述利用JAVA的输出输入流方法,根据测试请求、输入类属性、输出类属性以及测试脚本模板生成测试脚本,包括:
根据所述测试请求获取数据源链路路径;
利用HSSF方法,根据所述数据源链路路径确定测试脚本模板;
根据所述输入类属性以及输出类属性、输入类子类信息、输出类子类信息以及对象类型属性的字段信息生成所述测试脚本。
一实施例中,所述测试请求包括:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名。
一实施例中,基于分布式平台的测试方法还包括:
对所述测试请求进行切割字符串操作,以获取全量文件名;
利用JAVA中的反射方法,校验测试请求中的文件名是否合法。
第二方面,本发明提供一种基于分布式平台的测试装置,包括:
测试请求获取单元,用于获取用户的测试请求;
属性获取单元,用于根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
测试脚本生成单元,用于利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
一实施例中,所述属性获取单元包括:
属性获取模块,用于利用JAVA中的暴力反射方法,根据框架服务类型获取所述输入类属性以及输出类属性;
子类信息获取模块,用于利用字段属性递归方法,根据所述输入类属性以及输出类属性获取输入类子类信息、输出类子类信息以及对象类型属性的字段信息。
一实施例中,所述测试脚本生成单元包括:
路径获取模块,用于根据所述测试请求获取数据源链路路径;
模板确定模块,用于利用HSSF方法,根据所述数据源链路路径确定测试脚本模板;
测试脚本生成模块,用于根据所述输入类属性以及输出类属性、输入类子类信息、输出类子类信息以及对象类型属性的字段信息生成所述测试脚本;
所述的基于分布式平台的测试装置还包括:
文件名获取单元40,用于对所述测试请求进行切割字符串操作,以获取全量文件名;
文件名校验单元50,用于利用JAVA中的反射方法,校验测试请求中的文件名是否合法;
所述测试请求包括:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现基于分布式平台的测试方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现基于分布式平台的测试方法的步骤。
从上述描述可知,本发明实施例提供的基于分布式平台的测试方法及装置,首先获取用户的测试请求;接着,根据框架服务类型获取测试请求中的输入类属性以及输出类属性;最后利用JAVA的输出输入流方法,根据测试请求、输入类属性、输出类属性以及测试脚本模板生成测试脚本。本发明可提供一种使用简单轻便,且能自动生成风格统一测试代码的方法。通过使用该测试方法,统一测试人员的测试案例风格,减少测试人员开发编码的工作量,让其更多的精力集中在案例设计和案例完善上。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种基于分布式平台的测试系统的第一种结构示意图;
图2为本申请实施例的一种基于分布式平台的测试系统的第二种结构示意图;
图3为本发明的实施例中基于分布式平台的测试方法流程示意图一;
图4为本发明的实施例中步骤200的流程示意图;
图5为本发明的实施例中步骤300的流程示意图;
图6为本发明的实施例中基于分布式平台的测试方法流程示意图二;
图7为本发明的具体应用实例中基于分布式平台的测试方法的流程示意图;
图8为本发明的具体应用实例中6要素结构示意图;
图9为本发明的具体应用实例中测试脚本模板示意图;
图10为本发明的具体应用实例中测试脚本结构示意图;
图11为本发明的具体应用实例中测运行平台服务测试脚本流程图;
图12为本发明的具体应用实例中测试脚本输入页示意图;
图13为本发明的具体应用实例中测试脚本输出页示意图;
图14为本发明的具体应用实例中数据准备以及数据断言方法示意图;
图15为本发明的具体应用实例中测试结果示意图;
图16为本发明的具体应用实例中测查询条件以及预期值页面示意图;
图17为本发明的具体应用实例中断言结果示意图;
图18为本发明的具体应用实例中测试结果存储示意图;
图19为本发明的具体应用实例中多案例执行功能以及组合测试场景示意图
图20为本发明的具体应用实例中双写功能使用示意图;
图21为本发明的具体应用实例中双写功能运行结果示意图;
图22为本发明的具体应用实例中核对功能使用示意图;
图23为本发明的具体应用实例中核对功能运行结果示意图;
图24为本发明的实施例中基于分布式平台的测试装置的结构框图一;
图25为本发明的实施例中属性获取单元的结构框图;
图26为本发明的实施例中测试脚本生成单元的结构框图;
图27为本发明的实施例中基于分布式平台的测试装置的结构框图二;
图28为本发明的实施例中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供一种基于分布式平台的测试系统,参见图1,该系统可以为一种服务器A1,该服务器A1可以与多个测试请求数据接收端B1通信连接,服务器A1还可以与多个数据库分别通信连接,或者如图2所示,这些数据库也可以之间设置在服务器A1中。其中,测试请求数据接收端B1用于接收客户的测试请求数据。服务器A1在收取测试请求数据之后,对该测试请求数据发送至对应的子系统,并对多个该子系统进行测试,并将评价结果通过客户端C1显示给运维人员。
可以理解的是,客户端C1可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,进行基于分布式平台的测试的部分可以在如上述内容的服务器A1侧执行,即,如图1或图2所示的架构,也可以所有的操作都在客户端C1设备中完成。具体可以根据客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在客户端设备中完成,客户端设备还可以包括处理器,用于进行对测试结果的处理等操作。
上述的客户端C1设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与服务器的数据传输。服务器可以包括基于分布式平台的测试一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与基于分布式平台的测试服务器有通信链接的第三方服务器平台的服务器。服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
服务器与客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,网络协议例如还可以包括在上述协议之上使用的RPC协议(RemoteProcedure Call Protocol,远程过程调用协议)、REST协议(Representational StateTransfer,表述性状态转移协议)等。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明的实施例提供一种基于分布式平台的测试方法的具体实施方式,参见图3,该方法具体包括如下内容:
步骤100:获取用户的测试请求。
具体地,由用户填写测试请求的“六要素”,即:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名,具体地:案例类名称:明确指定生成的测试脚本所在的路径目录。输入类全类路径名:待测试服务的输入对象全路径。输出类全类路径名:待测试服务的输出对象全路径。服务类型:支持ATS和ACS服务测试。服务方法名:带测试的服务可能存在多个方法,如果不填写,默认调用第一个方法;如果填写了,则脚本会调用指定的方法。
步骤200:根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性。
优选地,根据框架服务类型,处理测试请求数据并校验测试请求数据,并通过JAVA暴力反射获取INPUT和OUTPUT类的属性信息。
步骤300:利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
通过JAVA的输出输入流技术,根据测试请求、输入类属性、输出类属性以及测试脚本模板创建ATS/ACS服务执行的java脚本,其中可以用到BufferedWriter、OutputStreamWriter、FileOutputStream等工作流。
从上述描述可知,本发明实施例可提供一种使用简单轻便,且能自动生成风格统一测试代码的方法。通过使用该测试方法,统一测试人员的测试案例风格,减少测试人员开发编码的工作量,让其更多的精力集中在案例设计和案例完善上。
一实施例中,参见图4,步骤200进一步包括:
步骤201:利用JAVA中的暴力反射方法,根据框架服务类型获取所述输入类属性以及输出类属性。
步骤201中的暴力反射指示将类的各个组成部分封装为其他对象,进一步地,如果成员变量是私有的,那么getField方法将获取不到该变量,这时需要方法getDeclaredField方法获取,但是获取了该变量也不能取出指定对象对应的变量值,这时需要设置标志.setAccessible(true);这样就能获得对象的变量值了。这个过程是暴力反射。可以理解的是,其有益效果在于:在程序的运行过程中,操作这些对象。另外可以解耦。降低程序的耦合性,提高程序的可扩展性。反射里的Constructor,Field,Method三个类都有一个getDeclaredxxx方法,可以不受权限控制的获取类的构造函数、字段以及方法,但如果想要私有构造函数创建对象,字段赋值,方法调用的话,会自动的访问类的isAccessable,默认的是false,所以想访问类中的私有成员的时候,需要调用setAccessable方法,将其改为true,以对类中的私有成员进行操作。
步骤202:利用字段属性递归方法,根据所述输入类属性以及输出类属性获取输入类子类信息、输出类子类信息以及对象类型属性的字段信息。
优选地,根据DTX框架服务类型(ATS或ACS),处理测试请求数据并校验测试请求数据,并通过JAVA暴力反射获取INPUT和OUTPUT类的属性信息以及注解信息,再根据字段属性递归获取INPUT和OUTPUT类子类的信息,以及对象类型属性的字段信息,并存放到MAP对象。
一实施例中,参见图5,步骤300进一步包括:
步骤301:根据所述测试请求获取数据源链路路径;
步骤302:利用HSSF方法,根据所述数据源链路路径确定测试脚本模板;
步骤303:根据所述输入类属性以及输出类属性、输入类子类信息、输出类子类信息以及对象类型属性的字段信息生成所述测试脚本。
在步骤301至步骤303中,通过测试请求中的Document类读取文件获取数据源链接路径;通过springbean类获取java对象并解析对比方法名是否正确并校验;接着,通过Apache POI技术,使用HSSF结构方法读写档案,生成ATS/ACS的测试脚本模板。
一实施例中,所述测试请求包括:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名。
一实施例中,参见图6,基于分布式平台的测试方法还包括:
步骤400:对所述测试请求进行切割字符串操作,以获取全量文件名;
步骤500:利用JAVA中的反射方法,校验测试请求中的文件名是否合法。
步骤400以及步骤500在实施时,首先通过切割字符串获取全量的文件名,通过JAVA反射机制检查工程中java文件是否存在并校验上送的文件名是否合法,如果正确则进入步骤200,否则报错退出。
从上述描述可知,本发明实施例提供了一种简单轻便,能自动生成风格统一测试代码的方法。通过该测试方法,可统一测试人员的测试案例风格,减少测试人员开发编码的工作量,让其更多的精力集中在案例设计和案例完善上。同时,测试人员的测试案例设计变得可视化,测试人员和开发设计人员能通过测试脚本共同研究测试设计是否完备。测试结果可视化,方便开发人员排查。后续把完备的测试案例脚本部署到服务器中自动运行,从而实现自动化测试的目的,大大降低手工测试的工作量。
为进一步地说明本方案,本发明基于TestNG测试工具,提供基于分布式平台的测试方法的具体应用实例,参见图7,具体包括如下内容。
步骤S1:校验用户所需输入的必要信息。
具体地,“生成脚本程序:NewAPITestCase4Module.java”校验用户填写的6要素,通过切割字符串获取全量的文件名,通过JAVA反射机制检查工程中java文件是否存在并校验上送的文件名是否合法,如果正确则进入步骤S2,否则报错并退出。
其中6要素如图8所示:
1.案例类名称:明确指定生成的测试脚本所在的路径目录。如:"com.icbc.ifis.test.services.功能测试.个人理财._05申购.个人私银理财大额购买记录审批服务ATSFnceMaxPurchase.ATSFnceMaxPurchase_approveWithMainTx"。
2.输入类全类路径名:待测试服务的输入对象全路径。如:"com.icbc.ifis.appasm.io.market.ATSASMFnceMaxPurchaseInput"。
3.输出类全类路径名:待测试服务的输出对象全路径。如:"com.icbc.ifis.appasm.io.market.ATSASMFnceMaxPurchaseOutput"。
4.服务类型:支持ATS和ACS服务测试。
5.服务方法名:带测试的服务可能存在多个方法,如果不填写,默认调用第一个方法;如果填写了,则脚本会调用指定的方法。
6.服务名:该服务名必须与配置文件中去掉“Test”的服务名一致,以便生成的测试脚本运行时能调用到该服务。
步骤S2:处理请求数据并校验请求数据。
具体地,根据DTX框架服务类型(ATS或ACS),处理请求数据并校验请求数据,并通过JAVA暴力反射获取INPUT和OUTPUT类的属性信息以及注解信息,再根据字段属性递归获取INPUT和OUTPUT类子类的信息,以及对象类型属性的字段信息,存放到MAP对象。
步骤S3:通过Apache POI操作Microsoft Excel,生成ATS/ACS的测试脚本模板Excel。
步骤S3在实施时,具体为:通过Document类读取文件获取数据源链接路径;通过springbean获取Simulate.src.Main.resources.META-INF.dubbo.consumer.xml的java对象并解析对比方法名是否正确并校验;通过Apache POI技术,使用HSSF结构方法读写Microsoft Excel档案,生成ATS/ACS的测试脚本模板Excel,如图9所示。案例模板中会自动生成两个测试案例执行页(一般的测试思路是:第一页运行交易成功的案例,第二页允许交易失败的案例;测试人员还可以根据具体的测试需求增减测试案例执行页)。测试案例执行页各列功能如下:
A.案例说明:作为案例标识,要求每行的案例名称不能重复,从而作为测试人员查看测试案例运行结果的依据。
B.是否执行案例:当该列不填或为1时,该案例将被执行;当该列填0时,该案例将不被执行。
C.数据准备:在执行案例调用服务前,可以对数据库进行有需要的查询或更新操作,以便清理数据或者查看交易前后的数据变化。
D.自定义变量:根据测试需要定义各种测试过程中需要用到的变量。
E.输入赋值:填写调用服务需要的各种输入参数。
F.服务名:调用服务名称,以便调用不同的服务,构成完整的测试场景。
G.方法名:调用服务的方法名称。当一个服务存在多个方法时,能精准定位调用到具体的方法。
H.断言:测试脚本运行后,根据断言规则,把输出结果与预期值进行比较判断,把数据库数据与预期值进行比较判断。通过则标为绿色,不通过则标为红色。
I.双写:由于技术改造,服务执行时会把同样的数据写入不同的数据库,该功能主要是比对写入不同的数据库的数据是否一致。
J.数据恢复:在执行案例调用服务后,可以对数据库进行有需要的查询或更新操作,以便下一个案例能顺利执行。
步骤S4:通过JAVA的输入输出流技术生成ATS/ACS服务执行的JAVA脚本。
通过JAVA的输出输入流技术,创建ATS/ACS服务执行的java脚本,其中用到BufferedWriter、OutputStreamWriter、FileOutputStream等工作流。本发明生成的测试脚本结构图如图10所示。其中,XXXX.java为可运行的测试脚本代码;XXXX.xls则为功能强大的测试案例模板,工具的绝大部分功能均在该Excel表格中实现。
在步骤S1至步骤S4所生成测试脚本的基础上,本具体应用实例还提供一种利用该测试脚本对于分布式平台进行测试的方法,具体包括以下内容,参见图11。
步骤S1000:定义部分案例需要的全局变量并初始化,通过Apache POI读取测试案例执行页数据并存得到MAP对象DATEBEAN中。
如图12所示,在输入页,输入数据以列表的方式,方便测试人员输入。其中,输入值可以是固定的数值,也可以是用户自定义变量(使用“{}”标识),如“{地区号}”,也可以是工具自带的一些方便用户使用的函数,如“#{事件单号}”。如果涉及多个服务调用,输入页可以多个,分别在后面加上序号标识,如:输入1。如图13所示,在输出页,输出结果的预期值以列表的方式,方便测试人员输入。其中,输出预期值可以是固定的数值,也可以是用户自定义变量。如果涉及多个服务调用,输出页可以多个,分别在后面加上序号标识,如:输出1。
步骤S2000:对数据进行断言以及预处理。
具体地,进行数据准备并初始化断言对象,见parseTestMethodSheet()方法,将所有页面数据放入dataArray中方便提取,对数据准备及断言数据预处理,如图14所示。数据准备是为了在服务执行前,对数据库的数据进行有必要的调整或清理,以便服务能被顺利执行。如:平台表XXX.更新1,能根据具体的查询条件,更新对应的数据库记录的具体值。数据准备还可以在服务调用前进行有必要的数据查询,以便与服务调用后的数据进行比较,如:一个购买理财产品的服务,需要比对服务调用前后,客户理财份额是否有增加。
步骤S3000:根据数据准备请求的类型(查询、更新、删除)和数据库类型(Mysql、DB2)进行数据解释,并拼接SQL进行对应的数据库操作,最后查询出数据库数据存入datebean中。
步骤S4000:拼接处理SQL判断处理结果并将结果存入变色对象中,通过ApachePOI记录到脚本运行结果Excel。
如图15所示,执行成功的SQL语句被标注为绿色,执行失败的SQL语句被标注为黄色。
步骤S5000:把dataArray中的部分数据同步到Input或者请求对象中,从Spring中获取请求对象并请求服务上送数据,服务返回结果存放在outputMap,通过Apache POI记录到脚本运行结果Excel中。
如图15所示,如果输出达到预期值被标注为绿色,否则输出被标注为红色。
步骤S6000:使用Apache POI读取断言数据,程序进行断言解释,并通过JDBC访问数据库,查询,删除,变更数据库数据,将判断结果存入变色对象中,通过Apache POI记录到脚本运行结果Excel。
具体地,如图16所示,测试人员在数据库表页中填写查询条件和预期值。工具将使用Apache POI读取断言数据并对断言进行解释,通过JDBC访问数据库,查询,删除,变更数据库数据,将判断结果存入变色对象中,通过Apache POI记录到脚本运行结果Excel,如图17所示,断言通过的表字段将被标注为绿色,断言通过的表字段将被标注为红色。
步骤S7000:使用Apache POI读取数据恢复数据,程序进行解释。
程序进行解释之后,并通过JDBC访问数据库,查询,删除,变更数据库数据,将运行结果存入变色对象中,通过Apache POI记录到脚本运行结果Excel,如图18所示。
本具体应用实例所提供的测试脚本除了实现上面基本主体功能以外,还提供以下高级测试功能,以便支持更复杂、更大型的集成测试需要。
图19为多案例执行功能以及组合测试场景示意图。工具会根据案例说明顺序执行。当多个案例的“是否执行案例”为1时,将有多个案例被顺序执行。如图19所示,有4个案例被执行,其中每两个案例构成一个测试场景。测试场景1:单命中地区网点-网银/手机银行-卡-非实时:认购-大额审批通过,该场景会先调用理财购买服务,进行大额理财购买,然后再调用大额审批服务,做审批通过处理。测试场景2:单命中地区网点-网银/手机银行-卡-非实时:申购-大额审批不通过,该场景会先调用理财购买服务,进行大额理财购买,然后再调用大额审批服务,做审批不通过处理。而作为审批服务调用的依据则是购买服务成功后输出的申请单编号,审批服务根据不同的申请单号进行不同的审批处理。
图20以及图21为双写功能使用示意图。图20所示,在案例sheet页的“服务名1”里填写“双写”,这样就不用调用服务,然后在双写的单元格里填写“双写1.平台表1表名.查询条件1.平台表表名.查询条件2.预期值1”。需要比对的字段才填入,不用比对的字段,可以删除,如果保留在表里的字段,都会进行比对,值一致则标绿,否则标红,运行结果如图21所示。
图22以及图23数据核对功能使用示意图。使用场景:相同一组测试脚本案例,所有测试数据都相同,只是分支开关不同(如0-主机,1-双写以主机结果为准,2-双写以平台结果为准,3-平台),用第一个案例的输出通讯区,作为后续案例的断言预期值,如图22所示。如果核对结果一致将被标注为绿色,否则将被标注为红色,如图23所示。
本发明具体应用实例,提供了一种在不影响TestNG使用的基础上,可以应用于分布式平台的测试方法,该方法可以大大减少测试人员的工作量,同时支持测试人员进行大规模多案例集成测试和自动化测试,极大提高测试效率。具体地。该方法能根据服务代码,自动生成统一风格的测试脚本,大大降低对测试人员编码能力的要求。输入/输出均采用EXCEL表格的方式进行,填写和展示清晰明了。工具配套提供各种便捷的函数和断言模板,测试人员可以通过填写EXCEL的方式进行使用,方便快捷,大大减少编码的代码量。该工具还支持EXCEL填写数据准备和数据恢复数据,为自动化测试做好准备。工具最大的优点是支持多案例执行,测试人员可以充分运用等价类法、场景法等测试方法,编写大量的测试案例,工具将按照编写顺序依次执行。同时,工具支持前面的案例的输出作为后面案例的输入,以及核对多个案例的输出是否一致等强大的功能,大大减轻测试人员进行大规模集成测试的负担。
基于同一发明构思,本申请实施例还提供了基于分布式平台的测试装置,可以用于实现上述实施例所描述的方法,如下面的实施例。由于基于分布式平台的测试装置解决问题的原理与基于分布式平台的测试方法相似,因此基于分布式平台的测试装置的实施可以参见基于分布式平台的测试方法实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本发明的实施例提供一种能够实现基于分布式平台的测试方法的基于分布式平台的测试装置的具体实施方式,参见图24,基于分布式平台的测试装置具体包括如下内容:
测试请求获取单元10,用于获取用户的测试请求;
属性获取单元20,用于根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
测试脚本生成单元30,用于利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
一实施例中,参见图25,所述属性获取单元20包括:
属性获取模块201,用于利用JAVA中的暴力反射方法,根据框架服务类型获取所述输入类属性以及输出类属性;
子类信息获取模块202,用于利用字段属性递归方法,根据所述输入类属性以及输出类属性获取输入类子类信息、输出类子类信息以及对象类型属性的字段信息。
一实施例中,参见图26,所述测试脚本生成单元30包括:
路径获取模块301,用于根据所述测试请求获取数据源链路路径;
模板确定模块302,用于利用HSSF方法,根据所述数据源链路路径确定测试脚本模板;
测试脚本生成模块303,用于根据所述输入类属性以及输出类属性、输入类子类信息、输出类子类信息以及对象类型属性的字段信息生成所述测试脚本;
参见图27,所述的基于分布式平台的测试装置还包括:
文件名获取单元40,用于对所述测试请求进行切割字符串操作,以获取全量文件名;
文件名校验单元50,用于利用JAVA中的反射方法,校验测试请求中的文件名是否合法;
所述测试请求包括:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名。
从上述描述可知,本发明实施例提供的基于分布式平台的测试装置,首先获取用户的测试请求;接着,根据框架服务类型获取测试请求中的输入类属性以及输出类属性;最后利用JAVA的输出输入流方法,根据测试请求、输入类属性、输出类属性以及测试脚本模板生成测试脚本。本发明可提供一种使用简单轻便,且能自动生成风格统一测试代码的方法。通过使用该测试方法,统一测试人员的测试案例风格,减少测试人员开发编码的工作量,让其更多的精力集中在案例设计和案例完善上。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述基于分布式平台的测试方法的步骤,该步骤包括:
步骤100:获取用户的测试请求;
步骤200:根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
步骤300:利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
下面参考图28,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
如图28所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述基于分布式平台的测试方法的步骤,该步骤包括:
步骤100:获取用户的测试请求;
步骤200:根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
步骤300:利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上该仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于分布式平台的测试方法,其特征在于,包括:
获取用户的测试请求;
根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
2.根据权利要求1所述的基于分布式平台的测试方法,其特征在于,所述根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性包括:
利用JAVA中的暴力反射方法,根据框架服务类型获取所述输入类属性以及输出类属性;
利用字段属性递归方法,根据所述输入类属性以及输出类属性获取输入类子类信息、输出类子类信息以及对象类型属性的字段信息。
3.根据权利要求2所述的基于分布式平台的测试方法,其特征在于,所述利用JAVA的输出输入流方法,根据测试请求、输入类属性、输出类属性以及测试脚本模板生成测试脚本,包括:
根据所述测试请求获取数据源链路路径;
利用HSSF方法,根据所述数据源链路路径确定测试脚本模板;
根据所述输入类属性以及输出类属性、输入类子类信息、输出类子类信息以及对象类型属性的字段信息生成所述测试脚本。
4.根据权利要求1所述的基于分布式平台的测试方法,其特征在于,所述测试请求包括:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名。
5.根据权利要求1所述的基于分布式平台的测试方法,其特征在于,还包括:
对所述测试请求进行切割字符串操作,以获取全量文件名;
利用JAVA中的反射方法,校验测试请求中的文件名是否合法。
6.一种基于分布式平台的测试装置,其特征在于,包括:
测试请求获取单元,用于获取用户的测试请求;
属性获取单元,用于根据框架服务类型获取所述测试请求中的输入类属性以及输出类属性;
测试脚本生成单元,用于利用JAVA的输出输入流方法,根据所述测试请求、所述输入类属性、所述输出类属性以及测试脚本模板生成测试脚本。
7.根据权利要求6所述的基于分布式平台的测试装置,其特征在于,所述属性获取单元包括:
属性获取模块,用于利用JAVA中的暴力反射方法,根据框架服务类型获取所述输入类属性以及输出类属性;
子类信息获取模块,用于利用字段属性递归方法,根据所述输入类属性以及输出类属性获取输入类子类信息、输出类子类信息以及对象类型属性的字段信息。
8.根据权利要求7所述的基于分布式平台的测试装置,其特征在于,所述测试脚本生成单元包括:
路径获取模块,用于根据所述测试请求获取数据源链路路径;
模板确定模块,用于利用HSSF方法,根据所述数据源链路路径确定测试脚本模板;
测试脚本生成模块,用于根据所述输入类属性以及输出类属性、输入类子类信息、输出类子类信息以及对象类型属性的字段信息生成所述测试脚本;
所述的基于分布式平台的测试装置还包括:
文件名获取单元,用于对所述测试请求进行切割字符串操作,以获取全量文件名;
文件名校验单元,用于利用JAVA中的反射方法,校验测试请求中的文件名是否合法;
所述测试请求包括:测试案例类名称、输入类全类路径名、输出类全类路径名、服务类型、服务方法名以及服务名。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至5任一项所述基于分布式平台的测试方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5任一项所述基于分布式平台的测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010822505.1A CN111949543B (zh) | 2020-08-13 | 2020-08-13 | 基于分布式平台的测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010822505.1A CN111949543B (zh) | 2020-08-13 | 2020-08-13 | 基于分布式平台的测试方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949543A true CN111949543A (zh) | 2020-11-17 |
CN111949543B CN111949543B (zh) | 2023-09-08 |
Family
ID=73343059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010822505.1A Active CN111949543B (zh) | 2020-08-13 | 2020-08-13 | 基于分布式平台的测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949543B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799954A (zh) * | 2021-02-09 | 2021-05-14 | 上海云轴信息科技有限公司 | 快速构建测试环境的方法、设备及计算机可读介质 |
CN112860584A (zh) * | 2021-03-31 | 2021-05-28 | 中国工商银行股份有限公司 | 基于工作流模型的测试方法及装置 |
CN112905459A (zh) * | 2021-02-08 | 2021-06-04 | 中国工商银行股份有限公司 | 服务接口测试方法、装置、电子设备及存储介质 |
CN113377681A (zh) * | 2021-07-28 | 2021-09-10 | 中国工商银行股份有限公司 | 测试案例数据处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766252A (zh) * | 2017-11-08 | 2018-03-06 | 平安科技(深圳)有限公司 | 测试脚本自动化执行方法、装置、设备以及存储介质 |
CN110597730A (zh) * | 2019-09-20 | 2019-12-20 | 中国工商银行股份有限公司 | 基于场景法的自动化测试用例生成方法及系统 |
WO2020119422A1 (zh) * | 2018-12-15 | 2020-06-18 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
-
2020
- 2020-08-13 CN CN202010822505.1A patent/CN111949543B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766252A (zh) * | 2017-11-08 | 2018-03-06 | 平安科技(深圳)有限公司 | 测试脚本自动化执行方法、装置、设备以及存储介质 |
WO2020119422A1 (zh) * | 2018-12-15 | 2020-06-18 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN110597730A (zh) * | 2019-09-20 | 2019-12-20 | 中国工商银行股份有限公司 | 基于场景法的自动化测试用例生成方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905459A (zh) * | 2021-02-08 | 2021-06-04 | 中国工商银行股份有限公司 | 服务接口测试方法、装置、电子设备及存储介质 |
CN112905459B (zh) * | 2021-02-08 | 2024-05-03 | 中国工商银行股份有限公司 | 服务接口测试方法、装置、电子设备及存储介质 |
CN112799954A (zh) * | 2021-02-09 | 2021-05-14 | 上海云轴信息科技有限公司 | 快速构建测试环境的方法、设备及计算机可读介质 |
CN112799954B (zh) * | 2021-02-09 | 2024-04-16 | 上海云轴信息科技有限公司 | 快速构建测试环境的方法、设备及计算机可读介质 |
CN112860584A (zh) * | 2021-03-31 | 2021-05-28 | 中国工商银行股份有限公司 | 基于工作流模型的测试方法及装置 |
CN113377681A (zh) * | 2021-07-28 | 2021-09-10 | 中国工商银行股份有限公司 | 测试案例数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111949543B (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018955B (zh) | 通过转换手动测试用例来生成自动化测试脚本 | |
CN111949543B (zh) | 基于分布式平台的测试方法、装置、电子设备及存储介质 | |
CN110597730B (zh) | 基于场景法的自动化测试用例生成方法及系统 | |
US20140282372A1 (en) | Code separation with semantic guarantees | |
US20200201689A1 (en) | System and method for determining a process flow of a software application and for automatically generating application testing code | |
US8311794B2 (en) | Testing executable logic | |
CA3198981A1 (en) | Constructing executable program code based on sequence codes | |
CN112394942A (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
Strauch et al. | Decision support for the migration of the application database layer to the cloud | |
US20200327044A1 (en) | Method for constructing test scenario and information processing device | |
CN114281803A (zh) | 数据迁移方法、装置、设备、介质和程序产品 | |
CN115470152A (zh) | 测试代码生成方法、测试代码生成装置以及存储介质 | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
CN115408009A (zh) | 一种代码文件生成方法、装置、设备和存储介质 | |
CN113504904A (zh) | 用户定义函数实现方法、装置、计算机设备和存储介质 | |
CN115203027A (zh) | 基于数据集成模型的测试方法及装置 | |
CN116860636A (zh) | 单元测试代码生成方法、装置、设备及存储介质 | |
CN115904968A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN116339755A (zh) | 数据库对象的安装方法、装置、设备和介质 | |
CN114817036A (zh) | 决策树测试方法、装置、电子设备和存储介质 | |
CN117724983A (zh) | 接口测试方法、装置、存储介质及电子设备 | |
CN118113681A (zh) | 数据库测试的方法、装置、设备、计算机可读存储介质 | |
CN116361159A (zh) | 接口回归测试方法、装置、电子设备和计算机可读介质 | |
CN115599680A (zh) | 一种批量交易的测试方法及装置 | |
CN117950991A (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 |