一种基于路径自适应技术的业务流测试用例自动生成系统的制作方法

文档序号:17475475发布日期:2019-04-20 06:05阅读:250来源:国知局
一种基于路径自适应技术的业务流测试用例自动生成系统的制作方法

本发明涉及一种软件测试技术,具体为一种基于路径自适应技术的业务流测试用例自动生成系统。



背景技术:

软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。

中国知识产权局于2014年3月26日公开了一种生成状态转换测试用例的方法及装置(201410003501.5)。其主要的技术特征是生成包括系统存在的各个状态和状态转换信息的状态转换表,所述状态转换信息用于指示状态与状态之间是否能够进行转换;依据所述状态转换表生成n-switch状态转换树,并依据所述n-switch状态转换树生成有效的状态转换测试路径;依据所述状态转换表生成无效的状态转换测试路径;通过所述有效的状态转换测试路径和所述无效的状态转换测试路径生成状态转换测试用例集。

该技术虽然解决了依据状态转换表生成n-switch状态转换树及状态转换测试用例集问题,但是n-switch状态转换算法本身存在如下尚待解决的问题:

1.状态转换图同层级存在多个相同的节点时,左边的节点有绝对的优势继续遍历后续状态,使得生成的状态转换序列不够丰富;

2.当需要充分覆盖状态转换路径时,n-switch方法需要复杂的人工分析来指定“深度”完成全面覆盖的要求,用例冗余且设计效率不高。

3.所有路径均采用相同的覆盖强度,不能根据该条路径是否为“核心路径”进行灵活定制测试策略。因此无法均衡投入产出比,做有针对性的高强度测试。

软件测试过程中会涉及复杂的业务数据流转,在业务数据流转的过程中涉及角色、数据、状态变化、触发条件以及流程中是否存在回路等多种要素。这种情况下如何有效覆盖所有业务流程以及相伴随的功能的正确性成为一个比较难以攻克的课题。



技术实现要素:

针对现有技术中软件测试无法均衡投入产出比实现有针对性的高强度测试等不足,本发明要解决的问题是提供一种针对状态转换图中的路径设定不同的覆盖强度及深度,自动识别状态转换序列的遍历路径的基于路径自适应技术的业务流测试用例自动生成系统。

为解决上述技术问题,本发明采用的技术方案是:

本发明一种基于路径自适应技术的业务流测试用例自动生成系统,通过输入两两状态转换的描述,利用算法自动生成所有节点之间的关联关系,自动生成覆盖流程图和精确用例集合,包括以下步骤:

1)绘制状态转换图:从用户需求文档中提炼状态转换图;

2)抽取状态转换矩阵:依据状态转换图中两两状态间的关系、动作、数据以及后续结果指定转换矩阵;

3)设定强、弱路径:依据覆盖策略对状态转换图中路径设置强、弱路径,并指定弱路径深度;

4)生成状态转换树:算法自动生成状态转换树;

5)生成测试用例。

所述覆盖策略采用优化后的n-switch状态覆盖算法,即:

301)将状态转换图的初始状态作为树的根,根为树的第一层;

302)对任意层上的节点,如果该层级上相同状态的节点有多个,则首先按等比例均摊原则计算每个节点下新增的子节点个数,然后从子节点集合中随机选取新增节点;

303)对每一新增节点做如下检查:

如果新增节点对应的状态为状态转换图的终结状态,则标识该节点为叶子节点;

如果新增节点是非终结节点状态,并且已经出现在状态转换树同级或上一级中,则同样标识该节点为叶子节点,不再对其新增节点;

304)据配置的深度,自动判断执行步骤301)、302)后在所有非终结状态叶节点下需增加的子节点层数,以确定遍历分支的终结非叶子节点。

所述覆盖策略采用全路径覆盖算法,即:

311)将状态转换图的初始状态作为树的根,根为树的第一层;

