IBM-Rational软件测试工具实验报告.docx
《IBM-Rational软件测试工具实验报告.docx》由会员分享,可在线阅读,更多相关《IBM-Rational软件测试工具实验报告.docx(124页珍藏版)》请在咨信网上搜索。
1、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
2、Tester的使用90实验一 使用Rational Purify工具测试代码中内存相关错误一、目的和要求1了解应用程序代码中与内存有关的错误,以及由此引发的后果;2掌握Rational Purify的基本设置;3掌握Rational Purify的基本操作方法,学会使用该工具;4能够分析Rational Purify输出的内存错误报告。二、实验内容1学习讲义01,掌握Rational Purify的使用方法;2完成以下实验: (1)分析以下C程序代码,找出其中的内存错误(用注释说明错误类型);#include using namespace std;int main() char * str1
3、 = hello; char * str2 = new char5; char * str3 = str2; coutstr2endl; strcpy(str2,str1); coutstr2Run3.3 选择可执行文件ex1.exe,点击run按钮3.4 程序的运行结果:从程序运行的结果上看,第一行的输出不是预期的结果,按照以往的经验,在c/c+程序中输出了非预期的字符和乱码往往是因为数组越界读取造成的或者是指针在分配内存区域后未经初始化就直接读取造成的。3.5 查看和保存报告在程序运行结束后,Rational Purify会为我们生成一份报告,具体内容如图:保存错误报告:点击保存(4)分析
4、Rational Purify输出的内存错误报告。对内存错误报告0逐条分析:4.1 Rational Purify报告在源程序exp1.cpp的第10行存在UMR(未初始化的内存读)错误:原因分析:虽然char * str2 = new char5;这句代码完成了对内存的初始化,但是并没有为字符数组中的每个字符赋初值,而在C语言中,对于变量来讲,没有赋初值意味着这个变量的值是随机的,因为C语言的变量没有默认值。所以输出的内容中第一行有乱码,这行乱码就是源代码第10行执行后输出的。以上三条UMR错误描述的是同一个问题。4.2 Rational Purify报告在源程序exp1.cpp的第10行存
5、在ABR(内存越界读)错误:原因分析: C语言中字符串是以“0”作为结束标志的,当输出语句遇到第一个“0”时就会认为字符串已经结束,然后就会终止读取,否则将一直读取下去,直到遇到“0”或者操作系统检测到程序读取了不该读取的内容之后终止程序运行为止。在源程序中,虽然指针str2指向的内存正确的申请了内存,但却没有对字符数组的每个元素进行初始化(应当有这样的习惯和意识:在C语言中,变量声明的时候一定要赋初值)。一开始没有初始化字符数组的每个元素为“0”,这就导致了在读取str2指向的字符数组时cout发生了越界,程序无休止的向下读,期望碰到“0”终止读取。发生这样的情况是非常危险的,轻则导致乱码输
6、出,重则导致程序异常终止。所以声明变量(尤其是指针变量)后,记得赋初值。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个字节大小(
7、包括“0”),而指针str2指向的内存区域中只有5个字节的大小。Strcpy是string.h头文件中的一个函数,其作用是字符串拷贝,strcpy(str2,str1);这句代码试图将占6个字节的“hello”字符串放入str2所指向的存储空间(只有5个字节大小)之中,这样的操作必然导致数组越界,越界的部分被写到了指针str2指示的区域之外,这样的操作会造成比越界读更严重的后果,严重的时候可能因为破坏了其他程序的内存空间造成其他程序崩溃和操作系统异常。这类错误相对比较隐蔽,不一定每次都会引起操作系统报警,但是问题一旦出现就有可能造成严重的后果。4.5 Rational Purify报告在源程序
8、exp1.cpp的第18行存在FMR(空闲内存读)错误:原因分析:从图中可以看出,程序在第7行为指针str2指向的内存区域分配了5个字节大小的空间,但是程序在第16行使用了delete关键字,在C+中delete相当于c语言中的free,是释放内存空间用的。由于程序执行到第18行的时候,str2指向的内存空间已经在第16行释放,所以程序读取了已经释放的内存(空闲内存就是指已经释放的内存),这样的事情是不应该发生的,程序应当读取已经分配的内存空间,对于已经释放的内存空间不应该去读取。这样的操作也是容易发生问题的,因为已经释放的内存存储的内容很可能不是指针指向的数据类型的,在读取时可能因为类型不匹
9、配导致程序发生问题,或者已经释放的这片内存已经不归这个程序所有也是有可能的,取出的内容可能会是乱码或者直接引起程序崩溃。4.6 Rational Purify报告在源程序exp1.cpp的第18行存在FMW(空闲内存写)错误:原因分析:正如4.5分析的那样,空闲内存写比空闲内存读危害更大,因为写操作本身就带有一定的破坏性。如果写到了其他正常程序的内存空间还会导致其他程序崩溃。4.7 Rational Purify报告在源程序exp1.cpp的第20行存在FFM(再次释放已经释放的内存)错误:原因分析:char * str3 = str2;这句代码使得str2和str3指向同一块内存空间,在程序
10、的第16行释放了str2指向的内存,也就间接释放了str3指向的内存。在20行再次尝试释放str3指向的内存空间就有会出现FFM(再次释放已经释放的内存)错误。综合上述分析,源代码中存在以下错误:#include using namespace std;int main() char * str1 = hello; char * str2 = new char5; char * str3 = str2; coutstr2endl; /UMR、ABR、IPR strcpy(str2,str1); /ABW coutstr2endl; /ABR delete str2; str20+=2; /FM
11、R、FMW delete str3; /FFM getchar(); return 0;实验二 使用Rational Quantify对程序代码做性能分析一、目的和要求1了解应用程序性能的相关概念;2掌握Rational Quantify的基本设置;3掌握Rational Quantify的基本操作方法,学会使用该工具;4能够分析Rational Quantify输出的性能分析报告。二、实验内容1学习讲义02,掌握Rational Quantify的使用方法;2阅读以下C程序,该程序对二维数组中的每行进行排序,行与行之间不排序,完成以下实验: #include using namespace
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IBM Rational 软件 测试 工具 实验 报告 完整版
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Fis****915】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Fis****915】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。