版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件质量保证与测试1.1
软件质量保证与测试的产生与发展第1章绪论SoftwareQualityAssuranceandTesting产生与发展的过程1957测试=调试
197219751980’198319731979软件测试是伴随着软件的产生而产生的。早期的软件规模小、复杂程度低,软件开发的过程相当随意,开发人员将软件测试等同于“调试”,常常由开发人员自己完成这部分工作。总体而言,跟软件测试相关的工作投入极少,测试工作介入也晚,常常是等到代码编写出来,产品已经基本完成时才进行测试。1957测试=调试
测试≠调试
197219751980’198319731979
直到1957年,软件测试才开始与调试区别开来,成为一种专门致力于发现软件缺陷的活动。
由于当时人们对软件测试的目的理解为“使自己确信产品能工作”,所以软件测试通常在程序代码编写之后进行。产生与发展的过程1957测试=调试
测试≠调试
197219751980’198319731979
当时也缺乏有效的测试方法,主要依靠“错误推测ErrorGuessing”来寻找软件中的缺陷。
因此,大量软件交付后,仍存在很多问题,软件产品的质量无法保证。产生与发展的过程第一次软件测试会议1957测试=调试
测试≠调试
197219751980’198319731979
1972年,软件测试领域的先驱BillHetzel(比尔黑则尔)博士在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。产生与发展的过程第一类方法第一次软件测试会议1957测试=调试
测试≠调试
197219751980’198319731979产生与发展的过程
1973年,他首先给软件测试一个这样的定义:“就是建立一种信心,认为程序能够按预期的设想运行”。第一类方法第一次软件测试会议1957测试=调试
测试≠调试
197219751980’198319731979产生与发展的过程
核心观点:软件测试是试图验证软件是“工作的”,所谓“工作的”就是指软件的功能是按照预先的设计执行的。
这是以正向思维方式,针对软件系统的所有功能点,逐个验证其正确性。被称为第一类方法。第一类方法第一次软件测试会议1957测试=调试
测试≠调试
19721975软件测试研究方向1980’198319731979产生与发展的过程
1975年约翰·古迪纳夫和苏珊·格哈特在IEEE上发表了“测试数据选择的原理”一文,软件测试才被确定为一种研究方向。
产生与发展的过程
第一类方法受到很多业界权威的质疑和挑战,代表人物是GlenfordJ.Myers(格伦福德·迈尔斯)。
1979年,他发表的代表性论著《软件测试艺术》可算是软件测试领域的第一本最重要的专著。软件测试第一类方法:验证软件是“工作的”产生与发展的过程软件测试第一类方法:验证软件是“工作的”
他认为测试不应该着眼于验证软件是工作的,而应该首先认为软件是有错误的,然后用逆向思维去发现软件中尽可能多的错误。
他还从人的心理学的角度论证,如果将“验证软件是工作的”作为测试的目的,非常不利于测试人员发现软件的错误。产生与发展的过程
GlenfordJ.Myers(格伦福德·迈尔斯)于1979年提出了他对软件测试的定义:“测试是为发现错误而执行一个程序或者系统的过程”。Myers还给出了与测试相关的三个重要观点,那就是:1、测试是为了证明程序有错,而不是证明程序无错误;2、一个好的测试用例是在于它能发现至今未发现的错误;3、一个成功的测试是发现了至今未发现的错误的测试。第一类方法第一次软件测试会议1957测试=调试
测试≠调试
19721975软件测试研究方向1980’198319731979第二类方法产生与发展的过程
这就是软件测试的第二类方法,简单地说就是测试是验证软件是“不工作的”,或者说是有错误的。
Myers认为,一个成功的测试必须是发现Bug的测试,不然就没有价值。产生与发展的过程
到了上世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个时候,一些软件测试的基础理论和实用技术开始形成。软件测试定义发生了改变,测试不单纯是一个发现错误的过程。还有什么?质量测度!第一类方法“质量”的概念融入软件测试
第一次软件测试会议1957测试=调试
测试≠调试
19721975软件测试研究方向1980’198319731979第二类方法产生与发展的过程
人们将“质量”的概念融入其中,而且将测试作为软件质量保证的主要职能,包含软件质量评价的内容。第一类方法“质量”的概念融入软件测试
第一次软件测试会议1957测试=调试
测试≠调试
19721975软件测试研究方向1980’1983IEEE对软件测试的定义
19731979第二类方法产生与发展的过程
1983年IEEE提出的定义:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。第一类方法“质量”的概念融入软件测试
第一次软件测试会议1957测试=调试
测试≠调试
19721975软件测试研究方向1980’1983IEEE对软件测试的定义
软件质量保证与测试19731979第二类方法产生与发展的过程
软件测试总的来说是一种事后检查的方法,如果软件研发前期工作做得不好,完全依赖测试很难保障软件产品的质量,鉴于此,结合事先预防,过程监督和事后检查的软件质量保证就应运而生。产生与发展的过程类比:测试——>质量保证与测试
毕业时考一次——>日常督查与学期考试课堂提问第一类测试方法与第二类测试方法的本质区别体现在:执行测试的人员不同执行测试的时间不同执行测试的目的不同执行测试的效果不同为了全面保证软件质量调试软件测试(第一类方法)软件测试(第二类方法)软件质量保证与测试测试是为确信产品能工作测试是为了发现错误测试等同于“调试”观念变化的过程使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。软件测试软件质量保证软件质量保证是为保证产品和服务充分满足消费者要求的质量而进行的有计划、有组织的活动,它贯穿于整个软件过程。基本概念软件质量保证活动(1)识别软件质量需求,并将其自顶向下分解为可以度量和控制的质量要素,为软件质量的定性分析和定量度量奠定基础;(2)研究并选用软件开发方法和工具;(3)对软件生存周期各阶段进行正式技术评审;(4)制定并实施软件测试策略和测试计划;(5)及时生成软件文档并进行其版本控制;(6)建立软件质量要素的度量机制;(7)处理不合格项,跟踪问题;(8)监控软件过程和产品质量;(9)记录SQA的各项活动,并生成各种SQA报告。软件质量保证与测试软件质量保证与测试质量保证人员开发人员测试人员检查评审测试......
软件测试是软件质量保证中重要的一项活动,但软件质量保证不仅仅包括软件测试,还包括检查、评审等其他很多活动。
软件质量保证也不仅仅只是测试人员的工作,它需要专职的软件质量保证人员,也需要软件开发人员参与相关工作。1.1
软件质量保证与测试的产生与发展本节内容就讲到这里,谢谢,再见!软件质量保证与测试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:未调用MY_AVGpublicstaticvoidmain(String[]args){//情况2:
int
numbers[]={};//情况3:intnumbers[]={0,2,4};//情况4:intnumbers[]={3,4,5}; MY_AVG(numbers); }PIE模型:示例错误ErrorPIE模型剖析缺陷Fault程序未发现错误情况1情况2失败Failure缺陷Fault程序未发现错误××情况3失败Failure缺陷Fault程序未发现错误×情况4失败Failure缺陷Fault程序发现错误错误Error错误Error不看源代码,通过执行软件,能够发现的问题只有PIE模型中外部层面的软件失败Failure,也就是表现出来的问题。程序中处于内部静态层次的缺陷Fault,和内部中间状态层次的错误Error,是难以通过执行软件来直接检测出来的。PIE模型缺陷Fault失败Failure测试设计测试设计要做的重要工作之一,就是如何恰当的设计测试数据,使得可能存在的软件缺陷Fault,通过程序执行都尽可能的产生失败Failure并被外部观察到。测试设计本节内容就讲到这里,谢谢,再见!1.2软件缺陷、软件错误、软件故障软件质量保证与测试1.3软件质量保证与测试的意义、原则和挑战第1章绪论SoftwareQualityAssuranceandTesting65软件数量越来越多
以App为例,工业和信息化部公布2018年我国市场上监测到的App数量净增42万款,总量达到449万款。软件规模越来越大KB→MB→GB
航天飞机控制软件有4000万行代码,空间站控制软件有10亿行代码。
软件发展的特点和软件质量保证与测试的关系缺陷与代码量正相关!软件复杂度越来越高,使得缺陷产生的概率增大196219972016软件发展的特点和软件质量保证与测试的关系67软件应用越来越广泛和深入,而新研发的软件往往缺陷较多软件发展的特点和软件质量保证与测试的关系社会对软件的质量要求越来越高68
软件在事关国计民生的重要领域的应用,使得社会对软件的质量要求越来越高,软件的质量风险越来越大。软件发展的特点和软件质量保证与测试的关系软件质量保证与测试的重要性事关国计民生的重要软件,没有严格的质量控制,不经过充分测试,就投入使用,可能造成恶性事故!
软件质量保证与软件测试已成为一项专业化要求越来越高的工作,需要采用专门的方法和技术,需要借助各种专业化的工具,需要专业人才甚至是专家来承担。软件缺陷导致的事故案例1.
美国爱国者导弹防御系统失效。2.
美国航天局火星登陆事故3.致命的辐射治疗仪1.爱国者导弹防御系统失效海湾战争中,1991年2月25日,一枚伊拉克飞毛腿导弹击中了沙特阿拉伯载赫蓝的一个军营,炸死了美国陆军的28名士兵,美国的爱国者导弹防御系统未能拦截。政府调查指出,拦截失败归咎于导弹控制软件系统中的一个时钟误差。软件缺陷导致的事故案例2.美国航天局火星登陆事故
1992年2月3日,美国航天局的火星极地登陆飞船在试图登陆火星表面时逆向推进器意外关闭,飞船坠毁。
这一事故的后果非常严重,损失巨大,而起因却是控制软件设计中的缺陷。事后分析测试发现,当飞船的支撑腿迅速打开准备着陆时,机械震动很容易触发着地触电开关,关闭登陆逆向推进器。软件缺陷导致的事故案例3.致命的辐射治疗仪
20世纪80年代中期,Therac-25放射治疗仪在美国和加拿大发生了多次医疗事故,5名患者治疗后死亡,其余患者则受到了超剂量辐射被严重灼伤。
Therac-25放射治疗仪的事故是由操作失误、软件缺陷和系统设计共同造成的。软件缺陷导致的事故案例软件质量保证与测试的意义及早发现问题、解决问题,降低返工和修复缺陷的成本防止事故,降低失效成本保证软件产品达到一定的质量标准对软件质量进行客观评价提高软件产品质量、满足用户需求软件质量保证与测试的意义软件质量成本=预防成本+评估成本+失败成本制定质量保证计划
制
定
质
量
标
准
组
织
人
员
培
训……
评审
测试……
修复缺陷
赔偿损失……$改正一个错误的相对成本需求分析设计编码系统测试实际使用1倍3-6倍10倍15-40倍30-70倍40-1000倍开发测试需求分析概要设计程序编码案例详细设计5行文字3页设计文档20页设计文档5000行程序代码改正一个错误的相对成本学习软件质量保证与测试并不是只有将来专门从事软件质量保证与测试工作的人员,才需要学习软件质量保证与测试。所有参与软件项目的人都应当树立软件质量保证与测试的理念。开发人员也必须学习和掌握软件质量保证与测试的基本知识、方法、技术和工具。一般而言软件开发人员需要对自己所开发的软件完成基本的测试,只有懂测试的开发人员才能开发出高质量的软件,软件质量保证与测试的理念、知识和能力是对软件开发工程师的一项基本要求。软件质量保证与测试要贯穿于整个软件生存期软件质量保证与测试要预防为主,发现为辅软件质量保证与测试需要客观性软件质量保证与测试需要独立性软件质量保证与测试的最终标准都应追溯到用户需求软件质量保证与测试应妥善保存一切过程文档软件质量保证与测试的基本原则穷尽测试是不可能的,应当进行测试设计,选择测试数据。设计测试用例时,应该考虑各种情况,包括异常情况。应当把尽早和不断的测试作为座右铭。对测试发现的错误结果一定要有一个确认的过程。测试规格要求应追溯到用户需求。应充分注意问题群集现象。制定并严格执行测试计划,排除测试的随意性。通过测试的软件并不意味着没有任何缺陷。测试必须考虑成本和效益,测试需要适时终止。保存一切测试过程文档。软件测试的技术原则穷尽测试是不可能的有一个软件,输入两个数:A、B,输出:C=A+B如果要把所有可能的输入都测试一次,则:每个数的取值个数:232(按照32位2进制数来估算)A+B所有可能的情况:232x232=264约等于1020如果某台计算机完成一次加法运算需要1纳秒的时间,总共需要约3000年。不对软件做充分的测试是不负责任,而过度的测试也是一种严重浪费!软件测试的技术原则软件缺陷与测试成本曲线未发现的缺陷数测试成本测试不充分过度测试测试的程度软件质量保证与预测由专人负责,与开发人员无关高水平程序员编写的程序无需测试
测试是为了表明软件已正确地实现了用户的要求
测试通过的软件一定是没有缺陷的软件质量保证与测试浪费资源,拖累进度,没有必要关于软件质量保证与测试的一些错误认识软件质量保证与测试面临的挑战软件质量保证理念还没有深入人心理想状态:所有软件研发人员都把软件质量保证当成是一种自觉的约束(mentaldiscipline)实际情况:重产品轻质量;重开发轻测试;赶进度降成本。
软件测试技术发展滞后软件测试技术的发展也很快,但是其发展速度仍落后于软件开发技术的发展速度。软件质量保证与测试面临的挑战如何保证重要、关键软件不出问题这是一个挑战对于实时系统来说,缺乏有效的测试手段信息系统的安全性如何进行有效的测试与评估,是世界性的难题新的软件应用对软件质量保证与测试提出了新的挑战软件质量保证与测试面临的挑战软件的规模越来越大,产生的测试任务越来越繁重软件变得越来越复杂,质量保证难度在增大,如何进行充分而有效的测试成为了难题面向对象的测试技术才刚刚起步分布式系统整体性能还不能进行很好的测试请同学们通过自主拓展学习和深入思考,提出自己认为的软件测试面临的挑战!课外学习任务
搜集和整理软件缺陷、软件失败实例做成PPT,准备5分钟的交流演讲。本节内容就讲到这里,谢谢,再见!1.3软件质量保证与测试的意义、原则和挑战软件质量保证与测试1.4
质量意识、社会责任和工匠精神第1章绪论SoftwareQualityAssuranceandTesting一、质量意识
树立质量意识,控制软件过程,保证软件质量,提高用户对软件的满意度,对一个软件项目而言十分重要。1.质量意识强2.软件过程严3.软件质量好4.用户满意度高5.市场份额大6.产品收入多7.资金持续投入良性循环一、质量意识
反之,如果软件项目团队质量意识薄弱,研发的软件缺陷很多,则可能导致整个软件项目陷入泥潭,甚至以失败而告终。美国IBM公司1963年开始开发IBM360机的操作系统,这一系统共约有100万条指令,花费了5000人∙年,经费数亿美元,但软件缺陷多达2000个以上,系统根本无法正常运行。
项目负责人Brooks事后总结他在组织开发过程中的沉痛教训时说“…正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难……”。一、质量意识
软件项目质量成本的预防成本、评估成本和失败成本三个组成部分中,预防成本的总体变化范围较小。树立质量意识,科学合理的增加预防成本,可以较好的保证和提高软件质量,防止过高的评估成本,避免巨额的失败成本,从而能够在整体上降低软件质量成本。
预防成本+评估成本+失败成本=软件质量成本$合理增加防止过高避免过高整体上可降低一、质量意识
软件质量保证与测试相关工作人员要树立起牢固的质量意识,把质量意识、质量标准、和质量控制措施,落实到每一项具体工作中去,提高软件质量,降低总体质量成本,提升产品效益。二、社会责任
软件缺陷可能导致事故,造成人身安全和财产损失。尤其是那些事关国计民生的重要软件,没有严格的质量控制,不经过充分测试就投入使用,可能造成恶性事故,危害社会!1996年6月4日,欧洲阿丽亚娜5型火箭发射爆炸。研制费用为70亿美元,研制时间1985-1996年,参研人员约1万人。与阿丽亚娜5型火箭一同化为灰烬的还有4颗卫星。这是世界航天史上一大悲剧。二、社会责任
阿丽亚娜5型火箭延用了阿丽亚娜4型火箭初始定位软件,但这两种型号的火箭情况有所不同,阿丽亚娜5型火箭起飞加速度=21.5g,阿丽亚娜4型火箭起飞加速度=11.4g。
阿丽亚娜5型火箭加速度值在系统中产生上溢出,以加速度为参数的速度、位置均计算错误,导致惯性导航系统对火箭控制失效,控制程序只得进入异常处理模块,引爆自毁。二、社会责任
在软件质量保证与测试工作中,应当具有社会责任感,从以下几个方面肩负起自己的社会责任。(1)对自己承担的软件质量保证相关工作负责,以专业水平和技术能力服务社会、报效国家。(2)对自己的软件测试工作负责,让测试通过的软件质量过关、安全可靠,而不是遗留下类似于定时炸弹的软件缺陷和漏洞。(3)不利用自身的专业知识、技术能力,为制作病毒木马、入侵他人电脑、窃取机密信息等活动提供技术支持。(4)发现重大软件漏洞及时向我们国家的有关部门报告,维护公共利益和国家安全。三、工匠精神
一些软件项目测试任务十分复杂和繁重,需要精心设计大量的测试用例,重复执行这些测试用例,准确记录测试过程,耐心细致分析测试结果,来查找可能存在的软件缺陷。这样的测试任务,要求测试人员具有工匠精神,能够敬业、精益、专注,并能够在实践中创新,解决各种软件测试中的具体问题。三、工匠精神
据北京智能车联产业创新中心发布的2019年北京市自动驾驶路测报告,2019年各企业共有73辆无人驾驶汽车在进行测试,测试总里程达88.66万公里,其中百度的Apollo测试车达到52辆,测试总行驶里程75.4万公里。
这份报告是继美国加州车辆管理局发布《2019年自动驾驶脱离报告》之后出炉,也显示了在自动驾驶领域,中美两国的你追我赶。在国内大量自动驾驶测试数据的背后,可以看到测试团队专注敬业、精益求精的工匠精神。三、工匠精神
某测试团队要对一款与地图有关的国产软件进行测试,看软件给出的多组两点之间的距离是否正确,但测试人员难以对所有的测试数据都去验证其实际结果应该是多少。为此测试人员积极创新,精心设计测试数据,让这些测试数据之间可以互相验证,这样只需要有一部分实际结果数据就可以验证软件给出的所有结果是否正确,从而可以节约测试成本。例如,在软件中的一条直线上选择A、B、C三个点,要求软件给出AB、BC、AC的距离,而实际上只需要有AB、BC的实际距离数据,就可以验证软件给出的三个结果是否正确,因为AB+BC=AC。当然,这里只是为了便于理解给出的简单例子,实际情况比这个要复杂。三、工匠精神
在一般人看来,解决问题都是按事物的发展过程“顺流而下”,这是一种常规思维模式。例如,程序设计必须经过一步步的检查来验证它的正确性,但这种程序验证是一项极为艰难的工作。中国软件事业的开创者,中国科学院院士杨芙清教授,于20世纪50年代在前苏联留学期间,打破常规思维,独立设计出逆向验证方法《分析程序》(即逆编译程序),一下子使得这项极为艰难的程序验证工作“柳暗花明”,她的导师称赞她是一位思维敏捷,具有创造性、工作认真的年轻软件科学家。1.4
质量意识、社会责任和工匠精神本节内容就讲到这里,谢谢,再见!软件质量保证与测试1.5
信创测试第1章绪论SoftwareQualityAssuranceandTesting102
103信创产业即“信息技术应用创新产业”。过去,中国
IT
底层标准、架构、产品、生态大多数由美国
IT
巨头制定,存在诸多安全和“卡脖子”的风险。信创产业链信创背景芯片断供对华为进行芯片断供因特尔暂停向浪潮供货ARM被收购,存在限购可能研发工具断供Matlab研发工具EDA设计工具无人机系统软件
104信创产业链信创背景“棱镜门计划”“永恒之蓝操作系统漏洞”“熔断幽灵芯片漏洞”
安全事件层出不穷,我国面临严峻的安全形势,网络安全、信息安全已经成为国家安全战略的重要组成部分。
卡脖子和安全等事件进一步凝聚了全民族对坚持发展核心技术的高度共识,唯有发展自主信息产业,方能铸就安全长城。
105信创产业推进旨在通过对IT硬件、软件等各个环节的重构,建设我国自有IT底层架构和标准,形成自有开放生态,从根本上解决安全和卡脖子问题,实现信息技术可掌控、可研究、可发展、可生产。信创产业链信创产业国产替代自主可控
106信创产业链主要涉及以下层面:信创产业链信创产业
操作系统、数据库、中间件等芯片、服务器、存储、交换机、路由器、各种云等边界安全产品,终端安全产品等信息安全基础软件应用软件OA、ERP、办公软件、政务应用、流版签软件等IT基础设施
107信创产业链信创测试1.信创产品需要测试
108信创产业链信创测试2.测试体系有所不同
109信创产业链信创测试3.测试内容有所侧重
让国产化系统能够正常运行,并被业主单位真正接纳,是推进
IT
系统国产化进程的重要保障。
可移植性、兼容性、功能性、性能效率是信创软件重要的四个质量特性。在此基础上,可适当根据软件产品特点及测试需求对易用性、可靠性、信息安全性、可维护性、产品说明、用户文档集等进行选测,确保信创软件从“能用”逐步走向“好用”,保证国产软件质量稳步提升。
安全可控是信创的核心要求之一,安全性测试是信创测试中很重要的一项测试内容。
110信创产业链信创测试4.测试技术正在发展国产CPU的操作系统适配测试技术平台软件的操作系统适配测试技术面向移动应用的自动化测试技术协同众包测试技术基于交叉学科的软件缺陷定位技术基于群体智能协同演化的测试技术本节内容就讲到这里,再见!1.5
信创测试软件质量保证与测试2.1软件测试模型、阶段和生命周期第2章软件测试策略SoftwareQualityAssuranceandTesting软件测试模型
我们应当怎样来进行软件测试?
V模型
编码V模型表达了软件测试活动与软件分析设计活动的对应关系:测试活动软件分析设计活动单元测试详细设计集成测试概要设计系统测试软件规格说明验收测试软件需求V模型不足:开发与测试是先后关系,先开发后测试。忽视了对需求分析,系统设计的验证和确认,需求的满足情况一直到后期的验收测试才被验证。如果开发阶段没有有效的质量控制措施,到软件编码完成之后,通过测试发现大量缺陷和错误,再想提高软件质量,则成本会非常高,有时甚至已经不可能。W模型W模型
相对于V模型,W模型增加了软件开发各阶段中同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表软件质量验证、确认、测试过程和软件开发过程。
W=V+VW模型W模型强调:软件需求分析、软件设计等同样需要质量控制,应当及时进行验证和确认。软件需求、软件设计阶段需要为后续的软件测试工作做准备、测试与开发是同步进行的。验证、确认和测试等软件质量控制活动伴随着整个软件开发周期。W模型优点:有利于尽早、全面的发现问题。例如,需求分析完成后,质量保证与测试人员就应该参与到对需求分析文档的验证和确认活动中,并尽早的发现问题。有利于降低软件开发的总成本。因为越早发现问题,解决问题的成本就会越小。有利于提前做好测试准备和测试设计。例如在需求分析阶段就可以及早进行验收测试设计,这将显著减少测试工作所产生的时延,加快项目进度。软件测试的阶段被测模块单元测试概要设计信息集成测试单元测试测试过的模块系统测试用户需求其它系统元素装配好的软件可运行的系统被测模块系统规格验收测试详细设计信息单元测试:
是针对每个程序单元程序代码的测试,以确保每个程序模块能正常工作为目标。单元的粒度具体划分按不同的单位与不同的软件有不同,比如有具体到模块的测试,也有具体到类,函数的测试等。软件测试的阶段“打印”模块publicintfindMin(){......集成测试:对已经通过单元测试的模块,按照设计要求进行组装和测试。各模块间组合后的功能实现情况模块接口连接的成功与否数据传递的正确性等BCA软件测试的阶段系统测试:把软件系统搭建起来,检验软件产品能否与系统的其他部分(如硬件、操作系统、数据库等)协调工作,达到软件规格说明书中的功能、性能等方面要求。
软件测试的阶段验收测试可以分成两类,针对具有大量用户的通用软件,可以采用Alpha测试+Beta测试,Alpha测试是由用户在开发环境下完成的测试,Beta测试是由用户在用户环境下完成的测试;而针对只有特定用户的专用软件,可以采用用户正式验收测试。
软件测试的阶段验收合格
验收测试:从用户的角度对软件产品进行检验和测试,看是否符合用户的要求。软件测试的不同阶段,被测试对象和测试依据是不同的。
软件测试的阶段被测试对象测试依据单元测试程序模块详细设计集成测试装配好的多个软件模块概要设计系统测试软件系统(包括软件及其运行环境)软件规格说明验收测试可运行的软件系统软件需求说明以及其他用户要求软件测试的生命周期测试需求分析测试计划测试设计测试开发测试执行和记录测试总结软件测试的生命周期测试需求分析:明确需要完成的测试任务、测试内容和要达到的测试要求。测试需求可以由软件文档获取,例如软件的规格说明书中明确了软件具有某项功能,那么就需要测试这项功能是否实现。测试需求除了有功能测试需求之外还可以有非功能测试需求,如性能测试需求、安全性测试需求。
软件测试的生命周期测试计划:描述所有要完成的测试工作,包括被测试项目的背景、目标、范围、方式、资源、进度安排、测试组织,以及与测试有关的风险等方面。
软件测试的生命周期制定软件测试计划可以从以下几方面促进测试工作的开展:1.使软件测试工作有据可依,按部就班,进行更顺利2.使软件测试工作有章可循,更易于管理3.促进项目参与人员彼此的沟通交流,分工合作4.及时发现测试工作中的问题和不足,适时调整进度、资源投入和人员安排等。
软件测试的生命周期测试设计:如何合理运用测试原则、方法、策略,设计测试方案和数据,尽可能降低测试成本,并尽可能多的发现软件中的缺陷和问题。测试设计要兼顾测试的充分性和成本节约原则,综合运用多种测试方法、策略,合理设计测试数据,用尽可能少的测试数据发现尽可能多的软件缺陷和问题,减少测试工作量,提高测试效率。软件测试的生命周期测试开发:主要指开发测试脚本,有时也包括自动生成测试数据等。软件测试需要重复执行软件,以便发现软件中的问题,测试开发的重要工作就是编写得到用于自动执行测试过程的代码,一般称之为测试脚本。有时在需要大量测试数据的情况下,也可以编写程序或者通过其他工具自动生成一些测试数据。测试开发:测试脚本实例importresources.OrderTotalHelper;importcom.rational.test.ft.*;importerfaces.*;importcom.rational.test.ft.script.*;importcom.rational.test.ft.value.*;importcom.rational.test.ft.vp.*;/***Description:FunctionalTestScript*@authorAdministrator*/publicclassOrderTotalextendsOrderTotalHelper{………………软件测试的生命周期测试执行和记录:执行测试过程,包括执行程序,输入测试数据,记录测试结果等。目前采用自动化的方法来执行测试过程用的越来越多。软件测试的生命周期测试总结:包括统计分析测试结果,报告缺陷,评估软件质量等。测试统计表项目统计数据测试用例总数测试用例覆盖率执行测试用例数测试用例执行率已通过的测试用例数未通过的测试用例数软件缺陷密度缺陷报告本节内容就讲到这里,谢谢,再见!软件质量保证与测试2.2软件测试方法和技术概述第2章软件测试策略SoftwareQualityAssuranceandTesting从是否需要执行程序的角度来区分静态测试#include<stdio.h>max(floatx,floaty){floatz;z=x>y?x:y;return(z);}main(){floata,b;intc,d;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%d\n",c);}动态测试从是否需要知道程序的内部结构来区分白盒测试黑盒测试?从测试执行者来区分自动化测试手工测试admin******静态测试
静态测试是指不需要执行被测程序,而是人工检查或者借助专用的软件测试工具来评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,寻找程序的不足之处,降低错误出现的概率。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行。动态测试
动态测试是指通过运行被测程序,输入测试用例,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序并输入测试用例、记录并分析程序的输出结果。测试用例输入数据预期结果测试环境测试步骤......静态测试VS动态测试优点缺点静态测试发现缺陷早降低返工成本覆盖关键代码发现缺陷概率高非常耗费时间需要知识和经验积累技术能力要求高准备工作多动态测试较为简单易行发现缺陷迟没有代码覆盖的针对性黑盒测试
又称功能测试、数据驱动测试或基于规格说明的测试。被测程序被当作一个黑盒,不考虑程序内部结构和特性,测试者只知道该程序输入和输出之间的关系或程序的功能,依靠能够反映这一关系和程序功能的需求规格说明书确定测试用例,然后执行程序,检查输出结果的正确性。?白盒测试
又称结构测试、逻辑驱动测试或基于程序的测试。它把程序看成是一个可以透视的盒子,能看清楚盒子内部的结构以及是如何运作的。白盒测试依赖于对程序内部结构的分析,针对特定条件设计测试用例,对软件的逻辑路经进行测试。白盒测试可以在程序的不同位置检验“程序的状态”以判定其实际情况是否和预期的状态相一致。相互关系黑盒测试——>动态测试
静态测试——>白盒测试手工测试手工测试是指由测试人员手工执行测试活动,并记录测试结果,观察分析结果是否正确或者符合要求。当测试任务很重,需要执行非常多的测试数据时,手工测试是难以满足实际需要的。自动化测试自动化测试admin******自动化测试是指通过开发和使用软件分析和测试工具、测试脚本等来实现软件分析和测试过程的自动化,具有可重复性和高效率等特点。软件测试的基本策略1.软件测试应当和软件开发同步进行。2.应对软件需求、软件设计等进行验证和确认。3.可按单元测试、集成测试、系统测试、验收测试分步实施。4.多种软件测试方法和技术应当合理的综合运用。5.应运用自动化测试技术,采用软件测试工具,提高软件测试的效率。6.软件测试项目可按照测试需求分析、测试计划、测试设计、测试开发、测试执行、测试总结这样的环节来组织实施。请同学们通过网上查找资料,补充完善软件测试策略!本节内容就讲到这里,谢谢,再见!软件质量保证与测试3.1黑盒测试概述第3章黑盒测试SoftwareQualityAssuranceandTesting什么是黑盒测试
把被测试软件看做一个打不开的黑盒子,完全不考虑软件的逻辑结构和内部特性,只是依据软件的规格说明书,运行软件,输入测试数据,根据运行结果,检验该软件的功能是否实现并符合要求、性能等其它特性是否满足用户需要。黑盒测试是一种从用户观点出发,基于规格说明的测试。又叫功能测试、数据驱动测试。?黑盒测试的优缺点优点:不需要源代码;测试简单易行;能够发现软件设计中的问题;除了功能之外,还可以测试性能、安全性等其他特性。缺点:无法对代码进行有针对性的测试,某些代码可能得不到测试;有时输出的结果可能碰巧正确,但软件内部在执行过程中可能已经出错了;黑盒测试以规格说明书为测试依据,如果规格说明书有误,黑盒测试是发现不了的。黑盒测试内部结构和实现细节执行结果和外部特性不考虑只关注软件系统测试验收测试黑盒测试用于用于用于......黑盒测试主要可以发现以下几类错误1.输入和输出错误程序A的用户注册界面上有一个文本框用于输入用户的昵称,但测试执行程序时发现,用户输入的昵称长度最多只能是10个字符,如果大于10,则无法输入,但程序规格说明中并没有限制用户的昵称长度必须小于等于10。2.初始化或终止性错误。对程序B进行黑盒测试,执行后,程序始终处于运行之中,不再对用户的键盘鼠标操作给出响应,没有提示,也不能关闭或者退出。这是终止性错误,一般情况是程序存在死循环,不能终止。黑盒测试主要可以发现以下几类错误3.功能遗漏或者不正确。程序C的规格说明书中说明该程序可以根据给定的多个成绩计算平均成绩,并且成绩可以是百分制,也可以是五级计分制,但执行程序C,对其进行黑盒测试发现,该程序只能对百分制的成绩计算平均成绩,而不能对五级计分制的成绩计算平均成绩,这是该程序功能不全,有遗漏。4.界面错误。对某成绩管理系统D进行黑盒测试,执行后主界面显示:“欢迎进入网上商城”,这是界面上有提示信息错误。黑盒测试主要可以发现以下几类错误5.性能不符合要求。某网上售票系统E的规格说明书要求该系统能满足1000个客户端同时在线买票,但对其进行黑盒测试时发现,500个客户端同时在线买票时该系统就瘫痪了,该系统性能不符合要求。6.数据库或其它外部数据结构访问错误。某销售管理系统F有一个后台数据库,对销售管理系统F进行黑盒测试时发现,当需要访问数据库时系统就会报错,这是数据库访问错误,错误的原因很可能是连接字符串中的参数不正确。黑盒测试主要可以发现以下几类错误7.安全性问题等。某学生管理系统G,对其进行黑盒测试时发现,用户登录时输入正确的用户名后,密码什么都不输入,也可以登录成功,这是系统在对用户进行身份认证时存在安全性问题。黑盒测试对软件进行黑盒测试的主要依据是软件规格说明书,因此,在进行黑盒测试之前应确保软件规格说明书是经过评审的,其质量达到了既定的要求。如果没有规格说明书的话,可以采用探索式测试。黑盒测试思想不仅可以用于测试软件的功能,同时,也可用于测试软件的非功能特性,如性能、安全性等。黑盒测试黑盒测试用例设计方法主要有这么几种黑盒测试
在面对实际的软件测试任务时,如果仅仅采用一种黑盒测试用例设计方法,是无法获得理想的测试用例集、高质量的解决复杂软件测试问题的。比较实用的方法是,综合运用多种设计技术来设计测试用例,取长补短,只有这样才能有效提高测试的效率和测试覆盖率。这就需要我们认真掌握这些方法的原理,积累一定的软件测试经验,才能有效地提高软件测试水平。综合运用黑盒测试方法的策略①可以首先进行等价类划分,包括对输入条件和输出结果的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。②在任何情况下都推荐使用边界值分析法,经验表明,用这种方法设计出的测试用例发现程序错误的能力最强,发现缺陷的概率也最高,因为问题往往容易出现在边界上。③对于业务流清晰的系统,可以采用场景法对测试任务进行分解,以便于实施。综合运用黑盒测试方法的策略④如果程序的规格说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。⑤对于参数配置类软件,可用正交实验法选择较少的数据组合达到较好的测试效果。⑥在其它方法的基础上,可以采用错误推测法追加一些测试用例,用错误猜测法补充通过其它测试用例设计方法无法获得的测试用例,这需要依靠测试工程师的智慧和经验。本节内容就讲到这里,谢谢,再见!软件质量保证与测试3.2
等价类划分第3章黑盒测试SoftwareQualityAssuranceandTesting黑盒测试穷举所有可能的输入?不可能!!!
必须要提高测试的针对性,既要测试各种可能的情况,提高测试的完备性,又要避免重复,降低冗余,节约测试成本!............全体学生等价类划分学生按体型分组,每组派1个代表试穿校服女生男生等价类
某个元素相应的等价类是指,对某一个等价关系而言,与其等价的所有元素的集合。简单地说,等价类是数据集的某个子集,等价类中的各个元素具有某种相同的特性。例如按照奇偶性,整数可以分为奇数和偶数两个等价类。等价类
从软件测试的角度来说,由于等价类中的各个元素具有相同的特性,所以对于发现或者揭露程序中的缺陷,它们的作用是等价的,或者说效果是相同的。于是等价类划分法就合理地假定:对于某个等价类而言,只需要测试其中的某个代表数据,就等于对这一等价类中所有数据的测试。24,6,8......偶数我来做代表等价类划分
各个等价类之间不应存在相同的元素。所有等价类的并集应当是被划分集合的全集。
把所有可能的输入数据,划分成若干个等价类,然后从每一个等价类中选取1个或者少量数据,作为测试数据去测试程序。等价类划分
把可能无限的输入,变成有限的等价类,然后从中选出代表作为测试用例,以期达到在测试工作尽可能完备的同时又尽可能避免测试冗余,降低测试成本,提高测试的有效性。等价类划分是最基本和最常用的黑盒测试方法。等价类划分等价类可以分为有效等价类和无效等价类。
有效等价类:是指对于程序规格说明来说,合理的、有意义的输入数据构成的集合。利用它,可以检验程序是否实现了规格说明预先规定的功能和性能等特性。无效等价类:是指对于程序规格说明来说,不合理的、无意义的输入数据构成的集合。利用它,可以检验程序能否正确应对异常的输入,而不至于产生不希望出现的后果。等价类划分
设计测试用例时,要同时考虑这两种等价类,因为软件不仅要能接收并处理合理的数据,也要能经受意外的考验。在遇到不合理的、无意义的数据输入时,程序应能妥善处理,而不至于无法应对,出现意外的结果,只有通过这样的测试,才能确保软件具有更高的可靠性。符号函数
x>0
y=1x=0
y=0x<0
y=-1有效等价类:三类,分别是x>0,x=0和x<0无效等价类:一类,所有不能和0进行大小比较的数据等价类划分简单实例常见的划分等价类的方式①按区间划分②按数值划分③按集合划分④按限制条件或者限制规则划分⑤按处理方式划分等常见的划分等价类的方式例如:对某一个人所得税计算软件进行测试,可以按照个人所得税分等级计算标准,把输入数据“应纳税所得额”按区间进行等价类划分。
有效等价类全月应纳税所得额1不超过1500元2超过1500元至4500元3超过4500元至9000元4超过9000元至35000元5超过35000元至55000元6超过55000元至80000元7超过80000元常见的划分等价类的方式例如:对某五级计分制转换百分制程序进行测试,可以把输入数据“五级计分制成绩”按照处理方式进行等价类划分。划分等价类的建议
到目前为止,还没有高质量划分等价类的标准方法,针对软件不同的规格说明可能使用不同的等价类划分方法。不同的等价类划分得到的测试用例的质量不同。在划分等价类时,可以参考下面的建议:①如果输入条件规定了取值的范围,那么可以确定一个有效等价类和两个无效等价类。例如:程序输入条件为小于等于100大于等于0的整数x,则有效等价类为0<=x<=100,两个无效等价类为x<0和x>100。划分等价类的建议②如果输入条件规定了一个输入值的集合,那么可以确定一个有效等价类和一个无效等价类。例如:某程序规定了输入数据ZC的有效取值需来自集合R={助教、讲师、副教授、教授、其它、无},则有效等价类为ZC属于R,无效等价类为ZC不属于R③如果输入条件规定了输入值必须满足某种要求,那么可以确定一个有效等价类和一个无效等价类。例如:某程序规定输入数据x的取值条件为数字符号,则有效等价类为x是数字符号,无效等价类为x含有非数字符号。划分等价类的建议④在输入条件是一个布尔量的情况下,那么可以确定一个有效等价类和一个无效等价类。例如:某程序规定其有效输入为布尔真值,则有效等价类为布尔真值true,无效等价类为布尔假值false。有效等价类:布尔真值true无效等价类:布尔假值false划分等价类的建议⑤如果规定了输入数据为一组值(n个),并且程序要对每一组输入值分别进行处理,那么可以确定n个有效等价类和一个无效等价类。例如:某程序输入x取值于一组值{优秀,良好,中等,及格,不及格},且程序中会对这5个值分别进行处理,则有效等价类有5个,分别为x=“优秀”、x=“良好”、x=“中等”、x=“及格”、x=“不及格”,无效等价类为x不属于集合{优秀,良好,中等,及格,不及格}。划分等价类的建议⑥如果规定输入数据必须符合某些规则,那么可以确定一个有效等价类(符合规则)和若干个分别从不同角度违反规则的无效等价类。例如:程序输入条件为以英文字母开头、长度为8、只包含英文字母和数字符号的字符串,则有效等价类为满足了上述所有条件的字符串,无效等价类为不以英文字母开头的字符串、长度不为8的字符串和包含了英文字母和数字符号之外其它字符的字符串。划分等价类的建议⑦在初步划分等价之后,如果发现某一等价类中的各元素在程序中的处理有区别,则应再将该等价类进一步划分为更小的等价类。例如:输入的成绩有效等价类无效等价类:非五级计分制的文本数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职(小学教育)小学教育心理学阶段测试试题及答案
- 2025年高职国际经济与贸易(国际经济与贸易教育心理学案例分析)试题及答案
- 2025年中职(工业机器人技术)机器人装配试题及答案
- 2025年中职电气运营应用(应用技术)试题及答案
- 2025年大学本科 体育运营与管理(运营实务)试题及答案
- 2025年中职(动漫与游戏制作)动画角色设计试题及答案
- 2025年中职(环境监测技术)水质检测实操试题及答案
- 2025年大学二年级(医疗器械与装备工程)器械检测阶段测试题及答案
- 2025年本科工业互联网工程(工业互联网设计)试题及答案
- 2025年大学二年级(人工智能教育)教学应用综合测试题及答案
- 养老院老人生活设施管理制度
- (2025年)林业系统事业单位招聘考试《林业知识》真题库与答案
- 2026年七台河职业学院高职单招职业适应性考试备考题库有答案解析
- 2026年直播服务合同
- 挂靠取消协议书
- 诊所污水处理管理制度
- 辅导员工作的职责与使命课件
- 新疆交通职业技术学院教师招聘考试历年真题
- 吊篮租赁安拆分包合同
- (财务知识)用友T财务通普版基本操作详细资料
- GB/T 156-2017标准电压
评论
0/150
提交评论