312)对任意层上的节点,从左到右新增有向边指向的另一节点为其子节点;

313)对每一新增节点做如下检查:

如果新增节点对应的状态为状态转换图的终结状态,则标识该节点为叶子节点;

如果新增节点是非终结节点状态,并且在相同的前驱路径序列下后续的状态转换曾经走过,则同样标识该节点为叶子节点,不再对其新增节点;

314)对于全路径覆盖,当路径中存在状态循环情况,即路径中的一个状态通过转换回到之前路径出现过的状态,从而出现无限循环的路径,则通过配置深度来判断执行步骤311)、312)后,在所有非终结状态叶节点下需增加的子节点层数。

所述覆盖策略根据项目的总体投入、质量和周期要求,同时结合两种覆盖策略,即用全路径覆盖强化项目的核心流程,同时以n-switch的覆盖策略覆盖非核心流程,以兼顾质量和效率,具体为:

321)将状态转换图的初始状态作为树的根,根为树的第一层;

322)对任意层上的节点:

如果该层级上相同状态的节点有多个,则首先按等比例均摊原则计算每个节点下新增的子节点个数,然后从子节点集合中随机选取新增节点;

323)对每一新增节点做如下检查:

如果新增节点对应的状态为状态转换图的终结状态,则标识该节点为叶子节点;

如果新增节点是非终结节点状态,判断指向该节点的路径是是否为强路径,如果为强路径,并且在相同的前驱路径序列下后续的状态转换曾经走过,则同样标识该节点为叶子节点,不再对其新增节点;

如果为弱路径,并且已经出现在状态转换树同级或上一级中,则同样标识该节点为叶子节点,不再对其新增节点。

所述对状态转换图中路径设置强、弱路径为:

用户输入两个节点,声明两个节点的状态和动作,完成状态转换的路径名称。

对状态转换图中路径设置强、弱路径为:定义该条路径是强边或弱边。

强边为:连接两个状态的路径为核心路径,在用例设计时需要全路径覆盖的边;

或者,所述弱边为:连接两个状态的路径为非核心路径,在用例设计时仅需要n-switch状态覆盖的边。

对状态转换图中路径设置强、弱路径为:用户输入数据和期望结果,自动生成用例时,系统根据用户输入信息自动填入相应状态的测试数据和期望结果。

自动生成用例包括以下步骤:

系统自动判断用户所输入的所有状态哪些为起始状态;

遍历起始状态展开状态路径遍历,并根据用户设置强弱边信息和n-switch算法逐一判断当前路径的状态是否已经满足结束状态条件,从而形成一条完整路径;

根据上述算法,遍历所有起始状态和该起始状态下的所有路径后,系统收集遍历该场景的所需的所有路径信息;

根据所生成的所有路径信息,系统自动绘制生成状态转换图表,用于需求分析校对和评审;

系统根据每条路径所路过的节点,自动编写生成一条对应的测试用例。

对状态转换图中路径设置强、弱路径为:用户通过配置文件指定回路和弱边覆盖的深度层数。

本发明具有以下有益效果及优点:

1.本发明对n-switch算法进行了优化,解决了如下问题:

1)状态转换图同层级存在多个相同的节点时,采用等比例均摊原则随机选取子节点,使得生成的状态转换序列更加丰富;

2)当需要充分覆盖状态转换路径时,系统自动判断不需复杂的人工分析来指定“深度”;

3)根据该条路径是否为“核心路径”进行灵活定制测试策略。

2.本发明既可以全路径覆盖策略实现所有状态组合的覆盖,避免遗漏,也可根据用户定制化的策略,在设计中可以同时使用全路径覆盖和优化后的n-switch覆盖的灵活组合策略,成功的解决了n-switch覆盖不充分问题和全路径覆盖成本过高的问题,使得现有流程测试方法可以通过策略调整有效提高项目的投入和产出比。

