一种测试用例的生成方法和装置与流程

文档序号:15238014发布日期:2018-08-24 07:56阅读:162来源:国知局

本发明涉及软件测试技术领域,特别是指一种测试用例的生成方法和装置。



背景技术:

在软件工程中的测试用例(testcase)是由测试者用于确定应用或软件系统是否正确工作的一组条件或变量。设计测试用例对于测试编写者来说可以是非常耗时的工作。用于设计测试用例的常见方法是手动编码来准备输入和预期输出,以及做出关于测试框架所提供的功能是否适合所选对象的决定。

为提高测试者的工作效率,目前有一种基于模型的测试(mbt)方法,mbt的一般操作流程为,首先在系统需求或者规约文档的基础上建立某种形式的模型,模型说明了系统所有的潜在行为意图。接下来需要定义测试用例的选择要求,形成测试用例规约;编写算法将其应用于模型之上来生成测试用例。然后在被测系统(sut,systemundertest)环境中真正执行所有测试用例,可以利用测试脚本来自动化执行测试,最终得到测试结果。

虽然,相比于编写测试用例脚本,按照此方法,可以更为便捷的生成测试用例;但此方法遇到的问题是,生成的用例中存在过多冗余用例,导致软件测试执行的代价增加。



技术实现要素:

有鉴于此,本发明的目的在于提出一种测试用例的生成方法和装置,保证测试效率的同时缩减测试用例数量,减小软件测试执行的代价。

基于上述目的本发明提供一种测试用例的生成方法,包括:

输入被测系统的状态转换关系;其中,所述状态转换关系中包括所述系统的各种状态,以及状态间的转换动作;

根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径;

对于每条状态间转换路径,在确定该条状态间转换路径所涉及的状态间的转换动作中的参数是否包含预设的参数组合情况时,筛选出该条状态间转换路径;

将筛选出的状态间转换路径生成对应的测试用例。

其中,所述输入被测系统的状态转换关系,具体包括:

基于转换的模型以图形化的方式输入被测系统的状态转换关系:所述系统的各种状态以圆形节点表示,状态间的转换动作以圆形节点间的弧线表示。

其中,所述遍历算法具体为:广度优先遍历算法或者深度优先遍历算法。

其中,所述预设的参数组合情况具体为:预设的参数配对组合情况。

其中,所述状态间的转换动作包括:逻辑单元token,或由多个逻辑单元token的序列组成的函数;以及

所述将筛选出的状态间转换路径生成对应的测试用例,具体包括:

将所述状态间转换路径所涉及的状态间的转换动作中所包括的token所对应的方法,序列化为可扩展标记语言文件;

利用xml解析器将所述文件生成测试用例。

本发明还提供一种测试用例的生成装置,包括:

状态转换关系输入模块,用于输入被测系统的状态转换关系;其中,所述状态转换关系中包括所述系统的各种状态,以及状态间的转换动作;

路径遍历模块,用于根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径;

参数组合筛选模块,用于对于每条状态间转换路径,在确定该条状态间转换路径所涉及的状态间的转换动作中的参数是否包含预设的参数组合情况时,筛选出该条状态间转换路径;

测试用例生成模块,用于将筛选出的状态间转换路径生成对应的测试用例。

本发明实施例的技术方案中,在根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径后,从中筛选出包含预设的参数组合情况的状态间转换路径;进而,再将筛选出的状态间转换路径生成对应的测试用例。相比于由所有的参数的各种组合来生成测试用例的方法,大大减少了测试用例数量,减小软件测试执行的代价;同时,由于软件中的错误大部分都是由单个参数所导致的,一般最多是由两个参数相互作用而触发,因此,两个参数的组合就筛选出的状态间转换路径所生成的测试用例,足够保证错误发现率,即保证测试效率。

附图说明

图1为本发明实施例提供的一种测试用例的生成方法流程图;

图2为本发明实施例提供的一种系统的状态转换关系的示意图;

图3为本发明实施例提供的一种测试用例的生成装置的内部结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

本发明的发明人对现有方法进行分析,发现mbt在生成测试用例时,通常的理想情况下是把所有可能出现的硬件配置和参数取值都测试一遍;但是,这样就造成的测试用例数量呈指数性爆炸增长,导致软件测试执行的代价增加。然而,本发明的发明人发现,软件中的错误大部分都是由单个参数所导致的,一般最多是由两个参数相互作用而触发,三个或三个以上的情况几乎没有。因此,本发明的技术方案中,采用参数组合方式来生成测试用例,更优地,采用配对组合(pair-wise)参数方式来生成测试用例,组合或配对的参数相互作用生成不同的测试用例。如此,相比于由所有的参数的各种组合来生成测试用例的方法,大大减少了测试用例数量,减小软件测试执行的代价;同时,也可保证错误发现率,即保证测试效率。

下面结合附图详细说明本发明实施例的技术方案。

实施例1

本发明实施例提供的一种测试用例的生成方法,流程如图1所示,包括如下步骤:

s101:输入被测系统的状态转换关系。

基于转换的模型是人们通常最为熟悉的模型类型,它们集中于描述系统在不同状态之间的转换过程。通常是以节点和弧线的形式出现,节点代表系统的状态,弧线代表系统的动作或操作。

有限状态机(fsm,finitestatemachine)是极其重要的一种模型表现形式。例如,图2示出了一种系统的状态转换关系的状态机,包括4个状态,以及6个状态间的转换动作。fsm的数据模型描述了fsm中各个状态和转换动作的详细属性。比如状态名称,转换动作名称等。

本步骤中,可以基于转换的模型以图形化的方式输入被测系统的状态转换关系:以圆形节点表示被测系统的各种状态,以圆形节点间的弧线表示状态间的转换动作。

并且,还可定义状态的相关参数,状态间的转换动作所涉及的参数,状态间的转换动作所包括的逻辑单元(token),或由多个token的序列组成的函数。每个token所对应的方法(或称算法)可封装、存于一个适配器中。

s102:根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径。

本步骤中,根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径;也就是,利用遍历算法寻找状态间的所有可执行路径。

具体,可以利用广度优先遍历算法或者深度优先遍历算法查找状态间转换路径。状态间转换路径包括:至少两个状态,以及状态间的转换动作。例如,在图2所示的状态机中,可找到的状态间转换路径可以包括如下:

状态1经转换动作1转换至状态2、状态2经转换动作2转换至状态3、状态3经转换动作3转换至状态4、、状态4经转换动作4转换至状态1;

状态1经转换动作1转换至状态2、状态2经转换动作6转换至状态1;

状态1经转换动作1转换至状态2、状态2经转换动作5转换至状态4、状态4经转换动作4转换至状态1。

s103:筛选状态间转换路径。

具体地,对于每条状态间转换路径,在确定该条状态间转换路径所涉及的状态间的转换动作中的参数是否包含预设的参数组合情况时,筛选出该条状态间转换路径;否则,丢弃该条状态间转换路径。

由于软件中的错误大部分都是由单个参数所导致,一般最多是由两个参数相互作用而触发的,因此,较佳地,为了大大减少筛选出的状态间转换路径的数量,预设的参数组合情况仅是参数配对组合情况。也就是说,由两个参数组成的参数配对的情况。对于多个参数的组合情况则不列入筛选条件。

更优地,在应用参数组合情况作为筛选条件后,还可结合其它筛选条件,更进一步减少状态间转换路径。比如,限制路径长度,或限制起始状态。

也就是说,进一步筛选出所涉及的状态的数量小于设定值的状态间转换路径;

或者,进一步筛选出起始的状态与预设状态相同的状态间转换路径。

s104:将筛选出的状态间转换路径生成对应的测试用例。

具体地,可以将筛选出的状态间转换路径所涉及的状态间的转换动作中所包括的token所对应的方法(或称算法),序列化为可扩展标记语言(xml,extensiblemarkuplanguage)文件;再利用xml解析器将所述文件生成测试用例。

实施例2

基于同一发明构思,本发明实施例提供的一种测试用例的生成装置,如图3所示,包括:状态转换关系输入模块301、路径遍历模块302、参数组合筛选模块303、测试用例生成模块304。

其中,状态转换关系输入模块301用于输入被测系统的状态转换关系;其中,所述状态转换关系中包括所述系统的各种状态,以及状态间的转换动作;

具体地,状态转换关系输入模块301基于转换的模型以图形化的方式输入被测系统的状态转换关系:所述系统的各种状态以圆形节点表示,状态间的转换动作以圆形节点间的弧线表示。

路径遍历模块302用于根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径。

具体地,路径遍历模块302根据所述系统的状态转换关系,利用广度优先遍历算法或者深度优先遍历算法找到多条状态间转换路径。

参数组合筛选模块303用于对于路径遍历模块302找到的每条状态间转换路径,在确定该条状态间转换路径所涉及的状态间的转换动作中的参数包含预设的参数组合情况时,筛选出该条状态间转换路径。

具体地,参数组合筛选模块303对于每条状态间转换路径,在确定该条状态间转换路径所涉及的状态间的转换动作中的参数是否包含预设的参数配对组合情况时,筛选出该条状态间转换路径。

进一步,参数组合筛选模块303还可用于从筛选出的状态间转换路径中进一步筛选所涉及的状态的数量小于设定值的状态间转换路径;或者,进一步筛选起始的状态与预设状态相同的状态间转换路径。

测试用例生成模块304用于将参数组合筛选模块303筛选出的状态间转换路径生成对应的测试用例。

其中,测试用例生成模块304具体可以包括如下单元:

序列化单元,用于将所述条状态间转换路径所涉及的状态间的转换动作中所包括的token所对应的方法,序列化为可扩展标记语言文件;

解析单元,用于利用xml解析器将所述文件生成测试用例。

本发明实施例的技术方案中,在根据所述系统的状态转换关系,利用遍历算法找到多条状态间转换路径后,从中筛选出包含预设的参数组合情况的状态间转换路径;进而,再将筛选出的状态间转换路径生成对应的测试用例。相比于由所有的参数的各种组合来生成测试用例的方法,大大减少了测试用例数量,减小软件测试执行的代价;同时,由于软件中的错误大部分都是由单个参数所导致的,一般最多是由两个参数相互作用而触发,因此,两个参数的组合就筛选出的状态间转换路径所生成的测试用例,足够保证错误发现率,即保证测试效率。

本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随即存储器)、eprom(erasableprogrammableread-onlymemory,可擦写可编程只读存储器)、eeprom(electricallyerasableprogrammableread-onlymemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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