已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Visual Unit 用户使用手册第一章 软件介绍11 概述Visual Unit 是一种可视化、自动化、标准化、高效率的C/C+单元测试工具,主是是提升开发人员代码的质量及开发的效率。功能强大并且易学易用。12 软件特色 自动生成桩代码、驱动代码和用例框架 自动生成用例代码,人工及时干预避免生成垃圾; 自动将数据移到表格中,支持表格中编辑用例; 根据有效值范围、分段点生成测试数据; 根据指定组合生成用例; 无需编程解决底层函数不可控、失真、难于初始化; 无需编程解决局部静态变量的用例中控制,以及中断模拟; 用例设计器高效找出遗漏用例实现高覆盖; 支持内部输出的自动判断; 自动生成边界测试用例。第二章 软件安装与卸载2.1 软件安装环境软件运行环境要求:操作系统:Windows2000, Windows XP, Windows Server 2003,Windows Vista。内存:128M,推荐256M。硬盘空间:200M。支持语言 C/C+。测试IDE VU采用用户提供的编译编辑环境来编译编辑测试代码,称为测试IDE。支持的测试IDE包括:VC6.0、VC 2003、VC 2005、VC 2008、Code:Blocks(使用GCC编译器)。对嵌入式项目的支持 自动解决各种嵌入式项目的平台差异和编译差异,以及自动模拟底层调用包括操作系统API,支持各种嵌入式项目及Linux项目。如果测试嵌入式项目有困难,可与技术支持联系,技术支持可以根据项目特点定制工程模板。在“帮助”菜单,单击“技术支持信息”,可查看技术支持联系方式。2.2 软件安装过程运行安装程序VU27Setup.exe在安装向导点击“下一步”按钮通过“浏览”按钮选择软件的安装路径,点击“下一步”按钮点击“安装”按钮进入软件安装过程软件安装进度显示最终显示软件安装成功,选择是否直接启动该软件,点击完成按钮即可2.3 卸载过程从控制面板/添加删除程序 或运行“开始”菜单下“Visual Unit 2卸载Visual Unit 2”程序 卸载.出现如下图对话框第三章 新建工程在主工具栏单击,或在“工程”菜单单击“新建工程”,即可打开“新建UDT工程向导”。3.1模板选择 一个项目可以建立任意数量的UDT工程,建立项目的第一个UDT工程时,先选择开发IDE,再在右边的模板列表中,根据项目特性选择合适模板;UDT工程建立后,自动保存为模板,并出现在“或选择现有项目”框内,建立第二个或更多的UDT工程时,可选择先前的UDT工程作为模板,通常只需设定不同的被测文件和外围文件。3.2导入数据 只有当开发IDE为VC6.0时,才会出现“导入数据”页,可选择.dsp文件导入项目数据,也可以直接点击“下一步”。3.3常规信息 设定UDT工程的基本信息。建立项目的第一个UDT工程时,通常只需选择“产品项目根目录”和填写“UDT工程名称”,建立项目的第二个或更多的UDT工程时,通常只需填写“UDT工程名称”。 可将任务简写、模块名称或负责该模块的开发或测试人员的姓名,作为“UDT工程名称”。 “语言”、“开发IDE”及“测试IDE”不能更改,如果不正确,请返回选择正确的模板。3.4设定测试任务 点击复选框,将需测试的源文件设为T,不需测试但可能要使用的底层或关联源文件设为N,设为X的文件将被隔离,必要时自动打桩。以后可从工程菜单打开“工程属性”,重设源文件类别或指定新加入的源文件的类别。能够设为N的源文件不要设为X,即尽可能减少打桩。作为一种策略,以后可在代码菜单单击“屏蔽桩代码”,临时屏蔽桩代码,利用链接错误找出本应链接的库和本应链接的源文件,以避免不当打桩。按住Shift键,点击前面的加号,可递归展开设定完测试单元后,点击“下一步”按钮点击“下一步”按钮点击“下一步”按钮点击“完成”, VU会自动解析代码,生成桩、底层模拟、测试驱动、用例框架,然后自动启动测试IDE,并自动打开测试工程。解析过程中,“系统信息”窗口会打印错误及警告信息。由于“工程属性/高级”页未曾设置,点击完成后,在VU自动解析过程中,往往会出现各种链接错误。解决方法是修改工程属性。点击主界面工具栏,或在“工程”菜单单击“工程属性”,打开“工程属性”对话框,根据“系统信息”窗口打印出错误及警告信息根据3.5里的方法进行修改。3.5常见错误及解决方法文件xxx包含的文件xxx.h未找到常见的原因是头文件搜索目录遗漏。与一般编译器一样,VU搜索头文件时,不搜索子目录。切换到“头文件”页,增加include目录。VU具有自动搜索头文件所在目录的功能,如果认为未找到的头文件可能是库头文件,则点击“库头文件”右侧的“搜索”按钮,否则点击“常规头文件”右侧的“搜索”按钮。打开如下图所示的对话框,未找到的头文件已经自动列出,搜索的起始目录也已设好,如果需添加其他起始目录,请点击“添加”,不需要的起始目录,可点击选中后,再点击“删除”。点击“查找”,“查找结果”框中会列出所有包含这些头文件的目录(如果在多个目录下有同名头文件,全部列出),请检查,并将不正确的目录删除。最后点击“加入”。另一种比较少见的原因是编译条件遗漏。编译条件是指产品项目使用了用户设定的“预处理定义”(可在工程Setting中查看,如,VC6.0,Preprocessor Definitions为“WIN32,_DEBUG,_CONSOLE,_MBCS,MY_DEFINE”,则“MY_DEFINE”就是“编译条件”),为了让VU的解析结果以及测试代码的编译结果与原项目一致,UDT工程和测试工程也要使用这些“编译条件”。 解决办法:切换到“高级”页,点击“预处理选项”,在“预处理定义”输入框中,加入编译条件。测试工程的项目Setting中也要加入同样的编译条件。错误:未找到预编译头文件xxx.h解决办法:切换到“高级”页,点击“扩展”,打开“扩展”对话框,选中“不使用预编译头文件”。警告:引用了同名头文件 可能导致错误,如果确认引用多个同名头文件是没必要的,请切换到“头文件”页,点击“详细分类”,将不使用的头文件设为X。警告:引用了同名头文件 可能导致错误,如果确认引用多个同名头文件是没必要的,请切换到“头文件”页,点击“详细分类”,将不使用的头文件设为X。警告:头文件缺少预处理“哨兵” 预处理“哨兵”是指: #ifndef XXX #define XXX /文件内容 #endif 用于防止头文件被重编译,重编译可能产生“标识符重定义”错误,如果头文件不需要重编译,建议在产品项目的头文件中加上“哨兵”。警告:预处理“哨兵”已在其他文件定义 可能因代码未编译产生“标识符未定义”错误,建议修改产品代码,消除不同头文件的相同预处理“哨兵”。警告:在头文件中定义变量 可能产生重定义错误,建议将产品代码的变量定义移到源文件,头文件只保留声明。警告:目录太深或太长 由于VU会自动处理#include指令,目录太深或太长可能导致#include指令超过测试IDE的长度限制,引起编译错误,建议将项目移到较浅的目录中并缩短根文件夹名,重建UDT工程。界面总体布局如下图所示第四章 建立用例测试的目的是检查程序的功能逻辑是否符合设计,即检测程序在各种输入下是否产生了正确的输出,因此,一个典型的测试用例完成以下工作:设定输入数据、执行程序、验证输出是否符合预期。4.1设定输入输出数据点击中间工具栏,打开输入输出生成器,如下图所示,填入要传入的参数值,预计要输出的返回值,及用到的成员变量及全局变量。数据格式与标准C/C+语言的“文字常量”完全一致,也支持宏和enum。字符串如:abcd 宽字符串如:Labcd字符如:a宽字符如:La整数如:1234、0xFF12 单精度浮点数如:12.00F双精度浮点数如:123.456宏,如:TRUE /#define TRUE 1enum,如 E1 /enum E1, E2;上图左下角有个表格化的选项,如选中,设定完成后,在用例数据窗口里将自动添加到表格里也可以直接在用例数据表格里修改输入输出值。4.2一次设定多个用例在“用例数据”页面里,选中一列,点击中间的按钮,可复制选中的列,再对其修改输入输出值。批量添加用例数据点击,打开“用例生成/检查器”,如下图。自动生成用例数据 在如上图的“用例生成/检查器”中,点击“生成数据”,打开如下对话框,可以自动为数字类型生成数据。其中,“有效值内的分段点”,是指在有效值范围内,可能需分类处理的数据的分界点,例如,一个表示年龄的整数,有效值范围为0-200,程序需对不同年龄段做不同的处理:10岁以下为儿童、20岁以下为青年、60岁以上为老人,那么,分段点填写10,20,60(用,分隔)。如果自动生成的数据与“用例生成/检查器”中的现有数据重复,会自动删除。自动生成用例数据可以提高用例设计的效率,也有利于提高数据取值的完整性。下图是设定输入之间的组合,单击行首或列首,可以重置全行或全列。系统会保证设定的组合得于覆盖。填写预期输出 用例数据生成器只生成用例的输入,需为每个用例设定预期输出。表格中,与左边单元格相同的数据可以省略,如下图,用例2的预期输出与用例1相同,用例5的预期输出与用例4相同,都可以省略。设定完用例后,点击中间的工具栏,执行测试代码。第五章 测试输出及应用测试输出信息主要有四个窗口,如下图所示:5.1.数据窗口数据窗口显示成员变量、参数的输入/输出值,返回值和内部输入,以及内部输出。内部输入是指子函数所产生的数据,如子函数的返回值、输出参数的结果值,内部输入通常由底层模拟设定;内部输出是指在代码的任何位置指定输出的变量或表达式的值。5.2.代码窗口当前用例所执行的代码 当前用例所执行的代码用黑色显示,当前用例未执行的代码用红色显示。注释用绿色显示,其他代码(流程控制关键字及其括号,逻辑操作符,字符和字符串)一概用蓝色显示。未覆盖代码 字体颜色为红色且背景色为淡红色的代码是未覆盖代码(所有用例均未执行)。语句覆盖的统计单位是语句块,语句块是指一组语句序列,在该语句序列中,如果第一条语句执行了,在未发生异常的前提下,其他语句也会执行。 判定中的每个条件,按一个语句块计算。语句覆盖率 = 已覆盖语句块数 / 全部语句块数,请参考信息窗口。 浏览当前用例所执行的代码,结合数据窗口,程序行为一目了然,可以实现VTDD,也容易找出错误原因。条件覆盖与MC/DC 条件覆盖的统计单位是条件的取值(真/假)。条件前面的T表示该条件的真值未覆盖,F表示假值未覆盖。条件覆盖率 = 已覆盖条件数 / 全部条件数。 MC/DC的核心意思是每个条件独立影响判定结果,如果某个条件未独立影响判定结果,将在前面加上M。用例设计 点击未覆盖语句,或条件前面的T、F、M,右键菜单 选择“用例设计”,即可切换到用例设计器,为选中的语句、条件、或MC/DC设计覆盖用例。 条件的覆盖分为三个层次:最低层次是条件语句的覆盖、其次是真值和假值的覆盖、最高层次是MC/DC。由于完成了T或F覆盖,条件语句即可完成覆盖,因此,没必要为条件语句覆盖设计用例,未覆盖的条件语句不能点击。 如果某一语句块无法覆盖(测试用例设计器中,待满足条件和已满足条件冲突),则该语句块是冗余的,应考虑删除。100%的语句覆盖是很容易达到的,也是必须的。5.3.信息窗口信息窗口从总体上提供测试结果信息。测试用例:总的测试用例数。当前用例:当前显示的测试用例编号,从1开始。数据窗口、代码窗口、路径窗口显示的都是当前用例的数据。所有窗口的快捷菜单都可以切换当前用例。语句覆盖:显示已覆盖的语句块数/全部语句块数以及语句覆盖率。条件覆盖:显示已覆盖的条件值数/全部条件值数以及条件覆盖率。分支覆盖:显示已覆盖的分支数/全部分支数以及分支覆盖率。C/DC(判定条件覆盖):显未判定条件覆盖率。路径覆盖:显示已覆盖的路径数/全部路径数以及路径覆盖率。MC/DC(修改判定条件覆盖):显示修正判定条件覆盖率。测试断言:显示全部断言数和失败断言数。断言数就是TEST_ASSERT()的数量。测试状态:如果测试断言全部通过,显示一个绿条,否则显示一个红条。失败测试:如果存在失败断言,列出失败的断言及其文件名和行号。 如果存在失败的断言,表示程序代码存在错误或预期输出是不正确的。 单击失败的断言,产生失败断言的用例成为当前用例,其他窗口将显示相关的数据。 双击失败的断言,切换到用例数据窗口或用编辑器,并选中产生失败断言的用例。5.4.路径窗口路径窗口画出逻辑结构图,并标示未覆盖分支和路径删除/恢复 分支结构、分支、语句块、路径都是可删除的,如下图所示,点击选中某一对象,从快捷菜单中选择“删除”或“恢复”命令,即可删除或恢复该对象。删除或恢复一个对象时,会重新统计程序路径,信息窗口的相关数据会发生变化。 删除不可达分支 有些分支是明显不可达的,如循环结构形成的分支,如果肯定会进入循环,那么不进入循环的分支就是不可达的。为未覆盖分支设计测试用例时,如果待满足条件和已满足条件冲突,则该分支是不可达的。不可达分支删除后,所有通过该分支的路径会自动删除。删除不可覆盖的路径: 为未覆盖路径设计测试用例时,如果待满足条件和已满足条件冲突,则该路径是不可覆盖的。被删除的路径,信息窗口视为不存在,但逻辑结构图中只是在路径入口处画个红X,随时可以恢复。逻辑结构图在统计路径时仍然把已删除的路径计算在内,因此,路径数量会与信息窗口不相同。 第六章 高级技巧6.1底层模拟6.1.1什么是底层模拟底层模拟就是在用例中模拟、控制子函数的行为,使底层函数产生的数据像参数一样可以在用例中设置,称不内部输入,包括:指定子函数的返回值;指定子函数的输出参数的结果值;指定成员变量的值(仅限于C+);指定全局变量的值。6.1.2为什么要引入底层模拟解决失真:子函数未实现或被隔离,则用自动生成的桩函数来代替。由于桩函数通常什么也不做,造成失真,使测试无法进行,因此,调用隔离函数时应在用例中设定其行为,以便模拟真实的情境。子函数不可控或不符合测试要求:子函数的行为难于控制,例如调用一个通过硬件取环境温度的函数,环境温度显然不能按测试要求快速变化;再如调用一个返回随机数的函数,需要该函数返回指定值,真实代码无法返回指定值。 子函数从文件或数据库中读取数据,数据可能不存在或不符合测试要求,希望在用例中设定;子函数的某些行为难于出现,例如读取内存失败,连接网络失败等,希望在用例中设定;程序的某些执行逻辑很难通过改变参数或其他变量来覆盖,希望通过控制子函数的输出来覆盖,难于初始化被测试函数的一些输入可能很复杂,但仅用于传递给底层函数, 以便取得一个简单的值,这种情形可以直接设定底层函数的输出,避免复杂的初始化。对于一个函数来说,需要直接读取的数据往往并不多,复杂的输入多是 传递给底层函数的数据,巧用底层模拟可以大幅降低用例设计的难度。控制局部静态变量局部静态变量与全局变量一样,测试时需在用例中控制,但用例中却无法访问。模拟中断常用于嵌入式测试,可模拟中断造成的全局变量修改“控制测试”“控制测试”,就是测试程序“在某种条件下,是否做了某个动作”,只需要知道做了没有,不需要判断或无法判断输出数据。6.1.3底层模拟的实现方法主界面右侧切换到用例代码窗口,在左侧函数代码窗口双击子函数名或参数,即可打开“底层模拟器”并自动填好初始数据,如下图。如果被测试代码未编写,可用右键菜单打开“底层模拟器”。底层模拟器的基本使用在函数代码窗口,双击子函数名或参数,即可找开“底层模拟器”,并自动填好初始数据,如下图。如果被测试代码未编写,可用快捷菜单打开“底层模拟器”。控制局部变量和模拟中断,不需要打开底层模拟器“子函数名”编辑框:填写子函数名,一般会自动填写;“不可屏蔽”复选框:如果选中,那么该底层模拟总是有效,否则,当在“设定”的“测试”页选中了“屏蔽底层模拟时”时,底层模拟会被屏蔽,改为调用实际代码或空桩。“子函数名”编辑框:填写子函数名,一般会自动填写;“不可屏蔽”复选框:如果选中,那么该底层模拟总是有效,否则,当在“设定”的“测试”页选中了“屏蔽底层模拟时”时,底层模拟会被屏蔽,改为调用实际代码或空桩。“设定哪个值?”单选钮:选择调用该子函数后,需要设定数值的目标对象,如果选中“仅判断调用次数”,则不设定任何数据,仅判断子函数的调用次数是否符合预期。“预期调用次数”单选钮:底层模拟功能还可以自动计算子函数的调用次数,不符合预期时会报告错误,缺省值为“忽略”。此功能一般适用于非表格化的用例,对于表格化用例来说,由于指定的预期调用次数对表格中的所有用例有效,而不同用例的实际调用次数可能不同,因此易发生误报。“前置代码”编辑框:如果模拟值是复杂对象或对象指针,在这里定义和初始化该对象。“模拟值”编辑框:设定模拟目标的结果值,分为四类:数字,字符,字符串,对象。数字直接填写,如1234或123.789, 字符要加单引号,如a,字符串要加双引号,如VISUAL UNIT,对象要先在前置代码中定义并初始化,然后填写对象名或指针,如data或&data,下图为返回一个结构指针:关闭“底层模拟器”后,会自动生成底层模拟代码,这些代码也是用例输入的一部分。除“仅判断调用次数”外,其他底层模拟代码均是从第一个参数开始即为模拟值。底层模拟数据表格化 生成代码后,双击数据(以下示例的红色部分),即可实现表格化。 SF_RETURN_DIG(123456.789, Return_Double, RUN_TIMES_NOZERO, 1) /模拟返回值,所以设定返回值是“数据” SF_EXPECT_RUNTIMES_HARD(Operate1, RUN_TIMES_NOZERO, 1) /控制测试,只判断子函数执行次数,所以最后的预期执行次数是“数据” 表格中忽略个别用例的底层模拟将单元格的值设为“/”。底层模拟应放在输入的最后 底层模拟可以视为内部输入,即函数内部获取的输入,放在输入的最后易于阅读和理解;对于C语言来说,底层模拟代码放在最后,还可以避免可执行语句之后声明变量导致编译错误。底层模拟调用了一个或多个函数,是普通的执行语句,对于C语言来说,这类语句后面不能再声明变量。设定成员变量、全局变量的值 在“设定哪个值”中选择成员变量或全局变量,并填写变量名,其他与设定返回值一致。这里的成员变量是指被测试类的成员变量,因此,设定成员变量一般用于子函 数是被测试类的成员函数,并且它的功能是修改成员变量时。设定输出参数 与设定返回值有两点不同: 一是通过双击参数来打开底层模拟器,这样系统会自动选择需要模拟的参数; 二是填写的模拟值是“值”而不是“地址”,例如: 子函数为:MYSTRUCT1* func(MYSTRUCT* pData); 前置代码:MYSTRUCT data; . 如果模拟返回值,则模拟值填写:&data,因为我们要返回的就是结构对象的地址。 如果模拟参数值,则填写:data,因为我们要设定的不是地址,而是对象的值,用简单类型比较容易理解,例如,子函数: int* subfunc(int* ptr); 模拟返回值(返回一个指针),要在“前置代码”中定义一个变量如int data=0;,然后返回合法的地址:&data; 模拟输出参数,则是为了修改ptr所指向的内存的数据,直接填写这个数据就可以了,例如,在“模拟值”中填写0,那么,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025最权威的征收补偿合同
- 2025国际医疗器械贸易合同签订与合同履行
- 2025有关合同租赁房屋的风险防范
- 石化公司综合管理部工作亮点
- 2025二手车中介交易合同 二手车中介交易合同范本
- 急诊科心肌梗死溶栓治疗指南
- 生产数字化管理
- 急性胰腺炎诊疗要点培训方案
- 施工管理测量仪器
- 校园保安冲突处理培训
- 全国优质课一等奖中职《就业与创业指导》课件
- SBAR交接班模式在临床运用
- 碎石临时停车场施工方案
- 超级方便的钢琴键盘和弦对照表
- 静电消除作业指导书
- 华侨城集团领导岗位业绩考核管理规定
- 机械设备安全检查表88612
- 培智二年级体育课教案
- 不可不知的1000个处世常识
- 液化石油气钢瓶登记台账
- 医技诊疗类医疗服务项目和价格表
评论
0/150
提交评论