测试模板脚本的生成方法及装置与流程

文档序号:17079739发布日期:2019-03-09 00:07阅读:270来源:国知局
本发明实施例涉及计算机
技术领域
:,尤其涉及一种测试模板脚本的生成方法及装置。
背景技术
::随着互联网技术的飞速发展,软件开发的需求越来越多。在软件开发过程中,一般用时最长和最繁琐的过程是软件测试。软件测试的目的,在于以较少的时间和人力,系统地找出软件中潜在的各种错误和缺陷,同时证明软件的功能和性能与软件需求相符合。随着软件开发的数量越来越多,且所开发的软件规模越来越大,在软件开发过程中出现缺陷或错误的机会变得更多。再加上市场对于软件质量的重要性的认识逐渐增强,软件测试在软件项目实施过程中的重要性也日益突出。现有的软件开发模型,一般为迭代开发,在软件迭代过程中,还需要多次回归测试。因此,软件测试是一件十分繁杂的工作。考虑到人工测试过程中,有很多重复的流程,目前主流采用的是利用自动化测试工具进行测试的方法。然而,现有的测试工具的自动化程度较低,大部分仍需要在测试之前通过脚本录入测试步骤,效率低下;而脚本的录入过程仍然是一个复杂、技术水平要求较高的过程。目前,仍没有一种方法能够解决上述问题。技术实现要素:针对现有技术存在的问题,本发明实施例提供一种测试模板脚本的生成方法及装置。本发明实施例提供一种测试模板脚本的生成方法,包括:对待测系统的组件类型和操作类型定义相应的关键字,建立关键字库;用自然语言编写测试用例文档,所述测试用例文档用于描述测试任务的所有步骤;根据预设的tcdl脚本语言语法和关键字库,将所述测试用例文档中的所有步骤转换为脚本语句;创建数据连接池,所述数据连接池中的形参与所述脚本语句中脚本参数相对应,将所述脚本参数替换为对应的形参,获得测试模板脚本。本发明实施例提供一种测试模板脚本的生成装置,包括:构建模块,用于对待测系统的组件类型和操作类型定义相应的关键字,建立关键字库;编译模块,用于用自然语言编写测试用例文档,所述测试用例文档用于描述测试任务的所有步骤;转换模块,用于根据预设的tcdl脚本语言语法和关键字库,将所述测试用例文档中的所有步骤转换为脚本语句;生成模块,用于创建数据连接池,所述数据连接池中的形参与所述脚本语句中脚本参数相对应,将所述脚本参数替换为对应的形参,获得测试模板脚本。本发明实施例提供的测试模板脚本的生成方法及装置,根据tcdl脚本语言编译测试文档,通过以数据连接池的形参代替具体参数,实现测试模板脚本与数据的分离,从而能够在实际运用中通过配置不同的脚本参数,快速生成大量测试用例,降低了软件测试人员使用自动化测试工具的技术要求,大大地提高软件测试的效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例测试模板脚本的生成方法的流程示意图;图2为本发明实施例测试模板脚本的生成装置的结构示意图;图3为本发明实施例提供的电子设备结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。软件行业的产业化发展对软件的质量及其开发效率都提出了较高要求,而软件测试作为软件开发项目管理中软件质量保证的关键,正发挥着越来越重要的作用。自动化测试作为提高软件测试效率的重要手段,也被更多的软件开发者所重视。现有的自动化测试工具,一般需要编程人员去编写能够运行的测试脚本;而本发明提供了一套新的脚本语言tcdl(testcasedescribelanguage,案例描述语言),通过该脚本语言编译测试步骤,经过处理后形成最终的测试模板脚本。通过测试模板脚本的参数设置为数据连接池的形参的方式,实现了测试脚本模板和实际数据的分离。因此,在运用测试脚本模板的实际应用中,可以通过配置不同的数据,经过处理后快速生成大量测试脚本,相较于现有技术更加简单快捷,降低了对于测试人员技术水平的要求,同时也显著地提高了测试效率。应当清楚的是,本文提及的专业技术名词,均为本领域技术人员所理解的通常意义。图1为本发明测试模板脚本的生成方法流程图,如图1所示,包括:s1、对待测系统的组件类型和操作类型定义相应的关键字,建立关键字库。需要说明的是,首先需要对于待测系统中可能出现的组件和操作类型,定义一套关键字,建立关键字库。待测系统可以是ui(userinterface,用户界面)系统或集成系统等等,应当理解的是,本发明对待测系统的类型不作限制。为了便于理解,下文将以ui系统为例。例如,将按钮组件类型定义为关键字button,将输入框组件类型定义为关键字webedit,将标签组件类型定义为关键字lable等;将点击操作定义为关键字click,将输入操作定义为关键字set等。然后将所有关键字集合在一个文件中,形成关键字库。例如对于一个信息管理系统,可以定义webedit(文本输入框)、button(按钮)、label(标签)、set(填写值)、click(点击)等一套关键字。当建立好关键字库后,后续生成测试模板时,可以直接调用关键字库。s2、用自然语言编写测试用例文档,测试用例文档用于描述测试任务的所有步骤。需要说明的是,测试用例文档是指对测试任务的描述。可以用自然语言,将测试任务的步骤描述出来,并按顺序进行罗列。例如,对于信息管理系统登录界面的测试,可以将测试任务用自然语言描述为:“步骤一,在登录界面的用户名输入栏中输入用户名xiaoming;步骤二,在登录界面的密码输入栏中输入密码123456;步骤三,点击登录界面的登录按钮”。s3、根据预设的tcdl脚本语言语法和关键字库,将测试用例文档中的所有步骤转换为脚本语句。需要说明的是,在编写完测试用例文档之后,按照tcdl脚本语言的语法,通过调用关键字库,将测试用例文档中的所有步骤转换为脚本语句。例如,对于测试用例文档中的上述步骤一中“在登录界面的用户名输入栏中输入用户名xiaoming”,按照tcdl脚本语言的语法,用tcdl脚本语言对其进行描述,可以得到对应的脚本语句为:“ui("登录界面").webedit("用户名").set("xiaoming");”。同理,可以得到所有步骤的脚本语句为:“ui("登录界面").webedit("用户名").set("xiaoming");ui("登录界面").webedit("密码").set("123456");ui("登录界面").button("登录").click();”。s4、用于创建数据连接池,数据连接池中的形参与脚本语句中脚本参数相对应,将脚本参数替换为对应的形参,获得测试模板脚本。需要说明的是,可以在脚本语句的基础之上,通过用数据连接池的形参替代脚本参数,以生成测试模板脚本,从而实现脚本与具体测试数据的分离,实现测试的高度自动化。本领域技术人员应当清楚,形参(parameter,形式参数)是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。将脚本语句中的脚本参数替换为对应的形参,从而获得测试模板脚本;其中,形参存储在数据连接池中。例如,对于上述脚本语句,可以用“data.tablecolumn("参数列名")”的方式表示形参,将脚本语句中的脚本参数进行替换,从而得到的测试模板脚本为:“ui("登录界面").webedit("用户名").set(data.tablecolumn("用户名"));ui("登录界面").webedit("密码").set(data.tablecolumn("密码"));ui("登录界面").button("登录").click();#data.tablecolumn("登录");”。其中,用#data.tablecolumn("登录")的形式,对是否点击登录按钮进行参数化标注,也就是说,在数据表格中,“登录”这一列的值将决定在测试时是否点击登录按钮。生成测试模板脚本后,可以将测试模板脚本作为依据,快速生成大量测试用例。在实际应用中,只需要在数据连接池中配置不同的测试数据,与测试模板脚本组合后,便能够快速生成大量的测试用例。根据不同的情况运用测试用例,经过处理、转译,以供相应的测试工具执行。本发明实施例提供的测试模板脚本的生成方法,运用tcdl脚本语言表示测试步骤,通过以数据连接池的形参代替具体参数,实现测试模板脚本与数据的分离,从而能够在实际运用中通过配置不同的脚本参数,快速生成大量测试用例,降低了软件测试人员使用自动化测试工具的技术要求,大大地提高软件测试的效率。在上述实施例的基础上,创建数据连接池,之后还包括:创建数据表格,数据表格用于存储与所述形参对应的实参,相应地,形参记录对应的实参在所述数据表格中的位置。需要说明的是,实参以数据表格的形式进行存储,可以存储在例如数据库中,而形参存储在数据连接池中,表示对应的实参在数据表格中的位置。例如,对于如下脚本语句:“ui("登录界面").webedit("登录名输入框").set(data.tablecolumn("登录名"));”;其中,“data.tablecolumn("登录名")”是一个形参,存储于数据连接池中,代表着数据表格中“登录名”这一列的实参,实参可以是例如“xiaoming”等等。在上述实施例的基础上,获得测试模板脚本,之后还包括:根据所述形参中记录的对应的实参在所述数据表格中的位置,将所述对应的实参替换所述形参,以获得测试脚本。需要说明的是,在获得测试模板脚本后,可以利用测试模板脚本进行测试。在实际应用中,通过在数据表格的相应位置配置相应的数据,可以快速生成大量测试用例;例如,配置各种参数或一些简单的脚本语句,从而根据实际需要获得不同的测试脚本。例如,根据tcdl脚本语言语法,对于“在登录名输入框中输入用户名”的测试用例文档的语句,调用关键字库生成脚本语句为:“ui("登录界面").webedit("登录名输入框").set("xiaoming");”;然后,通过将具体的脚本参数“xiaoming”替换为数据连接池的形参“data.tablecolumn("登录名")”,得到:“ui("登录界面").webedit("登录名输入框").set(data.tablecolumn("登录名"));”;由此,获得了测试模板脚本。在运用测试模板脚本生成测试用例的时候,可以在数据表格的相应位置配置相应的数据,例如,在测试模板脚本对应的“登录名”的位置,配置登录名为“xiaohong”,便能够直接生成测试脚本为:“ui("登录界面").webedit("登录名输入框").set("xiaohong");”。应当理解的是,在实际的应用过程中,可以根据测试的不同需求,对生成的测试模板脚本进行进一步的解析,最终生成测试用例。例如,可以将上述测试脚本处理解析成groovy脚本:“webedit_seleniumimpl.getinstance().locatetestobject("登录名","登录名输入框").set("xiaohong");scriptexecutetools.reporter.log("","在输入框<"+"登录名"+">中输入值:"+"xiaohong");”。在上述实施例的基础上,预设tcdl脚本语言的语法包括:预设tcdl脚本语言的脚本参数类型和语句规则。脚本参数类型包括表达式或随机参数。其中,表达式可以为原子值、变量名、工具类属性、四则运算、字符串、函数调用、括号、逻辑运算符、序列以及字典类型中的一种或多种;表达式可以进行组合或者嵌套。需要说明的是,脚本参数类型包括表达式,表达式可以为以下类型或其的任意组合:原子值、变量名、工具类属性、四则运算、字符串、函数调用、括号、逻辑运算符、序列以及字典等等。其中,原子值可以为字符串常量(包含双引号)、小数、整数或者布尔值;四则运算包括+(加)、-(减)、*(乘)、/(除);逻辑运算符包括and和or。脚本参数类型还包括随机参数,随机参数可以是数据生成器生成的参数。数据生成器可以是自定义的一些工具函数,能够自动生成随机数值、随机字母、当前日期或者一定范围的数值、字母及日期等。在上述实施例的基础上,预设语句规则包括预设语句类型,语句类型包括对象操作类型、直接函数调用类型和工具类静态函数调用类型。需要说明的是,对于对象操作类型,对应的语句规则为:“ui("ui名称").组件类型("组件名称").操作类型("参数");”,例如,“ui("登录界面").webedit("登录名输入框").set("xiaoming");”。对于直接函数调用类型,对应的语句规则为:函数名("参数"),例如:random(10)。对于工具类静态函数调用类型,对应的语句规则为:静态工具名.静态函数名("参数"),例如:“reproter.log("helloworld")”。本发明实施例通过定义了一种用于描述自动化测试步骤的脚本语言,并利用该脚本语言方便快捷地编写测试脚本,然后通过配置不同的数据,达到快速生成大量测试用例的目的,从而能够很大程度地减少软件测试人员的重复工作,降低软件测试人员使用自动化测试工具的技术要求,大大地提高软件测试的效率,具有广阔的应用空间。图2为本发明测试模板脚本的生成装置实施例结构示意图,如图2所示,包括构建模块201、编译模块202、转换模块203和生成模块204,其中:构建模块201用于对待测系统的组件类型和操作类型定义相应的关键字,建立关键字库;编译模块202用于用自然语言编写测试用例文档,测试用例文档用于描述测试任务的所有步骤;转换模块203用于根据预设的tcdl脚本语言语法和关键字库,将测试用例文档中的所有步骤转换为脚本语句;生成模块204用于创建数据连接池,数据连接池中的形参与脚本语句中脚本参数相对应,将脚本参数替换为对应的形参,获得测试模板脚本。需要说明的是,构建模块201对于被测系统中可能出现的组件和操作类型,定义一套关键字,建立关键字库,后续生成测试模板时,可以直接调用关键字库。然后,编译模块202根据测试的需要,编写相应的测试用例文档。可以用自然语言,将需要的自动化测试的步骤描述出来,并按顺序进行罗列。在编写完测试用例文档之后,转换模块203按照tcdl脚本语言的语法,通过调用关键字库,生成脚本语句。在脚本语句的基础之上,生成模块204通过用数据连接池的形参替代脚本参数,以生成测试模板脚本,从而实现脚本与具体测试数据的分离,实现测试的高度自动化。本发明实施例提供的测试模板脚本的生成装置,提供了一种用于描述自动化测试步骤的脚本语言,并根据tcdl脚本语言编译测试文档,通过以数据连接池的形参代替具体参数,实现测试模板脚本与数据的分离,从而能够在实际运用中通过配置不同的脚本参数,快速生成大量测试用例,从而能够很大程度地减少软件测试人员的重复工作,降低软件测试人员使用自动化测试工具的技术要求,大大地提高软件测试的效率。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。举个例子如下:图3示例了一种服务器的实体结构示意图,如图3所示,该服务器可以包括:处理器(processor)310、通信接口(communicationsinterface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:对待测系统的组件类型和操作类型定义相应的关键字,建立关键字库;用自然语言编写测试用例文档,测试用例文档用于描述测试任务的所有步骤;根据预设的tcdl脚本语言语法和关键字库,将测试用例文档中的所有步骤转换为脚本语句;创建数据连接池,数据连接池中的形参与脚本语句中脚本参数相对应,将脚本参数替换为对应的形参,获得测试模板脚本。此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述实施例所提供的测试模板脚本的生成方法,例如包括:对待测系统的组件类型和操作类型定义相应的关键字,建立关键字库;用自然语言编写测试用例文档,测试用例文档用于描述测试任务的所有步骤;根据预设的tcdl脚本语言语法和关键字库,将测试用例文档中的所有步骤转换为脚本语句;创建数据连接池,数据连接池中的形参与脚本语句中脚本参数相对应,将脚本参数替换为对应的形参,获得测试模板脚本。另外,本领域内的技术人员应当理解的是,在本发明的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本发明的说明书中,说明了大量具体细节。然而应当理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1