软件BUG产生的原因有哪些?
缺陷产生的原因主要有以下方面 * 项目期限的压力 * 产品的复杂度 * 沟通不良 * 开发人员疲劳、压力过大或受到干扰。
* 不了解客户的需求 * 缺乏动力 我们可以从软件自身特点、团队工作和项目管理等多个方面进行分析,找出导致软件缺陷更多的一些原因,这可以归纳为如下3个方面。
1. 软件开发过程自身的特点造成的问题 * 软件需求定义难以做到清清楚楚,导致设计目标偏离客户的需求,从而引起功能或产品特性上的缺陷 * 软件系统结构非常复杂,而又无法构造一个完美的层次结构或组件结构,结果将导致意想不到的问题。
* 新技术的采用,可能涉及技术或系统兼容性的问题,而事先没有考虑到。
* 对程序逻辑路径或数据范围的边界考虑不周全,容易在边界条件上出错,或者超出边界条件后又缺少保护导致出错。
* 没有考虑或处理好系统崩溃后的自我恢复、故障转移或数据的异地备份等情况,从而存在系统安全性、可靠性的隐患。
2.软件项目管理的问题 * 受质量文化的影响,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试等的时间,于是遗留的缺陷也会比较多。
* 开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;周期短,还给各类开发人员造成太大压力,从而引起一些人为的错误。
* 开发流程不够完善,存在较多的随机性和缺乏严谨的内审和评审机制,容易产生问题。
* 文档不完善,风险估计不足等 3.团队工作的问题 * 沟通不够、不流畅,导致不同阶段、不同团队的开发人员对问题的理解不一致。
* 项目组成员技术水平参差不齐,或者新员工较多或培训不够等,也容易引起问题。
软件出现Bug的原因是什么?
这个问题的争议很多,有人认为寻找BUG的原因是开发的事情,软件测试只要能发现BUG就够了;还有人认为软件测试可以尽自己所能尽可能的去寻找BUG的原因。
到底哪个观点正确?我个人认为这个问题是仁者见仁,智者见智,站在一个产品不同的层面看,会有不同的看法。
这里所谈到的观点,也仅代表个人看法。
要搞清楚这个问题,先要明确几个定义,首先要明确什么是QA?简单从字面上理解是 Quality Assue(质量保证),CMM对QA的要求主要有下面几点:保障制度体系;促使过程改进;指导项目实施;增加透明度;评审项目活动;审核工作产品;协助问题解决;提供决策参考;进行缺陷预防;实现质量目标。
其次什么是软件测试,软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期结果),并利用这些测试用例去执行程序,以发现程序错误的过程。
而软件测试人员就是这一过程的执行者。
从上面的定义可以看到,QA重点关注的不仅仅是质量,而是整个软件过程,保证的首先是过程和体系,也就是说只有规范了过程和体系,才有可能做出好的产品。
而软件测试就是通过自己的活动,来给QA人员提供尽可能的有效的信息和数据,使他们能够发现过程上的异常或者制度上的不妥之处。
可见软件测试的任务不仅仅是测试,还要把项目的异常情况向QA报告,所以只能报出BUG是不够的。
其实QA和软件测试的目的都是一样的,就是尽可能的使发布出去的产品更加符合用户的需要,尽可能的没有ug。
不同之处只是一个关注的是整个软件过程,一个只是关注最终的质量。
所以为了搞清楚软件测试要不要追究 BUG发生的原因,先要明确的是弄清楚BUG发生的原因对整个软件过程有什么好处,或者说对最终的质量有什么好处? 对于开发来说,一般是能够重现这个BUG就够了,这样对于那些发生几率在100%的ug来说,软件测试人员只要详细清晰的描述出ug发生的步骤,写明ug的发生条件,执行这些操作的用户的角色以及权限,使用的操作系统和浏览器,然后写清楚实际结果和期望结果,基本上就差不多了,开发根据这些描述能够知道是如何出现的问题,并且知道应该改成什么样。
到时候软件测试人员(可能不是原来报BUG的那个人了)进行回归测试时根据BUG的描述,也可以很清楚的知道这个BUG是否真的改好了。
但是如果一个BUG的发生几率不是100%,或者说在某些特定的条件下的发生几率是100%,但是一般情况下都不存在。
测试人员可能只是偶然发现这个问题,却会认为是100%出现,报BUG时也就没有指明这个问题出现的条件,开发看到这种BUG,根本无法重现,再打给测试人员,如此反复几次,虽然最终问题得以解决,但是对于整个项目来说,却是浪费了很多的时间。
如果在发现问题时。
能够多试几下,或者换个环境试试,可能就会找到发生几率不是 100%的原因,比如非法数据,特殊字符,特殊用户权限,特殊日期,或者在系统中还有其他自己不知道的参数的影响,或者是操作系统的问题,又或者是浏览器的设置问题,还有可能是浏览器的版本问题等等,寻找这些原因的过程,是一个自我提高的过程,也是积累自己测试经验的过程,同时也是证明测试角色重要的过程,是证明测试人员价值的过程。
当然目前国内的软件公司中测试人员的水平还不是很高,想看懂开发的代码并且进行测试难度还比较大,所以我也不主张去看着开发的代码进行测试,只需要在测试的时候,多考虑一下,尤其是出现问题的时候,多想想这个问题为什么会发生,会影响到系统中其他什么地方,还会有其他哪些地方有可能存在这样的问题,这样等到开发修改好之后,提交测试进行回归检测时也可以做到有的放矢,尤其是在回归测试时间很短的情况下,如何进行有效的回归测试,并且保证不漏掉重大隐患,我想和开发水平固然有关,但是关系最大的还是测试人员对系统的熟悉程度,以及是否具有软件开发的思想。
追究ug的原因,不是一朝一夕的事,需要长期的摸索和总结,开始会很烦,可能还会很郁闷,但是慢慢的你会发现其中的乐趣,想一想当你报给开发一个 Bug的时候,随着ug的报告还有一个详尽的发生这个ug的条件数据,以及测试平台等数据,开发根据这些很容易重现这个问题,会对测试人员的专业度有很大的认可,那时我想自己心里的成就感不是几句话可以说完的了!
为啥是软件就一定会有Bug
软件缺陷:软件未达到产品设计规范表明的功能;软件出现了产品设计规范指明不会出现的错误;软件功能超出产品设计规范指明的范围;软件未达到产品设计规范虽未指出但应达到的目标;软件测试人员认为软件难以理解、不易使用、运行速度慢,或者最终用户认为不好。
你应该也想知道软件错误吧计算、观察、测量的值或条件与实际的、规定的或理论上的值或条件不符合;导致产生含有缺陷的软件的人为行动。
例如,遗漏或误解软件说明书中的用户需求,不正确的翻译或遗漏设计规格说明书中的需求。
上面的统称软件故障提交高质量的软件缺陷记录,你们使用CQ吗,还是buglist,觉得故障定级要准确,对于随机性出现的错误一定要做好记录,这个最好截图,有些错误真的就出现一次,如果条件允许,你出故障的时候,比如一级故障,截个图,就可以叫研发人员过来看,然后注意老员工的提交记录,学习他们的规范和思考方式,特别要和研发人员保持好关系,否则别人直接无视你的报告,如果你是女的还好,别人不好意思说你,你是男的,直接藐视了,特别注意不要提太多的bug,写bug记录的时候也要站在研发的角度,提出解决方法,建议他们作修改,我的一些个人意见,希望对你有帮助。
系统bug是什么意思
bug“BUG”的由来: Bug一词的原意是“臭虫”或“虫子”。
但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“Bug”,这是怎么回事呢? 原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。
可能正是由于计算机运行产生的光和热,引得一只小虫子?Bug?钻进了一支真空管内,导致整个计算机无法工作。
研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。
后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。
与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。
遗憾的是,在中文里面,至今仍没有与“Bug”准确对应的词汇,于是只能直接引用“Bug”一词。
虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。
所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。
硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。
软件的错误全是厂家设计错误。
那种说用户执行了非法操作的提示,是软件厂商不负责的胡说八道。
用户可能会执行不正确的操作,比如本来是做加法但按了减法键。
这样用户会得到一个不正确的结果,但不会引起bug发作。
软件厂商在设计产品时的一个基本要求,就是不允许用户做非法的操作。
只要允许用户做的,都是合法的。
用户根本就没有办法知道厂家心里是怎么想的,哪些操作序列是非法的。
从电脑诞生之日起,就有了电脑BUG。
第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯·哈珀(GraceHopper)发现的。
哈珀后来成了美国海军的一个将军,领导了著名计算机语言Cobol的开发。
1945年9月9日,下午三点。
哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。
这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。
第二次世界大战还没有结束。
哈珀的小组日以继夜地工作。
机房是一间第一次世界大战时建造的老建筑。
那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。
突然,马克二型死机了。
技术人员试了很多办法,最后定位到第70号继电器出错。
哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。
她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。
”[1] 从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。
程序中隐藏的功能缺陷或错误。
由于现在的软件复杂程度早已超出了一般人能控制的范围,如Win95、Win98这样的较成熟的操作系统也会不定期地公布其中的Bug。
如何减少以至消灭程序中的Bug,一直是程序员所极为重视的课题。
BUG是什么意思
“BUG”的由来:Bug一词的原意是“臭虫”或“虫子”。
但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“Bug”,这是怎么回事呢?原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。
可能正是由于计算机运行产生的光和热,引得一只小虫子?Bug?钻进了一支真空管内,导致整个计算机无法工作。
研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。
后来,Bug这个名词就沿用下来,表示电脑系统或程序中隐藏的错误、缺陷或问题。
与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”,意即“捉虫子”或“杀虫子”。
遗憾的是,在中文里面,至今仍没有与“Bug”准确对应的词汇,于是只能直接引用“Bug”一词。
虽然也有人使用“臭虫”一词替代“Bug”,但容易产生歧义,所以推广不开。
所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。
硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。
软件的错误全是厂家设计错误。
那种说用户执行了非法操作的提示,是软件厂商不负责的胡说八道。
用户可能会执行不正确的操作,比如本来是做加法但按了减法键。
这样用户会得到一个不正确的结果,但不会引起bug发作。
软件厂商在设计产品时的一个基本要求,就是不允许用户做非法的操作。
只要允许用户做的,都是合法的。
用户根本就没有办法知道厂家心里是怎么想的,哪些操作序列是非法的。
从电脑诞生之日起,就有了电脑BUG。
第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯·哈珀(GraceHopper)发现的。
哈珀后来成了美国海军的一个将军,领导了著名计算机语言Cobol的开发。
1945年9月9日,下午三点。
哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。
这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。
第二次世界大战还没有结束。
哈珀的小组日以继夜地工作。
机房是一间第一次世界大战时建造的老建筑。
那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。
突然,马克二型死机了。
技术人员试了很多办法,最后定位到第70号继电器出错。
哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。
她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。
”[1]从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。
穿越火线BUG是什么意思
软件的Bug,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。
仅就狭义概念而言,软件出现Bug的原因有: 1、对各种流程分支考虑不全面; 2、对边界情况的处理不到位; 3、编码时的手误。
穿越火线也有bug 箱子、墙能进也是bug! 掉到游戏界面以外也是bug! 至今还没有100%完美的硬件,系统软件,或应用软件,所以BUG无法避免,一个看来无可挑剔的游戏,还是有可能存在BUG,只是你没发现而已,尽管BUG无法避免,但是工作人员在努力地修复它,这也是电脑界面对的一个问题:能够彻底杜绝BUG的存在吗?
BUG是什么意思?
软件程序的漏洞或缺陷“BUG”的由来Bug一词的原意是“臭虫”或“虫子”。
但是现在,在电脑系统或程序中,如果隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”,这是怎么回事呢? 原来,第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。
可能正是由于计算机运行产生的光和热,引得一只小虫子(Bug)钻进了一支真空管内,导致整个计算机无法正常工作。
研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。
后来,Bug这个名词就沿用下来,用来表示电脑系统或程序中隐藏的错误、缺陷、漏洞等问题。
1945年,计算机还是由机械式继电器和真空管驱动的,机器有房间那么大。
体现当时技术水平的MarkⅡ,是由哈佛大学制造的一个庞然大物。
当技术人员正在进行不整机运行时,它突然停止了工作。
他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。
与Bug相对应,人们将发现Bug并加以纠正的过程叫做“Debug”(中文称作“调试”),意即“捉虫子”或“杀虫子”。
后来就直接用bug 在现在很多的软件测试中 都用Bug来说明那些问题。
“Bug”的创始人 赫柏的报告格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电脑程序的人之一。
而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。
1945年的一天,赫柏对Harvard Mark II设置好17000个继电器进行编程后,她的工作却毁于一只飞进电脑造成短路的飞蛾。
在报告中,赫柏用胶条贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”,“Bug”这个说法一直沿用到今天。
为什么游戏会出现BUG
因为引起这个的原因很多,要具体分析,只有你自己知道最近做了什么事情引起的,所以还是只有你自己解决。
PS:如果你使用的是装机时配的系统建议你自己重装. 以下可以供你学习用,其实我相信没有几个愿意看完,你也不例外吧,呵呵! 该内存不能read 或written的常见原因: 使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的 0x00000000内存,该内存不能written”,然后应用程序被关闭。
如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。
其实,这个错误并不一定是Windows不稳定造成的。
本文就来简单分析这种错误的常见原因。
一、应用程序没有检查内存分配失败 程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。
这就是“动态内存分配”,内存地址也就是编程中的“指针”。
内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。
当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。
作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。
若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。
真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。
在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。
这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。
内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。
因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。
二、应用程序由于自身BUG引用了不正常的内存指针 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。
有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。
注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。
计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。
无效指针不一定总是0,因此错误提示中的内存地址也不一定为 “0x00000000”,而是其他随机数字。
如果系统经常有所提到的错误提示,下面的建议可能会有帮助: 1.查看系统中是否有木马或病毒。
这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。
平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。
有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3.试用新版本的应用程序。
运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。
该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
不知你出现过类似这样的故障吗?(0x后面内容有可能不一样。
) 一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
转载请注明出处51数据库 » 软件bug出现的原因