CN104965790A - 基于关键字驱动的软件测试方法及系统 - Google Patents
基于关键字驱动的软件测试方法及系统 Download PDFInfo
- Publication number
- CN104965790A CN104965790A CN201510424409.0A CN201510424409A CN104965790A CN 104965790 A CN104965790 A CN 104965790A CN 201510424409 A CN201510424409 A CN 201510424409A CN 104965790 A CN104965790 A CN 104965790A
- Authority
- CN
- China
- Prior art keywords
- test
- key word
- testing
- software
- test case
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本公开是关于一种基于关键字驱动的软件测试方法、软件测试管理装置、软件测试运行装置及软件测试系统,其中,软件测试方法包括:接收被触发的测试任务,为被触发的测试任务分配测试运行装置;被触发的测试任务包含测试用例,测试用例的测试步骤中引用预设格式的关键字,预设格式包含关键字命名空间字段,关键字命名空间字段用于支持至少一种操作系统;向被分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到测试任务信息时,获得对应的测试文件,并根据测试文件进行软件测试,并返回测试结果;接收测试结果,并根据测试结果生成测试报告。本公开实施例可以对不同操作系统的软件进行测试,通用性强。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种基于关键字驱动的软件测试方法、软件测试管理装置、软件测试运行装置及软件测试系统。
背景技术
随着计算机行业的飞速发展,计算机软件的规模越来越大,复杂度也越来越高,传统的人工测试方法逐渐被自动化测试方法所取代。主流的自动化测试方法的演变经历了基于录制回放的测试,数据驱动测试和关键字驱动测试等。其中,关键字驱动测试是目前最为流行和高效的自动化测试方法。
关键字驱动测试的实现思路是:将实施软件测试过程中必要的操作分别封装成与业务无关的关键字。编写自动化测试用例时,为每个测试步骤指定一个关键字,同时附加上与业务相关的参数。测试用例是包含若干个测试步骤的序列。这样就实现了测试逻辑和操作的分离,减少耦合,从而降低维护成本。
目前有很多关键字驱动测试的方法,但普遍都是针对具体被测软件的某个方面例如某种操作系统设计实现的,通用性差,难以应对复杂多变的测试需求。
发明内容
本公开实施例提供一种基于关键字驱动的软件测试方法、软件测试管理装置、软件测试运行装置及软件测试系统,用以解决目前关键字驱动测试的方法通用性差的问题。
根据本公开实施例的第一方面,提供一种基于关键字驱动的软件测试方法,包括:
接收被触发的测试任务,为所述被触发的测试任务分配测试运行装置;所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
向被分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到所述测试任务信息时,获得对应的测试文件,并从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果;
接收所述测试结果,并根据所述测试结果生成测试报告。
在一实施例中,所述向被分配的测试运行装置发送测试任务信息,包括:
通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息。
在一实施例中,所述方法还包括:
提供测试用例输入界面,接收测试人员在所述测试用例输入界面上输入的测试用例以及对输入的测试用例的测试步骤进行的配置,并当接收到测试人员触发的保存操作时,将输入的测试用例转换为自动化测试用例,并保存至数据库中。
在一实施例中,所述方法还包括:
当接收被触发的测试任务时,生成一条测试任务执行记录,从所述数据库中读取对应的自动化测试用例的测试步骤,并将读取的测试步骤以预设数据格式保存在所述测试任务执行记录中。
在一实施例中,所述预设数据格式包括JSON格式、XML格式或YAML格式,所述测试任务信息包括对应测试任务的测试任务执行记录标识,所述输入的测试用例包括初始测试用例和/或修改后的测试用例。
在一实施例中,所述方法还包括:
基于预设算法生成并保存所述测试用例与所述被分配的测试运行装置的对应关系,并接收所述测试运行装置发送的数据获取请求,所述预设算法包括平均分配算法;
根据所述数据获取请求和所述对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个所述测试文件,并向被分配的测试运行装置返回对应的测试文件。
在一实施例中,所述方法还包括:
在所述接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的关键字和触发的保存操作,并将所述关键字保存至所述数据库中。
在一实施例中,所述接收测试人员对输入的测试用例的测试步骤进行的配置,包括:
接收所述测试人员在提供的测试步骤配置页面上输入的关键字及为所述关键字设置的参数。
在一实施例中,所述方法还包括:
在所述接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的测试环境、至少一个环境组件项及其所属的环境组件类型和触发的保存操作,并将所述测试环境、至少一个环境组件项及其所属的环境组件类型保存至所述数据库中。
在一实施例中,所述接收测试人员对输入的测试用例的测试步骤进行的配置,还包括:
接收测试人员在提供的测试步骤配置页面上选择的一个环境组件项。
在一实施例中,所述通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息,包括:
查询所述zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点,若存在,则向存在临时节点的测试运行装置发送所述测试任务信息。
根据本公开实施例的第二方面,提供一种基于关键字驱动的软件测试方法,包括:
接收测试管理装置发送的测试任务信息,根据所述测试任务信息从所述测试管理装置获得对应的测试文件,所述测试任务信息为所述测试管理装置接收被触发的测试任务后发送的,所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,以使所述测试管理装置根据接收的所述测试结果生成测试报告。
在一实施例中,所述根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,包括:
针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过所述关键字函数读取对应的参数或者通过所述关键字函数读取对应的参数和环境组件以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向所述测试管理装置返回当前测试用例的执行结果。
在一实施例中,所述接收测试管理装置发送的测试任务信息,包括:
通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息。
在一实施例中,在所述通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息之前,所述方法还包括:
在启动时在所述zookeeper上创建一个以对应测试运行装置标识命名的临时节点,在关闭时在所述zookeeper上删除所述以对应测试运行装置标识命名的临时节点,以便所述测试管理装置根据是否存在所述临时节点来确定是否发送所述测试任务信息。
根据本公开实施例的第三方面,提供一种基于关键字驱动的软件测试管理装置,所述装置包括:
接收分配模块,被配置为接收被触发的测试任务,为所述被触发的测试任务分配测试运行装置;所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
发送模块,被配置为向所述接收分配模块分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到所述测试任务信息时,获得对应的测试文件,从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果;
接收生成模块,被配置为接收所述测试结果,并根据所述测试结果生成测试报告。
在一实施例中,所述发送模块,被配置为:
通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息。
在一实施例中,所述装置还包括:
提供接收保存模块,被配置为提供测试用例输入界面,接收测试人员在所述测试用例输入界面上输入的测试用例以及对输入的测试用例的测试步骤进行的配置,并当接收到测试人员触发的保存操作时,将输入的测试用例转换为自动化测试用例,并保存至数据库中。
在一实施例中,所述装置还包括:
生成读取保存模块,被配置为当所述接收分配模块接收被触发的测试任务时,生成一条测试任务执行记录,从所述数据库中读取对应的自动化测试用例的测试步骤,并将读取的测试步骤以预设数据格式保存在所述测试任务执行记录中。
在一实施例中,所述预设数据格式包括JSON格式、XML格式或YAML格式,所述测试任务信息包括对应测试任务的测试任务执行记录标识,所述输入的测试用例包括初始测试用例和/或修改后的测试用例。
在一实施例中,所述装置还包括:
生成接收模块,被配置为基于预设算法生成并保存所述测试用例与所述被分配的测试运行装置的对应关系,并接收所述测试运行装置发送的数据获取请求,所述预设算法包括平均分配算法;
获得封装返回模块,被配置为根据所述生成接收模块接收的所述数据获取请求和生成的所述对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个所述测试文件,并向被分配的测试运行装置返回对应的测试文件。
在一实施例中,所述装置还包括:
第一接收保存模块,被配置为在所述提供接收保存模块接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的关键字和触发的保存操作,并将所述关键字保存至所述数据库中。
在一实施例中,所述提供接收保存模块,被配置为:接收所述测试人员在提供的测试步骤配置页面上输入的关键字及为所述关键字设置的参数。
在一实施例中,所述装置还包括:
第二接收保存模块,被配置为在所述提供接收保存模块接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的测试环境、至少一个环境组件项和触发的保存操作,并将所述测试环境和至少一个环境组件项保存至所述数据库中。
在一实施例中,所述提供接收保存模块,被配置为:接收测试人员在提供的测试步骤配置页面上选择的环境组件项。
在一实施例中,所述发送模块,包括:
查询子模块,被配置为查询所述zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点;
发送子模块,被配置为在所述查询子模块确定所述zookeeper上存在以被分配的测试运行装置标识命名的临时节点时,则向存在临时节点的测试运行装置发送所述测试任务信息。
根据本公开实施例的第四方面,提供一种基于关键字驱动的软件测试运行装置,所述装置包括:
接收获得模块,被配置为接收测试管理装置发送的测试任务信息,根据所述测试任务信息从所述测试管理装置获得对应的测试文件,所述测试任务信息为所述测试管理装置接收被触发的测试任务后发送的,所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
解析调用返回模块,被配置为从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,以使所述测试管理装置根据接收的所述测试结果生成测试报告。
在一实施例中,所述解析调用返回模块,被配置为:
针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过所述关键字函数读取对应的参数或者通过所述关键字函数读取对应的参数和环境组件以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向所述测试管理装置返回当前测试用例的执行结果。
在一实施例中,所述接收获得模块,被配置为:
通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息。
在一实施例中,所述装置还包括:
创建删除模块,在所述接收获得模块通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息之前,在启动时在所述zookeeper上创建一个以对应测试运行装置标识命名的临时节点,在关闭时在所述zookeeper上删除所述以对应测试运行装置标识命名的临时节点,以便所述测试管理装置根据是否存在所述临时节点来确定是否发送所述测试任务信息。
根据本公开实施例的第五方面,提供一种基于关键字驱动的软件测试系统,所述系统包括测试管理装置、通信装置和至少一个测试运行装置,其中:
所述测试管理装置为上述的基于关键字驱动的软件测试管理装置;
所述通信装置,被配置为支持所述测试管理装置和所述测试运行装置之间的信息交互;
所述测试运行装置为上述的基于关键字驱动的软件测试运行装置。
在一实施例中,所述系统还包括与所述测试管理装置相连的数据库;
所述数据库,被配置为保存数据,所述数据包括自动化测试用例,关键字,测试环境、至少一个环境组件项及其所属的环境组件类型中的一项或多项。
根据本公开实施例的第六方面,提供一种基于关键字驱动的软件测试装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
接收被触发的测试任务,为所述被触发的测试任务分配测试运行装置;所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
向被分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到所述测试任务信息时,获得对应的测试文件,从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果;
接收所述测试结果,并根据所述测试结果生成测试报告。
根据本公开实施例的第七方面,提供一种基于关键字驱动的软件测试运行装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
接收测试管理装置发送的测试任务信息,根据所述测试任务信息从所述测试管理装置获得对应的测试文件,所述测试任务信息为所述测试管理装置接收被触发的测试任务后发送的,所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,以使所述测试管理装置根据接收的所述测试结果生成测试报告。
本公开的实施例提供的技术方案可以包括以下有益效果:由于本实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故测试运行装置可根据测试用例的测试步骤中引用的关键字调用对应的关键字函数对不同操作系统的软件进行测试,通用性强。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种基于关键字驱动的软件测试方法的流程图。
图2是根据一示例性实施例示出的另一种基于关键字驱动的软件测试方法的流程图。
图3是根据一示例性实施例示出的又一种基于关键字驱动的软件测试方法的流程图。
图4是根据一示例性实施例示出的再一种基于关键字驱动的软件测试方法的流程图。
图5是根据一示例性实施例示出的一种基于关键字驱动的软件测试管理装置的框图。
图6a是根据一示例性实施例示出的另一种基于关键字驱动的软件测试管理装置的框图。
图6b是根据一示例性实施例示出的另一种基于关键字驱动的软件测试管理装置的框图。
图6c是根据一示例性实施例示出的另一种基于关键字驱动的软件测试管理装置的框图。
图7是根据一示例性实施例示出的一种基于关键字驱动的软件测试运行装置的框图。
图8是根据一示例性实施例示出的另一种基于关键字驱动的软件测试运行装置的框图。
图9a是根据一示例性实施例示出的一种基于关键字驱动的软件测试系统的框图。
图9b是根据一示例性实施例示出的另一种基于关键字驱动的软件测试系统的框图。
图10a是根据一示例性实施例示出的一种基于关键字驱动的软件测试系统执行软件测试的信令流程图。
图10b是根据一示例性实施例示出的一种基于关键字驱动的软件测试系统执行软件测试的过程示意图。
图11是根据一示例性实施例示出的测试报告的界面示意图。
图12是根据一示例性实施例示出的一种适用于基于关键字驱动的软件测试管理装置的框图。
图13是根据一示例性实施例示出的一种适用于基于关键字驱动的软件测试运行装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种基于关键字驱动的软件测试方法的流程图,如图1所示,该基于关键字驱动的软件测试方法从测试管理装置侧进行描述,包括以下步骤S101-S 103:
在步骤S101中,接收被触发的测试任务,为被触发的测试任务分配测试运行装置。
在该实施例中,被触发的测试任务包含测试用例,测试用例的测试步骤中引用预设格式的关键字,预设格式包含关键字命名空间字段,关键字命名空间字段用于支持至少一种操作系统,例如MS Windows、Linux系统等。
由于本实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故引用本实施例关键字的测试用例可以应用于多种操作系统,因此,本实施例的软件测试方法可以用于测试不同操作系统的软件。
测试管理装置在接收被触发的测试任务后,可以根据被触发的测试任务的配置信息为该测试任务分配测试运行装置,例如,配置信息中指定某个测试运行装置执行测试任务,则将指定的测试运行装置作为被分配的测试运行装置,如果配置信息中未指定测试运行装置,则可以根据测试运行装置的负载情况为该测试任务分配测试运行装置。
其中,通过指定测试运行装置可以对依赖本地操作(例如开启或关闭某进程)的软件进行测试。
在步骤S102中,向被分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到测试任务信息时,获得对应的测试文件,并从测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果。
在为该测试任务分配好测试运行装置之后,可以向被分配的测试运行装置发送测试任务信息例如该测试任务对应的测试任务执行记录标识(ID)。被分配的测试运行装置接收到测试任务信息后可以从测试管理装置获得对应的测试文件即自己负责执行的测试文件,并从该测试文件中解析出测试用例,然后根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向测试管理装置返回测试结果。
在步骤S103中,接收测试结果,并根据测试结果生成测试报告。
测试管理装置接收测试运行装置返回的测试结果,并将测试结果记录到对应的测试任务执行记录下,以生成测试报告,供测试人员查询。
上述实施例,通过接收被触发的测试任务,为被触发的测试任务分配测试运行装置,并向被分配的测试运行装置发送测试任务信息,由对应的测试运行装置完成软件测试,并返回测试结果,最后根据测试结果生成测试报告,由于本实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故测试运行装置可根据测试用例的测试步骤中引用的关键字调用对应的关键字函数对不同操作系统的软件进行测试,通用性强。
图2是根据一示例性实施例示出的另一种基于关键字驱动的软件测试方法的流程图,如图2所示,该基于关键字驱动的软件测试方法从测试管理装置侧进行描述,包括:
在步骤S201中,接收测试人员输入的关键字和触发的保存操作,并将关键字保存至数据库中。
在该实施例中,测试人员首先根据软件测试需求设计文本版本的测试用例,然后根据设计好的测试用例归纳各测试步骤的操作,汇总出一个关键字需求表,列出关键字函数名,参数列表,返回的数据类型以及命名空间。同时,根据软件测试需求检查当前的测试运行装置列表,若当前的测试运行装置不满足测试需求例如IP受限等,则部署新的测试运行装置。
之后,根据关键字需求表编写关键字函数,测试完成后分发至各测试运行装置,并根据关键字需求表在测试管理装置中创建关键字命名空间、关键字声明,并指定所属的关键字命名空间。
测试人员在做好这些准备工作后,需要将关键字注册到测试管理装置,而将关键字注册到测试管理装置的过程可以为:测试人员输入关键字,测试管理装置接收测试人员输入的关键字和触发的保存操作,并将关键字保存至数据库中。
另外,测试人员还可以根据软件测试需求归纳被测软件部署信息,汇总出一个环境配置表,并还可以根据环境配置表创建测试环境和所需的环境组件项。然后,测试人员需要将测试环境和所需的环境组件项注册到测试管理装置,注册的过程为:测试管理装置接收测试人员输入的测试环境、至少一个环境组件项及其所属的环境组件类型和触发的保存操作,并将测试环境、至少一个环境组件项及其所属的环境组件类型保存至数据库中。
在步骤S202中,提供测试用例输入界面,接收测试人员在测试用例输入界面上输入的测试用例以及对输入的测试用例的测试步骤进行的配置,并当接收到测试人员触发的保存操作时,将输入的测试用例转换为自动化测试用例,并保存至数据库中。
在该实施例中,测试人员可在测试管理装置提供的测试用例输入界面输入测试用例,这些测试用例的测试步骤是语义化的。然后需要对每个测试步骤进行配置,即针对当前测试步骤,在测试管理装置提供的测试步骤配置页面上输入关键字、指定关键字声明及为关键字设置的参数。另外,若测试人员之前在测试管理装置中注册了测试环境和环境组件项,则在对当前测试步骤进行配置时,需要在该测试步骤配置页面上选择一个环境组件项。在完成对当前步骤的配置后,若测试人员点击了保存操作,则测试管理装置会将文本版本的测试用例的当前测试步骤转换为自动化测试用例的测试步骤,并保存至数据库中,重复上述操作,直至保存所有测试步骤。至此,测试管理装置中可接收多个测试任务的自动化测试用例。
在该实施例中,将测试环境和所需的环境组件项注册到测试管理装置,并通过测试管理对环境组件项进行配置,是为了可以在不同的测试环境下对软件进行测试,即支持多环境测试。
假设,表1为测试人员通过测试用例输入界面输入的文本版本的测试用例,则将表1所示文本版本的测试用例转换成的自动化测试用例如表2所示。
表1 文本版本的测试用例
表2 自动化测试用例
另外,为了方便理解本实施例中提出的名词,下面对这些名词的含义进行详细描述:
(1)关键字,是表示一个或一组动作或行为的描述的标识,在测试管理装置中体现为关键字命名空间、关键字类和关键字声明标识组成的字符串,例如,software.stub::getUserId就是一个关键字,其中,software为关键字命名空间,stub为关键字类名,getUserId为关键字声明。
(2)关键字声明,包括关键字标识和描述,用于注明所支持的参数列表和数据返回格式。其表现形式类似于编程语言的函数声明中函数名及形参和返回的数据类型。一个关键字声明属于且仅属于一个关键字类。
(3)关键字类,用于将一类相同操作对象或相似作用的关键字声明组织在一起。一个关键字类可以包含多个不同的关键字声明。一个关键字类属于且仅属于一个关键字命名空间。
(4)关键字命名空间,以下简称命名空间,是一组完成特定业务操作的虚拟分类,每一个关键字属于且仅属于一个命名空间,关键字命名空间用于表示支持的操作系统(例如MS Windows、Linux等)列表。另外,本装置包含一个特殊的公共命名空间:public,该命名空间默认可被所有测试任务引用,该命名空间预先注册了测试所需的基本断言方法。
(5)关键字函数,存储于测试运行装置的文件中,是关键字的具体逻辑的代码实现。文件按照约定好的规则打包在测试运行装置的函数库中,执行测试时测试运行装置将会根据测试用例指定的关键字调入关键字函数,执行具体测试。实际操作中,关键字声明是按照关键字函数的定义注册至测试管理装置中的,两者一一对应。
(6)测试环境,用于标识被测软件的执行环境,例如开发环境、调试环境、生产环境等。某一个被测软件可包含多个不同的测试环境。某一个测试环境下包含多个不同的环境组件,并且每个环境组件和其所属的环境组件项所对应。
(7)环境组件项,用于声明某个被测软件所需的必要环境组件。一个环境组件项属于且仅属于一个被测软件。一个环境组件项必须指定一个其所属的环境组件类型。某一个被测软件下可包含多个不同的环境组件项。
(8)环境组件类型,用于定义环境组件所需的所有参数列表。环境组件类型为所有软件共享,整个装置可包含多个不同的环境组件类型。
(9)环境组件,用于保存真实的环境组件配置。某一个环境组件属于且仅属于一个测试环境,同时属于且仅属于一个环境组件项。环境组件的配置项是由所属的环境组件项所属的环境组件类型提供的参数列表所确定,配置环境组件时需指定所有参数列表的值,并将其置为可用状态即可完成配置。当且仅当某测试环境下所有的环境组件均为可用状态时,该测试环境的状态为可用。
需要说明的是,本实施例中,测试人员可以通过测试用例输入界面修订测试用例的测试步骤,还可以检索测试用例,查询测试用例修订历史等。
在步骤S203中,当接收被触发的测试任务时,生成一条测试任务执行记录,从数据库中读取对应的自动化测试用例的测试步骤,并将读取的测试步骤以预设数据格式保存在测试任务执行记录中,同时确定被分配的测试运行装置。
在该实施例中,当某个测试任务被触发后,测试管理装置会从数据库中读取自动化测试用例,并将自动化测试用例的测试步骤以预设数据格式保存在测试任务执行记录中。
其中,预设数据格式可以包括但不限于轻量级的数据交换(JSON)格式、可扩展标记语言(XML)格式或另一种标记语言(YAML)格式。
例如,可以将表2所示自动化测试用例的测试步骤转换成JSON格式,需要说明的是,以下仅示意性地提供了“获取一个可用的用户ID”这个步骤的JSON格式:
由此可见,测试人员可以在本实施例提供的测试用例输入界面上编写文本版本的测试用例,当执行测试步骤的保存操作时,测试管理装置会自动将文本版本的测试用例转换为自动化测试用例,然后当所属的测试任务被触发执行时,会根据自动化测试用例自动生成代码,而不需要测试人员编写代码,使用门槛较低,且实现效率高,因此,当软件规模较大即所需要的测试用例数量较多时,测试人员仅需要输入大量的文本版本测试用例即可生成大量代码,从而可以轻松应对大规模软件的测试需求。
在步骤S204中,确定zookeeper上存在以被分配的测试运行装置标识命名的临时节点时,向对应的测试运行装置发送测试任务执行记录ID。
该实施例中,可以通过zookeeper向被分配的测试运行装置发送测试任务执行记录ID,zookeeper具有以下特点:可长时间稳定运行、对外提供服务的网络接口、可承受较大的并发请求、具有可靠的结构化数据存储功能,通过zookeeper发送测试任务执行记录ID,实现效率高。
测试管理装置通过查询zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点来确认被分配的测试运行装置是否在线,若在线,则向其发送测试任务执行记录ID。
在步骤S205中,基于预设算法生成并保存测试用例与被分配的测试运行装置的对应关系,并接收测试运行装置发送的数据获取请求。
其中,预设算法可以为平均分配算法,即将测试用例尽可能平均地分配给被分配的测试运行装置。
假设,当前有4个测试用例,这四个测试用例的ID分别为75、76、77和78,被分配的测试运行装置为测试运行装置1和测试运行装置2,则测试管理装置将标识为75和77的测试用例分配给测试运行装置1,将标识为76和78的测试用例分配给测试运行装置2。
这种分配方式,可以通过多个测试运行装置并行执行软件测试,从而提高测试效率。
测试管理装置向测试运行装置发送测试任务执行记录ID后,测试运行装置可以根据测试任务执行记录ID向测试管理装置发送数据获取请求。
在步骤S206中,根据数据获取请求和对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个测试文件。
测试管理装置可以根据获取请求和对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个测试文件,例如封装为一个JSON格式的测试文件。
在步骤S207中,向测试运行装置发送对应的测试文件,以使对应的测试运行装置根据该测试文件对软件进行测试。
在步骤S208中,接收测试结果,并生成测试报告。
测试人员可以进入测试任务执行记录查看当前测试任务的执行进度,执行状态和测试用例通过率等信息。当测试任务执行完成后,测试人员可以进入测试用例执行记录查看测试用例的每个测试步骤的执行时长、执行结果和执行数据等信息,还可以进入电子邮箱或者测试报告列表,打开刚刚执行完毕的测试任务的测试报告。
由此可见,上述实施例提供的软件测试方法,通过提供的测试用例输入界面将文本版本的测试用例转换为自动化测试用例,然后当所属的测试任务被触发执行时,根据自动化测试用例自动生成代码,使用门槛较低,且可以轻松应对大规模软件的测试需求;通过将测试用例尽可能平均地分配给被分配的测试运行装置,使得多个测试运行装置可以并行执行软件测试,从而提高测试效率;通过将测试环境和所需的环境组件项注册到测试管理装置,并通过测试管理对环境组件项进行配置,可以使测试运行装置在不同的测试环境下对软件进行测试,即支持多环境测试;通过查询被分配的测试运行装置是否在线,并在测试运行装置在线时发送测试任务信息,有效减少了测试运行装置不在线时的测试任务信息发送操作,从而有效减少了测试任务信息的发送次数,提高了测试效率和性能。
图3是根据一示例性实施例示出的又一种基于关键字驱动的软件测试方法的流程图,如图3所示,该方法从测试运行装置侧进行描述,该方法包括:
在步骤S301中,接收测试管理装置发送的测试任务信息,根据测试任务信息从测试管理装置获得对应的测试文件。
测试管理装置发送测试任务信息例如测试任务执行记录ID的过程可参见图1或图2所示实施例的对应部分,此处不赘述。
其中,测试运行装置可通过zookeeper接收测试管理装置发送的测试任务信息,以提高测试效率。
测试运行装置接收测试管理装置发送的测试任务执行记录ID后,可以向测试管理装置发送数据获取请求,测试管理装置根据该数据获取请求和测试用例与被分配的测试运行装置的对应关系,获得该测试运行装置负责执行的测试用例,并将该测试运行装置负责执行的测试用例封装为一个测试文件,返回给该测试运行装置。
在步骤S302中,从测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向测试管理装置返回测试结果,以使测试管理装置根据接收的测试结果生成测试报告。
其中,在图2所示方法实施例中,若仅在测试用例的测试步骤对关键字进行配置,则根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向测试管理装置返回测试结果,可以包括:针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过关键字函数读取对应的参数以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向测试管理装置返回当前测试用例的执行结果。
其中,在图2所示方法实施例中,若在测试用例的测试步骤对关键字和环境组件进行配置,则根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向测试管理装置返回测试结果,可以包括:针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过关键字函数读取对应的参数和环境组件以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向测试管理装置返回当前测试用例的执行结果。
测试管理装置接收测试结果后,可以根据测试结果生成测试报告,供测试人员查询。
上述实施例,通过接收测试管理装置发送的测试任务信息,根据测试任务信息从测试管理装置获得对应的测试文件,并从测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,然后向测试管理装置返回测试结果,以使测试管理装置根据测试结果生成测试报告,由于本实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故测试运行装置可根据测试用例的测试步骤中引用的关键字调用对应的关键字函数对不同操作系统的软件进行测试,通用性强。
图4是根据一示例性实施例示出的再一种基于关键字驱动的软件测试方法的流程图,如图4所示,该方法在S301之前,还可以包括:
在步骤S300中,在启动时在zookeeper上创建一个以对应测试运行装置标识命名的临时节点,在关闭时在zookeeper上删除以对应测试运行装置标识命名的临时节点。
测试运行装置在创建或删除临时节点后,测试管理装置可以通过读取临时节点来获取当前在线的测试运行装置。这样,当有测试任务被触发时,测试管理装置即可通过查询zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点来确认被分配的测试运行装置是否在线来决定是否向被分配的测试运行装置发送测试任务信息。
上述实施例,通过创建或删除临时节点的方式,方便测试管理装置判断被分配的测试运行装置是否在线,从而为是否向被分配的测试运行装置发送测试任务信息提供依据。
与前述基于关键字驱动的软件测试方法实施例相对应,本公开还提供了基于关键字驱动的软件测试管理装置和软件测试运行装置实施例。
图5是根据一示例性实施例示出的一种基于关键字驱动的软件测试管理装置的框图,如图5所示,基于关键字驱动的软件测试管理装置包括:接收分配模块51、发送模块52和接收生成模块53。
接收分配模块51被配置为接收被触发的测试任务,为被触发的测试任务分配测试运行装置;被触发的测试任务包含测试用例,测试用例的测试步骤中引用预设格式的关键字,预设格式包含关键字命名空间字段,关键字命名空间字段用于支持至少一种操作系统。
发送模块52被配置为向接收分配模块51分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到测试任务信息时,获得对应的测试文件,从测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果。
接收生成模块53被配置为接收测试结果,并根据测试结果生成测试报告。
图5所示软件测试管理装置执行软件测试的过程如图1所示,此处不赘述。
上述实施例,通过接收被触发的测试任务,为被触发的测试任务分配测试运行装置,并向被分配的测试运行装置发送测试任务信息,由对应的测试运行装置完成软件测试,并返回测试结果,最后根据测试结果生成测试报告,由于本实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故测试运行装置可根据测试用例的测试步骤中引用的关键字调用对应的关键字函数对不同操作系统的软件进行测试,通用性强。
图6a是根据一示例性实施例示出的另一种基于关键字驱动的软件测试管理装置的框图,如图6a所示,在上述图5所示实施例的基础上,该装置还可包括:
提供接收保存模块54,被配置为提供测试用例输入界面,接收测试人员在测试用例输入界面上输入的测试用例以及对输入的测试用例的测试步骤进行的配置,并当接收到测试人员触发的保存操作时,将输入的测试用例转换为自动化测试用例,并保存至数据库中。
另外,该装置还可包括:生成读取保存模块55,被配置为当接收分配模块接收被触发的测试任务时,生成一条测试任务执行记录,从数据库中读取对应的自动化测试用例的测试步骤,并将读取的测试步骤以预设数据格式保存在测试任务执行记录中。
其中,预设数据格式可以包括但不限于JSON格式、XML格式或YAML格式,测试任务信息包括对应测试任务的测试任务执行记录标识,输入的测试用例可以为初始测试用例,也可以为修改后的测试用例,即可在测试用例输入界面对测试用例的测试步骤进行修改。
另外,装置还可以包括:第一接收保存模块56,被配置为在提供接收保存模块54接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的关键字和触发的保存操作,并将关键字保存至数据库中。此时,提供接收保存模块54可被配置为:接收测试人员在提供的测试步骤配置页面上输入的关键字及为关键字设置的参数。
同样地,该装置还可以包括:第二接收保存模块57,被配置为在提供接收保存模块54接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的测试环境、至少一个环境组件项和触发的保存操作,并将测试环境和至少一个环境组件项保存至数据库中。此时,提供接收保存模块54可被配置为:接收测试人员在提供的测试步骤配置页面上选择的环境组件项。
图6a所示软件测试管理装置执行软件测试的过程可参见图2的对应部分,此处不赘述。
上述实施例,通过提供接收保存模块提供的测试用例输入界面将文本版本的测试用例转换为自动化测试用例,然后通过生成读取保存模块当所属的测试任务被触发执行时,根据自动化测试用例自动生成代码,使用门槛较低,且可以轻松应对大规模软件的测试需求;通过提供接收保存模块将测试环境和所需的环境组件项注册到测试管理装置,并通过测试管理对环境组件项进行配置,可以使测试运行装置在不同的测试环境下对软件进行测试,即支持多环境测试。
图6b是根据一示例性实施例示出的另一种基于关键字驱动的软件测试管理装置的框图,如图6b所示,在上述图5所示实施例的基础上,该装置还可以包括:生成接收模块58和获得封装返回模块59。
生成接收模块58,被配置为基于预设算法生成并保存测试用例与被分配的测试运行装置的对应关系,并接收测试运行装置发送的数据获取请求,预设算法包括平均分配算法。
获得封装返回模块59,被配置为根据生成接收模块58接收的数据获取请求和生成的对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个测试文件,并向被分配的测试运行装置返回对应的测试文件。
其中,数据获取请求为测试运行装置接收发送模块52发送的测试任务信息后生成的。
图6b所示软件测试管理装置执行软件测试的过程可参见图2的对应部分,此处不赘述。
上述实施例,通过生成接收模块将测试用例尽可能平均地分配给被分配的测试运行装置,使得多个测试运行装置可以并行执行软件测试,从而提高测试效率。
图6c是根据一示例性实施例示出的另一种基于关键字驱动的软件测试管理装置的框图,如图6c所示,在上述图5所示实施例的基础上,发送模块52可以被配置为:通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息。
另外,发送模块52可以包括:查询子模块521和发送子模块522。
查询子模块521,被配置为查询zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点。
发送子模块522,被配置为在查询子模块521确定zookeeper上存在以被分配的测试运行装置标识命名的临时节点时,则向存在临时节点的测试运行装置发送测试任务信息。
图6c所示软件测试管理装置执行软件测试的过程可参见图2的对应部分,此处不赘述。
上述实施例,通过查询子模块查询被分配的测试运行装置是否在线,并在测试运行装置在线时,通过发送自模块发送测试任务信息,有效减少了测试运行装置不在线时的测试任务信息发送操作,从而有效减少了测试任务信息的发送次数,提高了测试效率和性能。
关于上述实施例中的装置,其中各个模块、子模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种基于关键字驱动的软件测试运行装置的框图,如图7所示,基于关键字驱动的软件测试运行装置包括:接收获得模块71和解析调用返回模块72。
接收获得模块71被配置为接收测试管理装置发送的测试任务信息,根据测试任务信息从测试管理装置获得对应的测试文件,测试任务信息为测试管理装置接收被触发的测试任务后发送的,被触发的测试任务包含测试用例,测试用例的测试步骤中引用预设格式的关键字,预设格式包含关键字命名空间字段,关键字命名空间字段用于支持至少一种操作系统。
解析调用返回模块72,被配置为从测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向测试管理装置返回测试结果,以使测试管理装置根据接收的测试结果生成测试报告。
其中,解析调用返回模块72可被配置为:针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过关键字函数读取对应的参数或者通过关键字函数读取对应的参数和环境组件以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向测试管理装置返回当前测试用例的执行结果。
图7所示软件测试运行装置执行软件测试的过程如图3所示,此处不赘述。
上述实施例,通过接收获得模块接收测试管理装置发送的测试任务信息,并根据测试任务信息从测试管理装置获得对应的测试文件,通过解析调用返回模块从测试文件中解析出测试用例,并根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,然后向测试管理装置返回测试结果,以使测试管理装置根据测试结果生成测试报告,由于本实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故测试运行装置可根据测试用例的测试步骤中引用的关键字调用对应的关键字函数对不同操作系统的软件进行测试,通用性强。
图8是根据一示例性实施例示出的另一种基于关键字驱动的软件测试运行装置的框图,如图8所示,在上述图7所示实施例的基础上,接收获得模块71可以被配置为:通过zookeeper接收测试管理装置发送的测试任务信息。
另外,该装置还可包括:创建删除模块73,在接收获得模块72通过zookeeper接收测试管理装置发送的测试任务信息之前,在启动时在zookeeper上创建一个以对应测试运行装置标识命名的临时节点,在关闭时在zookeeper上删除以对应测试运行装置标识命名的临时节点,以便测试管理装置根据是否存在临时节点来确定是否发送测试任务信息。
图8所示软件测试运行装置执行软件测试的过程如图4所示,此处不赘述。
上述实施例,通过创建删除模块创建或删除临时节点的方式,方便测试管理装置判断被分配的测试运行装置是否在线,从而为是否向被分配的测试运行装置发送测试任务信息提供依据。
关于上述实施例中的装置,其中各个模块、子模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9a是根据一示例性实施例示出的一种基于关键字驱动的软件测试系统的框图,如图9a所示,该系统包括测试管理装置91、通信装置92和至少一个测试运行装置93,其中:
测试管理装置91被配置为接收被触发的测试任务,为被触发的测试任务分配测试运行装置93,通过通信装置92向被分配的测试运行装置93发送测试任务信息,并根据测试运行装置93返回的测试结果生成测试报告;被触发的测试任务包含测试用例,测试用例的测试步骤中引用预设格式的关键字,预设格式包含关键字命名空间字段,关键字命名空间字段用于支持至少一种操作系统。
通信装置92被配置为支持测试管理装置91和测试运行装置93之间的信息交互。
测试运行装置93被配置为当接收到测试任务信息时,从测试管理装置91获得对应的测试文件,从测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向测试管理装置91返回测试结果。
其中,通信装置可以通过zookeeper实现,也可以通过满足以下特征的服务实现:可长时间稳定运行、对外提供服务的网络接口、可承受较大的并发请求、具有可靠的结构化数据存储功能。满足以下特征的服务可以为关系型数据库。
另外,该系统还包括与测试管理装置91相连的数据库94,如图9b所示,数据库94用于保存各种数据,例如通过测试管理装置91接收的关键字、测试环境、至少一个环境组件项及其所属的环境组件类型和测试用例的测试步骤等。另外,还可以保存通过测试管理装置91对测试用例的测试步骤进行配置的信息。
其中,测试管理装置91的结构和功能可参见图5、图6a、图6b或图6c所示的软件测试管理装置,此处不赘述。测试管理装置93的结构和功能可参见图7或图8所示的软件测试运行装置,此处不赘述。
下面以图10a和图10b为例,详细描述软件测试系统执行软件测试的过程,该实施例以zookeeper作为通信装置,该过程包括:
在步骤S1000中,测试管理装置接收被触发的测试任务,为该测试任务生成一条“未开始”状态的测试任务执行记录,将该测试任务所包含的测试用例信息封装为预设格式的数据串,并将该数据串保存在测试任务执行记录中。
在执行S1000之前,测试管理装置已接收测试人员输入的关键字、测试环境、至少一个环境组件项及其所属的环境组件类型和测试用例的测试步骤等,另外,也通过测试管理装置完成对测试用例的测试步骤的配置。
测试管理装置接收到通过定时任务、人工操作或第三方系统等方式触发的测试任务,并在确认该测试任务状态正确并且该测试任务下有可执行的测试用例后,生成一条“未开始”状态的测试任务执行记录,同时将该测试任务所包含的所有测试用例的所有步骤信息打包为一个预设格式例如JSON格式的数据串,保存在该测试任务执行记录的第一字段例如snapshot字段中。
在步骤S1001中,测试管理装置对所有测试任务执行记录进行扫描,以获得“未开始”状态的测试任务执行记录,为“未开始”状态的测试任务执行记录所属测试任务分配测试运行装置,并将该测试任务的测试用例与测试运行装置的对应关系保存在对应的测试任务执行记录中,同时,将测试任务执行记录的状态更新为“已指派”。
例如,测试管理装置可以通过巡视(Ranger)进程对测试任务执行记录进行扫描,Ranger进程可以将刚才生成的测试任务执行记录取出,读取该测试任务执行记录所属测试任务的配置,发现该测试任务指定采用名称为“testdevice2”的测试运行装置执行测试,由于此处已指定测试运行装置,因此,可以将指定的测试运行装置作为被分配的测试运行装置。若此处未指定测试运行装置,则可以将负载较低的“testdevice3”和“testdevice4”测试运行装置作为被分配的测试运行装置。
另外,当被分配的测试运行装置为多个时,测试管理装置将第一字段例如snapshot字段中的测试用例尽可能平均分配给这多个测试运行装置,以实现多测试运行装置并行执行,同时将测试用例和被分配的测试运行装置的对应关系写入第二字段例如dispatch字段中,并将该测试任务执行记录的状态变更为“已指派”。
在步骤S1002中,测试管理装置确定zookeeper下存在被分配的测试运行装置的临时节点时,则向zookeeper下的临时节点写入测试任务执行记录的标识(ID)。
在步骤S1003中,测试运行装置感知数据变更,并读取变更数据。
在该实施例中,测试运行装置可通过Agent进程对zookeeper下的testdevice2节点建立了监控(watcher)连接,因此,当测试管理装置向zookeeper的节点testdevice2下写入数据后,testdevice2将会感知这次数据变更,并将数据读取出来,即读取测试任务执行记录ID。
在步骤S1004中,测试运行装置根据读取的数据从测试管理装置下载测试文件,该测试文件包含该测试运行装置负责执行的测试用例。
在该实施例中,testdevice2的测试运行装置可通过联络(Agent)进程将获取到的测试任务执行记录ID格式化为一个指向测试管理装置的URL,例如http://platform.example.com/worker/getTestData/{ID}?worker=TestServer-2,然后通过Agent进程向该URL发起数据获取(HTTP GET)请求,测试管理装置接收该请求后,读取对应的测试任务执行记录中的第二字段例如dispatch字段中的对应关系,将testdevice2负责执行的测试用例重组为完整的测试文件,并将该测试任务执行记录的状态变更为“已开始”,然后将测试文件返回给testdevice2的测试运行装置,testdevice2的测试运行装置通过Agent进程接收并保存该测试文件。
在步骤S1005中,测试运行装置对测试文件进行解析后装入内存,迭代每条测试用例中的每个测试步骤,根据测试步骤指定的关键字调用对应的关键字函数,并通过关键字函数读取对应的参数和环境组件以执行测试,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向测试管理装置返回当前测试用例的执行结果。
在该实施例中,测试运行装置的Agent进程可以以下载到的测试文件路径为参数启动一个工作(worker)进程。worker进程会把测试文件全部读取到内存中,逐个执行每个测试用例中的每个测试步骤,每个测试步骤将会调用相应的关键字函数,关键字函数会从内存中读取需要的环境组件配置,以达到连接服务的目的,例如连接数据库操作,即把数据库的地址、端口、测试人员名和密码等数据读取出来,同时,关键字函数会从内存中读取对应的参数来执行软件测试,并将每个步骤执行的结果(包括执行时间,步骤间上下文数据,执行结果等)按照执行顺序保存在一个列表中。若某个测试步骤出现执行失败或异常则会中止本测试用例的执行。
在步骤S1006中,每条测试用例执行完毕或中止后,测试运行装置向测试管理装置反馈执行结果。
执行结果的反馈方式为向一个形如http://platform.example.com/worker/feedback/{ID}的URL发起数据推送(HTTP POST)请求,参数为一个包括测试用例执行信息和测试步骤执行结果列表的JSON字符串。
在步骤S1006中,测试管理装置生成测试报告。
测试管理装置接收到测试用例执行结果后,生成一条测试用例执行记录,然后更新所属测试任务执行记录的相关计数。然后,在确定出“测试用例总数”等于“测试用例已执行数”,则将测试任务执行记录的状态变更为“已完成”,测试任务执行记录的各状态和对应的测试用例计数在测试管理装置上的展示如图11所示。至此,测试任务已执行完毕,下一步将生成测试报告。而测试的进度也会实时展示在测试管理装置中。
通过上述步骤S1000-1007,软件测试系统即可完成软件测试。
由于该软件测试系统中的测试管理装置91的结构和功能与图5、图6a、图6b或图6c所示的软件测试管理装置相同,测试管理装置的结构和功能与图7或图8所示的软件测试运行装置相同,因此,该软件测试系统可以具有图5-图8所有装置的优点。由此可见,由于该软件测试系统实施例的关键字中包含可以支持多种操作系统的关键字命名空间字段,故测试运行装置可根据测试用例的测试步骤中引用的关键字调用对应的关键字函数对不同操作系统的软件进行测试,通用性强;通过提供的测试用例输入界面将文本版本的测试用例转换为自动化测试用例,然后当所属的测试任务被触发执行时,根据自动化测试用例自动生成代码,使用门槛较低,且可以轻松应对大规模软件的测试需求,通用性强;通过将测试用例尽可能平均地分配给被分配的测试运行装置,使得多个测试运行装置可以并行执行软件测试,从而提高测试效率;通过将测试环境和所需的环境组件项注册到测试管理装置,并通过测试管理对环境组件项进行配置,可以使测试运行装置在不同的测试环境下对软件进行测试,即支持多环境测试;通过查询被分配的测试运行装置是否在线,并在测试运行装置在线时发送测试任务信息,有效减少了测试运行装置不在线时的测试任务信息发送操作,从而有效减少了测试任务信息的发送次数,提高了测试效率和性能。
图12是根据一示例性实施例示出的一种适用于基于关键字驱动的软件测试管理装置的框图。例如,装置1200可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图12,装置1200可以包括以下一个或多个组件:处理组件1202,存储器1204,电源组件1206,多媒体组件1208,音频组件1210,输入/输出(I/O)的接口1212,传感器组件1214,以及通信组件1216。
处理组件1202通常控制装置1200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件1202可以包括一个或多个处理器1220来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1202可以包括一个或多个模块,便于处理组件1202和其他组件之间的交互。例如,处理部件1202可以包括多媒体模块,以方便多媒体组件1208和处理组件1202之间的交互。
存储器1204被配置为存储各种类型的数据以支持在设备1200的操作。这些数据的示例包括用于在装置1200上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件1206为装置1200的各种组件提供电力。电力组件1206可以包括电源管理系统,一个或多个电源,及其他与为装置1200生成、管理和分配电力相关联的组件。
多媒体组件1208包括在装置1200和测试人员之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自测试人员的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1208包括一个前置摄像头和/或后置摄像头。当设备1200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1210被配置为输出和/或输入音频信号。例如,音频组件1210包括一个麦克风(MIC),当装置1200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1204或经由通信组件1216发送。在一些实施例中,音频组件1210还包括一个扬声器,用于输出音频信号。
I/O接口1212为处理组件1202和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1214包括一个或多个传感器,用于为装置1200提供各个方面的状态评估。例如,传感器组件1214可以检测到设备1200的打开/关闭状态,组件的相对定位,例如组件为装置1200的显示器和小键盘,传感器组件1214还可以检测装置1200或装置1200一个组件的位置改变,测试人员与装置1200接触的存在或不存在,装置1200方位或加速/减速和装置1200的温度变化。传感器组件1214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1214还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1216被配置为便于装置1200和其他设备之间有线或无线方式的通信。装置1200可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件1216经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信部件1216还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置1200可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1204,上述指令可由装置1200的处理器1220执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图13是根据一示例性实施例示出的一种适用于基于关键字驱动的软件测试运行装置的框图。例如,装置1300可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图13,装置1300可以包括以下一个或多个组件:处理组件1302,存储器1304,电源组件1306,多媒体组件1308,音频组件1310,输入/输出(I/O)的接口1312,传感器组件1314,以及通信组件1316。
处理组件1302通常控制装置1300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件1302可以包括一个或多个处理器1320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1302可以包括一个或多个模块,便于处理组件1302和其他组件之间的交互。例如,处理部件1302可以包括多媒体模块,以方便多媒体组件1308和处理组件1302之间的交互。
存储器1304被配置为存储各种类型的数据以支持在设备1300的操作。这些数据的示例包括用于在装置1300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件1306为装置1300的各种组件提供电力。电力组件1306可以包括电源管理系统,一个或多个电源,及其他与为装置1300生成、管理和分配电力相关联的组件。
多媒体组件1308包括在装置1300和测试人员之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自测试人员的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1308包括一个前置摄像头和/或后置摄像头。当设备1300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1310被配置为输出和/或输入音频信号。例如,音频组件1310包括一个麦克风(MIC),当装置1300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1304或经由通信组件1316发送。在一些实施例中,音频组件1310还包括一个扬声器,用于输出音频信号。
I/O接口1312为处理组件1302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1314包括一个或多个传感器,用于为装置1300提供各个方面的状态评估。例如,传感器组件1314可以检测到设备1300的打开/关闭状态,组件的相对定位,例如组件为装置1300的显示器和小键盘,传感器组件1314还可以检测装置1300或装置1300一个组件的位置改变,测试人员与装置1300接触的存在或不存在,装置1300方位或加速/减速和装置1300的温度变化。传感器组件1314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1316被配置为便于装置1300和其他设备之间有线或无线方式的通信。装置1300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件1316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信部件1316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置1300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1304,上述指令可由装置1300的处理器1320执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (34)
1.一种基于关键字驱动的软件测试方法,其特征在于,所述方法包括:
接收被触发的测试任务,为所述被触发的测试任务分配测试运行装置;所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
向被分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到所述测试任务信息时,获得对应的测试文件,并从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果;
接收所述测试结果,并根据所述测试结果生成测试报告。
2.根据权利要求1所述的基于关键字驱动的软件测试方法,其特征在于,所述向被分配的测试运行装置发送测试任务信息,包括:
通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息。
3.根据权利要求1所述的基于关键字驱动的软件测试方法,其特征在于,所述方法还包括:
提供测试用例输入界面,接收测试人员在所述测试用例输入界面上输入的测试用例以及对输入的测试用例的测试步骤进行的配置,并当接收到测试人员触发的保存操作时,将输入的测试用例转换为自动化测试用例,并保存至数据库中。
4.根据权利要求3所述的基于关键字驱动的软件测试方法,其特征在于,所述方法还包括:
当接收被触发的测试任务时,生成一条测试任务执行记录,从所述数据库中读取对应的自动化测试用例的测试步骤,并将读取的测试步骤以预设数据格式保存在所述测试任务执行记录中。
5.根据权利要求4所述的基于关键字驱动的软件测试方法,其特征在于,所述预设数据格式包括JSON格式、XML格式或YAML格式,所述测试任务信息包括对应测试任务的测试任务执行记录标识,所述输入的测试用例包括初始测试用例和/或修改后的测试用例。
6.根据权利要求1所述的基于关键字驱动的软件测试方法,其特征在于,所述方法还包括:
基于预设算法生成并保存所述测试用例与所述被分配的测试运行装置的对应关系,并接收所述测试运行装置发送的数据获取请求,所述预设算法包括平均分配算法;
根据所述数据获取请求和所述对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个所述测试文件,并向被分配的测试运行装置返回对应的测试文件。
7.根据权利要求3所述的基于关键字驱动的软件测试方法,其特征在于,所述方法还包括:
在所述接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的关键字和触发的保存操作,并将所述关键字保存至所述数据库中。
8.根据权利要求7所述的基于关键字驱动的软件测试方法,其特征在于,所述接收测试人员对输入的测试用例的测试步骤进行的配置,包括:
接收所述测试人员在提供的测试步骤配置页面上输入的关键字及为所述关键字设置的参数。
9.根据权利要求3或8所述的基于关键字驱动的软件测试方法,其特征在于,所述方法还包括:
在所述接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的测试环境、至少一个环境组件项及其所属的环境组件类型和触发的保存操作,并将所述测试环境、至少一个环境组件项及其所属的环境组件类型保存至所述数据库中。
10.根据权利要求9所述的基于关键字驱动的软件测试方法,其特征在于,所述接收测试人员对输入的测试用例的测试步骤进行的配置,还包括:
接收测试人员在提供的测试步骤配置页面上选择的一个环境组件项。
11.根据权利要求2所述的基于关键字驱动的软件测试方法,其特征在于,所述通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息,包括:
查询所述zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点,若存在,则向存在临时节点的测试运行装置发送所述测试任务信息。
12.一种基于关键字驱动的软件测试方法,其特征在于,所述方法包括:
接收测试管理装置发送的测试任务信息,根据所述测试任务信息从所述测试管理装置获得对应的测试文件,所述测试任务信息为所述测试管理装置接收被触发的测试任务后发送的,所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,以使所述测试管理装置根据接收的所述测试结果生成测试报告。
13.根据权利要求12所述的基于关键字驱动的软件测试方法,其特征在于,所述根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,包括:
针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过所述关键字函数读取对应的参数或者通过所述关键字函数读取对应的参数和环境组件以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向所述测试管理装置返回当前测试用例的执行结果。
14.根据权利要求12所述的基于关键字驱动的软件测试方法,其特征在于,所述接收测试管理装置发送的测试任务信息,包括:
通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息。
15.根据权利要求14所述的基于关键字驱动的软件测试方法,其特征在于,在所述通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息之前,所述方法还包括:
在启动时在所述zookeeper上创建一个以对应测试运行装置标识命名的临时节点,在关闭时在所述zookeeper上删除所述以对应测试运行装置标识命名的临时节点,以便所述测试管理装置根据是否存在所述临时节点来确定是否发送所述测试任务信息。
16.一种基于关键字驱动的软件测试管理装置,其特征在于,所述装置包括:
接收分配模块,被配置为接收被触发的测试任务,为所述被触发的测试任务分配测试运行装置;所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
发送模块,被配置为向所述接收分配模块分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到所述测试任务信息时,获得对应的测试文件,从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果;
接收生成模块,被配置为接收所述测试结果,并根据所述测试结果生成测试报告。
17.根据权利要求16所述的基于关键字驱动的软件测试管理装置,其特征在于,所述发送模块,被配置为:
通过分布式服务框架zookeeper向被分配的测试运行装置发送测试任务信息。
18.根据权利要求16所述的基于关键字驱动的软件测试管理装置,其特征在于,所述装置还包括:
提供接收保存模块,被配置为提供测试用例输入界面,接收测试人员在所述测试用例输入界面上输入的测试用例以及对输入的测试用例的测试步骤进行的配置,并当接收到测试人员触发的保存操作时,将输入的测试用例转换为自动化测试用例,并保存至数据库中。
19.根据权利要求18所述的基于关键字驱动的软件测试管理装置,其特征在于,所述装置还包括:
生成读取保存模块,被配置为当所述接收分配模块接收被触发的测试任务时,生成一条测试任务执行记录,从所述数据库中读取对应的自动化测试用例的测试步骤,并将读取的测试步骤以预设数据格式保存在所述测试任务执行记录中。
20.根据权利要求19所述的基于关键字驱动的软件测试管理装置,其特征在于,所述预设数据格式包括JSON格式、XML格式或YAML格式,所述测试任务信息包括对应测试任务的测试任务执行记录标识,所述输入的测试用例包括初始测试用例和/或修改后的测试用例。
21.根据权利要求16所述的基于关键字驱动的软件测试管理装置,其特征在于,所述装置还包括:
生成接收模块,被配置为基于预设算法生成并保存所述测试用例与所述被分配的测试运行装置的对应关系,并接收所述测试运行装置发送的数据获取请求,所述预设算法包括平均分配算法;
获得封装返回模块,被配置为根据所述生成接收模块接收的所述数据获取请求和生成的所述对应关系获得对应测试运行装置负责执行的测试用例,并将每个测试运行装置负责执行的测试用例封装为一个所述测试文件,并向被分配的测试运行装置返回对应的测试文件。
22.根据权利要求18所述的基于关键字驱动的软件测试管理装置,其特征在于,所述装置还包括:
第一接收保存模块,被配置为在所述提供接收保存模块接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的关键字和触发的保存操作,并将所述关键字保存至所述数据库中。
23.根据权利要求22所述的基于关键字驱动的软件测试管理装置,其特征在于,所述提供接收保存模块,被配置为:
接收所述测试人员在提供的测试步骤配置页面上输入的关键字及为所述关键字设置的参数。
24.根据权利要求23所述的基于关键字驱动的软件测试管理装置,其特征在于,所述装置还包括:
第二接收保存模块,被配置为在所述提供接收保存模块接收测试人员对输入的测试用例的测试步骤进行的配置之前,接收测试人员输入的测试环境、至少一个环境组件项和触发的保存操作,并将所述测试环境和至少一个环境组件项保存至所述数据库中。
25.根据权利要求24所述的基于关键字驱动的软件测试管理装置,其特征在于,所述提供接收保存模块,被配置为:接收测试人员在提供的测试步骤配置页面上选择的环境组件项。
26.根据权利要求17所述的基于关键字驱动的软件测试管理装置,其特征在于,所述发送模块,包括:
查询子模块,被配置为查询所述zookeeper上是否存在以被分配的测试运行装置标识命名的临时节点;
发送子模块,被配置为在所述查询子模块确定所述zookeeper上存在以被分配的测试运行装置标识命名的临时节点时,则向存在临时节点的测试运行装置发送所述测试任务信息。
27.一种基于关键字驱动的软件测试运行装置,其特征在于,所述装置包括:
接收获得模块,被配置为接收测试管理装置发送的测试任务信息,根据所述测试任务信息从所述测试管理装置获得对应的测试文件,所述测试任务信息为所述测试管理装置接收被触发的测试任务后发送的,所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
解析调用返回模块,被配置为从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,以使所述测试管理装置根据接收的所述测试结果生成测试报告。
28.根据权利要求27所述的基于关键字驱动的软件测试运行装置,其特征在于,所述解析调用返回模块,被配置为:
针对解析出的每个测试用例的每个测试步骤,根据当前测试步骤包含的关键字调用对应的关键字函数,并通过所述关键字函数读取对应的参数或者通过所述关键字函数读取对应的参数和环境组件以执行测试,重复上述操作,直至完成当前测试用例的所有测试步骤,并按顺序保存当前测试用例的每个测试步骤的执行结果,然后向所述测试管理装置返回当前测试用例的执行结果。
29.根据权利要求27所述的基于关键字驱动的软件测试运行装置,其特征在于,所述接收获得模块,被配置为:
通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息。
30.根据权利要求29所述的基于关键字驱动的软件测试运行装置,其特征在于,所述装置还包括:
创建删除模块,在所述接收获得模块通过分布式服务框架zookeeper接收测试管理装置发送的测试任务信息之前,在启动时在所述zookeeper上创建一个以对应测试运行装置标识命名的临时节点,在关闭时在所述zookeeper上删除所述以对应测试运行装置标识命名的临时节点,以便所述测试管理装置根据是否存在所述临时节点来确定是否发送所述测试任务信息。
31.一种基于关键字驱动的软件测试系统,其特征在于,所述系统包括测试管理装置、通信装置和至少一个测试运行装置,其中:
所述测试管理装置为如权利要求16-26任一权利要求所述的基于关键字驱动的软件测试管理装置;
所述通信装置,被配置为支持所述测试管理装置和所述测试运行装置之间的信息交互;
所述测试运行装置为如权利要求27-30任一权利要求所述的基于关键字驱动的软件测试运行装置。
32.根据权利要求31所述的基于关键字驱动的软件测试系统,其特征在于,所述系统还包括与所述测试管理装置相连的数据库;
所述数据库,被配置为保存数据,所述数据包括自动化测试用例,关键字,测试环境、至少一个环境组件项及其所属的环境组件类型中的一项或多项。
33.一种基于关键字驱动的软件测试管理装置,其特征在于,包括:
处理器;
被配置为存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收被触发的测试任务,为所述被触发的测试任务分配测试运行装置;所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
向被分配的测试运行装置发送测试任务信息,以使对应的测试运行装置在接收到所述测试任务信息时,获得对应的测试文件,从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并返回测试结果;
接收所述测试结果,并根据所述测试结果生成测试报告。
34.一种基于关键字驱动的软件测试运行装置,其特征在于,包括:
处理器;
被配置为存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收测试管理装置发送的测试任务信息,根据所述测试任务信息从所述测试管理装置获得对应的测试文件,所述测试任务信息为所述测试管理装置接收被触发的测试任务后发送的,所述被触发的测试任务包含测试用例,所述测试用例的测试步骤中引用预设格式的关键字,所述预设格式包含关键字命名空间字段,所述关键字命名空间字段用于支持至少一种操作系统;
从所述测试文件中解析出测试用例,根据解析出的测试用例的测试步骤包含的关键字调用对应的关键字函数进行软件测试,并向所述测试管理装置返回测试结果,以使所述测试管理装置根据接收的所述测试结果生成测试报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510424409.0A CN104965790B (zh) | 2015-07-17 | 2015-07-17 | 基于关键字驱动的软件测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510424409.0A CN104965790B (zh) | 2015-07-17 | 2015-07-17 | 基于关键字驱动的软件测试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104965790A true CN104965790A (zh) | 2015-10-07 |
CN104965790B CN104965790B (zh) | 2018-04-27 |
Family
ID=54219825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510424409.0A Active CN104965790B (zh) | 2015-07-17 | 2015-07-17 | 基于关键字驱动的软件测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965790B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630681A (zh) * | 2015-12-28 | 2016-06-01 | 上海瀚之友信息技术服务有限公司 | 一种基于web行为驱动的自动化测试方法及系统 |
CN106649072A (zh) * | 2015-10-28 | 2017-05-10 | 惠州市德赛西威汽车电子股份有限公司 | 对车载终端上的软件的测试验收方法及系统、智能终端、及服务器 |
CN107102945A (zh) * | 2017-04-10 | 2017-08-29 | 丹露成都网络技术有限公司 | 一种基于RedwoodHQ的移动APP的自动化测试方法 |
CN107368406A (zh) * | 2016-05-11 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 测试应用程序的方法、装置及设备 |
CN108845956A (zh) * | 2018-09-20 | 2018-11-20 | 广州酷狗计算机科技有限公司 | 应用程序测试的方法和装置 |
CN108845940A (zh) * | 2018-06-14 | 2018-11-20 | 云南电网有限责任公司信息中心 | 一种企业级信息系统自动化功能测试方法和系统 |
CN108984389A (zh) * | 2018-06-01 | 2018-12-11 | 平安科技(深圳)有限公司 | 一种应用程序测试方法及终端设备 |
CN109165170A (zh) * | 2018-10-16 | 2019-01-08 | 杭州安恒信息技术股份有限公司 | 一种自动化请求测试的方法及系统 |
CN109460368A (zh) * | 2018-11-22 | 2019-03-12 | 北京同有飞骥科技股份有限公司 | 基于语法转换的自动测试方法、装置及存储介质 |
CN109815141A (zh) * | 2019-01-07 | 2019-05-28 | 中国联合网络通信集团有限公司 | 一种测试方法和装置 |
CN109840192A (zh) * | 2017-11-27 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 自动化测试的方法和装置 |
CN110013672A (zh) * | 2019-04-19 | 2019-07-16 | 腾讯科技(成都)有限公司 | 用于机器运行的游戏的自动化测试的方法、设备、装置以及计算机可读存储介质 |
CN110096396A (zh) * | 2019-03-18 | 2019-08-06 | 北京奇艺世纪科技有限公司 | 分组测试的控制方法、分布式应用系统及存储介质 |
CN110704329A (zh) * | 2019-10-30 | 2020-01-17 | 一汽轿车股份有限公司 | 具有电气测试用例自动代码转化功能的系统和转化方法 |
CN110780850A (zh) * | 2019-10-24 | 2020-02-11 | 上海复深蓝软件股份有限公司 | 需求用例辅助生成方法、装置、计算机设备及存储介质 |
CN111045903A (zh) * | 2019-10-25 | 2020-04-21 | 武汉迎风聚智科技有限公司 | 高并发的tpc-e测试方法以及装置 |
CN111190822A (zh) * | 2019-12-26 | 2020-05-22 | 曙光信息产业股份有限公司 | 一种自动化测试分布式系统软件的方法及装置 |
CN111919226A (zh) * | 2018-04-27 | 2020-11-10 | 阿里巴巴集团控股有限公司 | 执行机器学习的装置和方法 |
CN112306883A (zh) * | 2020-11-05 | 2021-02-02 | 北京小米移动软件有限公司 | 软件测试方法、装置及介质 |
CN114860576A (zh) * | 2022-03-31 | 2022-08-05 | 北京达佳互联信息技术有限公司 | 一种测试方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080010539A1 (en) * | 2006-05-16 | 2008-01-10 | Roth Rick R | Software testing |
CN101187894A (zh) * | 2006-11-15 | 2008-05-28 | 中兴通讯股份有限公司 | 一种基于关键字驱动的自动测试方法及其测试系统 |
US20120304157A1 (en) * | 2011-05-23 | 2012-11-29 | International Business Machines Corporation | Method for testing operation of software |
CN102819492A (zh) * | 2012-08-02 | 2012-12-12 | 中山大学 | 一种基于Android的关键字驱动自动化测试框架 |
CN104536897A (zh) * | 2015-01-16 | 2015-04-22 | 安一恒通(北京)科技有限公司 | 基于关键字的自动测试方法及系统 |
CN104778124A (zh) * | 2015-04-13 | 2015-07-15 | 上海新炬网络信息技术有限公司 | 一种软件应用自动化测试方法 |
-
2015
- 2015-07-17 CN CN201510424409.0A patent/CN104965790B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080010539A1 (en) * | 2006-05-16 | 2008-01-10 | Roth Rick R | Software testing |
CN101187894A (zh) * | 2006-11-15 | 2008-05-28 | 中兴通讯股份有限公司 | 一种基于关键字驱动的自动测试方法及其测试系统 |
US20120304157A1 (en) * | 2011-05-23 | 2012-11-29 | International Business Machines Corporation | Method for testing operation of software |
CN102819492A (zh) * | 2012-08-02 | 2012-12-12 | 中山大学 | 一种基于Android的关键字驱动自动化测试框架 |
CN104536897A (zh) * | 2015-01-16 | 2015-04-22 | 安一恒通(北京)科技有限公司 | 基于关键字的自动测试方法及系统 |
CN104778124A (zh) * | 2015-04-13 | 2015-07-15 | 上海新炬网络信息技术有限公司 | 一种软件应用自动化测试方法 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649072A (zh) * | 2015-10-28 | 2017-05-10 | 惠州市德赛西威汽车电子股份有限公司 | 对车载终端上的软件的测试验收方法及系统、智能终端、及服务器 |
CN105630681A (zh) * | 2015-12-28 | 2016-06-01 | 上海瀚之友信息技术服务有限公司 | 一种基于web行为驱动的自动化测试方法及系统 |
CN107368406A (zh) * | 2016-05-11 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 测试应用程序的方法、装置及设备 |
CN107102945A (zh) * | 2017-04-10 | 2017-08-29 | 丹露成都网络技术有限公司 | 一种基于RedwoodHQ的移动APP的自动化测试方法 |
CN109840192B (zh) * | 2017-11-27 | 2022-06-07 | 北京京东尚科信息技术有限公司 | 自动化测试的方法和装置 |
CN109840192A (zh) * | 2017-11-27 | 2019-06-04 | 北京京东尚科信息技术有限公司 | 自动化测试的方法和装置 |
CN111919226A (zh) * | 2018-04-27 | 2020-11-10 | 阿里巴巴集团控股有限公司 | 执行机器学习的装置和方法 |
CN108984389A (zh) * | 2018-06-01 | 2018-12-11 | 平安科技(深圳)有限公司 | 一种应用程序测试方法及终端设备 |
CN108984389B (zh) * | 2018-06-01 | 2021-04-09 | 平安科技(深圳)有限公司 | 一种应用程序测试方法及终端设备 |
CN108845940A (zh) * | 2018-06-14 | 2018-11-20 | 云南电网有限责任公司信息中心 | 一种企业级信息系统自动化功能测试方法和系统 |
CN108845940B (zh) * | 2018-06-14 | 2021-09-07 | 云南电网有限责任公司信息中心 | 一种企业级信息系统自动化功能测试方法和系统 |
CN108845956A (zh) * | 2018-09-20 | 2018-11-20 | 广州酷狗计算机科技有限公司 | 应用程序测试的方法和装置 |
CN109165170B (zh) * | 2018-10-16 | 2022-03-11 | 杭州安恒信息技术股份有限公司 | 一种自动化请求测试的方法及系统 |
CN109165170A (zh) * | 2018-10-16 | 2019-01-08 | 杭州安恒信息技术股份有限公司 | 一种自动化请求测试的方法及系统 |
CN109460368A (zh) * | 2018-11-22 | 2019-03-12 | 北京同有飞骥科技股份有限公司 | 基于语法转换的自动测试方法、装置及存储介质 |
CN109815141A (zh) * | 2019-01-07 | 2019-05-28 | 中国联合网络通信集团有限公司 | 一种测试方法和装置 |
CN109815141B (zh) * | 2019-01-07 | 2022-05-03 | 中国联合网络通信集团有限公司 | 一种测试方法和装置 |
CN110096396A (zh) * | 2019-03-18 | 2019-08-06 | 北京奇艺世纪科技有限公司 | 分组测试的控制方法、分布式应用系统及存储介质 |
CN110096396B (zh) * | 2019-03-18 | 2023-05-23 | 北京奇艺世纪科技有限公司 | 分组测试的控制方法、分布式应用系统及存储介质 |
CN110013672A (zh) * | 2019-04-19 | 2019-07-16 | 腾讯科技(成都)有限公司 | 用于机器运行的游戏的自动化测试的方法、设备、装置以及计算机可读存储介质 |
CN110780850A (zh) * | 2019-10-24 | 2020-02-11 | 上海复深蓝软件股份有限公司 | 需求用例辅助生成方法、装置、计算机设备及存储介质 |
CN111045903A (zh) * | 2019-10-25 | 2020-04-21 | 武汉迎风聚智科技有限公司 | 高并发的tpc-e测试方法以及装置 |
CN110704329A (zh) * | 2019-10-30 | 2020-01-17 | 一汽轿车股份有限公司 | 具有电气测试用例自动代码转化功能的系统和转化方法 |
CN111190822A (zh) * | 2019-12-26 | 2020-05-22 | 曙光信息产业股份有限公司 | 一种自动化测试分布式系统软件的方法及装置 |
CN112306883A (zh) * | 2020-11-05 | 2021-02-02 | 北京小米移动软件有限公司 | 软件测试方法、装置及介质 |
CN114860576A (zh) * | 2022-03-31 | 2022-08-05 | 北京达佳互联信息技术有限公司 | 一种测试方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104965790B (zh) | 2018-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104965790A (zh) | 基于关键字驱动的软件测试方法及系统 | |
CN110941942B (zh) | 电路原理图检查方法、装置及系统 | |
CN113365106B (zh) | 一种多媒体资源生成方法、装置、电子设备及存储介质 | |
CN113422794B (zh) | 流量录制、回放处理方法、装置及电子设备 | |
CN104615534A (zh) | 接口测试方法和装置 | |
CN111930617B (zh) | 基于数据对象化的自动化测试方法及装置 | |
CN105404585A (zh) | 获取代码覆盖率的方法及装置 | |
CN106603667A (zh) | 屏幕信息共享方法及装置 | |
CN105337843A (zh) | 交互系统、方法、客户端及后台服务器 | |
CN105426200A (zh) | 通讯模组固件和插件生成方法及装置 | |
CN111488436B (zh) | 多轮对话模型的生成方法、测试方法、装置及电子设备 | |
CN105224462A (zh) | 控件元素的识别方法和装置 | |
CN112597051B (zh) | 获取测试结果的方法及装置、电子设备和存储介质 | |
WO2020211360A1 (zh) | Mock测试方法、系统、电子设备及计算机非易失性可读存储介质 | |
CN105095081A (zh) | 应用程序的功能测试方法及装置 | |
CN111563151A (zh) | 一种信息采集的方法、会话配置的方法、装置及存储介质 | |
US20120204161A1 (en) | Automated Code Map Generation for an Application Programming Interface of a Programming Language | |
US20180262404A1 (en) | Hypermedia-driven record and playback test framework | |
CN111708824A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115033211A (zh) | 基于策略模式的物品查询方法、装置、设备及存储介质 | |
CN105893249A (zh) | 一种软件测试方法及装置 | |
CN104991857A (zh) | 跟踪调试方法及装置 | |
CN112416751A (zh) | 接口自动化测试的处理方法、装置及存储介质 | |
CN111061855B (zh) | 答复内容的生成方法和装置、在线聊天的处理方法以及电子设备 | |
CN104598834A (zh) | 一种项目信息的显示方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |