版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
12023/2/7软件测试技术22023/2/7课程目标掌握系统的软件测试方法和技术应试准备:GCT考试32023/2/7参考书《软件测试基础教程》.AdityaP.Mathur著,王峰等译.机械工业出版社,2011年8月《软件测试基础》.PaulAmmann等著,郁莲等译.机械工业出版社,2010年10月42023/2/7参考书《软件测试技术经典教程》赵斌编著,科学出版社,2007年5月(非常适合实战)《软件测试教程》贺平编著,电子工业出版社,2005年6月(高职精品教材,比较实用)52023/2/7参考书《软件测试》.RonPatton著,张小松等译,机械工业出版社,2006年8月《软件测试--原理与实践》.SrinivasanDesikan等著,韩柯等译,机械工业出版社,2009年2月《软件测试工程师培训教程》.刘德宝编著,科学出版社,2009年1月62023/2/7参考网站链接所需要的关于软件测试方面的绝大多数问题都可以在这里直接找到答案(包括各种软件测试工具如何使用)软件测试自学的最佳网站。72023/2/7第一部分软件测试概述经典案例软件测试的目的软件测试准则软件测试方法软件测试过程软件测试环境82023/2/7软件测试的历史与现状软件测试的历史20世纪50年代,英国著名的计算机科学家图灵就给出了软件测试的原始定义:测试是程序正确性证明的一种极端实验形式五个影响人类历史的苹果?ACM图灵奖?92023/2/7软件测试的历史与现状软件测试的历史直到上世纪70年代以后,随着计算机硬件技术的进步与成熟,软件在整个系统中所占的地位越来越重要,软件规模和复杂性大大增加。102023/2/7软件测试的历史与现状软件测试的历史软件可靠性面临前所未有的危机,给软件测试工作带来了挑战,测试的意义逐渐被人们认识,软件测试的研究开始受到重视,是软件测试技术发展最活跃的时期。112023/2/7软件测试的历史与现状软件测试的历史1975年,Goodenough首次提出了软件测试理论,从而把软件测试这一实践性很强的学科提高到理论的高度。1982年,美国北卡来纳大学召开了首次软件测试技术会议,是软件测试与软件质量研究人员和开发人员的第一次聚会122023/2/7软件测试的历史与现状软件测试的现状就目前软件工程发展的状况而言,软件测试仍然是较为薄弱的一个方面。不仅测试理论,已有的测试方法也不能满足当前软件开发的实际需求。132023/2/7软件测试的历史与现状软件测试的现状尤其是进入20世纪90年代后,计算机技术日趋成熟,软件应用范围逐步扩大,软件规模和复杂性急剧增加,与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。142023/2/7软件测试的历史与现状软件测试的现状由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。152023/2/7软件测试的历史与现状随着软件外包行业的逐渐兴起和人们对软件质量保障意识的加强,中国软件企业已开始认识到,软件测试的广度和深度决定了中国软件企业的前途命运。162023/2/7软件测试的历史与现状以占中国软件外包总量近85%的对日软件外包来说,业务内容基本都针对测试环节。软件外包中对测试环节的强化,直接导致了软件外包企业对测试人才的大量需求。近年来,几乎所有的软件企业均存在不同程度的测试人才缺口,软件测试工程师已成为了亟待补充的关键技术工种之一。172023/2/7IBM、百度、华为、惠普、盛大网络、联想集团等国内外大型IT企业均表现出对成熟软件测试人才的期盼,而微软、三星、西门子、思科、华为3COM等多家国内外IT巨头则相继在全国各大高校招兵买马,并把软件测试人才的招聘放在了突出的位置。国内软件测试人才紧缺的现状已经凸现出来。182023/2/7经典案例一1994年,迪斯尼发布的第一个面向儿童的多媒体光盘游戏-狮子王动画游戏书(TheLionKingAnimatedStorybook)失败原因:缺乏系统兼容性测试192023/2/7经典案例二英特尔奔腾浮点除法缺陷1994年,弗吉尼亚州Lynchburg学院的ThomasR.Nicely博士在实验中,计算下列算式:(4195835/3145727)*3145727-4195835
主要原因:英特尔奔腾处理器烧制了软件缺陷202023/2/7经典案例三美国航天局火星极地登陆号探测器1999年故障评估委员会认定:火星探测器试图在火星表面着陆时失踪,出现故障的原因极可能是一个数据位被意外置位。令人警醒的问题是:为什么没有在内部测试时发现呢?212023/2/7经典案例三着陆计划当探测器向火星表面降落时,它将打开降落伞减缓探测器的下降速度。降落伞打开几秒钟后,探测器的三条腿将迅速撑开,并锁定位置,准备着陆。当探测器离地面1800米时,它将丢弃降落伞,点燃着陆推进器,缓缓降落到地面222023/2/7经典案例三美国航天局为了省钱,简化了确定何时关闭着陆推进器的装置。为了替代在其它太空船上使用的昂贵雷达,他们在探测器的脚部装了一个廉价的触点开关,在计算机中设置了一个数据位来控制触点开关关闭燃料。很简单,探测器的发动机需要一直点火工作,直到脚“着地”为止。232023/2/7经典案例三故障评估委员会在测试中发现:很多情况下,当探测器的脚迅速撑开准备着陆时,机械振动也会触发着陆触点开关,设置致命的数据位。设想探测器开始着陆时,计算机极有可能关闭着陆推进器,这样飞船下坠1800米之后冲向火星表面,撞成碎片。242023/2/7经典案例三结果是灾难性的,原因却很简单:登陆探测器经过了多个小组测试,其中一个小组测试飞船的脚折叠过程,另一个小组测试此后的着陆过程。前一个小组不去注意着地数据位是否置位(这不是他们负责的范围);后一个小组总是在开始测试之前复位计算机、清除数据位。双方独立工作都做得很好,但合在一起就不是这样了。252023/2/7经典案例四爱国者导弹防御系统1991首次应用在海湾战争中对抗伊拉克飞毛腿导弹,取得了实效,但是确实在对抗几枚导弹中失利,包括一次在沙特阿拉伯的多哈击毙了28名美国士兵。分析发现症结在于一个软件缺陷,系统时钟的一个很小的计时错误积累起来到14小时后,跟踪系统不再准确。在多哈的这次袭击中,系统已经运行了100多个小时。262023/2/7经典案例五千年虫问题1974年用两位数字表示年份原因:为了节省存储空间272023/2/7经典案例六Windows2000安全漏洞远程服务软件中存在安全漏洞拒绝服务权限滥用信息泄露黑客利用这点控制了美国国防部一台服务器282023/2/7近期出现的重大事故2007年10月30日,奥运门票第二阶段阶段预售首日……科技奥运?292023/2/7近期出现的重大事故2007年8月14日14时,美国洛杉矶国际机场电脑发生故障,60个航班的2万旅客无法入关。直至次日凌晨3时50分,所有滞留旅客才全部入关。2004年9月发生过类似问题原因分析:包含旅客姓名和犯罪记录的部分数据系统(海关和边境保护系统:决定旅客是否可以进入美国领土)瘫痪302023/2/7近期出现的重大事故2006年3月2日14点10分,沪深大盘忽然发生罕见大跳水,7分钟之内上证指数跌去近20点。原因分析:当日下午刚上市的招商银行认股权证成交量巨大,导致其行情显示时总成交量字段溢出,使其价格在股票分析软件上成为一条不再波动的直线,让市场产生了恐慌。312023/2/7近期出现的重大事故2005年4月20日上午10时56分,中国银联系统通信网络和主机出现故障,造成辖内跨行交易全部中断。这是2002年中国银联成立以来,首次全国性因系统故障造成的跨行交易全面瘫痪。原因:银联新近准备上线的某外围设备的隐性缺陷诱发了跨行交易系统主机的缺陷,使主机发生故障软件能否提供支持?322023/2/7近期出现的重大事故2003年8月14日下午4时10分,美国及加拿大部分地区发生历史上最大的停电事故。15日晚逐步恢复后果:经济损失250亿到300亿之间,入选2003年国际十大原因分析:俄亥俄州的第一能源公司下属的电力监测与控制管理系统软件XA/21出现错误,系统中重要的预警部分出现严重故障,负责预警服务的主服务器与备份服务器连接失控,错误没有得到及时通报和处理,最终多个重要设备出现故障,导致大规模停电332023/2/7近期出现的重大事故1996年6月4日,欧洲空间局的阿丽亚娜火箭,发射后37秒爆炸。损失6亿美元原因分析:ADA语言编写的一段程序,将一个64位浮点整数转换为16位有符号整数时,产生溢出,导致系统惯性参考系统完全崩溃342023/2/7计算机系统的软件可靠性问题随着对计算机需求和依赖的与日俱增,计算机系统的规模和复杂性急剧增加,使得计算机软件的数量以惊人的速度急剧膨胀。与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。352023/2/7计算机系统的软件可靠性问题由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。362023/2/7计算机系统的软件可靠性问题随着计算机技术的飞速发展,计算机系统的规模和复杂性急剧增加,其软件开发成本以及由于软件故障而造成的经济损失也正在增加,软件质量问题已成为人们共同关注的焦点。软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。372023/2/7计算机系统的软件可靠性问题随着软件系统规模和复杂性的增加,进行专业化高效软件测试的要求越来越严格,软件测试职业的价值逐步得到了认可,软件测试技术已作为一门新兴产业而快速发展起来了。382023/2/7软件测试的目的定义11983年IEEE(国际电子电气工程师协会)提出的软件工程标准术语中给软件测试下的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。392023/2/7软件测试的目的定义2软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去执行程序,以发现软件故障的过程。该定义强调寻找故障是测试的目的。402023/2/7软件测试的目的定义3软件测试是一种软件质量保证活动,其动机是通过一些经济有效的方法,发现软件中存在的缺陷,从而保证软件质量。质量保证的观点。412023/2/7软件测试准则所有测试都应该能追溯到用户需求。应该远在测试开始之前就制定出测试计划。把Pareto原理应用到软件测试中。Pareto原理说明,测试发现的错误中的80%很可能是由程序中20%的模块造成的。422023/2/7软件测试准则应该从“小规模”测试开始,并逐步进行“大规模”测试。穷举测试是不可能的。为了达到最佳的测试效果,应该由独立的第三方从事测试工作。432023/2/7软件测试方法测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。442023/2/7软件测试方法黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试。452023/2/7软件测试方法白盒测试法与黑盒测试法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试。462023/2/7软件测试过程472023/2/7软件测试过程单元测试目的:检测程序模块中有无故障存在对象:软件设计的最小单位,与程序设计和编程实现关系密切集成测试目的:发现与接口有关的模块之间的问题方法:非增式集成测试法和增式集成测试法482023/2/7集成测试非增式集成测试法对每一个模块进行单元测试在此基础上按程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试增式集成测试法不断地把待测模块连接到已测模块集(或其子集)上,对待测模块进行测试,直到最后一个模块测试完毕492023/2/7软件测试过程确认测试目的对软件产品进行评估,以确定其是否满足软件需求的过程502023/2/7软件测试过程系统测试目的:针对系统中各个组成部分进行的综合性检验,证明系统的性能测试人员要求:系统开发人员不能进行系统测试。系统开发组织不能负责系统测试。512023/2/7验收测试目的:向用户表明所开发的软件系统能够像用户所预定的那样工作主要任务:明确规定验收测试通过的标准;确定验收测试方法;确定验收测试的组织和可利用的资源;确定测试结果的分析方法;522023/2/7验收测试主要任务:制定验收测试计划并进行评审;设计验收测试的测试用例;审查验收测试的准备工作;执行验收测试;分析测试结果,决定是否通过验收。532023/2/7软件测试与软件开发的关系542023/2/7软件测试过程模型V模型552023/2/7软件测试过程模型W模型562023/2/7软件测试环境的搭建测试环境是指用来运行软件的环境。硬件软件网络数据准备测试工具572023/2/7硬件环境主要是指PC机、笔记本电脑、服务器、各种PDA终端等。例如现要测试微软的word2003这一款软件,那么是在PC机上测试还是在笔记本电脑上测试?如果在PC机上测试,那么CPU是奔腾2.4G,还是赛扬1.7G?内存是DDR512M,还是SD128M?
不同的机器类型,不同的机器配置,必然会导致不同的反应速度,因此测试一款软件时一定要考虑硬件配置。582023/2/7软件环境主要是软件运行的操作系统。比如word2003是在Window2003下检测,还是在WindowXP下检测,这里可能会有兼容性的问题。592023/2/7网络环境主要指的是C/S结构还是B/S结构。例如要测试微软的outlook2003这一款软件,那么是在局域网里测,还是在互联网里测?如果在局域网中测,那么是在10M的局域网里测,还是在100M的局域网里测?不同的网络类型,不同的传输速度,必然会导致不同的收发速度,因此测试一款软件时也不能忽视网络的因素。602023/2/7数据准备主要指的是测试数据的准备。测试数据的准备应考虑数据量和真实性,即尽可能获取大量的真实的数据,包括正确和错误的数据。当无法取得真实数据时应尽可能模拟出大量的数据。612023/2/7测试工具目前市场上的测试工具很多,可分为静态测试工具、动态测试工具、黑盒测试工具、白盒测试工具、测试执行评估工具、测试管理工具等因此,对测试工具的选择是一个比较重要的问题,应根据测试需求和实际条件来选择已有的测试工具,或购买、自行开发相应的测试工具622023/2/7搭建软件测试环境还应注意以下几点:尽量模拟用户的真实使用环境;测试环境中尽量不要安装其它与被测软件无关的软件,但最好安装杀毒软件,以确保系统没有病毒;测试环境应与开发环境独立。632023/2/7第二部分黑盒测试法及其用例设计黑盒测试法概述三角形问题及NextDate函数等价类划分法边界值分析法因果图法决策表法642023/2/7三角形问题输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及构不成三角形。结论:三角形问题的复杂之处在于输入与输出之间的关系比较复杂。652023/2/7三角形问题现在要求输入三整数a、b、c,必须满足以下条件条件11≤a≤100条件21≤b≤100条件31≤c≤100条件4a<b+c条件5b<a+c条件6c<a+b662023/2/7如果输入值a、b、c不满足条件1、条件2和条件3,程序给出“边的取值超出允许范围”的信息。如果输入值a、b、c满足条件1、条件2和条件3,则输出下列四种情况之一:如果不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”。如果三条边相等,则程序输出为“等边三角形”。如果恰好有两条边相等,则程序输出为“等腰三角形”。如果三条边都不相等,则程序输出为“一般三角形”。672023/2/7NextDate函数NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。要求输入变量month、day和year均为整数值,并且满足下列条件:条件11≤month≤12条件21≤day≤31条件31912≤year≤2050682023/2/7NextDate函数NextDate函数说明另一种复杂的关系,即输入变量之间逻辑关系的复杂性。结论:在NextDate函数中有两种复杂性的输入来源,一是输入域的复杂性,二是确定闰年的规则并要增加“额外天”。692023/2/7等价类划分法等价类的划分原则等价类划分法的测试用例设计使用等价类划分法测试的实例702023/2/7等价类划分等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一子集中选取少数具有代表性的数据作为测试用例。712023/2/7例子设计这样的测试用例,来实现一个对所有实数进行开平方运算(y=sqrt(x))的程序的测试。思考方向:由于开平方运算只对非负实数有效,这时需要将所有的实数(输入域x)进行划分,可以分成:正实数、0和负实数。假设我们选定+1.4444代表正实数,-2.345代表负实数,则为该程序设计的测试用例的输入为+1.4444、0和-2.345。722023/2/7等价类划分所谓等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于这一类中其它数据。这样,对于表征该类的数据输入将能代表整个子集合的输入。因此,可以合理假定:测试某等价类的代表值就是等效于对于这一类其它值的测试。732023/2/7等价类的划分原则等价类是输入域的某个子集合,而所有等价类的并集就是整个输入域。因此,等价类对于测试有两个重要的意义:完备性:整个输入域提供一种形式的完备性无冗余性:若互不相交则可保证一种形式的无冗余性742023/2/7等价类的划分原则如何划分?先从程序的规格说明书中找出各个输入条件,再为每个输入条件划分两个或多个等价类,形成若干的互不相交的子集。采用等价类划分法设计测试用例通常分两步进行:确定等价类,列出等价类表。确定测试用例。752023/2/7等价类的划分原则划分等价类可分为两种情况:有效等价类是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。762023/2/7等价类的划分原则划分等价类可分为两种情况:无效等价类是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。772023/2/7等价类划分的原则启发式规则按照区间划分在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。782023/2/7等价类划分的原则启发式规则按照数值划分在规定了一组输入数据(假设包括n个输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定n个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。792023/2/7等价类划分的原则启发式规则按照数值集合划分在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。802023/2/7等价类划分的原则启发式规则按照限制条件或规则划分在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。812023/2/7等价类划分的原则启发式规则细分等价类在确知已划分的等价类中各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步划分为更小的等价类,并建立等价类表。822023/2/7等价类划分法测试用例设计在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。832023/2/7等价类划分法的测试用例设计根据已列出的等价类表可确定测试用例,具体过程如下首先为等价类表中的每一个等价类分别规定一个唯一的编号。设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。842023/2/7输入3个整数有效等价类编号无效等价类编号整数1一边为非整数二边为非整数三边为非整数4563个数2只有一条边只有二条边多于三条边7891≤a≤1001≤b≤1001≤c≤1003一边为0二边为0三边为0101112一边<0二边<0三边<0131415一边>100二边>100三边>100161718852023/2/7等价类划分测试的实例测试用例Test1=(3,4,5)便可以覆盖有效等价类1~3.覆盖无效等价类的测试用例见下表。862023/2/7测试用例输入a、b、c期望输出覆盖等价类Test21.5,4,5提示“请输入1~100之间的整数”4Test33.5,2.5,5提示“请输入1~100之间的整数”5Test42.5,4.5,5.5提示“请输入1~100之间的整数”6Test53提示“请输入三条边长”7Test64,5提示“请输入三条边长”8Test72,3,4,5提示“请输入三条边长”9Test83,0,8提示“边长不为0”10Test90,6,0提示“边长不为0”11Test100,0,0提示“边长不为0”12Test11-3,4,6提示“边长不能为负”13Test122,-7,-5提示“边长不能为负”14Test13-3,-5,-7提示“边长不能为负”15Test14101,4,8提示“请输入1~100之间的整数”16Test153,101,101提示“请输入1~100之间的整数”17Test16101,101,101提示“请输入1~100之间的整数”18872023/2/7等价类划分测试的实例三角形问题的等价类测试在多数情况下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。882023/2/7等价类划分测试的实例利用这些信息能够确定下列输出(值域)等价类R1={<a,b,c>:边为a,b,c的等边三角形}R2={<a,b,c>:边为a,b,c的等腰三角形}R3={<a,b,c>:边为a,b,c的一般三角形}R4={<a,b,c>:边为a,b,c不能组成三角形}892023/2/7等价类划分测试的实例测试用例abc预期输出Test1555等边三角形Test2223等腰三角形Test3345一般三角形Test4412非三角形902023/2/7等价类划分测试的实例保险公司计算保费费率的程序某保险公司的人寿保险的保费计算方式为:投保额×保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:912023/2/7等价类划分测试的实例年龄
性别婚姻抚养人数
20~3940~59其它
M
F已婚
未婚
1人扣0.5点最多扣3点(四舍五入取整)
6点
4点
2点
5点
3点
3点
5点922023/2/7等价类划分测试的实例分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。年龄:一位或两位非零整数,值的有效范围为1~99性别:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’抚养人数:空白或一位非零整数(1~9)点数:一位或两位非零整数,值的范围为1~99根据等价类表,设计能覆盖所有等价类的测试用例。932023/2/7输入条件有效等价类编号无效等价类编号年龄20~39岁140~59岁21~19岁60~99岁3小于112大于9913性别单个英文字符4非英文字符14非单个英文字符15‘M’5除‘M’和‘F’之外的其它单个字符16‘F’6婚姻已婚7除’已婚’和’未婚’之外的其它字符17未婚8抚养人数空白9除空白和数字之外的其它字符181~6人10小于1196~9人11大于920942023/2/7测试用例编号输入数据预期输出年龄性别婚姻抚养人数保险费率127F未婚空白0.6%250M已婚20.6%370F已婚70.1%40M未婚空白无法推算5100F已婚3无法推算699男已婚4无法推算71Child未婚空白无法推算845N已婚5无法推算938F离婚1无法推算1062M已婚没有无法推算1118F未婚0无法推算1240M未婚10无法推算952023/2/7等价类划分(习题)请用等价类划分法为NextDate函数列出输入域等价类表,并设计相应的测试用例。962023/2/7边界值分析法边界值分析法概要边界值分析法测试用例边界值分析法测试举例972023/2/7边界值分析法概要边界值分析法(BoundaryValueAnalysis)是一种很实用的对输入或输出的边界值进行测试的黑盒测试用例设计方法,具有很强的发现程序错误的能力。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。982023/2/7边界值分析法概要为什么使用边界值分析法?无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。992023/2/7边界值分析法概要怎样用边界值分析法设计测试用例?首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。1002023/2/7边界值分析法概要例子-常见的边界值对16位的整数而言32767和-32768是边界屏幕上光标在最左上、最右下位置报表的第一行和最后一行数组元素的第一个和最后一个循环的第0次、第1次和倒数第2次、最后一次1012023/2/7边界值分析法概要边界值分析法遵循的几条原则:如果输入条件对取值范围进行了界定,则应以边界内部以及刚超出范围边界外的值作为测试用例。若范围的下界为条件x、上界为y,则测试用例应当包含x、y以及稍小于x和稍大于y的值。如果对取值个数进行了界定,则应当分别以最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。1022023/2/7边界值分析法概要边界值分析法遵循的几条原则:对于输出条件,同样可以应用上面提到的两条原则来进行测试用例设计。如果程序规格说明书中指明输入或者输出域是一个有序的集合,如顺序文件、表格等,就应当注意选取该有序集合中的第一个和最后一个元素作为测试用例。1032023/2/7边界值分析边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。1042023/2/7边界值分析例:测试计算平方根的函数输入:实数输出:实数规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息“平方根非法-输入值小于0”并返回0;库函数Print-Line可以用来输出错误信息。1052023/2/7边界值分析等价类划分:可以考虑作出如下划分:输入(i)<0和(ii)>=0输出(a)>=0和(b)Error测试用例有两个:输入4,输出2。对应于(ii)和(a)。输入-10,输出0和错误提示。对应于(i)和(b)。1062023/2/7边界值分析边界值分析:划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:输入{最小负实数}
输入{绝对值很小的负数}
输入0
输入{绝对值很小的正数}
输入{最大正实数}1072023/2/7边界值分析通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下1082023/2/7举例-利用边界值作为测试数据项边界值测试用例的设计思路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。1092023/2/7内部边界值分析在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。1102023/2/7内部边界值分析内部边界值条件主要有下面几种:数值的边界值检验字符的边界值检验其它边界值检验1112023/2/7小结在实际的测试用例设计中,需要将基本的软件设计要求和程序定义的要求结合起来,即结合基本边界值条件和内部边界值条件来设计有效的测试用例。1122023/2/7数值的边界值检验计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。项范围或值位(bit)0或1字节(byte)0~255字(word)0~65535(单字)或0~4294967295(双字)千(K)1024兆(M)1048576吉(G)10737418241132023/2/7字符的边界值检验在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。字符ASCII码值字符ASCII码值空(null)0A65空格(space)32a97斜杠(/)47Z90048z122冒号(:)58单引号(‘)96@641142023/2/7边界值分析法测试用例采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。因此,边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例。1152023/2/7边界值分析法测试用例边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。因此,在边界值分析法中获取测试用例的方法是:每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。对程序中的每个变量重复上一步。1162023/2/7边界值分析法测试用例(续)例1:有两个输入变量x1(a≤x1≤b)和x2(c≤x2≤d)的程序F的边界值分析测试用例如下:{<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,<x1nom,x2max>,<x1nom,x2max->,<x1min,x2nom>,<x1min+,x2nom>,<x1max,x2nom>,<x1max-,x2nom>}x1x2a
bcd1172023/2/7边界值分析法测试用例(续)例2:有二元函数f(x,y),其中x∈[1,12],y∈[1,31]。则采用边界值分析法设计的测试用例是:
{<1,15>,<2,15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>,<6,30>,<6,31>}推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。1182023/2/7边界值分析法测试用例(续)练习:有函数f(x,y,x),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。请写出该函数采用边界值分析法设计的测试用例。
{<2000,6,1>,<2000,6,2>,<2000,6,30>,<2000,6,31>,<2000,1,15>,<2000,2,15>,<2000,11,15>,<2000,12,15>,<1900,6,15>,<1901,6,15>,<2099,6,15>,<2100,6,15>,<2000,6,15>}1192023/2/7健壮性测试健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。1202023/2/7健壮性测试前面例1中的程序F的健壮性测试如下图所示:x1x2a
bcd1212023/2/7边界值分析法测试举例实例1三角形问题的边界值分析测试用例在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1,100]。说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测试用例前先设定取值的下限值和上限值。1222023/2/7测试用例abc预期输出Test1Test2Test3Test4Test560606050506060605050126099100等腰三角形等腰三角形等边三角形等腰三角形非三角形Test6Test7Test8Test960605050129910060605050等腰三角形等腰三角形等腰三角形非三角形Test10Test11Test12Test1312991006060505060605050等腰三角形等腰三角形等腰三角形非三角形1232023/2/7边界值分析法测试举例实例2NextDate函数的边界值分析测试用例在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050。1242023/2/7测试用例mouthdayyear预期输出Test1Test2Test3Test4Test5Test6Test766666661515151515151519111912191319752049205020511911.6.161912.6.161913.6.161975.6.162049.6.162050.6.162051.6.16Test8Test9Test10Test11Test12Test13666666-112303132200120012001200120012001day超出[1…31]2001.6.22001.6.32001.7.1输入日期超界day超出[1…31]Test14Test15Test16Test17Test18Test19-112111213151515151515200120012001200120012001Mouth超出[1…12]2001.1.162001.2.162001.11.162001.12.16Month超出[1…12]1252023/2/7习题找零钱最佳组合假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。1262023/2/7因果图法因果图法简介因果图因果图法测试举例1272023/2/7因果图法的简介等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。(回忆一下NASA的火星探测器,中俄2011.11.9日失败案例)1282023/2/7因果图法的简介如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。1292023/2/7因果图法的简介因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。1302023/2/7因果图法的简介采用因果图法设计测试用例的步骤:根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。将得到的因果图转换为判定表。为判定表中每一列所表示的情况设计一个测试用例。1312023/2/7因果图法的简介使用因果图法的优点:考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。能够帮助测试人员按照一定的步骤,高效率的开发测试用例。因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。1322023/2/7因果图因果图中用来表示4种因果关系的基本符号:c1e1恒等c1e1非~c1e1或c2c3∨c1e1与c2∧1332023/2/7因果图因果图中的4种基本关系:在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci与ei取值0或1,0表示某状态不出现,1则表示某状态出现。恒等:若c1是1,则e1也为1,否则e1为0。非:若c1是1,则e1为0,否则e1为1。或:若c1或c2或c3是1,则e1为1,否则e1为0。与:若c1和c2都是1,则e1为1,否则e1为0。1342023/2/7因果图因果图中的约束在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。1352023/2/7因果图因果图中的约束E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1。I约束(或):a、b、c中至少有一个必须为1,即a、b、c不能同时为0。O约束(唯一):a和b必须有一个且仅有一个为1。R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。M约束(强制):若结果a为1,则结果b强制为0。1362023/2/7因果图因果图中用来表示约束关系的约束符号:ab异Eab或Icab唯一ORab要求Mab强制1372023/2/7因果图因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。1382023/2/7因果图利用因果图生成测试用例的基本步骤如下:由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。把因果图转换为决策表。根据决策表中的每一列设计测试用例。1392023/2/7因果图法举例实例用因果图法测试以下程序。程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。1402023/2/7因果图法举例解题步骤:分析程序的规格说明,列出原因和结果。找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。将因果图转换成决策表。根据上一步中的决策表,设计测试用例的输入数据和预期输出。1412023/2/7因果图法举例分析程序规格说明中的原因和结果:原因结果
c1:第一个字符是#
e1:给出信息N
c2:第一个字符是*
e2:修改文件
c3:第二个字符是一个数字
e3:给出信息M1422023/2/7因果图法举例画出因果图(编号为10的中间结点是导出结果的进一步原因):c1c2c3e110e2e3~∨E~∧1432023/2/7因果图法举例将因果图转换成如下所示的决策表:12345678条件:C1C2C310111110101110010111010100100000动作:e1e2e3不可能√√√√√√√√√测试用例#3#A*6*BA1GT1442023/2/7因果图法举例根据决策表中的每一列设计测试用例:测试用例编号输入数据预期输出1#3修改文件2#A给出信息M3*6修改文件4*B给出信息M5A1给出信息N6GT给出信息N和信息M1452023/2/7习题使用因果图法为三角形问题设计测试用例。某软件的一个模块的需求规格说明书中描述:年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请绘制出因果图和判定表,并给出相应的测试用例。1462023/2/7决策表法在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。1472023/2/7决策表法决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。1482023/2/7“阅读指南”决策表12345678问题觉得疲倦?YYYYNNNN感兴趣吗?YYNNYYNN糊涂吗?YNYNYNYN建议重读√继续√跳下一章√√休息√√√√1492023/2/7决策表的组成决策表通常由以下4部分组成:条件桩—列出问题的所有条件条件项—针对条件桩给出的条件列出所有可能的取值动作桩—列出问题规定的可能采取的操作动作项—指出在条件项各组取值情况下应采取的动作1502023/2/7决策表的组成条件桩动作桩条件项动作项规则将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。1512023/2/7决策表的生成构造决策表的5个步骤:确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。列出所有的条件桩和动作桩。填入条件项。填入动作项,得到初始决策表。简化决策表,合并相似规则。1522023/2/7决策表的生成若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。1532023/2/7三角形问题的决策表规则1-8规则9规则10规则11规则12规则13规则14规则15规则16条件:c1:a,b,c构成三角形?c2:a=b?c3:a=c?c4:b=c?
N---
YYYY
YYYN
YYNY
YYNN
YNYY
YNYN
YNNY
YNNN动作:a1:非三角形a2:一般三角形a3:等腰三角形a4:等边三角形a5:不可能
√
√
√
√√√√√√1542023/2/7决策表应用NextDate函数的决策表测试用例设计问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。1552023/2/7决策表应用说明:当决策表规模(指规则的数目,n个条件的决策表有2n个规则)较大时,可以通过扩展条目决策表(条件使用等价类)、代数简化表、将大表“分解”为小表等方法。1562023/2/7决策表应用为了获得下一个日期,NextDate函数执行如下操作如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是1~11月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。1572023/2/7决策表应用关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。1582023/2/7决策表应用根据所执行的操作,可列出NextDate函数的动作桩:a1:不可能;a2:day加1;a3:day复位;a4:month加1;a5:month复位;a6:year加1考虑到决策表的规模,条件使用month、day、year变量的等价类,在以下等价类集合上建立决策表:1592023/2/7决策表应用对于month变量的取值M1:{month:month有30天};M2:{month:month有31天,12月除外};M3:{month:month有12月};M4:{month:month是2月};对于day变量的取值D1:{day:1≤day≤27};D2:{day:day=28};D3:{day:day=29};D4:{day:day=30};D5:{day:day=31};对于year变量的取值Y1:{year:year是闰年};Y2:{year:year不是闰年}1602023/2/7决策表应用决策表测试法适用于具有以下特征的应用程序:if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。1612023/2/7决策表应用适用于使用决策表设计测试用例的条件:规格说明以决策表形式给出,或较容易转换为决策表。条件的排列顺序不会也不应影响执行的操作。规则的排列顺序不会也不应影响执行的操作。当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要。1622023/2/7决策表测试应用案例用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期例如,输入为2004年11月29日,则该程序的输出为2004年12月1日。1632023/2/7决策表测试应用案例用决策表测试法测试分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。根据(1)和(2),画出简化后的决策表。1642023/2/7决策表测试应用案例month变量的有效等价类:M1:{month=4,6,9,11}M2:{month=1,3,5,7,8,10}M3:{month=12}M4:{month=2}day变量的有效等价类:D1:{1≤day≤26}D2:{day=27}D3:{day=28}D4:{day=29}D5:{day=30}D6:{day=31}year变量的有效等价类:Y1:{year是闰年}Y2:{year不是闰年}考虑各种有效的输入情况,程序中可能采取的操作有以下六种:a1:day+2a2:day=2a3:day=1a4:month+1a5:month=1a6:year+11652023/2/7第三部分白盒测试方法白盒测试概述控制流测试逻辑覆盖路径测试谓词测试数据流测试1662023/2/7白盒测试概述白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。1672023/2/7白盒测试概述但即使每条路径都测试过了,仍然可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。穷举路径测试不可能查出程序因为遗漏路径而出错。穷举路径测试发现不了一些与数据相关的错误1682023/2/7白盒测试概述采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:保证一个模块中的所有独立路径至少被测试一次所有逻辑值均需测试真(true)和假(false)两种情况检查程序的内部数据结构,保证其结构的有效性在上下边界及可操作范围内运行所有循环。1692023/2/7白盒测试概述白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有:控制流测试逻辑覆盖法(逻辑驱动测试)基本路径测试方法谓词测试法数据流测试1702023/2/7逻辑覆盖测试根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖判定覆盖条件覆盖判定/条件覆盖组合覆盖路径覆盖。1712023/2/7语句覆盖选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。1722023/2/7语句覆盖为了使每个语句都执行一次,程序的执行路径应该是sacbed,为此只需要输入下面的测试数据(实际上X可以是任意实数):A=2,B=0,X=41732023/2/7语句覆盖语句覆盖对程序的逻辑覆盖很少例如上例中都只测试了条件为真的情况,如果条件为假时处理有错误,显然不能发现。1742023/2/7语句覆盖此外,语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。例如,如果把程序中第一个判定中的AND错写成OR,或把第二个判定表达式中的条件X>1误写成X<1,使用上面的测试数据并不能查出这些错误。1752023/2/7判定覆盖通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,也称为“分支覆盖”。1762023/2/7判定覆盖对于上述例子来说,能够分别覆盖路径sacbed和sabd的两组测试数据,或者可以分别覆盖路径sacbd和sabed的两组数据,都满足判定覆盖标准。A=3,B=0,X=0(?)(覆盖sacbd)A=2,B=1,X=1(覆盖sabed)1772023/2/7判定覆盖判定覆盖比语句覆盖强,但是对程序逻辑的覆盖程度仍然不高,例如,上面的测试数据只覆盖了程序全部路径的一半。1782023/2/7条件覆盖设计足够多测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。条件覆盖的含义是:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果(说到判定了吗?)。1792023/2/7条件覆盖例子中总共有两个判定表达式,每个表达式中有两个条件,为了做到条件覆盖,应该选取测试数据使得:在a点有下述各种结果出现:A>1、A≤1、B=0、B≠0;在b点有下述各种结果出现:A=2、A≠2、X>1、X≤11802023/2/7条件覆盖只需要使用下面两组测试数据就可以达到上述覆盖标准:A=2,B=0,X=4(满足A>1,B=0,A=2和X>1的条件,执行路径sacbed)A=1,B=1,X=1(满足A≤1,B≠0,A≠2和X≤1的条件,执行路径sabd)1812023/2/7条件覆盖条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。例如,上面的两组测试数据也同时满足判定覆盖标准。但是,也可能有相反的情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。1822023/2/7条件覆盖例如,如果使用下面两组测试数据,则只满足条件覆盖标准并不满足判定覆盖标准(第二个判定表达式的值总为真):A=2,B=0,X=1(满足A>1,B=0,A=2和X≤1的条件,执行路径sacbed)A=1,B=1,X=2(满足A≤1,B≠0,A≠2和X>1的条件,执行路径sabed)1832023/2/7判定/条件覆盖设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。1842023/2/7判定/条件覆盖对于前面的例子,下述两组测试数据满足判定/覆盖标准(同时也是为满足条件覆盖标准最初选取的测试数据):A=2,B=0,X=4(满足A>1,B=0,A=2和X>1的条件,执行路径sacbed)A=1,B=1,X=1(满足A≤1,B≠0,A≠2和X≤1的条件,执行路径sabd)1852023/2/7条件组合覆盖通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。1862023/2/7条件组合覆盖对于前面的例子,共有8种可能的条件组合,分别是:1A>1B=02A>1B≠03A≤1B=04A≤1B≠05A=2X>16A=2X≤17A≠2X>18A≠2X≤11872023/2/7条件组合覆盖下面4组测试数据可以使上面列出的8种条件组合每种至少出现一次:A=2,B=0,X=4(针对1和5两种组合,执行路径sacbed)A=2,B=1,X=1(针对2和6两种组合,执行路径sabed)A=1,B=0,X=2(针对3和7两种组合,执行路径sabed)
A=1,B=1,X=1(针对4和8两种组合,执行路径sabd)1A>1B=02A>1B≠03A≤1B=04A≤1B≠05A=2X>16A=2X≤17A≠2X>18A≠2X≤11882023/2/7条件组合覆盖显然,满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。因此,条件组合覆盖是前述几种覆盖标准中最强的。但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。1892023/2/7点覆盖图论中点覆盖的概念定义如下:如果连通图G的子图G′是连通的,而且包含G的所有结点,则称G′是G的点覆盖。1902023/2/7点覆盖在正常情况下流图是连通的有向图。满足点覆盖标准要求选取足够多的测试数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 打字员操作安全竞赛考核试卷含答案
- 烧碱电解工班组安全知识考核试卷含答案
- 三氯氢硅合成工风险识别水平考核试卷含答案
- 陶瓷贴花工创新思维强化考核试卷含答案
- 野生植物管护巡护工创新实践竞赛考核试卷含答案
- 熔融纺干燥操作工岗前安全宣教考核试卷含答案
- 碳汇计量评估师安全技能知识考核试卷含答案
- 2026班主任终极面试题及答案
- 2026白云九中面试题目及答案
- 2026白城工会面试题及答案
- 2024年湖北省中考地理·生物试卷(含答案解析)
- 城轨安全用电-触电急救
- JJG539-2016数字指示秤检定记录格式
- 慢性肾脏病健康宣教
- 氩气安全技术说明书MSDS
- 银行保安服务投标方案(完整技术标)
- 拒绝文身主题班会课件
- 北京版八年级数学下册全册课件【完整版】
- 汽车行走的艺术学习通课后章节答案期末考试题库2023年
- 常微分方程一阶微分方程的初等解法公开课一等奖市赛课获奖课件
- 上海市临检中心 临床微生物学检验新技术及质量控制学习班课件 微生物检验新技术、新趋势
评论
0/150
提交评论