一种支持表格驱动局部数据的单元测试系统和方法技术方案

技术编号:11640765 阅读:86 留言:0更新日期:2015-06-24 17:21
本发明专利技术公开了一种支持表格驱动局部数据的单元测试系统和方法,所述局部数据包括局部输入和/或局部输出,其特征在于,包括:类型解析装置,用于解析数据类型定义获得类型信息;树表装置,由树形控件和表格控件组成;赋值比较装置,包括赋值装置和/或比较装置,用于给变量赋值和/或比较变量的实际值与预期值;局部数据设定装置,用于供用户指定局部输入变量及其输入位置和/或局部输出变量及其输出位置。本发明专利技术使实现了局部数据的表格驱动,不需要额外的测试驱动代码,不需要额外生成函数,支持复合类型,用户不需要编写、调试和维护额外的测试驱动代码和额外的函数,大幅提升了单元测试效率。

【技术实现步骤摘要】

本专利技术涉及软件测试技术,特别是涉及软件单元测试技术。
技术介绍
单元测试是软件开发过程中保证代码质量,提升开发产能的重要手段。 单元测试的基本方法是利用测试驱动代码,设定输入和预期输出,执行被测试程 序,自动判断实际输出是否符合预期。输入数据和预期输出称为测试用例,也就是测试数 据,这是单元测试工作的基本要素,而对输入的赋值过程和判断输出的比较过程,则是单元 测试执行过程的核心。 局部数据是实施单元测试的难点问题。局部数据是指被测试代码执行过程中,某 些变量在代码执行到某个位置时的数据。局部数据具有临时性,即代码执行到不同的位置, 同一局部数据可能具有不同的值。 局部数据包括局部输入和/或局部输出。局部输入是指当被测试代码执行到某 个位置时,测试用例对某个变量的赋值,被赋值的变量称为局部输入变量;局部输出是指当 被测试代码执行到某个位置时,测试用例对某个变量的实际值与预期的输出值进行比较判 断,被比较判断的变量称为局部输出变量。与测试用例的一般输入与输出一样,局部输入或 局部输出也是测试用例的输入或输出。 被测试函数可能涉及的所有变量都有可能成为局部输入变量或局部输出变量,包 括局部变量、参数、全局变量、成员变量,还可能包括这些变量的一个或多个成员,即设置局 部输入或判断局部输出时,不一定针对整个变量,也可能只针对变量的一部分(一个或多个 成员),表达式或表达式的一部分也可以作为局部输入变量或局部输出变量。一个变量是否 需要作为局部输入变量或局部输出变量,是由测试的需求决定的,即如果测试用例需要对 某个变量在被测试代码执行到某个位置时赋值,这个变量就是局部输入变量,如果测试用 例需要对某个变量在被测试代码执行到某个位置时判断它的值,这个变量就是局部输出变 量。局部输入或局部输出与一般输入或输出的根本区别在于,对于一般输入或输出,例如一 个全局变量,输入是在被测试代码执行前进行赋值,属于前置条件,输出则用于在被测试代 码执行完毕后对结果的比较判断,属于后置条件,而对于局部输入或局部输出,例如同一个 全局变量,是在被测试代码执行过程中进行赋值或比较判断。同一个变量,例如一个全局变 量,在同一个测试用例中,既可以作为一般的输入与输出,也可以同时作为局部输入或局部 输出。 局部输入在单元测试中常见的需求场景有: a.模拟中断对全局变量的修改。这在测试嵌入式项目时很常用,中断对单元测试 的影响在于,被测试函数执行过程中,如果系统产生了中断,且中断调用了其他函数,而其 他函数可能修改被测试函数中涉及的变量,那么,测试时需要模拟这种可能情形,以检测被 测试代码在执行过程中遇到中断后的功能逻辑。被测试代码在执行过程中遇到中断的位置 通常是不确定的,测试过程中需要由用户指定。中断调用的其他函数,能够修改的通常只有 全局变量,因此,只要能在用户指定的被测试代码的某个位置设定某个全局变量的值,就可 以满足单元测试过程中对中断测试需求,这种情形下,这个全局变量就是局部输入变量。 b.控制局部静态变量。局部静态变量通常需像全局变量一样,每个用例取值不同, 但却无法像全局变量一样外部访问,因此也是一种局部输入变量。 c.简化数据的输入设置。有些数据的设置非常困难,例如,某些复杂的全局变量, 要设置它的值可能很困难,而被测试代码只是涉及到该全局变量的一个小部分,这种情形 下,如果将被测试代码涉及到的部分直接设置输入,而不是设置原来的全局变量,可以大幅 减少工作量,例如下面的函数:【主权项】1. 一种支持表格驱动局部数据的单元测试系统,所述局部数据包括局部输入和/或局 部输出,其特征在于,包括: A:类型解析装置,用于解析数据类型定义获得类型信息; B:树表装置,由树形控件和表格控件组成,用于树状显示变量及其成员,并提供表格供 用户填写测试用例的输入值和/或输出值; C:赋值比较装置,包括赋值装置和/或比较装置,所述赋值装置用于将所述树表装置 中的所述输入值赋给变量;所述比较装置用于将所述树表装置中的所述输出值与变量的实 际值进行比较,并输出测试失败信息;所述变量的数据类型包括基本类型和复合类型; D:局部数据设定装置,用于供用户指定局部输入变量及其输入位置和/或局部输出变 量及其输出位置,并将所述局部输入变量和/或局部输出变量加入装置B,及在所述输入位 置插入赋值代码和/或在所述输出位置插入比较代码,所述局部输入变量和/或局部输出 变量的数据类型包括基本类型和复合类型,所述输入位置或所述输出位置位于被测试代码 中,所述赋值代码用于调用所述赋值装置,所述比较代码用于调用所述比较装置。2. 根据权利要求1所述的单元测试系统,其特征在于,所述类型信息包括:类型名称、 内存大小,各成员的成员名称、类型名称、偏移量。3. 根据权利要求1所述的单元测试系统,其特征在于,所述赋值装置包括:递归扫描变 量及其成员,对需要初始化的变量或成员初始化,对于对应输入值不为空的变量或成员,拷 贝对应输入值;所述对应输入值,是指所述树表装置中,变量或成员对应的当前用例的输入 值;所述比较装置包括:递归扫描变量及其成员,对于对应输出值不为空的变量或成员,t匕 较实际值与对应输出值,如比较结果为假,则输出测试失败信息;所述对应输出值,是指所 述树表装置中,变量或成员对应的当前用例的输出值。4. 根据权利要求1所述的单元测试系统,其特征在于,所述局部输入变量或局部输出 变量包括以下变量之一或以下变量的任意组合或以下变量的一部分:参数、全局变量、成员 变量、局部变量、表达式。5. 根据权利要求1至4任一权利要求所述的单元测试系统,其特征在于,装置D进一步 包括以下步骤之一: 删除用户选中的代码; 删除赋值操作符的右边表达式。6. 根据权利要求5所述的单元测试系统,其特征在于,装置D进一步包括:将静态关键 字替换为空。7. -种支持表格驱动局部数据的单元测试方法,所述局部数据包括局部输入和/或局 部输出,其特征在于,包括以下步骤: A:类型解析步骤,用于解析数据类型定义获得类型信息; B:树表步骤,所述树表由树形控件和表格控件组成,用于树状显示变量及其成员,并提 供表格供用户填写测试用例的输入值和/或输出值; C:赋值比较步骤,包括赋值步骤和/或比较步骤,所述赋值步骤用于将所述树表中的 所述输入值赋给变量;所述比较步骤用于将所述树表中的所述输出值与变量的实际值进行 比较,并输出测试失败信息;所述变量的数据类型包括基本类型和复合类型; D:局部数据设定步骤,用于供用户指定局部输入变量及其输入位置和/或局部输出变 量及其输出位置,并将所述局部输入变量和/或局部输出变量加入所述树表,及在所述输 入位置插入赋值代码和/或在所述输出位置插入比较代码,所述局部输入变量和/或局部 输出变量的数据类型包括基本类型和复合类型,所述输入位置或所述输出位置位于被测试 代码中,所述赋值代码用于调用所述赋值步骤,所述比较代码用于调用所述比较步骤。8. 根据权利要求7所述的单元测试方法,其特征在于,步骤D进一步包括以下步骤之 删除用户选中的代码; 删除赋值操作符的右边表达式。9. 根据权利要求8所述的单元测试方法,其特征在于,步骤D进一步包括:本文档来自技高网...

【技术保护点】
一种支持表格驱动局部数据的单元测试系统,所述局部数据包括局部输入和/或局部输出,其特征在于,包括:A:类型解析装置,用于解析数据类型定义获得类型信息;B:树表装置,由树形控件和表格控件组成,用于树状显示变量及其成员,并提供表格供用户填写测试用例的输入值和/或输出值;C:赋值比较装置,包括赋值装置和/或比较装置,所述赋值装置用于将所述树表装置中的所述输入值赋给变量;所述比较装置用于将所述树表装置中的所述输出值与变量的实际值进行比较,并输出测试失败信息;所述变量的数据类型包括基本类型和复合类型;D:局部数据设定装置,用于供用户指定局部输入变量及其输入位置和/或局部输出变量及其输出位置,并将所述局部输入变量和/或局部输出变量加入装置B,及在所述输入位置插入赋值代码和/或在所述输出位置插入比较代码,所述局部输入变量和/或局部输出变量的数据类型包括基本类型和复合类型,所述输入位置或所述输出位置位于被测试代码中,所述赋值代码用于调用所述赋值装置,所述比较代码用于调用所述比较装置。

【技术特征摘要】

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:广州凯乐软件技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1