一种面向对象的类测试数据生成方法

文档序号:9489380阅读:569来源:国知局
一种面向对象的类测试数据生成方法
【技术领域】
[0001] 本发明属于计算机软件测试领域,尤其涉及一种针对面向对象语言的类测试数据 生成方法。
【背景技术】
[0002] 面向对象软件的信息隐蔽、封装性、继承性、多态性和动态绑定等特性提高了软件 的可重用性,使软件开发更快、质量更高,而且软件易于维护、易于修改,通过组装可复用子 系统而产生更大的系统。但是另一方面,它却给软件测试带来了更多的困难。尤其是如何 采用自动化的方法来生成面向对象的测试数据,已成为软件测试者们所面临的挑战。目前 国内针对面向对象的测试数据多采用人工方式或计算机辅助方式生成测试数据,这类测试 数据生成方式无法解决面向对象语言测试数据的封装性、继承性和多态性;这类方法会导 致测试数据生成需要大量时间,测试效率低下;同时对软件测试人员的专业性要求高,还要 求测试人员对测试软件很熟悉;以上两点导致测试效果可信度很低。
[0003] 本发明提供一种面向对象的类测试数据生成方法,该方法主要针对类的封装和继 承两大特性,利用对象抽象存储模型描述和记录类的成员变量在程序运行过程中的数据变 迀,可自动化生成类对象测试数据;且生成的测试数据可以对测试程序逻辑路径进行全覆 盖,符合测试用例等价类划分原则,数据代表性高。综上所述,该面向对象的类测试数据生 成方法可以在一定程度上提高测试数据的生成效率和测试的自动化程度。

【发明内容】

