一种自动化测试方法及系统与流程

文档序号:14653602发布日期:2018-06-08 22:31阅读:128来源:国知局
一种自动化测试方法及系统与流程

本申请涉及软件自动化测试技术领域,特别是涉及一种自动化测试方法及系统。



背景技术:

自动化测试是软件测试中的重要环节,自动化测试通常基于开发语言和自动化测试框架来实现。

在自动化测试中,最常见的是Python语言+uniittest测试框架的自动化测试方式,这种自动化测试方式中,自动化用例基于Python语言以function的格式存在,而目前的uniittest测试框架下,通常有两种用例运行的方法:第一种是通过指定测试用例名称来启动用例运行,即:在函数执行的入口中指定测试用例名称,从而将测试用例名称加入到测试框架套件中,然后运行自动化测试。第二种是正则匹配运行测试用例,首先匹配测试类名,如匹配所有test_开头、.py结尾的文件,然后根据测试类名,选择与规定的测试类名相同的文件进行自动化测试。

然而,目前的自动化测试方法中,第一种测试方法需要逐个指定测试用例名称,否则无法运行,这种方法非常不灵活,尤其在多测试模块的运行中,逐个指定测试用例名称非常繁琐,影响测试效率。第二种测试方法必须根据测试类名来进行测试,对测试类名要求比较苛刻,而且不能灵活删选测试类中的方法,因此,这种测试方法也不够灵活,用户体验不高。



技术实现要素:

本申请实施例中提供了一种自动化测试方法及系统,以解决现有技术中自动化测试时对测试用例的调用和选择不够灵活的问题。

为了解决上述技术问题,本申请实施例公开了如下技术方案:

一种自动化测试方法,其特征在于,所述方法包括如下步骤:

获取至少两个测试用例;

采用修饰器的设计模式,对所述测试用例分别添加测试用例标签;

根据测试类型设置运行参数并选择与所述测试类型相匹配的测试用例标签,进行自动化测试。

可选地,获取至少两个测试用例的方法为:采用枚举类型对测试用例进行分类,获取至少两个不同类型的测试用例。

可选地,采用修饰器的设计模式,对所述测试用例分别添加测试用例标签,包括如下步骤:

根据测试类型创建修饰器;

创建设置类;

根据所创建的修饰器,对测试用例分别添加测试用例标签。

可选地,所述测试用例标签中包括自定义标签。

可选地,所述测试用例标签为可删选标签。

可选地,所述测试用例包括:全部测试用例、冒烟测试用例以及模块测试用例。

一种自动化测试系统,其特征在于,所述系统包括:

测试用例获取模块,用于获取至少两个测试用例;

测试用例标签添加模块,用于采用修饰器的设计模式对测试用例分别添加测试用例标签;

测试用例选择模块,用于根据测试类型设置运行参数并选择与测试类型相匹配的测试用例标签,进行自动化测试。

可选地,所述测试用例标签添加模块包括:

修饰器创建单元,用于根据测试类型创建修饰器;

设置类创建单元,用于创建设置类;

测试用例标签添加单元,用于根据所创建的修饰器,对测试用例分别添加测试用例标签。

可选地,所述系统还包括:

标签设置模块,用于将测试用例标签设置为可删选标签。

可选地,所述测试用例包括:全部测试用例、冒烟测试用例以及模块测试用例。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请实施例提供一种自动化测试方法,包括获取至少两个测试用例;采用修饰器的方法,对测试用例分别添加测试用例标签;根据测试类型设置运行参数并选择与测试类型相匹配的测试用例标签,进行自动化测试。本申请首先根据测试类型获取测试用例,然后对测试用例添加测试用例标签,根据测试业务类型设置运行参数并通过灵活选择测试用例标签对不同的测试用例进行自动化测试。本申请实施例能够根据不同的测试用例添加相应标签,使得自动化测试更加灵活,可以有针对性地进行测试,应用灵活。尤其在多模块的运行中,通过指定不同模块可同时运行不同测试,大大提高测试效率。而且该方法对测试用例标签的名称没有严格限制,便于推广使用。

本申请实施例提供一种自动化测试系统,包括测试用例获取模块、测试用例标签添加模块和测试用例选择模块。首先通过测试用例获取模块获取至少两个测试用例,然后通采用修饰器的设计模式,通过测试用例标签添加模块对测试用例分别添加测试用例标签,最后通过测试用例选择模块,根据测试类型设置运行参数并选择与测试类型相应的测试用例标签,进行自动化测试。测试用例标签添加模块能够灵活地添加测试用例,测试用例选择模块能够选择不同的标签进行自动化测试,从而有针对性地进行自动化测试,应用灵活。尤其在多模块的运行中,通过指定不同模块可同时运行不同测试,大大提高测试效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

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

图1为本申请实施例所应用的一种自动化测试方法的流程示意图;

图2为本申请实施例所应用的一种自动化测试系统的结构示意图。

具体实施方式

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

测试用例是将软件测试的行为活动做一个科学化的组织归纳,目的是能够将软件测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一,不同类别的软件,测试用例是不同的。通常,软件工程中的测试用例是一组条件或变量,测试者根据它来确定应用软件或软件系统是否正确工作。本申请以安全类软件的测试用例为例,详细阐述一种自动化测试的方法和系统,当然,本申请中的测试方法和系统并不仅限于安全类软件的自动化测试。

参见图1,图1为本申请实施例所应用的一种自动化测试方法的流程示意图。由图1可知,本申请实施例中的测试方法主要包括如下步骤:

S1:获取至少两个测试用例。

