1、软件测试与质量保证综合性实验本科学生综合性实验报告项目组长 陈贝贝 学号 0088225 成 员 0088225 陈贝贝 专 业 软件工程 班级 08级4班 实验项目名称C+程序单元测试综合训练 指导教师及职称 段喜龙 讲师 开课学期 11 至 12 学年一学期上课时间 2011 年 11 月 8 日学生实验报告学生姓名陈贝贝学号0088225同组人:无实验项目C+程序单元测试综合训练必修 选修 演示性实验 验证性实验 操作性实验 综合性实验实验地点H123实验仪器台号H123-*指导教师段喜龙实验日期及节次2011.11.15 567节一、实验综述1、实验目的及要求实验目的:1. 巩固学生在
2、课堂上学习到的关于单元测试的基本知识。2. 让学生熟悉软件项目测试全过程管理的方法与流程,并培养作为软件测试者应该具有的基本素质,激发学生主动学习和应用新测试工具的意识。实验要求:1. 通过对软件测试辅助工具C+Test的学习,并针对一些常见的C+程序开展单元测试的训练,使学生深刻理解软件测试在软件工程专业中的地位,掌握C+Test的基本使用技巧。2. 熟悉软件项目测试全过程管理的方法与流程,并培养作为软件测试者应该具有的基本素质,激发学生主动学习和应用新测试工具的意识。3. 针对基础性实验编写以下三个程序(三选一)的测试程序三角形问题、日期问题和佣金问题,进行测试实践,要求测试用例必须为手动
3、编写且不少于30个。2、实验仪器、设备或软件(1) 设备:实验室微机(2) 运行环境:Windows xp(3) 软件:VC+,C+Test(4) 用例程序二、实验过程(实验步骤、记录、数据、分析)(1) 步骤一l 安装C+test打开安装源程序,同普通的windows应用程序一样,选择安装路径,完成安装。注意:用c+test 对文件read simbols的时候,输入窗口显示没有找到GCC编译器,环境变量里没有GCC编译器的路径:Compiler GNU GCC 2.9.x used in project configuration cannot be found.Please be sur
4、e that directory containing GNU GCC 2.9.x compiler, is included in the $PATH environmental variable.如图示:在网上找了好多解决办法都没有凑效, Eg:请将gcc所在目录添加到环境变量中,右键我的电脑-属性-高级-环境变量,在下面的系统变量中找到Path, 选中,点编辑,在最后边加一个分好;然后填上gcc的全路径。后来到Parasoft的官网上发现上面有几句话:InstallationTo install C+Test, simply run the setup executable that y
5、ou downloaded from the Parasoft Web site or that is on your CD, and follow the installation programs on-screen directions. The installation program will automatically install C+Test on your computer.Important:Open and use Microsoft Visual C+ (6.0, .NET, or .NET 2003) at least once before installing
6、C+Test. Close Microsoft Visual C+ before you install C+Test.然后先把c+test卸载了,安装好Visual C+ 6.0 ,再装c+test,问题就解决了。要注意的是在装C+test之前要先装Visual C+ 6.0,并且要至少先运行一次Visual C+ 6.0l 安装成功后运行C+test (2) 步骤二以佣金问题为例,运行程序1打开被测文件(1) 打开C+Test,右击【project】-【file/open file】,选择C+Test安装目录下examples/cpptest_demo.cpp,这个cpp文件将出现在当前的
7、project下。(2) 在当前project下,右击【cpptest_demo.cpp】-【read symbols】(读入符号表),此时C+Test将parse(剖析)这个源程序,分析出此文件的文件结构。l 当选择代码时,被选择的代码也会以蓝色块的形式出现。l 代码左侧的红色精灵帽表示静态分析时出现问题的所在;l 黄色小齿轮则表示动态分析时出现问题的所在。点击相应的地方,会出现对问题的一个简单描述。2静态测试rulesl 静态测试是指不用执行程序的测试,它主要采取方案代码走查、技术评审、代码审查的方法对软件产品进行测试。检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查
8、、审查与技术复审手册。仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。l 三角形箭头【TestUsing】-【configuration】-【built-in】-【shouldHaveRules】l C+Test走查所用到的规范可以在静态测试标签的rule manage下看到。在静态分析栏中的Results标签是对静态分析结果的一个罗列。每个红色精灵帽都代表一种违规行为,而它旁边的数字则代表测试代码中出现这种违规的次数。紧接着的字母表明违规行为的严重级别。再后面就是对这条规范的大致描述以及规则编
9、号。而标签Rules Manager则是对这些规则的管理,当用户需要使用某条规则的时候,只需要在相应规则左侧的方框内打上勾就表明选择了该条规则。而当用户不需要某条规则检查的时候,只需要去掉相应规则的勾就可以了。下图,右侧就是静态测试(代码走查)的结果。每条违规信息包括对违规的描述,该错误共发生的次数以及相对应的具体位置。而下面的rule desription则是对这条规则的一个比较详细的描述。顶层的文件夹后面的“I=4 PV=1 V=33”描述的是整个的对违规信息的统计。I表示information,通知行为PV表示possible violation,可能的违规行为V表示violation,
10、违规行为PSV表示possible servere violation,可能的严重违规行为SV表示servere violation,严重违规行为。3动态测试l 动态方法是指通过运行被测程序,检查动态行为、运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。l 在向右三角型旁边的下拉箭头【TestUsing】-【configuration】-【built-in】-【UnitTesting】-【WhiteBoxaNalysis】可以从各个层面上(单个测试用例,整个函数的测试用例,整个代码的测试用例)去看相对应代码的覆盖率。操作
11、的时候,只需要右击相应的层次(例如一个测试用例),选择show coverage,就可以看到对应的覆盖率了。在动态测试中的Test Case/Results栏中,主要是对测试用例的一个总体管理。在这里,所有的测试用例的状态都一目了然,绿色表示成功,红色表示失败。用户可以自己添加或修改测试用例。而Stub Tables栏则是对桩函数的管理,Suppressions则是对测试对象的一个管理。例如,上面的Data类有很多个成员函数,当用户并不想全部都测,而只是测其中的几个。这个时候就可以通过Suppressions进行选择。除此之外,上面的Tree filter还提供强大的滤波器功能,可以让用户更好
12、的关注他们的焦点,例如只看最近一次测试的失败用例。其中:OK :函数返回正确的值或者函数执行后对象的条件满足。Failed(FLD) :函数返回值不正确或者函数执行后对象的条件不满足。Error(ERR):使用者或系统出现异常导致错误。Tested(TST) :实际执行的测试用例个数。Total(TOT) :总的测试用例个数。LC (Line Coverage) :语句覆盖。BBC (Basic Block Coverage) :块覆盖。PC (Path Coverage) :路径覆盖。DC (Decision Coverage) :决策覆盖。MC/DC (Modified Condition
13、/Decision Coverage) :多条件决策覆盖。CC (Condition Coverage) :条件覆盖。添加修改测试用例:其中:. 参数(Arguments): 函数的入口参数。. 参数出口条件(Arguments Post): 函数执行完成时入口参数的状态。. 返回值(Return): 函数的返回值。. 对象前置条件(Pre Conditions This): 测试开始前对象的条件。. 对象后置条件(Post Conditions This): 测试执行后对象的条件。. 前置条件(Pre Conditions Externals): 测试开始前全局变量的条件。. 后置条件(Post Conditions Externals): 测试执行后全局变量的条件。三、结论1、实验结果2、分析讨论四、指导教师评语及成绩:评语:成绩: 指导教师签名: 批阅日期: