- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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”),而
您可能关注的文档
- 神话故事人物战力排行榜(种)( ranks of mythological figures).doc
- 满足企业的融资需求,使融资带动公司的发展,有以下几点建议-.doc
- 家庭教育对小学生成长的意义 (字).doc
- 初中-年级英语单词表人教版 .doc
- “C++面向对象程序设计本科教学探索与实践”.doc
- 看到不少美术评论家为画家画集写的序言和在画家艺术研讨会上的发言都是应景的文章.doc
- 甘肃教师管理信息系统登录入口.doc
- 流行美语句(短语).doc
- 音乐欣赏雨打芭蕉教案.doc
- 时代光华学习课程:赢在性格试题.docx
- [人力资源管理系统]人力资源管理信息系统实训(完整过程版).doc
- 辨清证病症_把握辨证论治实质[].doc
- 各类建筑招标投标资料大全之四.docx
- 2017春高中化学表面活性剂精细化学品课时训练.doc
- 年安全工程师考试真题及答案——《安全生产法相关法律知识》.doc
- 过四级的绝招(Four tricks).doc
- 中国食物与营养发展纲要(2001—2010年)(Outline of China's food and Nutrition Development (2001 - 2010)).doc
- 贵族精神与现代性批判..doc
- gnsca高二英语上册Units-同步优质教案.doc
- 全国钢琴演奏(业余)考级(跨世纪新版)曲目讲解(第三级)(上).doc
文档评论(0)