3.本发明提供了自动生成用例的功能,无需人工干预即可根据状态转换的路径,生成特定的测试步骤和相应的测试数据及期望结果,极大的减轻了人工编写用例的成本。

附图说明

图1为本发明测试用例设计及生成系统的流程图;

图2为本发明中的状态转换图;

图3为本发明中的状态转换矩阵;

图4为本发明中的状态转换树;

图5为本发明的最终测试用例;

图6为本发明中的用户输入的状态转换信息图。

具体实施方式

下面结合说明书附图对本发明作进一步阐述。

如图1所示,本发明一种基于路径自适应技术的业务流测试用例自动生成系统,通过输入两两状态转换的描述,利用算法自动生成所有节点之间的关联关系,自动生成覆盖流程图和精确用例集合,包括以下步骤:

1)绘制状态转换图:从用户需求文档中提炼状态转换图;

2)抽取状态转换矩阵:依据状态转换图中两两状态间的关系、动作、数据以及后续结果指定转换矩阵;

3)设定强、弱路径:依据覆盖策略对状态转换图中路径设置强、弱路径,并指定弱路径深度;

4)生成状态转换树:算法自动生成状态转换树;

5)生成测试用例。

步骤3)中,对所有路径进行定义,用户仅需输入两个节点的状态,和完成状态转换的路径名称。指定强边(需要高强度覆盖)和弱边(低强度覆盖)。同时用户也可以输入数据和期望结果,自动生成用例时,用例会提供完成这个步骤时相应的测试数据和期望结果,用户也可以通过配置文件指定回路和弱边覆盖的深度层数,步骤如下:

用户声明两个节点之间的状态,和动作(路径);

定义该条路径是“强边”或“弱边”;

声明数据和期望结果;

可配置的深度层数。

用户在声明状态转换信息时,填入a状态到b状态时的前提条件、测试数据以及期望结果,系统在自动生成用例时,将相应信息写入生成的测试用例中。

本发明提出了“强边”和“弱边”两个概念,其中,强边是指连接两个状态的路径为核心路径,在用例设计时需要全路径覆盖;弱边是指连接两个状态的路径为非核心路径,在用例设计时仅需要n-switch状态覆盖。

定义“强边”和“弱边”两个概念后,就可以根据项目的实际需要,灵活指定强、弱边,以提高项目投入产出比的目的。

本发明提供了三种覆盖策略:①优化后的n-switch状态覆盖②更高标准的全路径覆盖③根据项目的特殊情况和要求,在同一个流程下同时结合两种覆盖策略。用全路径覆盖强化项目的核心流程,同时以n-switch的覆盖策略覆盖非核心流程,达到兼顾质量和效率的目的。

对于覆盖策略①,采用优化后的n-switch状态覆盖算法,即:

301)将状态转换图的初始状态作为树的根,根为树的第一层;

302)对任意层上的节点,如果该层级上相同状态的节点有多个,则首先按等比例均摊原则计算每个节点下新增的子节点个数,然后从子节点集合中随机选取新增节点;

303)对每一新增节点做如下检查:

如果新增节点对应的状态为状态转换图的终结状态,则标识该节点为叶子节点;

如果新增节点是非终结节点状态,并且已经出现在状态转换树同级或上一级中,则同样标识该节点为叶子节点,不再对其新增节点;

304)据配置的深度,自动判断执行步骤301)、302)后在所有非终结状态叶节点下需增加的子节点层数,以确定遍历分支的终结非叶子节点。

对于覆盖策略②,采用更高标准的全路径覆盖算法,即:

311)将状态转换图的初始状态作为树的根,根为树的第一层;

312)对任意层上的节点,从左到右新增有向边指向的另一节点为其子节点;

313)对每一新增节点做如下检查:

如果新增节点对应的状态为状态转换图的终结状态,则标识该节点为叶子节点;

如果新增节点是非终结节点状态,并且在相同的前驱路径序列下后续的状态转换曾经走过,则同样标识该节点为叶子节点,不再对其新增节点;