[0004] 本发明的主要目的是在于提供一种面向对象的类测试数据生成方法,该方法能够 按照给定的待测试软件项目,针对被测程序生成最大限度覆盖所有可执行路径的对象测试 数据集合,为具体的软件测试项目提供基础数据,从而提高软件测试的效率与自动化程度。
[0005] 为了达到上述目的,本发明的方法包含如下步骤:
[0006] 步骤一、分析被测程序,获取面向对象语言的类定义信息及继承关系图并构造类 抽象存储模型。
[0007] 类定义信息描述类定义中所确定的逻辑信息,它包含类权限定义信息、类成员变 量定义信息、类成员方法定义信息、类成员方法实现定义信息;
[0008] 类继承关系图是为描述类的继承关系而生成;面对存在单继承和接口实现的语 言,类继承关系图只考虑单继承获得的父类成员对象和成员方法;面对多继承语言,类继承 关系图需要依次考虑其父类成员对象和成员方法。
[0009] 类抽象存储模型的目的是在后期静态符号执行步骤中,精准记录路径的类成员约 束条件。该模型包含以下内容:
[0010] 1.对象地址编号:该地址编号顺序递增,其中包含两个特殊地址编号,空指针地 址编号和野指针地址编号;
[0011] 2.对象类型名称:主要指类名称;
[0012] 3.对象成员变量:主要指类定义中包含的成员变量,包含因多继承导致的隐藏成 员变量。它内容包含变量名称和变量值。如果该成员变量依然为类对象,则该成员变量为 递归定义,其变量值为指向的地址编号;
[0013] 4.对象成员方法的方法摘要信息;
[0014] 5.对象指针标识:标识该对象是否为指针对象;
[0015] 6.对象成员约束集合:该约束集合内容包含两类,一类是赋值约束,另一类是判 断约束;
[0016] 步骤二、依据所述类成员方法函数流程图,对类成员方法调用建立与对象抽象存 储模型的语义映射,生成类成员方法的函数方法信息。
[0017] 方法摘要信息是用来描述类成员方法对类对象其他成员对象和外界对象的影响; 包括但不限于赋值、拷贝、计算;其生成方法输入为类成员模型、函数继承信息、方法参数和 函数流程图,输出为依据不同路径而生成的类成员操作集。
[0018] 步骤三、依据所述待函数流程图描述的测试程序执行逻辑,生成精简后的程序逻 辑执行路径集合。
[0019] 程序逻辑执行路径可以清晰的描述程序执行逻辑,它采用程序切片的方法生成; 具体解释为:将函数流程图中结构化语句切分为语句基本单元,由语句基本单元组成函数 流程图节点,采用图遍历方法遍历函数流程图获得程序逻辑路径集合。
[0020] 步骤四、以所述程序逻辑路径为输入,进行静态符号执行操作,收集类成员约束 集。
[0021] 静态符号执行方法,是指在不执行程序的前提下,用符号值表示程序变量的值,然 后模拟程序执行来进行相关分析的技术。在类测试数据生成方法中,它以对象抽象存储模 型为辅助,以程序逻辑路径为输入,依据方法摘要信息识别程序逻辑路径中语法单元的语 义内容,并将语义内容作为约束记录在所述对象抽象存储模型中;由对象抽象存储表收集 类成员约束信息。
[0022] 步骤五、通过约束求解器求解所述类成员约束集,生成类成员可能值;并调用特定 构造方法,生成符合可执行所述函数逻辑路径的类测试数据。
[0023] 约束求解器是一种满足性问题的求解器,它可得到该约束集有解和无解两种情 况。有解情况下,它会给出一组符合约束的解;无解情况证明该程序本条路径在逻辑上不成 立。所述特定构造方法采用递归设计,会覆盖类及其所有父类,目的是为测试数据组装提供 通路。
[0024] 本发明与现有技术相比的优点在于:
[0025] (1)本发明依赖程序逻辑路径进行符号执行,保证后期生成的类测试数据符合测 试数据等价类划分原则中的路径划分方式,与现有的测试数据生成方法相比,生成的类测 试数据更加具有代表性;
[0026] (2)本发明采用对象抽象存储模型来记录类对象的状态变迀,可以更加全面地保 留路径执行过程中的各个中间状态,与现有的测试数据生成方法相比,生成的类测试数据 内部信息更加完善;
[0027] (3)本发明采用对类成员方法抽取方法摘要信息,描述类成员方法操作的语义映 射,使静态符号符号执行操作能够更加快速的执行;与现有采取内联展开的方式处理符号 执行函数调用问题相比,可以加速符号执行速度,提高测试数据的生成效率。
【附图说明】
[0028] 图1为本发明面向对象的类测试数据生成方法流程图;
[0029] 图2为本发明面向对象的类测试数据生成方法实施例流程图。
【具体实施方式】
[0030] 下面将结合附图1和图2对本发明的实施例的技术方案实现进行清楚、完整地描 述。显然,所描述的实施例仅仅是本申请的一个实施例,而非全部的实施例。基于本发明中 的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
[0031] 本发明提供一种面向对象的类测试数据生成方法,其基本思想是:通过静态分析 获得项目类成员模型和继承关系图,以此创建对象虚拟存储模型;生成类的成员方法的方 法信息;在符号执行程序逻辑路径过程中收集类成员变量的约束集;求解约束集,获得对 象成员可能的取值;调用特定构造方法,输入可能取值,实例化类对象,便可生成类测试数 据。
[0032] 如图1本发明面向对象的类测试数据生成方法流程图所示,本方法包含5个步骤, 具体如下:
[0033] 1.分析被测程序获取类定义信息和类继承关系图,构建对象抽象存储模型。
[0034] 2.依据类成员方法逻辑信息,对类成员方法建立与对象抽象存储模型的语义映 射,生成类成员方法的方法摘要信息。
[0035] 3.依据函数流程图和函数调用关系图生成程序逻辑路径集合。
[0036] 4.采用静态符号执行方法,执行所述程序逻辑路径集合中的一条路径,收集类成 员约束集。
[0037] 5.使用约束求解器求解类成员的约束集,生成类成员可能值,调用特定构造方法, 生成类测试数据。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1