软件测试技术_第1页
软件测试技术_第2页
软件测试技术_第3页
软件测试技术_第4页
软件测试技术_第5页
已阅读5页,还剩237页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、12022-7-5软件测试技术软件测试技术22022-7-5课程目标课程目标n掌握系统的软件测试方法和技术n应试准备:GCT考试32022-7-5n参考书参考书软件测试基础教程. Aditya P.Mathur著,王峰等译.机械工业出版社,2011年8月软件测试基础. Paul Ammann等著,郁莲等译. 机械工业出版社,2010年10月42022-7-5n参考书软件测试技术经典教程 赵斌编著,科学出版社,2007年5月(非常适合实战)软件测试教程贺平编著,电子工业出版社,2005年6月(高职精品教材,比较实用)52022-7-5n参考书软件测试. Ron Patton著,张小松等译,机械工

2、业出版社,2006年8月软件测试-原理与实践. Srinivasan Desikan等著,韩柯等译,机械工业出版社,2009年2月软件测试工程师培训教程. 刘德宝编著,科学出版社,2009年1月62022-7-5n参考网站链接http:/所需要的关于软件测试方面的绝大多数问题都可以在这里直接找到答案(包括各种软件测试工具如何使用)软件测试自学的最佳网站。72022-7-5第一部分第一部分 软件测试概述软件测试概述n经典案例n软件测试的目的n软件测试准则n软件测试方法n软件测试过程n软件测试环境82022-7-5软件测试的历史与现状软件测试的历史与现状n软件测试的历史20世纪50年代,英国著名的

3、计算机科学家图灵图灵就给出了软件测试的原始定义:测试是程序正确性证明的一种极端实验形式五个影响人类历史的苹果五个影响人类历史的苹果?ACM图灵奖?92022-7-5软件测试的历史与现状软件测试的历史与现状n软件测试的历史直到上世纪70年代以后,随着计算机硬件技术的进步与成熟,软件在整个系统中所占的地位越来越重要,软件规模和复杂性大大增加。102022-7-5软件测试的历史与现状软件测试的历史与现状n软件测试的历史软件可靠性面临前所未有的危机,给软件测试工作带来了挑战,测试的意义逐渐被人们认识,软件测试的研究开始受到重视,是软件测试技术发展最活跃的时期。112022-7-5软件测试的历史与现状软

4、件测试的历史与现状n软件测试的历史1975年,Goodenough首次提出了软件测试理论,从而把软件测试这一实践性很强的学科提高到理论的高度。1982年,美国北卡来纳大学召开了首次软件测试技术会议,是软件测试与软件质量研究人员和开发人员的第一次聚会122022-7-5软件测试的历史与现状软件测试的历史与现状n软件测试的现状就目前软件工程发展的状况而言,软件测试仍然是较为薄弱的一个方面。不仅测试理论,已有的测试方法也不能满足当前软件开发的实际需求。132022-7-5软件测试的历史与现状软件测试的历史与现状n软件测试的现状尤其是进入20世纪90年代后,计算机技术日趋成熟,软件应用范围逐步扩大,软

5、件规模和复杂性急剧增加,与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。142022-7-5软件测试的历史与现状软件测试的历史与现状n软件测试的现状由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。152022-7-5软件测试的历史与现状软件测试的历史与现状n随着软件外包行业的逐渐兴起和人们对软件质量保障意识的加强,中国软件企业已开始认识到,软件测试的广度和深度决定了中国软件企业的前途命运。162022-7-5软件测试的历史与现状软件测试的历史与现状n以占中国软件外包总量近85%的对日软

6、件外包来说,业务内容基本都针对测试环节。软件外包中对测试环节的强化,直接导致了软件外包企业对测试人才的大量需求。n近年来,几乎所有的软件企业均存在不同程度的测试人才缺口,软件测试工程师已成为了亟待补充的关键技术工种之一。172022-7-5nIBM、百度、华为、惠普、盛大网络、联想集团等国内外大型IT企业均表现出对成熟软件测试人才的期盼,而微软、三星、西门子、思科、华为3COM等多家国内外IT巨头则相继在全国各大高校招兵买马,并把软件测试人才的招聘放在了突出的位置。国内软件测试人才紧缺的现状已经凸现出来。182022-7-5经典案例一经典案例一n1994年,迪斯尼发布的第一个面向儿童的多媒体光

