掌桥专利:专业的专利平台
掌桥专利
首页

一种批量程序测试方法、装置和电子设备

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及测试领域,尤其涉及一种批量程序测试方法、装置和电子设备。

背景技术

批量业务一般是银行系统大批量统一处理的业务,具有需要处理的数据量大、同类业务的处理逻辑相似等特点,而不同的批量业务常具备相对独立的功能。为了实现不同的业务功能,银行常通过开发相应的批量程序来处理此类批量业务,以实现运行一次批量程序、一次性处理大量业务的功能。在运行批量程序的时候,会对数据库表数据进行大量批处理,处理的数据量较大,批量程序的功能就主要体现在数据库表的数据变化,故而一般需要消耗较多的资源,和占用较长的时间,为了不影响前台联机业务的处理,故而批量程序常在后台运行,是银行后台程序的一部分。在批量程序投入使用前,需要对批量程序的功能进行测试。

当前的批量程序测试,主要是由测试人员手动执行的测试。由于手动的处理能力有限,而批量程序一般具有的处理数据量大、数据处理逻辑复杂等特点,所以手动准备测试数据和验证测试结果的过程需要消耗大量的时间以准备大量的数据和核对大量数据表字段值,人工执行压力大,并且,测试结果的核对困难,严重影响测试的效率和准确性。

发明内容

有鉴于此,本发明提供了一种批量程序测试方法、装置和电子设备,用以解决由人工进行批量程序测试带来的测试效率和准确性较低的问题。具体方案如下:

一种批量程序测试方法,包括:

获取用户参数和初始预设参数文件,其中,所述用户参数包括待测批量结点信息和数据表配置信息,所述初始预设参数文件包括初始化SQL参数文件、埋数SQL参数文件和输出验证SQL参数文件;

依据所述数据表配置信息,分别配置所述初始预设参数文件以生成配置后的预设参数文件;

对各个所述待测批量结点,依次执行解析所述配置后的预设参数文件中的初始化SQL参数文件和埋数SQL参数文件的操作,若任一参数文件的解析操作执行失败,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行失败,若两个参数文件的解析操作执行均成功,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行成功;

获得所述待测批量结点的执行状态;

在所述待测批量结点的执行状态均为完成的情况下,获取所述待测批量结点的执行结果,对各个所述待测批量结点的执行结果分别执行解析所述配置后的预设参数文件中的输出验证SQL参数文件的操作,验证该待测批量结点的执行结果,依据所述待测批量结点的执行结果和验证结果确定测试结果。

上述的方法,可选的,所述生成配置后的预设参数文件,包括:

在所述数据表配置信息为使用数据表的情况下,获取会计日期,依据所述会计日期获取对应的数据表,对各个所述初始预设参数文件,依次执行获取该预设参数文件的行数,依据所述行数,逐行用所述数据表中的数据对该预设参数文件中的相应数据进行替换;

在所述数据表配置信息为不使用数据表的情况下,设置所述初始预设参数文件为所述配置后的预设参数文件。

上述的方法,可选的,所述获得所述待测批量结点的执行状态,包括:

调用批量调度系统以查询所述待测批量结点的执行状态,在查询到存在任一所述待测批量结点的执行状态为未完成时,所述批量调度系统以预设间隔为周期重复查询所述待测批量结点的执行状态。

上述的方法,可选的,所述用户参数还包括刷新批量执行状态间隔;

所述预设间隔是由用户对所述批量调度系统进行规定的所述刷新批量执行状态间隔。

上述的方法,可选的,所述待测批量结点的执行结果,包括:

所述待测批量结点的起止时间、执行失败与否的信息和各操作指令的执行结果。

上述的方法,可选的,所述执行解析所述配置后的预设参数文件中的输出验证SQL参数文件的操作,包括:

获取一个所述待测批量结点的执行结果中的需要核对的字段名和与所述字段名对应的实际值,核对所述实际值与相应的期望值是否一致,以确定所述字段名的核对结果。

上述的方法,可选的,所述获取用户参数包括接收用户通过前台的交互界面输入的用户参数;

所述获取初始预设参数文件包括接收用户通过前台的交互界面上传的初始预设参数文件。

一种批量程序测试装置,包括:

数据获取单元,用于获取用户参数和初始预设参数文件,其中,所述用户参数包括待测批量结点信息和数据表配置信息,所述初始预设参数文件包括初始化SQL参数文件、埋数SQL参数文件和输出验证SQL参数文件,依据所述数据表配置信息,分别配置所述初始预设参数文件以生成配置后的预设参数文件;

测试执行单元,用于对各个所述待测批量结点,依次执行解析所述配置后的预设参数文件中的初始化SQL参数文件和埋数SQL参数文件的操作,若任一参数文件的解析操作执行失败,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行失败,若两个参数文件的解析操作执行均成功,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行成功;

状态获取单元,用于获得所述待测批量结点的执行状态;

结果确定单元,用于在所述待测批量结点的执行状态均为完成的情况下,获取所述待测批量结点的执行结果,对各个所述待测批量结点的执行结果分别执行解析所述配置后的预设参数文件中的输出验证SQL参数文件的操作,以验证该待测批量结点的执行结果,依据所述待测批量结点的执行结果和验证结果确定测试结果。

一种电子设备,包括:

处理器,用于执行指令,以实现上述批量程序测试方法;

存储器,用于存储所述处理器可执行的指令和可调用的数据;

交互界面,用于供用户输入数据和上传文件,接收数据和文件并存入所述存储器以供所述处理器调用,输出所述处理器确定的测试结果。

与现有技术相比,本发明包括以下优点:

通过预先编写可以被处理器等终端获取并解析的初始化SQL参数文件、埋数SQL参数文件和输出验证SQL参数文件和接收用户输入的必要用户参数,使得批量程序的测试案例可以自动执行,并在测试执行完成后生成测试结果,实现批量程序的自动化测试,相较于人工测试,提高了测试效率;同时,因为由处理器承担核对验证测试结果的任务,避免了人工误判的可能,提高了测试的准确性。

此外,通过设计交互界面,使得用户可以凭此实现对预设参数文件和用户参数的自定义配置,提高了测试方法对不同批量程序的适用性。具体表现在,用户可以根据待测的批量程序编写并通过交互界面上传参数文件和输入相应的用户参数,实现对不同批量程序,包括但不限于具有可行的批量程序基础的待测批量程序的测试。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种初始化SQL参数文件示意图;

图2为本发明实施例公开的一种埋数SQL参数文件示意图;

图3为本发明实施例公开的一种输出验证SQL参数文件示意图;

图4为本发明实施例公开的一种上传参数文件前台页面示意图;

图5为本发明实施例公开的一种输入用户参数前台页面示意图;

图6为本发明实施例公开的一种批量程序测试方法流程图;

图7为本发明实施例公开的一种测试结果核对报告示意图;

图8为本发明实施例公开的一种批量程序测试装置的框图;

图9为本发明实施例公开的一种电子设备的框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前的测试过程包括准备测试数据、执行测试和验证测试结果,此外,还需要对各个版本的批量程序进行多轮测试、需要对各种测试需求进行回归测试。发明人经过研究发现,各个测试过程中存在大量的重复操作,而这为批量程序自动化测试的实现提供了可能。基于批量程序自动测试的思想,可以为个别特定的待测批量程序开发基准批量程序测试模板和待测批量程序测试模板,通过运行两个测试模板并比较两个运行结果,使得测试人员可以通过比较结果分析待测批量程序是否符合使用要求。该方法在一定程度上提高了个别特定的批量程序的测试效率,但是,测试结果的得出仍然依赖于测试人员的判断,自动化程度不高。并且,对待测批量程序的测试依赖于基准批量程序,故而主要适用于对现有批量程序进行改造得到的批量程序的测试,适用范围小。进一步的,由于所运行的测试模板是一种可被机器自动获取并自动执行的模板,而对于不同的待测批量程序需要重新开发相应的至少一个测试模板,重复开发压力大且测试成本高。

为了解决以上问题,本发明实施例公开了一种批量程序测试方法,为不同类型的批量程序设计一种较为通用的测试案例格式,该格式能够适用于大量的银行后台批量程序的测试,当然也可以实现其他应用场景下的批量程序测试,相较于现有的为个别特定的批量程序开发测试模板的测试方法,适用范围更广、开发压力较小,无需重复开发测试模板就能实现不同类型的批量程序测试,降低了开发成本、提高了测试效率,此外,还可以实现一个测试案例的重复执行,提高测试的自动化程度。

