IBM-Rational软件测试工具实验报告(完整版).docx

IBM-Rational软件测试工具实验报告(完整版).docx

IBM Rational软件测试工具实验报告 目录 TOC \o 1-3 \h \z \u IBM Rational软件测试工具实验报告 1 实验一 使用Rational Purify工具测试代码中内存相关错误 2 实验二 使用Rational Quantify对程序代码做性能分析 15 实验三 使用Rational PureCoverage对程序代码做性能分析 23 实验四 Rational Performance Tester 的基本使用 30 实验五 Rational Performance Tester 中数据池的使用 54 实验六 Rational Performance Tester 中调度的使用 67 实验七 Rational Functional Tester的使用 90 实验一 使用Rational Purify工具测试代码中内存相关错误 一、目的和要求 1.了解应用程序代码中与内存有关的错误,以及由此引发的后果; 2.掌握Rational Purify的基本设置; 3.掌握Rational Purify的基本操作方法,学会使用该工具; 4.能够分析Rational Purify输出的内存错误报告。 二、实验内容 1.学习讲义01,掌握Rational Purify的使用方法; 2.完成以下实验: (1)分析以下C程序代码,找出其中的内存错误(用注释说明错误类型); #include iostream using namespace std; int main() { char * str1 = hello; char * str2 = new char[5]; char * str3 = str2; coutstr2endl; strcpy(str2,str1); coutstr2endl; delete str2; str2[0]+=2; delete str3; return 0; } (2)使用Microsoft Visual C++ 6.0编译该源代码,并生成可执行程序; (3)在Rational Purify中测试该程序; 3.1 打开Rational Purify 3.2 点击File-Run 3.3 选择可执行文件ex1.exe,点击run按钮 3.4 程序的运行结果: 从程序运行的结果上看,第一行的输出不是预期的结果,按照以往的经验,在c/c++程序中输出了非预期的字符和乱码往往是因为数组越界读取造成的或者是指针在分配内存区域后未经初始化就直接读取造成的。 3.5 查看和保存报告 在程序运行结束后,Rational Purify会为我们生成一份报告,具体内容如图: 保存错误报告: 点击保存 (4)分析Rational Purify输出的内存错误报告。 对内存错误报告0逐条分析: 4.1 Rational Purify报告在源程序exp1.cpp的第10行存在UMR(未初始化的内存读)错误: 原因分析:虽然char * str2 = new char[5];这句代码完成了对内存的初始化,但是并没有为字符数组中的每个字符赋初值,而在C语言中,对于变量来讲,没有赋初值意味着这个变量的值是随机的,因为C语言的变量没有默认值。所以输出的内容中第一行有乱码,这行乱码就是源代码第10行执行后输出的。 以上三条UMR错误描述的是同一个问题。 4.2 Rational Purify报告在源程序exp1.cpp的第10行存在ABR(内存越界读)错误: 原因分析: C语言中字符串是以“\0”作为结束标志的,当输出语句遇到第一个“\0”时就会认为字符串已经结束,然后就会终止读取,否则将一直读取下去,直到遇到“\0”或者操作系统检测到程序读取了不该读取的内容之后终止程序运行为止。在源程序中,虽然指针str2指向的内存正确的申请了内存,但却没有对字符数组的每个元素进行初始化(应当有这样的习惯和意识:在C语言中,变量声明的时候一定要赋初值)。一开始没有初始化字符数组的每个元素为“\0”,这就导致了在读取str2指向的字符数组时cout发生了越界,程序无休止的向下读,期望碰到“\0”终止读取。发生这样的情况是非常危险的,轻则导致乱码输出,重则导致程序异常终止。所以声明变量(尤其是指针变量)后,记得赋初值。 4.3 Rational Purify报告在源程序exp1.cpp的第10行存在IPR(非法指针读)错误: 原因同4.2,不再赘述。 4.4 Rational Purify报告在源程序exp1.cpp的第12行存在ABW(数组越界写)错误: 原因分析:C语言中字符串是以“\0”作为结束标志的,当输出语句遇到第一个“\0

文档评论(0)

1亿VIP精品文档

相关文档