7、盘游戏-狮子王动画游戏书(The Lion King Animated Storybook)n失败原因:缺乏系统兼容性测试192022-7-5经典案例二经典案例二n英特尔奔腾浮点除法缺陷1994年,弗吉尼亚州Lynchburg学院的Thomas R.Nicely博士在实验中,计算下列算式:(4195835/3145727)*3145727-4195835 主要原因:英特尔奔腾处理器烧制了软件缺陷 202022-7-5经典案例三经典案例三n美国航天局火星极地登陆号探测器 1999年故障评估委员会认定:火星探测器试图在火星表面着陆时失踪,出现故障的原因极可能是一个数据位被意外置位。令人警醒的问题是

8、:为什么没有在内部测试时发现呢?212022-7-5经典案例三经典案例三n着陆计划当探测器向火星表面降落时,它将打开降落伞减缓探测器的下降速度。降落伞打开几秒钟后,探测器的三条腿将迅速撑开,并锁定位置,准备着陆。当探测器离地面1800米时,它将丢弃降落伞,点燃着陆推进器,缓缓降落到地面222022-7-5经典案例三经典案例三n美国航天局为了省钱,简化了确定何时关闭着陆推进器的装置。为了替代在其它太空船上使用的昂贵雷达,他们在探测器的脚部装了一个廉价的触点开关,在计算机中设置了一个数据位来控制触点开关关闭燃料。n很简单,探测器的发动机需要一直点火工作,直到脚“着地”为止。232022-7-5经典

9、案例三经典案例三n故障评估委员会在测试中发现:很多情况下,当探测器的脚迅速撑开准备着陆时,机械振动也会触发着陆触点开关,设置致命的数据位。n设想探测器开始着陆时,计算机极有可能关闭着陆推进器,这样飞船下坠1800米之后冲向火星表面,撞成碎片。242022-7-5经典案例三经典案例三n结果是灾难性的,原因却很简单:登陆探测器经过了多个小组测试,其中一个小组测试飞船的脚折叠过程,另一个小组测试此后的着陆过程。前一个小组不去注意着地数据位是否置位(这不是他们负责的范围);后一个小组总是在开始测试之前复位计算机、清除数据位。双方独立工作都做得很好,但合在一起就不是这样了。252022-7-5经典案例四

10、经典案例四n爱国者导弹防御系统 1991首次应用在海湾战争中对抗伊拉克飞毛腿导弹,取得了实效,但是确实在对抗几枚导弹中失利,包括一次在沙特阿拉伯的多哈击毙了28名美国士兵。分析发现症结在于一个软件缺陷,系统时钟的一个很小的计时错误积累起来到14小时后,跟踪系统不再准确。在多哈的这次袭击中,系统已经运行了100多个小时。262022-7-5经典案例五经典案例五n千年虫问题 1974年用两位数字表示年份原因:为了节省存储空间272022-7-5经典案例六经典案例六nWindows 2000安全漏洞远程服务软件中存在安全漏洞拒绝服务权限滥用信息泄露黑客利用这点控制了美国国防部一台服务器282022-

11、7-5近期出现的重大事故近期出现的重大事故n2007年10月30日,奥运门票第二阶段阶段预售首日科技奥运?292022-7-5近期出现的重大事故近期出现的重大事故n2007年8月14日14时,美国洛杉矶国际机场电脑发生故障,60个航班的2万旅客无法入关。直至次日凌晨3时50分,所有滞留旅客才全部入关。2004年9月发生过类似问题n原因分析:包含旅客姓名和犯罪记录的部分数据系统(海关和边境保护系统:决定旅客是否可以进入美国领土)瘫痪302022-7-5近期出现的重大事故近期出现的重大事故n2006年3月2日14点10分,沪深大盘忽然发生罕见大跳水,7分钟之内上证指数跌去近 20 点。n原因分析:

