首页 / 专利库 / 软件 / 软件 / 一种软件应用自动化测试方法

一种软件应用自动化测试方法

阅读:481发布:2021-06-10

专利汇可以提供一种软件应用自动化测试方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 软件 应用自动化测试方法,包括如下步骤:a)获取基于各种自动化测试工具的可复用函数和/或脚本;b)对获取的各种自动化测试工具的脚本和/或函数利用关键字进行映射,并封装成 框架 语言;c)采用所述框架语言编写执行脚本;d)使用分布式执行机制,将所述执行脚本分发到多个测试引擎上执行。本发明提供的软件应用自动化测试方法,通过关键字映射方法,可以快速方便地整合多种主流测试工具软件的函数/脚本,形成直观、形象的框架语言,能够大大降低测试工具、 操作系统 的偶合度,提高测试框架的可复用性,利用分布式执行机制,合理地利用空闲资源,大幅提升测试效率并降低测试 风 险。,下面是一种软件应用自动化测试方法专利的具体信息内容。

1.一种软件应用自动化测试方法,其特征在于,包括如下步骤:
a)获取基于各种自动化测试工具的可复用函数和/或脚本;
b)对获取的各种自动化测试工具的脚本和/或函数利用关键字进行映射,并封装成框架语言;
c)采用所述框架语言编写执行脚本;
d)使用分布式执行机制,将所述执行脚本分发到多个测试引擎上执行;
所述步骤b)的映射过程如下:
抽取各种自动化测试工具的可复用函数/脚本的控件对象、操作命令和命令参数;
将控件对象的操作命令封装成函数,并对应一个框架语言指定关键字的映射;
将各种测试工具的函数/脚本和所述框架语言中的关键字的对应关系保存到映射规则数据库中;所述步骤c)的框架语言采用关键字编写执行脚本,所述步骤d)根据映射规则数据库将框架语言编写的执行脚本转换成指定工具代码,发送到指定执行引擎并执行代码;
所述步骤d)通过分配权重,监控测试引擎的执行状态来利用空闲资源,并按照设定场景次序执行测试案例,所述测试案例由框架语言编写的执行脚本组成;
所述测试案例根据不同属性和设定场景分成具有不同权重的测试套,所述测试案例的分配过程如下:
收集分配的测试引擎个数及配置信息,并检测收集到的测试引擎是否可用;
根据测试套权重分配测试任务给可用的测试引擎,并根据测试任务执行情况实时调整测试引擎的可用状态;
轮询测试引擎可用状态,如果可用则继续分派未执行测试套,直到测试套分派完毕;
所述步骤d)还包括设置重跑次数让测试过程自动重跑,所述重跑过程如下:
记录失败案例及测试套;根据失败案例所属测试套,重新组合失败案例形成新的测试套并分配权重;根据失败测试套的权重分派给测试引擎执行测试。
2.如权利要求1所述的软件应用自动化测试方法,其特征在于,所述步骤d)通过设置代理服务端来检测收集到的测试引擎是否可用,每个测试引擎上设置代理客户端,所述代理客户端监控测试任务的执行状态,执行来自代理服务端的指令,并完成与代理服务端的文件传输。

说明书全文

一种软件应用自动化测试方法

技术领域

[0001] 本发明涉及一种软件测试方法,尤其涉及一种软件应用自动化测试方法。

背景技术

[0002] 随着自动化测试的日益普及,各种自动化测试工具盛行,如何能快速、便捷地实施自动化项目,提高自动化项目的平和质量成了客户的关注焦点。通过对测试技术、经验的累积,得出基于各种自动化测试工具的函数,将通用、个性化和异常处理机制等可复用的函数封装成基础函数集,再按功能组合函数形成测试框架。有了这些测试框架,使测试经验得到传承,提高了开发效率。但不同测试工具、不同平台,甚至不同操作系统上的框架都有很大区别,导致测试工具更新或转换的时候都需要重新开发框架,出现测试资产流失,制约或减缓了测试技术的发展。
[0003] 目前自动化测试框架主要有以下几种:
[0004] 一、基础功能测试框架:自动化测试框架概念萌芽阶段的产物。典型例子包括:初始化测试环境、初始化测试数据、到指定文件位置收集日志等脚本命令。其目的主要是提高测试执行过程的效率和准确性。
[0005] 二、测试工具定制型:自动化测试框架中,最常见、最普遍使用的类型。以某种测试工具为基础,根据被测系统的操作流程做函数封装,按被测试系统使用的语言、代码特性优化测试工具的常用函数,再加以封装,另外,还有部分个性化定制的函数、框架流程、日志输出格式等。
[0006] 三、通用测试框架:为满足测试项目的多元化需求和适应被测系统的技术发展,需要适当利用不同测试工具的优势和权衡测试成本,衍生出一种通用测试框架。通用测试框架通过调用不同测试工具的应用程序接口(API),封装成内部函数。在执行测试时,通用测试框架通常不会启动整个测试工具,而是调用其执行引擎,执行它内部函数解释出来的语句。测试开发人员不需要知道测试工具的编写语言,而是直接使用通用测试框架的函数开发脚本。
[0007] 四、分布式自动化测试框架:随着被测系统的复杂度、功能的多元化发展,需要测试的功能点、模越来越多,但预留测试的时间却越来越短。分布式测试能很好地解决测试时间不足的问题,理论上只要机器资源充沛的情况下,可以无限地增加测试终端,越多终端摊分用例,所需要的时间越少。
[0008] 目前软件应用自动化测试框架有如下特点:工具依赖性强、设计思路多样、功能实现重复、缺乏提升测试效率的方案。在软件应用测试过程中都存在变更迭代频繁、测试时间短、覆盖面广,如何确保软件应用测试质量、提升测试效率、减少投入资源,规避系统上线险,是软件应用自动化测试框架必须面对和完善的问题。

发明内容

[0009] 本发明所要解决的技术问题是提供一种软件应用自动化测试方法,能够大大降低测试工具、操作系统的偶合度,提高测试框架的可复用性,大幅提升测试效率并降低测试风险。
[0010] 本发明为解决上述技术问题而采用的技术方案是提供一种软件应用自动化测试方法,包括如下步骤:a)获取基于各种自动化测试工具的可复用函数和/或脚本;b)对获取的各种自动化测试工具的脚本和/或函数利用关键字进行映射,并封装成框架语言;c)采用所述框架语言编写执行脚本;d)使用分布式执行机制,将所述执行脚本分发到多个测试引擎上执行。
[0011] 上述的软件应用自动化测试方法,其中,所述步骤b)的映射过程如下:抽取各种自动化测试工具的可复用函数/脚本的控件对象、操作命令和命令参数;将控件对象的操作命令封装成函数,并对应一个框架语言指定关键字的映射;将各种测试工具的函数/脚本和所述框架语言中的关键字的对应关系保存到映射规则数据库中。
[0012] 上述的软件应用自动化测试方法,其中,所述步骤c)的框架语言采用关键字编写执行脚本,所述步骤d)根据映射规则数据库将框架语言编写的执行脚本转换成指定工具代码,发送到指定执行引擎并执行代码。
[0013] 上述的软件应用自动化测试方法,其中,所述步骤d)通过分配权重,监控测试引擎的执行状态来利用空闲资源,并按照设定场景次序执行测试案例,所述测试案例由框架语言编写的执行脚本组成。
[0014] 上述的软件应用自动化测试方法,其中,所述测试案例根据不同属性和设定场景分成具有不同权重的测试套,所述测试案例的分配过程如下:收集分配的测试引擎个数及配置信息,并检测收集到的测试引擎是否可用;根据测试套权重分配测试任务给可用的测试引擎,并根据测试任务执行情况实时调整测试引擎的可用状态;轮询测试引擎可用状态,如果可用则继续分派未执行测试套,直到测试套分派完毕。
[0015] 上述的软件应用自动化测试方法,其中,所述步骤d)还包括设置重跑次数让测试过程自动重跑,所述重跑过程如下:记录失败案例及测试套;根据失败案例所属测试套,重新组合失败案例形成新的测试套并分配权重;根据失败测试套的权重分派给测试引擎执行测试。
[0016] 上述的软件应用自动化测试方法,其中,所述步骤d)通过设置代理服务端来检测收集到的测试引擎是否可用,每个测试引擎上设置代理客户端,所述代理客户端监控测试任务的执行状态,执行来自代理服务端的指令,并完成与代理服务端的文件传输。
[0017] 本发明对比现有技术有如下的有益效果:本发明提供的软件应用自动化测试方法,通过关键字映射方法,可以快速方便地整合多种主流测试工具软件的函数/脚本,形成直观、形象的框架语言,能够大大降低测试工具、操作系统的偶合度,提高测试框架的可复用性,利用分布式执行机制,合理地利用空闲资源,大幅提升测试效率并降低测试风险。附图说明
[0018] 图1为本发明软件应用自动化测试框架架构示意图;
[0019] 图2为本发明软件应用自动化测试流程示意图;
[0020] 图3为本发明软件应用自动化测试脚本与关键字映射关系示意图;
[0021] 图4为本发明软件应用自动化测试脚本与关键字映射实现示意图;
[0022] 图5为本发明通过部署代理端传输文件及监控测试任务的执行状态示意图;
[0023] 图6为本发明利用套件设定场景案例权重及执行次序示意图;
[0024] 图7为本发明测试案例分配执行示意图;
[0025] 图8为本发明分布式执行测试任务流程示意图。

