IBMRational软件测试工具实验报告(完整版)要点.docx

IBMRational软件测试工具实验报告(完整版)要点.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IBMRational软件测试工具实验报告(完整版)要点.docx

IBM Rational软件测试工具实验报告目录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 iostreamusing 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 Purify3.2 点击File-Run3.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”或者操作系统检测到程序读取了不该读取的内容之后终止程序运行为止。在源程序中,按照C语言的规则“hello”这个字符串应该是占6个字节大小(包括“\0”),而

文档评论(0)

zhangningclb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档