12、当日下午刚上市的招商银行认股权证成交量巨大,导致其行情显示时总成交量字段溢出,使其价格在股票分析软件上成为一条不再波动的直线,让市场产生了恐慌。312022-7-5近期出现的重大事故近期出现的重大事故n2005年4月20日上午10时56分,中国银联系统通信网络和主机出现故障,造成辖内跨行交易全部中断。这是2002年中国银联成立以来,首次全国性因系统故障造成的跨行交易全面瘫痪。 n原因:银联新近准备上线的某外围设备的隐性缺陷诱发了跨行交易系统主机的缺陷,使主机发生故障n软件能否提供支持?322022-7-5近期出现的重大事故近期出现的重大事故n2003年8月14日下午4时10分,美国及加拿大部分

13、地区发生历史上最大的停电事故。15日晚逐步恢复n后果:经济损失250亿到300亿之间,入选2003年国际十大n原因分析:俄亥俄州的第一能源公司下属的电力监测与控制管理系统软件 XA/21 出现错误,系统中重要的预警部分出现严重故障,负责预警服务的主服务器与备份服务器连接失控,错误没有得到及时通报和处理,最终多个重要设备出现故障,导致大规模停电332022-7-5近期出现的重大事故近期出现的重大事故n1996年6月4日,欧洲空间局的阿丽亚娜火箭,发射后37秒爆炸。损失6亿美元n原因分析:ADA语言编写的一段程序,将一个64位浮点整数转换为16位有符号整数时,产生溢出,导致系统惯性参考系统完全崩溃

14、342022-7-5计算机系统的软件可靠性问题计算机系统的软件可靠性问题n随着对计算机需求和依赖的与日俱增,计算机系统的规模和复杂性急剧增加,使得计算机软件的数量以惊人的速度急剧膨胀。与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。352022-7-5计算机系统的软件可靠性问题计算机系统的软件可靠性问题n由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。362022-7-5计算机系统的软件可靠性问题计算机系统的软件可靠性问题n随着计算机技术的飞速发展,计算机系统的规模和复杂性急剧增加,其

15、软件开发成本以及由于软件故障而造成的经济损失也正在增加,软件质量问题已成为人们共同关注的焦点。n软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。372022-7-5计算机系统的软件可靠性问题计算机系统的软件可靠性问题n随着软件系统规模和复杂性的增加,进行专业化高效软件测试的要求越来越严格,软件测试职业的价值逐步得到了认可,软件测试技术已作为一门新兴产业而快速发展起来了。382022-7-5软件测试的目的软件测试的目的n定义11983年IEEE(国际电子电气工程师协会)提出的软件工程标准术语中给软件测试下的定义是:使用人工或自动手段来运行或测定某个系统的过程,其

16、目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。392022-7-5软件测试的目的软件测试的目的n定义2软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去执行程序,以发现软件故障的过程。该定义强调寻找故障是测试的目的。402022-7-5软件测试的目的软件测试的目的n定义3软件测试是一种软件质量保证活动,其动机是通过一些经济有效的方法,发现软件中存在的缺陷,从而保证软件质量。质量保证的观点。412022-7-5软件测试准则软件测试准则n所有测试都应该能追溯到用户需求。n应该远在测试开始之前就制定出测试计划。n把Pareto

17、原理应用到软件测试中。Pareto原理说明,测试发现的错误中的80%很可能是由程序中20%的模块造成的。422022-7-5软件测试准则软件测试准则n应该从“小规模”测试开始,并逐步进行“大规模”测试。n穷举测试是不可能的。n为了达到最佳的测试效果,应该由独立的第三方从事测试工作。432022-7-5软件测试方法软件测试方法n测试任何产品都有两种方法: 如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。442022-7-5软件测

18、试方法软件测试方法n黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试。452022-7-5软件测试方法软件测试方法n白盒测试法与黑盒测试法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试。462022-7-5软件测试过程软

