版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件质量保证与测试1.2软件缺陷、软件错误、软件故障第1章绪论SoftwareQualityAssuranceandTestingGraceHopper
第一个Bug
软件缺陷(Defect),常常又被叫做Bug。Bug一词的原意是“臭虫”或“虫子”,这是怎么回事呢?
1945年9月9日,下午三点。美国海军编程员、编译器的发明者格蕾斯·哈珀(GraceHopper)哈珀正领着她的小组构造一个称为“马克二型”的计算机。第一个Bug
这还不是一个真正的电子计算机,它使用了大量的继电器,一种电子机械装置。
第二次世界大战还没有结束。
哈珀的小组夜以继日地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。突然,马克二型死机了。第一个bug
技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到工作日志中,并注明“第一个发现虫子的实例”。于是后来,bug一词成了计算机领域的专业术语,比喻那些系统中的缺陷或问题。
缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。软件缺陷的概念软件出现了产品说明书指明不会出现的错误软件未达到产品说明书的功能软件功能超出产品说明书指明范围软件未达到产品说明书虽未指出但应达到的目标软件难以理解、不易使用、运行速度缓慢,最终用户认为不好软件缺陷的外在表现软件缺陷的多种情况SoftS0t’软件产品要求
实际软件
SoftS0t’1错误软件缺陷的多种情况软件产品要求
实际软件
SoftS0t’2缺少1错误软件产品要求
实际软件
软件缺陷的多种情况SoftS0t’2缺少1错误3多余软件产品要求
实际软件
软件缺陷的多种情况SoftS0t’2缺少1错误3多余4未指出但应有软件产品要求
实际软件
软件缺陷的多种情况SoftS0t’2缺少1错误3多余4未指出但应有5用户不满意!软件产品要求
实际软件
软件缺陷的多种情况课堂提问:下列那种不属于软件缺陷:A.银行POS机在用户取款时翻倍吐钱,取100,吐200B.计算机病毒发作,屏幕出现熊猫烧香画面C.网上售票软件反应迟钝,用户难以正常买票D.某软件在进行修改升级之后,原来正常的功能现在出错了软件缺陷的多种情况软件缺陷产生的原因软件自身的特点团队合作设计和实现问题管理问题
软件缺陷的产生,主要是由软件产品的特点和开发过程决定的。那么造成软件缺陷的主要原因有哪些?下面从软件自身的特点、团队工作和技术问题等角度来分析软件缺陷产生的原因。软件缺陷产生的原因软件自身的特点1.软件本身的实际需求不清晰,导致设计目标偏离实际需求,从而引起功能或产品特征上的缺陷。案例:某网上售票系统,一开始把系统的同时在线购票用户数量定位在十万数量级,但在实际应用中,同时在线购票用户数量可能会达到百万甚至千万数量级,这样就会引起负载或强度问题。系统过载会导致性能下降,而如果负载超过其强度极限,则可能会彻底瘫痪或崩溃。软件缺陷产生的原因软件自身的特点2.系统结构非常复杂,而又无法设计成一个很好的层次结构或组件结构,结果导致意想不到的问题或系统维护、扩充上的困难;即使设计成良好的面向对象的系统,由于对象、类太多,很难完成对各种对象、类相互作用的组合测试,而隐藏着一些参数传递、方法调用、对象状态变化等方面问题。如庞大的ERP系统,数字化校园系统等。3.对一些实时应用,需要进行精心设计和技术处理,保证精确的时间同步,否则容易引起时间上不协调、不一致所带来的问题。软件缺陷产生的原因软件自身的特点4.系统运行环境的复杂,不仅用户使用的计算机环境千变万化,包括用户的各种操作方式或各种不同的输入数据,容易引起一些特定用户环境下的问题。案例:手机APP;美国迪斯尼公司狮子王游戏软件兼容性问题软件缺陷产生的原因软件自身的特点5.由于通信端口多、存取和加密手段的矛盾性等,会造成系统的安全性或适用性等问题。例如:网银。软件缺陷产生的原因团队合作1.系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存在一些困难。2.不同阶段的开发人员相互理解不一致。例如,软件设计人员对需求分析的理解有偏差,编程人员对系统设计规格说明书某些内容重视不够,或存在误解。3.对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通。4.项目组成员技术水平参差不齐,新员工较多,或培训不够等原因也容易引起问题。软件缺陷产生的原因设计和实现问题1.系统结构设计不合理、算法选择不科学,造成系统性能低下。2.没有考虑系统崩溃后的自我恢复或数据的异地备份、灾难性恢复等问题,从而存在系统安全性、可靠性的隐患。3.对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误。软件缺陷产生的原因设计和实现问题4.算法错误:在给定条件下没能给出正确或准确的结果。5.语法错误:对于编译性语言程序,编译器可以发现这类问题;但对于解释性语言程序,只能在测试运行时发现。6.计算和精度问题:计算的结果没有满足所需要的精度。7.接口参数传递不匹配,导致模块集成出现问题。软件缺陷产生的原因管理问题1.缺乏质量文化,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试、等时间,遗留的缺陷会比较多。2.开发流程不够完善和规范,存在太多的随机性和缺乏严谨的内审或评审机制,容易产生问题。例如对需求变化、设计更改、代码修正等因素缺乏严格规范的管理机制,导致开发过程难以稳步推进。软件缺陷产生的原因管理问题3.开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;周期短,还给各类开发人员造成太大的压力,引起一些人为的错误。4.文档不完善,风险估计不足等PIE模型
在试图发现软件缺陷的而执行软件的动态测试工作中有一些复杂而有趣的现象。假设某一个程序中有一个存在缺陷的代码行,在该软件的某次执行中,这个存在缺陷的代码行并不一定会被执行到;就算是这个存在缺陷的代码行被执行到了,只要没有达到某个特定的条件,程序也并不会出错;只有执行错误代码,达到某个特定的条件,程序的错误状态表现出来后被感知,才能发现程序中的缺陷。几个相关概念
软件测试中的PIE模型可以区分这些不同的现象,并明确了这些现象的转化条件。先来明确几个概念。缺陷Fault:
指静态存在于程序中的错误代码行。错误Error:
指执行错误代码后导致的内部错误状态。此时若无适当措施(容错)加以及时处理,便产生软件失败。失败Failure:
指错误状态传播到软件外部被外部感知。错误缺陷失败外部内部缺陷Fault、错误Error和失败FailurePIE模型
PIE模型告诉我们,就算一个程序中有缺陷,但要通过动态测试观察到这一缺陷的外部表现,还需要三个必要的条件:1、程序执行路径必须通过错误的代码(Execution-执行);2、在执行错误代码的时候必须符合某个或者某些特定条件,从而触发出错误的中间状态(Infection-感染);3、错误的中间状态必须传播到最后输出,使得观测到输出结果与预期结果不一致(Propagation-传播)。缺陷错误符合特定条件的输入执行存在缺陷的代码行失败ExecutionInfectionPropagationPIE模型程序PIE模型对某个软件进行软件测试时:包含缺陷Fault的代码可能没有被执行到;测试执行到了包含缺陷Fault的代码,但由于不满足特定的输入条件,不一定会产生错误的中间状态error;产生了错误的中间状态,但没有传播到最后输出,我们从外部没有发现问题。以上情况都会导致测试工作不充分,发现不了软件中存在的缺陷!类比:体检PIE模型:代码示例publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}代码有问题吗?PIE模型:示例publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++)//缺陷Fault{V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}情况1:没有对MY_AVG的调用,缺陷代码没有被执行到。publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例情况2:numbers[]={},此时虽然执行到了包含缺陷Fault的代码行,但不会产生错误Error。publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例情况3:numbers[]={0,2,4},输出结果为2,预期正确结果也为2,有Error(逻辑上第一个数没有加进去),但观察不到Failure。publicstaticvoidMY_AVG(int[]numbers){intlength=numbers.length;doubleV_avg,V_sum;V_avg=0.0; V_sum=0.0; for(inti=1;i<length;i++){V_sum+=numbers[i];}if(length!=0){V_avg=V_sum/(double)length;} System.out.println("V_avg:"+V_avg);}PIE模型:示例情况4:numbers[]={3,4,5},输出结果为3,预期正确结果为4,有Error,也发生了Failure。//测试的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院入住老人心理关怀制度
- 企业内部会议纪要及跟进制度
- 养鸡饲料基础知识培训课件
- 2026浙江台州市温岭市司法局招录1人参考题库附答案
- 会议组织与管理工作制度
- 2026福建南平市医疗类储备人才引进10人备考题库附答案
- 会议报告与总结撰写制度
- 公共交通信息化建设管理制度
- 养鸡技术培训课件资料
- 2026重庆渝北龙兴幼儿园招聘参考题库附答案
- 磁悬浮泵应用-洞察及研究
- 2025至2030锑酸钠行业市场占有率及投资前景评估规划报告
- 核电行业防造假管理制度
- GJB2489A2023航空机载设备履历本及产品合格证编制要求
- 要素式强制执行申请书(申请执行用)
- 小马宋广告战略营销公司简介
- 2025年4月自考00609高级日语(一)试题
- 公司一事一议管理制度
- 新疆阿合奇托什干河国家湿地公园建设项目环境影响报告书
- 同等学力硕士学位协议书
- 维修工作计划模板范文
评论
0/150
提交评论