本发明涉及一种软件测试技术,具体为一种基于高耦合自动匹配技术的测试用例设计系统。
背景技术:
软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。
中国知识产权局于2014年1月29日公开了一种组合测试用例生成方法(201310578532.9),其主要的技术特征是读取参数及其可选值量数文件,分别按照随机生成、使用差分进化算法生成、使用贪心算法生成的三种方法,快速高效的生成测试用例,减少组合测试用例的数量,提高软件测试效率。
上述方案虽然解决了将参数进行组合且快速生成用例的问题,但当某个参数非常重要、必须与其他参数进行完全组合,或者某个参数的重要度很低、只需在用例中出现过一次即可时,上述方案则无法根据参数的重要程度有侧重点的进行测试用例生成。
随着软件应用在生活中的普及,软件的质量也越来越受到开发厂商和用户的关注。如何能通过软件测试更多的发现代码中隐藏的缺陷,快速高效的设计出高覆盖、低冗余的测试用例,成为了软件开发测试人员的主要研究课题。
技术实现要素:
针对现有技术中软件测试中的每个参数不处于相同的级别时的不足,本发明要解决的问题是提供一种高耦合自动匹配技术的测试用例设计系统,根据被测系统的业务功能特征灵活配置系统测试路径覆盖参数,以提高测试设计效率、实现测试路径完全覆盖。
为解决上述技术问题,本发明采用的技术方案是:
本发明一种基于高耦合自动匹配技术的测试用例设计系统,包括:测试需求管理模块、测试参数设计模块、参数组合配置模块、测试用例生成模块以及用例手工调整模块,其中:
测试需求管理模块,根据被测试的系统或产品需求规格说明书内容,提取测试需求,并进行测试需求跟踪管理;
测试参数设计模块,输入被测功能的输入输出参数及各参数可能覆盖的合法值、非法值;
参数组合配置模块,划分参数组合级别,配置参数之间的约束关系;
测试用例生成模块,根据参数组合级别和约束关系将参数进行有效组合,自动化生成测试设计用例;
用例手工调整模块,通过手工补充基础信息,将参数按照前提条件、数据准备、执行步骤进行分类排序。
本发明包括以下步骤:
1)测试参数设计:由测试参数设计模块识别测试需求管理模块中被测功能的输入输出参数、划分参数组合级别、描述参数之间的约束关系,并将该过程填写到测试设计模板中;
2)参数组合处理:由参数组合配置模块按照测试参数设计步骤中划分的参数组合级别,将参数和参数值取出,分别存放在“完全组合”、“部分组合”两个数据表中,并将约束条件按照参数的类型分为完全组合内部约束、部分组合内部约束以及共有约束;
3)数据表组合处理:由参数组合配置模块将完全组合、部分组合经过组合处理后的数据表,进行行与行的相互组合拼接;
4)测试用例生成:由测试用例生成模块将经过参数组合处理和数据表组合处理后拼接的数据表组合数据,即为自动化生成的原始测试用例;
5)手工用例调整步骤,即在原始测试用例的基础上进行测试用例的整理,按照参数的特征及实际测试操作习惯进行分类,得到测试用例设计系统的最终测试用例;
6)导入用例管理系统:将测试用例设计系统生成的最终测试用例自动导入测试用例管理系统。
步骤1)测试参数设计包括以下过程:
11)识别被测功能的输入参数:将被测功能视为一个测试对象,将所有与其关联的影响因子作为输入参数,包括:a.被测功能的运行环境;b.被测功能的可运行、不可运行的时间;c.可通过文本录入、点击操作等方式直接输入的参数;d.其他影响被测功能逻辑处理结果的参数。
12)识别被测功能的输出参数:根据系统业务需求和功能实现的逻辑推理关系,将测试对象所有的处理结果导致的期望结果作为输出,包括:a.被测功能的输出值、画面显示;b.被测功能进行的文件读取、写入等动作;c.其他由被测功能输出的值或者动作;
13)划分输入参数组合级别:将输入参数划分为完全组合、部分组合两种类型;
14)描述参数之间的约束关系:通过条件语句的形式,描述参数与参数之间的约束关系。
将输入参数划分为完全组合、部分组合两种类型,依据为:
a.完全组合:输入参数的值的变化,直接影响被测功能的输出结果,或者被识别为需要重点测试、必须保证测试覆盖度的输入参数;
b.部分组合:输入参数的值的变化,不会影响被测功能的输出结果,或者被识别为不需要重点测试的参数。
所述约束关系条件语句为:包含if、then的语句,其间支持=、<>、>、>=、<、<=、in等同类参数相互比较。
所述参数组合处理步骤中,数据表中每一行代表一个参数及其可能的取值,具体格式如下:
<参数名称>:<value1>,<value2>,<value3>,…
其中,完全组合参数经过笛卡尔积和完全覆盖约束过滤处理生成完全组合数据表,部分组合参数经过结对法组合和条件覆盖约束过滤处理生成部分组合数据表。
所述数据表组合处理时,当出现两个数据表中生成的组合行数不一致时,则在行数少的数据表中,随机复制添加行,保持两个数据表中的行数一致时,再进行组合拼接。
本发明具有以下有益效果及优点:
1.本发明针对业务复杂系统的测试路径全面覆盖困难的问题,通过对业务功能的输入、输出参数进行高耦合自动匹配测试设计技术实现,构建一套自动化生成测试用例设计的系统,提高测试设计效率、实现测试路径完全覆盖被测系统。
2.本发明方法中,参与组合的参数级别和组合级别可根据被测系统的特点进行灵活的组合选择,不再受限于已有技术对参数组合级别的一致性要求;完全组合参数和部分组合参数的高耦合自动匹配技术实现,保证了被测系统关键测试路径的完全覆盖和非关键测试路径的条件覆盖的有效结合;大大提升了测试用例设计效率,使复杂业务系统的测试路径完全覆盖高效、可行。
附图说明
图1为本发明系统架构图;
图2为本发明方法中完全组合参数笛卡尔积组合过程图;
图3为本发明中部分组合参数结对法组合过程图;
图4为本发明中部分组合结果处理过程图;
图5为本发明采用的约束条件过滤原理图;
图6为本发明测试用例设计系统流程图;
图7为本发明测试设计模板图;
图8为本发明测试用例整理模板图;
图9为本发明测试设计图示;
图10为本发明测试用例图示。
具体实施方式
下面结合说明书附图对本发明作进一步阐述。
本发明基于高耦合自动匹配技术的测试用例设计系统,其架构如图1所示,主要由测试需求管理模块、测试参数设计模块、参数组合配置模块、测试用例生成模块以及用例手工调整模块构成,后台对接测试用例管理系统。各模块基本功能如下:
测试需求管理模块:根据系统或产品需求规格说明书内容,提取测试需求后在测试需求管理模块进行测试需求跟踪管理;
测试参数设计模块:输入被测功能的输入输出参数、及各参数的可能覆盖的合法值、非法值;
参数组合配置模块:划分参数组合级别,配置参数之间的约束关系;
测试用例生成模块:基于高耦合自动匹配技术,根据参数组合级别和约束关系将参数进行有效组合,自动化生成测试设计用例。
用例手工调整模块:补充基础信息,将参数按照前提、准备、步骤等条件分类排序。
如图6所示,本发明基于高耦合自动匹配技术的测试用例设计系统,包括以下步骤:
1)测试参数设计:由测试参数设计模块识别被测功能的输入输出参数、划分参数组合级别、描述参数之间的约束关系,并将该过程填写到测试设计模板中;
2)参数组合处理:由参数组合配置模块按照测试参数设计步骤中划分的参数组合级别,将参数和参数值取出,分别存放在“完全组合”、“部分组合”两个数据表中,并将约束条件按照参数的类型分为完全组合内部约束、部分组合内部约束以及共有约束;
3)数据表组合处理:由参数组合配置模块将完全组合、部分组合经过组合处理后的数据表,进行行与行的相互组合拼接;
4)测试用例生成:由测试用例生成模块将经过参数组合处理和数据表组合处理后拼接的数据表组合数据,即为自动化生成的原始测试用例。
还具有5)手工用例调整步骤,即在原始测试用例的基础上进行测试用例的整理,按照参数的特征及实际测试操作习惯分类,得到测试用例设计系统的最终测试用例。
步骤1)中,测试参数设计,是识别被测功能的输入输出参数、划分参数组合级别、描述参数之间的约束关系,并将该过程填写到图7所示的测试设计模板中。
11)识别被测功能的输入参数:将被测功能视为一个测试对象,将所有与其关联的影响因子作为输入参数,主要包括:
a.被测功能的运行环境;
b.被测功能的可运行、不可运行的时间;
c.可通过文本录入、点击操作等方式直接输入的参数;
d.其他影响被测功能逻辑处理结果的参数。
12)识别被测功能的输出参数:根据系统业务需求和功能实现的逻辑推理关系,将测试对象所有的处理结果导致的期望结果作为输出。主要包括:
a.被测功能的输出值、画面显示;
b.被测功能进行的文件读取、写入等动作;
c.其他由被测功能输出的值或者动作。
13)划分输入参数组合级别:将输入参数划分为完全组合、部分组合两种类型。组合级别划分的依据如下:
a.完全组合:输入参数的值的变化,会直接影响被测功能的输出结果,或者被识别为需要重点测试、必须保证测试覆盖度的输入参数;
b.部分组合:输入参数的值的变化,不会影响被测功能的输出结果,或者被识别为不需要重点测试的参数。
14)描述参数之间的约束关系:通过条件语句的形式,描述参数与参数之间的约束关系。本发明实现的约束关系条件语句为包含if、then的语句,其间支持=、<>、>、>=、<、<=、in等同类参数相互比较。
以交易员席位撤销委托单业务功能为例,识别该功能的输入参数,包括:交易状态、委托状态、接收回报范围是否本席位、买卖标志、操作;识别输出参数——期望结果;买卖标志不是重点测试对象,将其划分为部分组合,其他参数需要重点关注,均划分为完全组合;由于集合竞价申报状态合约无法参与成交,建立集合竞价申报状态委托单的委托状态不为部分成交的约束同时建立参数与期望结果间的约束,得到图9所示的测试设计。
步骤2)中,参数组合处理,是按照测试设计模板中描述的组合级别,将参数和参数值取出,分别存放在“完全组合”、“部分组合”两个数据表中,并将约束条件按照参数的类型分为完全组合内部约束、部分组合内部约束、共有约束;在数据表中,每一行代表一个参数及其可能的取值,具体格式如下:
<参数名称>:<value1>,<value2>,<value3>,…
其中,完全组合参数经过笛卡尔积和完全覆盖约束过滤处理生成完全组合数据表,部分组合参数经过结对法组合和条件覆盖约束过滤处理生成部分组合数据表。
步骤3)中,数据表组合处理时,当出现两个数据表中生成的组合行数不一致时,则在行数少的数据表中,随机复制添加行,保持两个数据表中的行数一致时,再进行组合拼接。
步骤5)中,由于组合生成的原始测试用例是无序的,为方便测试执行,需要在原始测试用例的基础上进行测试用例的整理,按照参数的特征及实际测试操作习惯分类后,即可得到测试用例设计系统最终的测试用例。
原始测试用例,按照图8所示的测试用例的模板进行整理。整理测试用例的实施方法:
a.填写测试用例的基础信息,主要包括用例id、分类、测试目的等;
b.将组合生成的原始测试用例,按照测试执行过程中的具体操作对参数进行划分。
以交易员席位撤销委托单的用例,填写测试用例基础信息,对参数进行划分,前提条件包括交易状态,执行准备为委托单的委托状态,席位接收回报范围,买卖标志,执行步骤为撤单的具体操作,调整后的用例如图10所示。
最后,步骤6)导入用例管理系统:将测试用例设计系统生成的测试用例自动导入测试用例管理系统。
本发明基于高耦合自动匹配技术的测试用例设计系统根据完全组合、部分组合和约束过滤三个原理实现,其中:
1.完全组合原理
完全组合即通过笛卡尔积来实现对各个参数因子集合的各个参数取值元素进行全排列的过程。假设有n个集合x1,x2,x3,…,xn(n>1),各个集合之间是相互独立且各个集合内的元素个数s>1,则这n个集合的笛卡尔积可表示为:
{(x1,x2,x3,…,xn)|x1∈x1,x2∈x2,x3∈x3,…,xn∈xn}
记为x1×x2×…×xn
例如,集合x1的取值范围为{x11,x12,…,x1n},集合x2的取值范围为{x21,x22,…,x2m},则集合x1与集合x2的笛卡尔积可表示为:
假设有n个集合x1,x2,x3,…,xn(n>1),每个集合有n个元素取值,该n个集合的组合结果可通过n层树形图表示,如图2所示。其中,虚线连接的椭圆形为虚拟的开始节点,记为第0层,第n层中的圆形节点分别对应集合xn的各个参数取值,则从第1层到第n层每条实线完整连接的各个节点即为一种组合结果。
2.部分组合原理
部分组合即通过结对法将参数值进行结对组合,并对组合结果进行过滤。结对法是将一个集合中的一个元素和其余元素分别组合成多个由两个不同元素组合成的子集,并将元素相同的子集进行过滤删除,去除冗余,最后任何两个子集都不相同。结对法原理分成参数结对组合原理和结对结果的过滤处理两部分阐述。
(1)参数结对组合原理:
对于部分组合的参数,采用结对法进行组合,参数集a的结对结果即是由集合a={a1,a2,…,an-1,an}中两个元素组成的全部子集的集合:
t={{a1,a2},…,{a1,an},{a2,a3},…,{a2,an},…{an-1,an}}。
结对过程如图3所示。
对于由三个参数x,y,z,每个参数有三个参数值(x1,x2,x3,y1,y2,y3,z1,z2,z3)的矩阵,每行作为一个参数集合,按照上图的原理进行结对后的结果如下:
(2)结对结果的过滤处理:对于结对矩阵的第ri行的子集,与第ri+1至第rn行的所有子集分别进行对比,若第rj行存在第ri行的某个子集,则第rj行将被标记并被删除,即最后结果集中不存在重复的子集,过程如图4所示。
3.约束过滤原理
约束是指在组合过程中定义的用于维护组合结果适用性的一些规则,通过过滤掉与约束条件冲突的结果来加强组合结果的适用性和实用性。本发明主要通过条件语句的形式,描述参数与参数之间的约束关系,实现的约束关系条件语句为包含if、then的语句,其间支持=、<>、>、>=、<、<=、in等同类参数相互比较。
假设有以下约束条件
在组合生成的结果树中,逐层查找并判断符合以上约束条件的结果,如果不符合约束条件,则将此条结果标记为“条件冲突”,如果符合则继续向下判断其他的约束条件,在全部查找判断完成后,将存在标记的组合结果删除,余下的即为约束过滤后的组合结果。处理过程如图5所示。