软件缺陷的分类标准有哪些呢?
常见的软件缺陷有以下四种:第一,栈溢出。
就是在栈中申请一段内存,一般是数组或字符串,在对这段内存做操作的时候,错误的写操作可能导致栈中也特殊意义的地址被用户的输入内容所控制。
最早发现是一些字符串操作的函数中,比如strcat,后来又发现在Strncpy如果不正常操作的话也会出现这个问题。
最后有一个Windows UNicode处理的函数如果不正常使用也会出现这样的问题。
下面介绍的是整数溢出的问题。
整数溢出是多发于的情况,特别是一些加、乘的操作出现在内存前面就要特别注意了。
加或者乘出来的数不一定比原先两个数大。
还有一个正负数比较的问题,或者是符号扩展的问题。
即使现在这个问题仍存在于很多软件中。
但是在很多流行软件中已经很少出现了,比如微软的软件、国外大公司的软件。
但是在国内软件这个问题依然是很多的。
这个问题在JAVA软件中也经常存在。
例如银行系统,系统错误处理,把别人帐号上扣掉的金额,一个正的金额加到你的帐号上。
第二, heap overflow。
这是现代程序C语言主要申请分配方法,所以他比栈溢出比例大的多。
微软做了很多防护措施,所以它利用起来是非常复杂的。
尤其是 WindowsXP2之后的版本,比如vista。
堆管理主要利用两张表,freelist、lookaside,freelist[0]代表着一些不规则的可以利用的chunk,尤其是比较大的chunk。
freelist[1] - freelist[n]代表2的整数次方可以利用的堆中的chunk。
利用这样堆溢出的问题,你需要对Windows堆管理非常熟悉。
比如有人通过 freelist[0]这个链表成功利用。
目前有一个immdbg的程序对这种研究利用是很有帮助的。
因为他把堆分配的内容都可以显示出来。
对vista 软件的攻击,理论上应该是不存在的。
因为vista对堆管理有严格控制,但是有很多软件使用自己的内存管理方法,比如OFFICE,他们自己堆管理方法和内存方法是和vista不一样的,这些方法往往采用教科书的方法或者以前系统的方法,所以他们这些方法是有可能被利用起来。
第三,未初始化的问题。
栈上的问题由德国人在06年详细讨论过。
头一次压栈的时候,在栈上写需要内容,然后函数退出,导致栈顶上移,有问题的函数压栈时正好利用这段栈空间,如果函数中发现了未初始化问题,比如数组,那么其内容刚好是我们刚写入的内容的栈空间,就可能被利用。
先把堆里的大部分内容写成自己需要的内容,未初始问题发生时,比如堆里指针的内容就可能指向我们需要的内容。
目前这个问题是大量存在的,OFFICE存在了很多。
比如这个月微软补丁,excel那一个补丁里就包括很多这样的问题。
你可以对比新旧的OFFICE软件,你发现 OFFICE2007有一些新加的代码就是做初始化工作的。
第四,二次释放或者叫double free问题。
内存泄露是现代软件大敌,特别是服务器软件。
有很多程序员害怕发生这样的问题,申请内存时总是想释放它,结果释放多了几次,这样也会有安全问题。
曾经在linux上的方法很巧妙、经典,但是在目前Windows上比较难以利用。
很多软件采用自己管理内存方法,那么就很可能被利用到。
软件缺陷的产生原因有哪些?
软件错误导致软件缺陷(softwaedefect),如设计缺陷,代码缺陷等,可用静态测试,如走查,静态检查,测试床(军事软件用的技术)等,软件的缺陷导致一个或多个软件故障(softwaefault),故障有内部故障,外部故障,也就是我们所说的ug,软件故障导致了软件在功能操作等方面的失效(softwaefailue)
软件缺陷描述规范有哪些呢?
2–较高优先级,例如,影响软件功能和性能的一般缺陷;3一般优先级,例如,本地化软件的某些字符没有翻译或者翻译不准确的缺陷;4–低优先级,例如,对软件的质量影响非常轻微或出现几率很低的缺陷;其他注意事项比较规范的软件测试,使用软件缺陷管理数据库进行缺陷报告和处理,需要在测试项目开始前对全体测试人员和开发人员进行培训,对缺陷严重性和优先级的表示和划分方法统一规定和遵守
软件缺陷的状态有哪些
bug提交到缺陷库中会自动的被设置成New状态 Assigned(已指派): 当一个bug被认为New之后,将其分配开发人员,开发人员将确认这是否是一个bug,如果是,开发组的负责人就将这个bug指定给某位开发人员处理,并将bug的状态设定为“Assigned” Open(已打开): 开发人员开始处理bug时,他将这个bug的状态设置为“Open”,表示开发人员正在处理这个“bug” Fixed(已修复): 当开发人员进行处理(并认为已经解决)之后,他(她)就可以将这个bug的状态设置为“Fixed”并将其提交给开发组的负责人,然后开发组的负责人将这个bug返还给测试组 Rejected(被拒绝): 测试组的负责人接到上述bug的时候,如果他(她)发现这是产品说明书中定义的正常行为或者经过与开发人员的讨论之后认为这并不能算作bug的时候,开发组负责人就将这个bug的状态设置为“Rejected” Postponed(延期): 有些时候,对于一些特殊的bug的测试需要搁置一段时间,事实上有很多原因可能导致这种情况的发生,比如无效的测试数据,一些特殊的无效的功能等等,在这种情况下,bug的状态就被设置为“Postponed” Closed(已关闭): 测试人员经过再次测试后确认bug已经被解决,将bug的状态设置为“Closed” 如经过再次测试发现bug仍然存在,测试人员将bug再次开发组,将bug的状态设置为“Reopen”...
软件测试 缺陷报告都要包括什么内容
软件缺陷:软件未达到产品设计规范表明的功能;软件出现了产品设计规范指明不会出现的错误;软件功能超出产品设计规范指明的范围;软件未达到产品设计规范虽未指出但应达到的目标;软件测试人员认为软件难以理解、不易使用、运行速度慢,或者最终用户认为不好。
你应该也想知道软件错误吧计算、观察、测量的值或条件与实际的、规定的或理论上的值或条件不符合;导致产生含有缺陷的软件的人为行动。
例如,遗漏或误解软件说明书中的用户需求,不正确的翻译或遗漏设计规格说明书中的需求。
上面的统称软件故障提交高质量的软件缺陷记录,你们使用CQ吗,还是buglist,觉得故障定级要准确,对于随机性出现的错误一定要做好记录,这个最好截图,有些错误真的就出现一次,如果条件允许,你出故障的时候,比如一级故障,截个图,就可以叫研发人员过来看,然后注意老员工的提交记录,学习他们的规范和思考方式,特别要和研发人员保持好关系,否则别人直接无视你的报告,如果你是女的还好,别人不好意思说你,你是男的,直接藐视了,特别注意不要提太多的bug,写bug记录的时候也要站在研发的角度,提出解决方法,建议他们作修改,我的一些个人意见,希望对你有帮助。