本发明实施例公开的批量程序测试方法可以在不同的测试环境下依托不同的程序语言实现。示例性的,可以通过调用执行JMeter脚本实现。JMeter是一个基于Java的开源测试工具,能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证应用程序是否返回了期望的结果。

本发明实施例公开了一种批量程序测试方法,该测试方法为不同类型的批量程序提供了一种较为通用测试案例格式,该测试案例由两部分组成,分别是初始预设参数文件和输入用户参数,其中,所述初始预设参数文件包括初始的初始化SQL参数文件、埋数SQL参数文件和输出验证SQL参数文件,三种参数文件均为一种可被处理器等获取并解析,进而实现相应功能的参数文件。所述参数文件可以是逗号分隔值文件格式,即文件的拓展名为csv。初始预设参数文件的具体组成如下:

初始化SQL参数文件,在被解析的情况下,执行初始化SQL,使测试数据回到初始状态。初始化SQL参数文件可以包含多条SQL语句,每条SQL语句后使用英文分号,相邻SQL语句间使用回车换行,所述SQL语句至少包括update、delete或truncate语句中的一种语句。示例性的,一个初始化SQL参数文件如图1所示。

埋数SQL参数文件,在被解析的情况下,执行埋数SQL,完成测试数据埋数。其中,所述埋数SQL可以使用等价类划分、边界值分析和错误推测等多种测试案例设计方法中的至少一种方法。埋数SQL参数文件可以包含多条SQL语句,每条SQL语句后使用英文分号,相邻SQL语句间使用回车换行,所述SQL语句为insert语句。示例性的,一个埋数SQL参数文件如图2所示。

输出验证SQL参数文件,在被解析的情况下,执行输出验证SQL,完成各需要核对的字段的实际值和预期值的对比判断。输出验证SQL参数文件包含至少一条SQL语句,相邻所述SQL语句间使用回车换行,每条所述SQL语句包括三种参数,分别是:output_sql参数,用来编写输出验证SQL,所述输出验证SQL语句为select语句,且一条select语句得到一条查询返回记录,即一个查询结果,所述输出验证SQL语句使用英文分号;output_con参数,用来编写所述查询结果中需要核对的字段的字段名,例如COLUMN_1,也可以是SQL函数名,例如CONUT(*),此时相应的字段值为该函数的计算结果,所述output_con参数可以包含至少一个所述字段名,相邻的所述字段名后使用英文逗号,最后一个所述字段名后使用英文分号;output_res参数,用来编写所述查询结果中需要核对的字段的字段值,所述字段值为实际值,所述output_res参数可以包含至少一个所述字段值,相邻的所述字段值后使用英文逗号,所述字段值在顺序排列上与所述output_con参数中的所述字段名一一对应。示例性的,一个输出验证SQL参数文件如图3所示。

一个测试案例中除了需要编写初始预设参数文件,还需要输入一些必要的用户参数,示例性的,在银行后台的应用场景下,所述用户参数至少包括JMeter根目录、JMeter脚本名、作业计划号、结点号、应用数据库URL、应用数据库JDBC驱动类、应用数据库用户名、应用数据库用户密码、批量调度系统数据库URL、批量调度系统数据库JDBC驱动类、批量调度系统数据库用户名、批量调度系统数据库用户密码、是否涉及AB表、运行模式、刷新批量执行状态间隔等。

所述由测试人员编写的初始预设参数文件和输入的必要用户参数,可以通过交互界面与执行测试的装置关联。示例性的,在银行后台依托JMeter脚本实现测试的应用场景下,所述交互界面可以是前台页面,具体的关联情况如下:通过所述前台页面的上传参数文件前台页面,如图4所示,上传编写好的所述预设参数文件到所述装置所在的服务器,通过所述前台页面的输入用户参数前台页面,如图5所示,输入所述必要用户参数并传递给与所述JMeter脚本中相应的变量值。

示例性的,在依托JMeter脚本实现测试的应用场景下,所述交互界面的功能并不仅仅体现在测试数据的获取阶段,还可以体现在:所述批量程序测试的启动可以由用户通过所述交互界面实现,例如用户点击所述交互界面上的“开始构建”按钮,开始测试;所述前台页面可以输出所述JMeter脚本的执行日志,显示脚本运行情况,便于调试排查脚本执行中出现的问题。

为了更好的对本发明公开的批量程序测试方法进行说明,接下来对依托JMeter脚本实现的所述批量程序测试方法的执行流程进行详细阐述,其流程如图6所示,包括步骤:

S601:获取用户参数和初始预设参数文件,其中,所述用户参数包括待测批量结点信息和数据表配置信息,所述初始预设参数文件包括初始化SQL参数文件、埋数SQL参数文件和输出验证SQL参数文件;依据所述数据表配置信息,分别配置所述初始预设参数文件以生成配置后的预设参数文件;

其中,所述用户参数和所述初始预设参数文件是在所述测试执行前,存入可被调用的存储器的,所述用户参数可以是通过交互界面从用户处获取的,也可以是预先存入可供调用的存储空间的;所述待测批量结点信息包括至少一个待测批量结点号,在数据获取阶段,还需要获取所述待测批量结点的个数,所述个数决定了后续执行测试操作的次数;所述数据表配置信息可以是运行程序是否需要涉及数据表的信息,所述数据表可以是在测试数据准备阶段需要利用的数据,也可以是在验证测试结果阶段需要利用的数据等。

在本步骤中,获取用户参数,包括:接收并存储用户通过交互界面输入的用户参数;

所述获取初始预设参数文件,包括:接收并存储用户通过交互界面上传的初始预设参数文件。

其中,所述交互界面是实现所述批量程序测试方法的设备的组成部分,在所述用户参数和所述初始预设参数文件是通过交互界面由用户输入的情况下,所述交互界面至少承担为用户提供数据输入界面、接收并存储来自用户的数据、供用户启动测试和输出测试结果的任务。

在不需要通过交互界面获取数据的情况下,交互界面也可以存在,至少承担供用户启动测试、输出测试结果的任务;所述交互界面也可以不存在,进而通过输入设备提供启动测试的指令来源,通过输出设备实现输出测试结果的功能。

在一种可能的实现方式中,所述生成所述初始预设参数文件,包括:

在所述数据表配置信息为使用数据表的情况下,获取会计日期,依据所述会计日期获取对应的数据表,对各个所述初始预设参数文件,依次执行获取该预设参数文件的行数,依据所述行数,逐行用所述数据表中的数据对该预设参数文件中的相应数据进行替换;

在所述数据表配置信息为不使用数据表的情况下,设置所述初始预设参数文件为所述配置后的预设参数文件。

其中,获取所述会计日期是因为,测试所需的数据表是一个完整的数据表中与所需会计日期对应的部分数据表;在后续的操作中,凡涉及需要使用任一预设参数文件,调用的都是配置后的预设参数文件,虽然所述配置后的预设参数文件可能在内容上与相应的初始预设参数文件相同,但是并不是所述初始预设参数文件。

在一种可能的实现方式中,所述获取会计日期和获取与所述会计日期对应的数据表的过程,包括:

向一个特定的微服务地址发送HTTP请求;接收所述HTTP请求的响应报文,所述响应报文中包括所需的内部参数。例如在银行后台的应用场景下,所述数据表可以是AB表,所述内部参数包括会计日期和AB表;根据所述会计日期获取相应日期的AB表,即为所需的数据表。

其中,所述获取该预设参数文件的行数,包括:解析该预设参数文件以获取相应的行数,由所述行数确定,在所述数据表配置信息为使用数据表的情况下,使用所述数据表对所述预设参数文件的进行替换操作的次数,表现在程序代码上是替换相关指令的循环次数。

总的来说,S601是为了获取测试所需的数据,需要注意的是缺乏任一所述所需数据,测试都无法正确执行。故在S601,若获取任一数据失败,则本次测试失败,所述脚本即结束执行。

本实施例中所述的任一数据获取失败,可以是:判断发现存在任一所述用户参数为空,发送所述HTTP请求失败、没有收到所述请求的响应报文或所述响应报文的信息不全,解析任一初始预设参数文件失败等任意一种。