314)对于全路径覆盖,如图1所示的流程图中存在状态循环情况(如图中标识情况),即路径中的某个状态可以通过转换回到之前路径出现过的状态,从而出现无限循环的路径,因此必须通过配置深度来判断执行步骤311)、312)后,在所有非终结状态叶节点下需增加的子节点层数。对于覆盖策略③,根据项目的特殊情况和要求同时结合两种覆盖策略,即用全路径覆盖强化项目的核心流程,同时以n-switch的覆盖策略覆盖非核心流程,以兼顾质量和效率,具体为:

321)将状态转换图的初始状态作为树的根,根为树的第一层;

322)对任意层上的节点:

如果该层级上相同状态的节点有多个,则首先按等比例均摊原则计算每个节点下新增的子节点个数,然后从子节点集合中随机选取新增节点;

323)对每一新增节点做如下检查:

如果新增节点对应的状态为状态转换图的终结状态,则标识该节点为叶子节点;

如果新增节点是非终结节点状态,判断指向该节点的路径是否为强路径,如果为强路径,并且在相同的前驱路径序列下后续的状态转换曾经走过,则同样标识该节点为叶子节点,不再对其新增节点;

如果为弱路径,并且已经出现在状态转换树同级或上一级中,则同样标识该节点为叶子节点,不再对其新增节点。

步骤4)中,算法自动生成状态转换树如图2~4所示,,系统将根据用户输入自动分析节点和节点的关系,以自适应的方式梳理出满足用户覆盖策略的状态转换图,用户可以根据系统生成的状态转换树图完成检查和审核。图6中标注了所有状态和动作名称,以及强弱边定义。

如图4所示,流程图中标注了起始节点和下一节点,同时标注了动作(路径)名称3、标注了强边。

本发明提供了自动生成用例的功能,用户在前台页面输入状态转换信息(图6)后,系统已经收集到生成用例所需的所有信息(测试数据,期望结果等)。后台系统将展开数据分析步骤如下:

a.系统自动判断用户所输入的所有状态哪些为起始状态;

b.遍历起始状态展开状态路径遍历,并根据用户设置(强弱边信息)和n-switch算法逐一判断当前路径的状态是否已经满足结束状态条件,从而形成一条完整路径;

c.根据上面的算法,遍历所有起始状态和该起始状态下的所有路径后,系统已经收集到遍历该场景的所需的所有路径信息;

d.根据所生成的所有路径信息,系统自动绘制生成状态转换图表(图4),用于需求分析校对和评审;

e.同时系统将根据每条路径所路过的节点,自动编写生成一条对应的测试用例(图5)。

因此用户仅需要输入状态转换信息(图6),系统就会自动生成相应的测试用例。从而达到无需人工干预即可根据状态转换的路径信息,生成特定测试用例的目的,极大的减轻了人工编写用例的成本。

如图5所示即系统自动生成用例的显示页面其中包含步骤序列、操作内容、测试数据以及期望结果。

步骤a中,系统自动判断用户所输入的所有状态哪些为起始状态是:系统将遍历用户的输入状态(图6),当一个状态没有任何一个状态可以到达这个状态时,系统即判定该状态为整个流程的起始状态。

步骤b中,n-switch算法是由tsuns.chow在1978年提出的,他将n-switch定义为程序图中长度为n+1的连续的边或弧线(通常在状态图中表示循环)的序列)。

步骤d中,系统自动绘制生成状态转换图表,是通过合并相同路径节点,并标注状态信息和强弱边信息,最终以html格式输出到前端页面上。

步骤4中,自动编写生成一条对应的测试用例,包含状态转换用例模板,一条转换路径对应生成一条测试用例。路径中每一次状态转换用一个用例步骤进行描述,同时根据用户输入信息向每个步骤中添加相应的测试数据和期望结果(图5)。

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