第04章 基于缺陷模式软件测试.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 缺陷模式 低性能模式: 该模式导致软件运行效率低下,因此建议采用更高效的代码来完成同样的功能。这类模式主要包括使用低效函数/代码、使用多余函数、Java中显式垃圾回收、冗余代码、头文件中定义的静态变量、不必要的文件包含、字符串低效操作和有更简单的运算可以替代等。 * 例: i==2 与 2==i 比较下两段代码各有什么优缺点: if (condition) { for (i=0; iN; i++) DoSomething(); }else { for (i=0; iN; i++) DoOtherthing(); } for (i=0; iN; i++) { if (condition) DoSomething(); else DoOtherthing(); } * 规则模式 软件开发总要遵循一定的规则,某个团队也有一些开发规则,违反这些规则也是不允许的。 代码规则 复杂性规则 控制流规则 命名规则 可移植性规则 资源规则 * 文件检索系统中其他错误 D0003:函数用错 //return stricmp(l_Buf1, l_Buf2); return strcmp(l_Buf1, l_Buf2); D0008:冗余代码 else { fclose(l_In); return FALSE; } * 文件检索系统中其他错误 D0010:超出数组范围 //if( l_Order = MAXPATHLEN) if( l_Order MAXPATHLEN) D0011: 出错行:if(_chdrive( g_TargetDir[0] - A + 1) == -1) 原因,修改SetTargetDir: 添加行:_strupr(g_TargetDir); * 文件检索系统中其他错误 D0020:删除结点出错 //l_DirSet = l_Link2-m_next; l_DirSet-m_next = l_Link2-m_next; D0022:判断条件出错 //while(GetNextFileSetting(l_Buf, MAXFILELEN+1) != -1) while(GetNextFileSetting(l_Buf, MAXFILELEN+1)) * 软件测试技术 主讲人:刘 伟 * 缺陷模式 缺陷模式是和语言本身相关的,不同的语言有着不同的缺陷模式。 故障模式 漏洞模式 缺陷模式 规则模式 * 故障模式 此类缺陷是故障,一经产生,会导致系统出错。 内存泄露模式 资源泄漏模式 指针使用错误模式 数组越界模式 非法计算模式 使用未初始化变量模式 死循环结构模式 死锁模式 * 故障模式 故障模式中给出的故障描述,是程序中可能存在的故障,这些故障一旦被激活,就会使系统发生错误。包括以下几种故障模式: * 故障模式 1、内存泄漏的故障模式(Memory Leak Fault, MLF) 定义:设在程序的某处申请了大小为MB的空间,凡在程序结束时MB或者MB的一部分没被释放、多次释放MB或MB的一部分都是内存泄漏故障。 MLF有三种形式: 遗漏故障:是指申请的内存没有被释放。 不匹配故障:是指申请函数和释放函数不匹配。 不相等的释放错误:是指释放的空间和申请的空间大小不一样。 * 例题 例4-1:申请的内存没有被释放 listrec *add_list_entry(listrec *entry,int value){ listrec *new_entry=(listrec *)malloc(sizeof(listrec)); if(!new_entry) return NULL; if(!entry) return NULL; … …} 例4-2/3:申请函数和释放函数不匹配 str=malloc(10) ; … ; delete(str) ; … str=new(10);... ; free(str);... malloc与free匹配;new与delete匹配 * 例4-6:申请内存的pointer发生了变化 char *p=malloc(10); ++p; free(p); 例:“=”指针赋值,不能重复删除。 char *str=new char[100]; char *p; str=abc; p=str; delete str; delete p; * 文件检索系统中关于内存错误 D0005(D0012、D0013、D0018同): 报错行:delete l_Link-m_node.m_dirname; 原因:l_Link-m_node.m_dirname = (char*) new char(strlen(l_Buf1)+1); D0017: while(l_DirSea

文档评论(0)

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

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

1亿VIP精品文档

相关文档