19、件测试过程472022-7-5软件测试过程软件测试过程n单元测试目的:检测程序模块中有无故障存在对象:软件设计的最小单位,与程序设计和编程实现关系密切n 集成测试目的:发现与接口有关的模块之间的问题方法:非增式集成测试法和增式集成测试法482022-7-5n集成测试非增式集成测试法对每一个模块进行单元测试在此基础上按程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试增式集成测试法不断地把待测模块连接到已测模块集(或其子集)上,对待测模块进行测试,直到最后一个模块测试完毕492022-7-5软件测试过程软件测试过程n确认测试目的对软件产品进行评估,以确定其是否满足软件需求的过程502

20、022-7-5软件测试过程软件测试过程n系统测试目的:针对系统中各个组成部分进行的综合性检验,证明系统的性能测试人员要求:系统开发人员不能进行系统测试。系统开发组织不能负责系统测试。512022-7-5n验收测试目的:向用户表明所开发的软件系统能够像用户所预定的那样工作主要任务:明确规定验收测试通过的标准;确定验收测试方法;确定验收测试的组织和可利用的资源;确定测试结果的分析方法;522022-7-5n验收测试主要任务:制定验收测试计划并进行评审;设计验收测试的测试用例;审查验收测试的准备工作;执行验收测试;分析测试结果,决定是否通过验收。532022-7-5软件测试与软件开发的关系软件测试与

21、软件开发的关系542022-7-5软件测试过程模型软件测试过程模型nV模型552022-7-5软件测试过程模型软件测试过程模型nW模型562022-7-5软件测试环境的搭建软件测试环境的搭建n测试环境是指用来运行软件的环境。 硬件 软件 网络 数据准备 测试工具572022-7-5n硬件环境主要是指PC机、笔记本电脑、服务器、各种PDA终端等。例如现要测试微软的word 2003这一款软件,那么是在PC机上测试还是在笔记本电脑上测试?如果在PC机上测试,那么CPU是奔腾2.4G,还是赛扬1.7G?内存是DDR512M,还是SD128M? 不同的机器类型,不同的机器配置,必然会导致不同的反应速度

22、,因此测试一款软件时一定要考虑硬件配置。582022-7-5n软件环境主要是软件运行的操作系统。比如word 2003是在Window 2003下检测,还是在Window XP下检测,这里可能会有兼容性的问题。592022-7-5n网络环境主要指的是C/S结构还是B/S结构。例如要测试微软的outlook 2003这一款软件,那么是在局域网里测,还是在互联网里测?如果在局域网中测,那么是在10M的局域网里测,还是在100M的局域网里测?不同的网络类型,不同的传输速度,必然会导致不同的收发速度,因此测试一款软件时也不能忽视网络的因素。602022-7-5n数据准备主要指的是测试数据的准备。测试数

23、据的准备应考虑数据量和真实性,即尽可能获取大量的真实的数据,包括正确和错误的数据。当无法取得真实数据时应尽可能模拟出大量的数据。612022-7-5n测试工具目前市场上的测试工具很多,可分为静态测试工具、动态测试工具、黑盒测试工具、白盒测试工具、测试执行评估工具、测试管理工具等因此,对测试工具的选择是一个比较重要的问题,应根据测试需求和实际条件来选择已有的测试工具,或购买、自行开发相应的测试工具622022-7-5n搭建软件测试环境还应注意以下几点:尽量模拟用户的真实使用环境;测试环境中尽量不要安装其它与被测软件无关的软件,但最好安装杀毒软件,以确保系统没有病毒;测试环境应与开发环境独立。63

24、2022-7-5第二部分第二部分 黑盒测试法及其用例设计黑盒测试法及其用例设计n黑盒测试法概述n三角形问题及NextDate函数n等价类划分法n边界值分析法n因果图法n决策表法642022-7-5三角形问题三角形问题n输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及构不成三角形。n结论:三角形问题的复杂之处在于输入与输出之间的关系比较复杂。652022-7-5三角形问题三角形问题n现在要求输入三整数a、b、c,必须满足以下条件条件1 1a100条件2 1b100条件3 1c100条件4 a