S602:对各个所述待测批量结点,依次执行解析所述配置后的预设参数文件中的初始化SQL参数文件和埋数SQL参数文件的操作,若任一参数文件的解析操作执行失败,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行失败,若两个参数文件的解析操作执行均成功,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行成功;

其中,对任一所述待测批量结点而言,所述执行的时间起点可以是启动所述待测批量程序测试的时间;在获取测试数据统一进行的情况下,也就是说对于不同的所述待测批量结点,S601是同时进行的,S601完成后,各个待测批量结点即开始执行本结点的各种操作,所述执行的时间起点也可以是S601完成的时间。

对任一所述待测批量结点而言,所述执行的时间终点是该待测批量结点的执行结束的时间,所述执行结束可以对应是对该待测批量结点全部的操作执行完成的情况,也可以是对该待测批量结点的任一操作执行失败即设置该结点的执行状态为完成的情况,故所述执行的时间终点也可以表述为该待测批量结点的执行完成的时间。

在S602中,还可以包括删除不必要的执行操作结果的步骤。该删除操作是为了在没有人的干预的情况下,实现批量程序的重复测试,进而提高测试的自动化程度。对于一次测试的执行过程,是否执行所述删除操作,对测试结果的正确得出没有影响。

在一种可能的实现方式中,该删除操作的具体步骤为:

对各个所述待测批量结点,执行删除不必要的执行结果操作,所述不必要的执行结果包括测试当天该待测批量结点之前的执行结果。

在另一种可能的实现方式中,该删除操作的具体步骤为:

在全部所述待测批量结点的执行状态为完成的情况下,删除不必要的执行结果操作,所述不必要的执行结果包括测试当天全部所述待测批量结点之前的执行结果。

以上两种方式触发执行的时间点不同,可根据具体的测试需求选择相应的删除方式。

若所述删除操作执行失败,则至少输出所述操作执行失败的警告信号,甚至在所述警号信号不消除的情况下不进行下一次测试。

S603:获得所述待测批量结点的执行状态;

其中,所述执行状态为该所述待测批量结点的执行是否完成的信息,有且仅有执行完成和执行未完成两种情况。

可选的,所述获得所述待测批量结点的执行状态,包括:

调用批量调度系统以查询所述待测批量结点的执行状态,在查询到存在任一所述待测批量结点的执行状态为未完成时,所述批量调度系统以预设间隔为周期重复查询所述待测批量结点的执行状态。

其中,具体的状态查询是通过对各个待测批量结点循环执行SQL语句实现的,所述SQL语句是select语句。

当然,所述各待测批量结点执行状态的查询,也可以不通过调用所述批量调度系统,例如,脚本直接进行查询操作。

此外,获得所述待测批量结点的执行状态还可以通过如下步骤实现:在设置各待测批量结点的执行完成时,输出一个完成信号,脚本通过统计所述完成信号的个数,并与所述待测批量结点的个数比较,确定所述待测批量结点是否全部执行完成。

在一种可能的实现方式中,所述用户参数还包括刷新批量执行状态间隔;所述预设间隔是由用户对所述批量调度系统进行规定的所述刷新批量执行状态间隔。

其中,所述刷新批量执行状态间隔是所述预设间隔的最小值;若所述预设间隔小于所述刷新批量执行状态间隔,则在查询时,会出现对两个相同的执行状态进行了重复查询,造成后一次查询没有意义。当然,所述预设时间可以是一个稍大于所述刷新批量执行状态间隔的其他值,但尽量不要过大,原因在于过大的所述预设间隔延长了状态查询的时间,会造成不必要的测试时间延长,对测试效率带来不利影响。

S604:在所述待测批量结点的执行状态均为完成的情况下,获取所述待测批量结点的执行结果,对各个所述待测批量结点的执行结果分别执行解析所述配置后的预设参数文件中的输出验证SQL参数文件的操作,验证该待测批量结点的执行结果,依据所述待测批量结点的执行结果和验证结果确定测试结果。

在一种可能的实现方式中,所述待测批量结点的执行结果,包括:

所述待测批量结点的起止时间、执行失败与否的信息和各操作指令的执行结果。

其中,获取所述待测批量结点的目的主要有两个——输出显示和供后续调用查询,例如:对于获取所述待测批量结点的起止时间主要是为了输出显示,获取所述执行失败与否的信息主要是为了输出显示以及在需要的情况下供后续调用查询,各操作指令的执行结果主要是为了供后续调用查询。

在一种可能的实现方式中,S604还包括:

对各个所述待测批量结点,在获取到该待测批量结点执行失败的信息的情况下,获取该待测批量结点的报错信息。

其中,本步骤具体包括:判断该待测批量结点的执行是否失败,在判断结果为“是”的情况下,获取该待测批量结点的报错信息;若所述判断结果为“否”,则不进行操作。

获取所述报错信息是为了显示该待测批量结点具体是在测试执行的哪个步骤出现了错误,进而表征批量程序和测试脚本存在的问题。

在一种可能的实现方式中,所述验证该待测批量结点的执行结果,包括:

对所述待测批量结点中的各个需要核对的字段,执行获取一个所述待测批量结点的执行结果中的需要核对的字段名和与所述字段名对应的实际值,核对所述实际值与相应的期望值是否一致,以确定所述字段名的核对结果。

其中,对于一个待测批量结点而言,具有至少一个需要核对的字段,一个字段包含至少一个需要核对的字段值,字段值与字段名是对应的。

在一种可能的实现方式中,S604还包括:

汇总测试信息,输出所述待测批量程序的测试报告。

具体可以包括,在用户输入测试报告输出请求的情况下,汇总测试信息,所述测试信息包括但不限于测试所需的各数据信息、各所述待测批量结点的执行结果和所述字段值的核对结果,所述待测批量结点的执行结果包括但不限于各SQL语句的执行结果;所述测试报告可以是HTML格式的测试结果核对报告。示例性的,一种所述测试结果核对报告如图7所示。

对于S601至S604中的任一操作,包括但不限于判断操作、解析操作和查询操作,其实现方式可以是通过编写BeanShell代码实现。

本发明提供的批量程序测试方法,可以通过设计较为通用的测试案例格式,包括初始化SQL参数文件、埋数SQL参数文件、输出验证SQL参数文件和输入用户参数,实现对大量不同类的批量程序的测试,包括具有现有可行的批量程序基础的改造的待测批量程序测试和新开发的待测批量程序,适用范围更广。其中,需要测试人员开发的内容,从现有的完整的测试模板缩小为三个预设参数文件,不同的测试使用相同的测试逻辑,在一定程度上避免了重复开发,减小了开发压力,降低了开发成本。此外,通过按照作用对实现测试功能的不同模块进行划分,在实际应用中,可能会遇到虽然测试的批量程序不同,但是可以使用至少一个相同的参数文件的情况,进一步减少了重复开发的需要,降低开发成本。

此外,为测试设计测试案例格式,保证了测试案例的数据独立性,也就是说,在一个可用的测试环境下,该测试案例可以重复执行,可以表现为应用所述测试案例对一个待测批量程序进行多次测试或对多个待测批量程序进行测试。增加的删除不必要的执行结果操作,可以实现对本次测试对数据修改等操作的“清除”,使得测试可以在没有人工参与下多次进行,提高了测试的自动化程度。

接下来对本申请提供的批量程序测试装置进行介绍,下文介绍的批量程序测试装置与上文介绍的批量程序测试方法,可以相互对应参照。

如图8所示,批量程序测试装置可以包括:

数据获取单元801,用于获取用户参数和初始预设参数文件,其中,所述用户参数包括待测批量结点信息和数据表配置信息,所述初始预设参数文件包括初始化SQL参数文件、埋数SQL参数文件和输出验证SQL参数文件,依据所述数据表配置信息,分别配置所述初始预设参数文件以生成配置后的预设参数文件;

测试执行单元802,用于对各个所述待测批量结点,依次执行解析所述配置后的预设参数文件中的初始化SQL参数文件和埋数SQL参数文件的操作,若任一参数文件的解析操作执行失败,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行失败,若两个参数文件的解析操作执行均成功,则设置该待测批量结点的执行状态为完成,且该待测批量结点的执行成功;