本申请实施例主要通过对测试用例添加测试用例标签,根据测试类型设置运行参数并灵活选择测试用例标签,从而对不同的测试用例进行自动化测试。因此,测试用例至少有两个,才有选择的必要,本申请实施例中测试用例至少有两个。

具体地,本申请实施例中采用枚举类型对测试用例进行分类,获取至少两个不同类型的测试用例。也就是,针对一种业务需求,如安全类测试,将安全类测试作为一个变量,其有几种可能的测试类型,如全部测试、冒烟测试或者模块测试,通过枚举类型将所有可能的测试方法列出,根据某种业务需求的不同测试方法对测试用例进行分类,从而获取至少两个不同类型的测试用例。

进一步地,本申请实施例中根据不同的业务需求有不同的测试用例,例如安全类测试业务中,测试用例可以包括全部测试用例、冒烟测试用例以及模块测试用例。当指定全部测试用例运行时,本方法会对全部测试用例都进行一次自动化测试;指定冒烟测试用例运行时,本方法仅对冒烟测试用例进行自动化测试;指定模块测试用例运行时,即指定某模块中某个测试用例运行,本方法可以具体对指定模块中的某个测试用例进行自动化测试。

采用枚举类型对测试用例进行分类,针对一种测试对象或业务需求,能够涵盖该测试对象的所有可能的常用测试方法,测试方法可选择的类型多,可以根据实际情况灵活选择,有利于提高自动化测试的灵活性。

获取测试用例后,执行步骤S2:采用修饰器的设计模式,对测试用例分别添加测试用例标签。

具体地,步骤S2又包括如下步骤:

S21:根据测试类型创建修饰器。

S22:创建设置类。

S23:根据所创建的修饰器,对测试用例分别添加测试用例标签。

修饰器是程序开发过程中的一种经典设计模式,修饰器模式可以动态地给某个对象添加一些额外的功能,而不会影响从同一个类中派生的其他对象。修饰器模式通常用于日志插入、事务处理等。

本申请实施例中采用修饰器的设计模式,对步骤S1中的测试用例分别添加测试用例标签。通过修饰器模式,将自动化测试标识为指定标签类,以便于在自动化测试中对不同的测试用例通过标签进行选择。在程序设计中,给对象添加某些功能通常采用修饰器模式或继承模式。本申请实施例采用修饰器模式能够动态地增加函数对象,对测试用例的添加非常灵活,且不对同一类中其他测试用例造成影响。而且采用修饰器模式给对象添加某些功能时,能够有效避免继承模式中对象种类呈爆炸式增长的复杂情况。因此,采用修饰器模式,方法步骤简单,便于操作。

本申请实施例中的测试用例标签,除了对应不同测试用例的测试用例标签外,还包括自定义标签,以便随时添加常用测试用例以外的测试用例,作为一种冗余方式,能够进一步增加本申请的灵活性。

添加完毕测试用例标签后,进入步骤S3:根据测试类型设置运行参数并选择与测试类型相匹配的测试用例标签,进行自动化测试。

本申请实施例中的测试用例标签为可删选标签,具体可以在函数执行入口添加标签删选即可。

下面以安全类自动化测试为例,采用pyhton语言来描述本申请实施例中的测试方法:

步骤一,创建枚举类,pyhton语言脚本如下:

步骤二,创建修饰器,pyhton语言脚本如下:

步骤三,创建设置类,pyhton语言脚本如下:

import CaseTag

class setting:

#只运行的用例类型

run_case={CaseTag.SMOKE}

步骤四,对测试用例添加测试用例标签,pyhton语言脚本如下:

步骤五,在函数入口设置标签,选择要运行的用例类型,pyhton语言脚本如下:

if__name__=='__main__':

#setting.run_case={Tag.SMOKECASE}#只运行SMOKECASE的用例

setting.run_case={Tag.ALL}#运行全部测试用例

#setting.run_case={Tag.SELFDEFINE}#只运行标记为SELFDEFINE的用例

runner=TestRunner()

runner.run_test(r"testcase")

通过以上方法,完成了通过设置测试用例标签,指定标签完成指定自动化测试用例执行的过程。

参见图2,图2为本申请实施例所应用的一种自动化测试系统的结构示意图。由图2可知,本申请实施例中的自动化测试系统主要包括测试用例获取模块、测试用例标签添加模块和测试用例选择模块三个部分。其中,测试用例获取模块用于获取至少两个测试用例;测试用例标签添加模块用于采用修饰器的设计模式对测试用例分别添加测试用例标签;测试用例选择模块用于根据测试类型设置运行参数并选择与测试类型相匹配的测试用例标签,进行自动化测试。

其中,测试用例标签添加模块又包括修饰器创建单元、设置类创建单元以及测试用例标签添加单元。修饰器创建单元用于根据测试类型创建修饰器;设置类创建单元用于创建设置类;测试用例标签添加单元用于根据所创建的修饰器,对测试用例分别添加测试用例标签。

进一步地,本申请实施例中的自动化测试系统还包括标签设置模块,标签设置模块用于将测试用例标签设置为可删选标签。

本申请实施例中可以根据不同的业务需求设置不同的测试用例,例如安全类测试业务中,测试用例可以包括全部测试用例、冒烟测试用例以及模块测试用例。当指定全部测试用例运行时,本方法会对全部测试用例都进行一次自动化测试;指定冒烟测试用例运行时,本方法仅对冒烟测试用例进行自动化测试;指定模块测试用例运行时,即指定某模块中某个测试用例运行,本方法可以具体对指定模块中的某个测试用例进行自动化测试。

本申请实施例自动化测试系统中的方法和原理已在图1所示实施例中详细阐述,在此不再赘述。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1