25、b+ c条件5 ba+ c 条件6 ca+ b 662022-7-5n如果输入值a、b、c不满足条件1、条件2和条件3 ,程序给出“边的取值超出允许范围”的信息。n如果输入值a、b、c 满足条件1、条件2和条件3,则输出下列四种情况之一:如果不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”。如果三条边相等,则程序输出为“等边三角形”。如果恰好有两条边相等,则程序输出为“等腰三角形”。如果三条边都不相等,则程序输出为“一般三角形”。672022-7-5NextDate函数函数nNextDate函数包含三个变量month 、day和year,函数的输出为输入日期后一天的日期。 要求输

26、入变量month 、day和year均为整数值,并且满足下列条件:条件1 1 month 12条件2 1 day 31条件3 1912 year 2050682022-7-5NextDate函数函数nNextDate函数说明另一种复杂的关系,即输入变量之间逻辑关系的复杂性。n结论:在NextDate函数中有两种复杂性的输入来源,一是输入域的复杂性,二是确定闰年的规则并要增加“额外天”。692022-7-5等价类划分法等价类划分法n等价类的划分原则n等价类划分法的测试用例设计n使用等价类划分法测试的实例702022-7-5等价类划分等价类划分n等价类划分法是一种重要的、常用的黑盒测试方法,它将不

27、能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。n等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一子集中选取少数具有代表性的数据作为测试用例。712022-7-5例子例子n设计这样的测试用例,来实现一个对所有实数进行开平方运算( y = sqrt(x) )的程序的测试。n思考方向:由于开平方运算只对非负实数有效,这时需要将所有的实数(输入域x)进行划分,可以分成:正实数、0 和负实数。假设我们选定+1.4444代表正实数,-2.345代表负实数,则为该程序设计的测试用例的输入为+1.4444、 0 和 -2.345。722022-

28、7-5等价类划分等价类划分n所谓等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于这一类中其它数据。n这样,对于表征该类的数据输入将能代表整个子集合的输入。因此,可以合理假定:测试某等价类的代表值就是等效于对于这一类其它值的测试。732022-7-5等价类的划分原则等价类的划分原则n等价类是输入域的某个子集合,而所有等价类的并集就是整个输入域。因此,等价类对于测试有两个重要的意义:完备性:整个输入域提供一种形式的完备性无冗余性:若互不相交则可保证一种形式的无冗余性742022-7-5等价类的划分原

29、则等价类的划分原则n如何划分?先从程序的规格说明书中找出各个输入条件,再为每个输入条件划分两个或多个等价类,形成若干的互不相交的子集。n采用等价类划分法设计测试用例通常分两步进行:确定等价类,列出等价类表。确定测试用例。752022-7-5等价类的划分原则等价类的划分原则n划分等价类可分为两种情况:有效等价类是指对软件规格说明而言,是有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。762022-7-5等价类的划分原则等价类的划分原则n划分等价类可分为两种情况:无效等价类是指对软件规格说明而言,是无意义的、不合理的输入数据所构成的集合。

30、利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。772022-7-5等价类划分的原则等价类划分的原则n启发式规则按照区间划分在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。782022-7-5等价类划分的原则等价类划分的原则n启发式规则按照数值划分在规定了一组输入数据(假设包括 n个输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定 n 个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。792022-7-5等价类划分的原则等价类划分的原则n启发式规则按照

31、数值集合划分在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。802022-7-5等价类划分的原则等价类划分的原则n启发式规则按照限制条件或规则划分在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。812022-7-5等价类划分的原则等价类划分的原则n启发式规则细分等价类在确知已划分的等价类中各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步划分为更小的等价类,并建立等价类表。 822022-7-5等价类划分法测试用例设计等价类划分法测试用例设

32、计n在设计测试用例时,应同时考虑有效等价类和无效等价类测试用例的设计。832022-7-5等价类划分法的测试用例设计等价类划分法的测试用例设计n根据已列出的等价类表可确定测试用例,具体过程如下首先为等价类表中的每一个等价类分别规定一个唯一的编号。设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。842022-7-5输入3个整数有效等价类编号无效等价类编号整数1一边为非整数二边为非整数三边为非整数4563个数2只有一条边只

33、有二条边多于三条边7891a1001b1001c1003一边为0二边为0三边为0101112一边0二边0三边100二边100三边100161718852022-7-5等价类划分测试的实例等价类划分测试的实例n测试用例Test1=(3, 4, 5)便可以覆盖有效等价类13.n覆盖无效等价类的测试用例见下表。862022-7-5测试用例输入a、b、c期望输出覆盖等价类Test21.5, 4, 5提示“请输入1100之间的整数”4Test33.5, 2.5, 5提示“请输入1100之间的整数”5Test42.5, 4.5, 5.5提示“请输入1100之间的整数”6Test53提示“请输入三条边长”7

34、Test64, 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提示“请输入1100之间的整数”16Test153, 101, 101提示“请输入1100之间的整数”17Test16101, 101, 101提示“请输入1100之间的整

35、数”18872022-7-5等价类划分测试的实例等价类划分测试的实例n三角形问题的等价类测试在多数情况下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。 在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。882022-7-5等价类划分测试的实例等价类划分测试的实例n利用这些信息能够确定下列输出(值域)等价类R1 = : 边为a, b, c的等边三角形 R2 = : 边为a, b, c的等腰三角形 R3 = : 边为a, b, c的一般三角形 R4 = : 边为a, b, c不能组成三角形 892

36、022-7-5等价类划分测试的实例等价类划分测试的实例测试用例abc预期输出Test1555等边三角形Test2223等腰三角形Test3345一般三角形Test4412非三角形902022-7-5等价类划分测试的实例等价类划分测试的实例n保险公司计算保费费率的程序某保险公司的人寿保险的保费计算方式为: 投保额保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:912022-7-5等价类划分测试的实例等价类划分测试的实例年龄 性别婚姻抚养人数 2039 4059 其

37、它 M F 已婚 未婚 1人扣0.5点 最多扣3点(四舍五入取整) 6点 4点 2点 5点 3点 3点 5点922022-7-5等价类划分测试的实例等价类划分测试的实例n分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。年龄:一位或两位非零整数,值的有效范围为199性别:一位英文字符,只能取值M或F婚姻:字符,只能取值已婚或未婚抚养人数:空白或一位非零整数(19)点数 :一位或两位非零整数,值的范围为199n根据等价类表,设计能覆盖所有等价类的测试用例。932022-7-5输入条件输入条件有效等价类有效等价类编号编号无效等价类无效等价类编号编号年龄年龄

38、2039岁岁14059岁岁2119岁岁6099岁岁3小于小于112大于大于9913性别性别单个英文字符单个英文字符4非英文字符非英文字符14非单个英文字符非单个英文字符15M5除除M和和F之外的之外的其它单个字符其它单个字符16F6婚姻婚姻已婚已婚7除除已婚已婚和和未婚未婚之外的其它字符之外的其它字符17未婚未婚8抚养人数抚养人数空白空白9除空白和数字之外除空白和数字之外的其它字符的其它字符1816人人10小于小于11969人人11大于大于920942022-7-5测试用例编号输入数据预期输出年龄性别婚姻抚养人数保险费率127F未婚空白0.6%250M已婚20.6%370F已婚70.1%40M

39、未婚空白无法推算5100F已婚3无法推算699男已婚4无法推算71Child未婚空白无法推算845N已婚5无法推算938F离婚1无法推算1062M已婚没有无法推算1118F未婚0无法推算1240M未婚10无法推算952022-7-5 等价类划分(习题)等价类划分(习题)n请用等价类划分法为NextDate函数列出输入域等价类表,并设计相应的测试用例。962022-7-5边界值分析法边界值分析法n边界值分析法概要n边界值分析法测试用例n边界值分析法测试举例972022-7-5边界值分析法概要边界值分析法概要n边界值分析法(Boundary Value Analysis)是一种很实用的对输入或输出

40、的边界值进行测试的黑盒测试用例设计方法,具有很强的发现程序错误的能力。n通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。982022-7-5边界值分析法概要边界值分析法概要n为什么使用边界值分析法?无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。992022-7-5边界值分析法概要边界值分析法概要n怎样用边界值分析法设计测试用例?首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是

41、选取等价类中的典型值或任意值。1002022-7-5边界值分析法概要边界值分析法概要n例子-常见的边界值对16位的整数而言 32767 和 -32768 是边界屏幕上光标在最左上、最右下位置报表的第一行和最后一行数组元素的第一个和最后一个循环的第 0 次、第 1 次和倒数第 2 次、最后一次1012022-7-5边界值分析法概要边界值分析法概要n边界值分析法遵循的几条原则:如果输入条件对取值范围进行了界定,则应以边界内部以及刚超出范围边界外的值作为测试用例。若范围的下界为条件x、上界为y,则测试用例应当包含x、y以及稍小于x和稍大于y的值。如果对取值个数进行了界定,则应当分别以最大、最小个数及

42、稍小于最小、稍大于最大个数作为测试用例。1022022-7-5边界值分析法概要边界值分析法概要n边界值分析法遵循的几条原则:对于输出条件,同样可以应用上面提到的两条原则来进行测试用例设计。如果程序规格说明书中指明输入或者输出域是一个有序的集合,如顺序文件、表格等,就应当注意选取该有序集合中的第一个和最后一个元素作为测试用例。1032022-7-5边界值分析边界值分析n边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。1042022-7-5边界值分析边界值分析n例:测试计算平方根的函数输入:实数输出:实数规格说

43、明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息“平方根非法-输入值小于0”并返回0;库函数Print-Line可以用来输出错误信息。1052022-7-5边界值分析边界值分析n等价类划分:可以考虑作出如下划分:输入 (i)=0输出 (a)=0 和 (b) Error测试用例有两个:输入4,输出2。对应于 (ii) 和 (a) 。输入-10,输出0和错误提示。对应于 (i) 和 (b) 。1062022-7-5边界值分析边界值分析n边界值分析:划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例: 输入 最小负实数

44、输入 绝对值很小的负数 输入 0 输入 绝对值很小的正数 输入 最大正实数1072022-7-5边界值分析边界值分析n通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等n相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、 空/满等情况下1082022-7-5举例举例-利用边界值作为测试数据利用边界值作为测试数据项边界值测试用例的设计思路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,

45、这几个数值都属于边界条件值数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。1092022-7-5内部边界值分析内部边界值分析n在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。n然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时

46、确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。1102022-7-5内部边界值分析内部边界值分析n内部边界值条件主要有下面几种:数值的边界值检验 字符的边界值检验其它边界值检验1112022-7-5小结小结n在实际的测试用例设计中,需要将基本的软件设计要求和程序定义的要求结合起来,即结合基本边界值条件和内部边界值条件来设计有效的测试用例。1122022-7-5数值的边界值检验数值的边界值检验n计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。项项范围或值范围或值位(bit)0 或 1字节(byte)0 255字(word)065535(单字)或 042

47、94967295(双字)千(K)1024兆(M)1048576吉(G) 10737418241132022-7-5字符的边界值检验字符的边界值检验n在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。字符ASCII码值字符ASCII码值空 (null)0A65空格 (space)32a97斜杠 ( / )47Z90048z122冒号 ( : )58单引号 ( )96641142022-7-5边界值分析法测试用例边界值分析法测试用例n采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。n因此,边界

48、值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例。1152022-7-5边界值分析法测试用例边界值分析法测试用例n边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。n因此,在边界值分析法中获取测试用例的方法是:每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、 min+、 nom、 max-和max。对程序中的每个变量重复 上一步 。1162022-7-5边界值分析法测试

49、用例边界值分析法测试用例(续)(续)n例1:有两个输入变量x1(ax1b)和x2(cx2d)的程序F的边界值分析测试用例如下: , , , , , , , , x1x2a bcd1172022-7-5边界值分析法测试用例边界值分析法测试用例(续)(续)n例2:有二元函数f(x,y),其中x1,12,y1,31。则采用边界值分析法设计的测试用例是: , , , , , , , , n推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。1182022-7-5边界值分析法测试用例边界值分析法测试用例(续)(续)n练习:有函数f (x, y, x),其中x1900,21

50、00,y1,12,z1,31的。请写出该函数采用边界值分析法设计的测试用例。n , , , , , , , , , , , , 1192022-7-5健壮性测试健壮性测试n健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。1202022-7-5健壮性测试健壮性测试n前面例1中的程序F的健壮性测试如下图所示:x1x2a bcd1212022-7-5边界值分析法测试举例边界值分析法测试举例n实例1 三角形

51、问题的边界值分析测试用例n在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为1, 100 。n说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测试用例前先设定取值的下限值和上限值。1222022-7-5测试用例测试用例abc预期输出预期输出Test 1Test2Test3Test4Test560606050506060605050126099100等腰三角形等腰三角形等腰三角形等腰三角形等边三角形等边三角形等腰三角形等腰三角形非三角形非三角形Test6Test7Test8Test960605050129910060605050

52、等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形Test10Test11Test12Test1312991006060505060605050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形非三角形非三角形1232022-7-5边界值分析法测试举例边界值分析法测试举例n实例2 NextDate函数的边界值分析测试用例n在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1mouth12和1day31,并设定变量year的取值范围为1912year2050 。1242022-7-5测试用例测试用例mouth dayyear预期输出预期

53、输出Test 1Test2Test3Test4Test5Test6Test766666661515151515151519111912191319752049205020511911.6.161912.6.161913.6.161975.6.162049.6.162050.6.162051.6.16Test8Test9Test10Test11Test12Test13666666-112303132200120012001200120012001day超出超出1312001.6.22001.6.32001.7.1输入日期超界输入日期超界day超出超出131Test14Test15Test16Te

54、st17Test18Test19-112111213151515151515200120012001200120012001Mouth超出超出1122001.1.162001.2.162001.11.162001.12.16Month超出超出1121252022-7-5习题习题n找零钱最佳组合假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。请结合等价类划分法和边界值分析法为上述程序设

55、计 出相应的测试用例。1262022-7-5因果图法因果图法n因果图法简介n因果图n因果图法测试举例1272022-7-5因果图法的简介因果图法的简介n等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。(回忆一下NASA的火星探测器,中俄2011.11.9日失败案例)1282022-7-5因果图法的简介因果图法的简介n如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多

56、个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。1292022-7-5因果图法的简介因果图法的简介n因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。n因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。1302022-7-5因果图法的简介因果图法的简介n采用因果图法设计测试用例的步骤:根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。将得到的因果图转换为判定表。为判定表中每一列所表示的情况设

57、计一个测试用例。1312022-7-5因果图法的简介因果图法的简介n使用因果图法的优点:考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。能够帮助测试人员按照一定的步骤,高效率的开发测试用例。因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。1322022-7-5因果图因果图n因果图中用来表示4种因果关系的基本符号:恒等 非或与1332022-7-5因果图因果图n因果图中的4种基本关系:在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态

58、不出现,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。1342022-7-5因果图因果图n因果图中的约束在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。1352022-7-5因果图因果图n因果图中的约束E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1。I

59、约束(或):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。1362022-7-5因果图因果图n因果图中用来表示约束关系的约束符号:异E或I唯一OR要求M强制1372022-7-5因果图因果图n因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。分析软件规格说明中的语义,找出原因与结果

60、之间、原因与原因之间对应的关系, 根据这些关系画出因果图。1382022-7-5因果图因果图n利用因果图生成测试用例的基本步骤如下:由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。把因果图转换为决策表。根据决策表中的每一列设计测试用例。1392022-7-5因果图法举例因果图法举例n实例 用因果图法测试以下程序。程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。1402022-7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论