具体实施方式

[0026] 下面结合附图和实施例对本发明作进一步的描述。
[0027] 现有的自动化测试框架是一个从无到有、从专一定制到多元化整合,再到效率大幅提升的发展过程;是以累积自动化测试经验,提高测试工具对被测系统适应度,改进自动化测试程度,提高效率和降低测试风险为目标出发的。对被测系统的适应性、测试时间的要求都有很大进步。仔细分析现有的软件应用自动化测试框架及其发展变化,发现如下问题:
[0028] 1)依赖性强。大部分的软件应用自动化测试框架都是基于某种特定的测试工具软件为基础设计,而测试工具软件又必须依赖于指定的操作系统及相关运行环境。这种多重的依赖关系制约了软件应用测试的发展,而软件应用所使用的新技术、新设计却在不断更新,导致测试技术严重滞后于软件开发。
[0029] 2)思路繁多,功能重复。在软件应用测试的需求、测试行业前景的引导下,催生了各种各样的软件应用自动化测试框架。基于不同的出发点和思路下,测试框架的功能多样化,但功能重复难以统一利用,就算是融合几个框架都需要花费大量的人物力去整理资源。
[0030] 3)自动化程度低。尽管根据各自的需求和测试工具软件的技术特点开发出多种多样的测试框架,但框架间缺乏有效的整体设计思路,无法融合在一起使用,更大限度地提升自动化测试效率,造成在测试过程中需要手工干预,连贯各种测试步骤的半自动化局面。
[0031] 4)缺乏提升效率能力。提升测试效率,除了测试框架本身的自动化程度提高外,还需要考虑因应测试需要扩大的时候,自动化测试框架的扩展能力。而现有的测试框架的侧重点都在单机环境下运行,部分有分布式运行能力的框架也只能是将任务分派出去,再手工收集测试执行日志等信息,而且对测试执行人员的技术水平、系统熟悉程度及业务知识全面性存在依赖。
[0032] 为了具有直观、易用的操作方式,以便降低测试人员的入难度,并节省开发时间,测试方法需要具备跨测试工具、跨操作系统和分布式运行三大特性,但是一旦进行跨平台封装后,由于各函数/脚本设计思路不同,功能划分不同,函数间难于直观方便地相互调用。
[0033] 本发明提供的软件应用自动化测试方法,利用“关键字”映射的方式,对各种自动化测试工具的脚本、函数进行映射,封装成框架语言;使用分布式执行机制,将执行脚本分发到多个测试引擎上执行,并通过权重、分配策略、执行状态监控等方式合理地利用空闲资源和按照场景次序执行测试案例;从而达到科学执行、合理分配和节省时间的目的。
[0034] 请参见图1,本发明提供的软件应用自动化测试方法,包括如下步骤:
[0035] 步骤S1:获取基于各种自动化测试工具的可复用函数和/或脚本;
[0036] 步骤S2:对获取的各种自动化测试工具的脚本和/或函数利用关键字进行映射,并封装成框架语言;
[0037] 步骤S3:采用所述框架语言编写执行脚本;
[0038] 步骤S4:使用分布式执行机制,将所述执行脚本分发到多个测试引擎上执行。
[0039] 本发明提供的软件应用自动化测试方法,具备跨测试工具、跨操作系统和分布式运行三大特性,核心功能包括两部分:“关键字”映射、分布式执行。其中,使用了“关键字”映射的测试任务执行方式,这种直观、易用的操作方式大大降低了测试人员的入门难度,还节省了开发,而且测试用例的脚本与业务执行顺序有一一对应的关系,使客户也更直观、形象地理解脚本内容;同时,通过“关键字”的映射,同一套平台语言可以驱动多种主流的测试工具。此外,通过分布式执行机制,可以合理利用测试资源,按设定场景执行测试案例,自动重跑检验功能性问题。
[0040] 请继续参见图2,本发明的软件应用自动化测试框架主要分为两大部分:脚本转换、测试引擎管理。脚本转换包括:“关键字”脚本、“关键字”对“函数”映射规则、各种测试工具的函数。其中“关键字”脚本是指使用平台语言编写的通用脚本;“关键字”对“函数”映射规则是指“关键字”属性与测试工具函数的对应规则;各种测试工具的函数是指针对主流测试工具的语言特性编辑、封装的代码。
[0041] 分布式管理包括:终端监控、任务分派、任务重跑。终端监控包括终端运行状态监控、任务执行状态监控;任务分派是指按照测试任务中测试套的权重分配到指定且空闲的测试引擎,让测试引擎执行测试任务;任务重跑是指当测试任务执行完后,重新执行失败案例。
[0042] 关键字驱动测试(keyword-driven testing),也称为表格驱动测试(table-driven testing)或行动字驱动测试(action-word testing),是一种针对自动化测试的软件测试方法。不同测试工具所使用的开发语言、对象定义方式都不一样。本发明引入关键字驱动技术,使用直观、统一的脚本语法描述对象定义、对象操作方式及参数;再通过映射的方式,将脚本转换成指定测试工具的执行语句。这样可以更直观地体现出每一步操作并与案例相对应,同时提高了可读性,降低了对脚本编写人员技能要求,达到降低使用、维护成本的目的。
[0043] 由于大部分测试工具原脚本的对象操作内容都可以归纳成三部分:控件对象、操作命令和命令参数,“关键字”映射将这三部分抽取出来,将控件对象的操作命令封装成函数,对应一个指定关键字的映射,例如:click对应Function Click(obj)函数。脚本的录入过程近似案例中的操作步骤:在按钮上点击鼠标左键,在输入框中输入文本等;命令参数是指操作的内容,例如:鼠标点击的次数、输入框的输入文本内容等,详情如下表:
[0044]
[0045] 写好“关键字”脚本后,框架将对象、动作和参数三部分分别存放在用例库中。执行脚本时,框架会按照选定测试工具的映射规则,从数据库中提取相应的测试工具代码模板,代入“关键字”脚本,再将转换后的代码放到测试工具执行测试。具体流程如图3所示。
[0046] 图4为本发明软件应用自动化测试脚本与关键字映射实现示意图。
[0047] 请继续参见图4,本发明的“关键字”映射框架的实现分两阶段:
[0048] 1)测试准备阶段
[0049] 针对各种测试工具所使用的语言,分别对应“关键字”的功能编写相应函数,将函数和对应关系保存到映射规则数据库
[0050] 2)测试执行阶段
[0051] 编写“关键字”脚本,选定执行所使用的测试工具,框架按照相应的映射规则转换成指定工具代码,发送到指定执行引擎并执行代码。下面给出一个具体案例效果。
[0052] 一、编写“关键字”对应函数
[0053] 例如:“关键字”脚本中的click操作在测试工具QTP中的映射代码转换过程:
[0054] QTP的映射代码如下:
[0055]
[0056]
[0057] 其中代码参数“obj”代入“关键字”脚本的“对象”参数。
[0058] 二、编写“关键字”脚本
[0059] 编写“关键字”脚本分两步:1、录入对象,2、赋予对象操作动作和参数。例如:在谷歌的搜索栏输入“上海新炬”,再点击搜索这个案例。首先使用对象识别器获取输入框属性(class、id、index等),保存到对象库里,对象定义:
[0060] SearchBox=”class=gsfi,id=lstib,name=q”
[0061] searchBtn=”name=btnK,type=submit”
[0062] 再为每个对象赋予动作,如:在输入框上输入“上海新炬”。生成的”关键字”映射的框架脚本如下:
[0063] Settext,googleHomePage,SearchBox,“上海新炬”
[0064] googleHomePage,searchBtn,click。
[0065] 随着现代系统的需求多元化、多样化,系统实现功能繁多,自动化测试用例积累的数据持续增长,绝大部分毫无依赖关系的用例由于串行运行,测试执行时间达到小时界别,且不易于优化。运行时所需测试引擎资源的抢占互斥,导致不稳定等问题也逐渐扩大。分布式测试执行框架正是解决以上问题,通过分布式执行,可以达到并行运行,提高执行效率的目的;另外,自动化测试框架还具有调度、重跑等机制功能,给用户提供一个相对透明的计算资源池,减少用户对机器运行环境的依赖。
[0066] 本发明包含服务器端的代理控制器及一个可部署在不同系统平台的代理端,通过部署在测试引擎上的代理端传输文件、监控测试任务的执行状态,架构如图5所示。代理端的作用包括:文件传输;执行代理控制器下达的指令。
[0067] 在分布式执行环境中,需要同时控制多个测试引擎执行测试任务,还需要避免资源冲突、合理利用空闲资源。因此,在执行过程中需要设定案例分配逻辑或执行策略。案例分配逻辑包括:
[0068] 测试引擎分配数量。每次执行测试任务前必须最少分配一个测试引擎执行测试任务,一个测试引擎以上采用轮询方式检测状态及分配测试任务;
[0069] 检测测试引擎是否可用。测试引擎状态包括:可用、繁忙,由框架按照测试任务执行状态调整状态,防止测试任务之间产生资源争夺;
[0070] 按套件权重执行次序分发测试任务。测试任务场景业务如果有次序优先级别可使用权重调整任务执行先后,让套件设定场景中有序执行;如图6所示。
[0071] 检测测试任务执行状态,调整测试引擎可用状态。分两种情况:1、测试任务正常完成,调整测试引擎状态为可用;2、测试任务执行异常,或者超出设定的执行时间,则中止测试引擎继续执行,并调整状态为可用。
[0072] 案例分配执行步骤如图7所示,包括如下步骤:1)收集分配的测试引擎个数及配置信息;2)根据收集到的测试引擎配置信息检测其是否可用;3)根据测试套权重分配测试任务;4)根据测试任务执行情况调整测试引擎的可用状态;5)轮询测试引擎可用状态,如果可用则继续分派未执行测试套;6)直到测试套分派完后,结束测试任务。
[0073] 在特殊情况下,由于测试环境问题或是执行顺序引起数据问题等造成的测试案例失败,可以通过设置重跑次数让框架自动重跑,避免非功能性问题导致的案例失败。请参见图8,重跑机制具有以下逻辑:记录失败案例及测试套;根据失败案例所属测试套,重新组合测试套(只包含失败案例);根据失败测试套的权重分派给测试引擎执行测试。
[0074] 综上所述,本发明提供的软件应用自动化测试方法,可以快速方便地整合多种主流测试工具软件的函数/脚本,形成直观、形象的框架语言,能够大大降低测试工具、操作系统的偶合度,提高测试框架的可复用性。具体优点如下:1)测试开发语言更贴近业务语言。以”关键字”映射技术编写的脚本更贴近日常应用软件的操作步骤,能让业务人员更轻松地理解,甚至编写自动化测试脚本,降低人员的投入成本;2)跨平台、跨测试工具。本发明所使用的文件同步、管理技术不局限于操作平台的种类,而且通过映射封装,只需要选择需要采用的测试工具就能直接将框架语言编写的脚本转换成相对应的工具脚本。3)集中管理测试资源。针对分布式测试过程中涉及到的多种测试资源,提供一个统一、便捷的管理模块。只需要进行简单的配置,就可以对资源实施监控、管理。4)大幅提高测试效率。基于各模块间的灵活调用,实现了可扩展、监控、管理、执行全自动化的操控。此外分布式测试技术,可快捷地增加测试资源,利用资源,从而缩减了大量的测试耗时。5)减少对人员依赖。本发明通过对框架语言的简化、操控过程的自动化及灵活的扩展技术,极大地减少了人员数量,降低了对人员素质的要求。
[0075] 虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