状态获取单元803,用于获得所述待测批量结点的执行状态;

结果确定单元804,用于在所述待测批量结点的执行状态均为完成的情况下,获取所述待测批量结点的执行结果,对各个所述待测批量结点的执行结果分别执行解析所述配置后的预设参数文件中的输出验证SQL参数文件的操作,以验证该待测批量结点的执行结果,依据所述待测批量结点的执行结果和验证结果确定测试结果。

在一种可能的实现方式中,所述数据获取单元,还包括:

数据接收单元,用于接收并存储用户通过交互界面输入的用户参数,接收并存储用户通过交互界面上传的初始预设参数文件。

在一种可能的实现方式中,所述数据获取单元,包括:

参数文件配置单元,用于在所述数据表配置信息为使用数据表的情况下,获取会计日期,依据所述会计日期获取对应的数据表,对各个所述初始预设参数文件,依次执行获取该预设参数文件的行数,依据所述行数,逐行用所述数据表中的数据对该预设参数文件中的相应数据进行替换;

在所述数据表配置信息为不使用数据表的情况下,设置所述初始预设参数文件为所述配置后的预设参数文件。

可选的,所述测试执行单元,还包括:

结果删除单元,用于对各个所述待测批量结点,执行删除不必要的执行结果操作,所述不必要的执行结果包括测试当天该待测批量结点之前的执行结果。

可选的,所述测试执行单元,还包括:

结果删除单元,用于在全部所述待测批量结点的执行状态为完成的情况下,删除不必要的执行结果操作,所述不必要的执行结果包括测试当天全部所述待测批量结点之前的执行结果。

可选的,所述状态获取单元,可以被具体配置为执行:

调用批量调度系统以查询所述待测批量结点的执行状态,在查询到存在任一所述待测批量结点的执行状态为未完成时,所述批量调度系统以预设间隔为周期重复查询所述待测批量结点的执行状态。

可选的,所述结果确定单元可以包括:

结果获取单元,被配置为执行获取所述待测批量结点的起止时间、执行失败与否的信息和各操作指令的执行结果;

字段核对单元,被配置为执行对各个所述待测批量结点的执行结果分别执行解析所述配置后的预设参数文件中的输出验证SQL参数文件的操作,对所述待测批量结点中的各个需要核对的字段,执行获取一个所述待测批量结点的执行结果中的需要核对的字段名和与所述字段名对应的实际值,核对所述实际值与相应的期望值是否一致,以确定所述字段名的核对结果。

可选的,所述结果获取单元,还可以包括:

报错信息获取单元,被配置为执行对各个所述待测批量结点,在获取到该待测批量结点执行失败的信息的情况下,获取该待测批量结点的报错信息。

可选的,所述批量程序测试装置,还可以包括:

结果输出单元,被配置为执行汇总测试信息,输出所述待测批量程序的测试报告。

本发明实施例提供的批量程序测试装置,可以通过获取预先配置的预设参数文件和必要的用户参数,由机器完成测试数据的准备、测试结果的核对任务,实现了批量程序的自动化测试,提高了测试的效率和准确率。此外,为实现不同的待测批量程序的测试,只需配置相应的预设参数文件和用户参数,而无需为各待测批量程序开发测试模板,降低了测试开发的成本,扩大了该装置对测试对象的适用范围。

图9是根据一示例性实施例示出的电子设备的框图。如图所示,该电子设备,可以包括:

处理器901,用于执行指令,以实现本发明实施例提供的任一种批量程序测试方法;

存储器902,用于存储所述处理器可执行的指令和可调用的数据;

交互界面903,用于供用户输入数据和上传文件,接收数据和文件并存入所述存储器以供所述处理器调用,输出所述处理器确定的测试结果。

所述交互界面可以是基于Jenkins设计的,所述Jenkins是一种基于Java的开源持续集成工具,用于监控持续重复的工作。所述Jenkins提供了一个开放易用的软件平台,使软件项目可以进行持续集成。所述交互界面也可以通过其他方式设计以实现所述功能。通过设计交互界面,为配置可供处理器调用的预设参数文件和用户参数提供了便利,提高了该电子设备的易用性。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

以上对本申请所提供的一种批量程序测试方法、装置和电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120114703662