软件工程黑盒测试.ppt
,5.4黑盒测试的测试用例设计 5.4.1 等价类划分法(等价分配)把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.可从每个子集中选取一组数据来测试程序,例:某报表处理系统要求用户输入处理报表 的日期,日期限制在2003年1月至2008年 12月,即系统只能对该段期间内的报表 进行处理,如日期不在此范围内,则显 示输入错误信息。系统日期规定由年、月的6位数字字符组 成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能?,如何划分等价类?有效等价类(合理等价类)无效等价类(不合理等价类)划分等价类的标准:覆盖不相交代表性,划分等价类的规则,(1)如果输入条件规定了取值范围,可定义一个有 效等价类和两个无效等价类。,例 输入值是学生成绩,范围是0100,0 100,有效等价类0成绩100,无效等价类 成绩100,无效等价类 成绩0,(2)如果输入条件代表集合的某个元素,则可定义 一个有效等价类和一个无效等价类。,划分等价类的规则:,(3)如规定了输入数据的一组值,且程序对不同输 入值做不同处理,则每个允许的输入值是一个 有效等价类,并有一个无效等价类(所有不允 许的输入值的集合)。例:输入条件说明学历可为:专科、本科、硕士、博士四 种之一,则分别取这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类(4)如果规定了输入数据必须遵循的规则,可确定 一个有效等价类(符合规则)和若干个无效等 价类(从不同角度违反规则)。(5)如已划分的等价类各元素在程序中的处理方式 不同,则应将此等价类进一步划分成更小的等 价类。,用等价类划分法设计测试用例步骤:,(1)形成等价类表,每一等价类规定一个 唯一的编号;(2)设计一测试用例,使其尽可能多地覆 盖尚未覆盖的有效等价类,重复这一 步骤,直到所有有效等价类均被测试 用例所覆盖;(3)设计一新测试用例,使其只覆盖一个 无效等价类,重复这一步骤直到所有 无效等价类均被覆盖;,第一步:等价类划分,输入条件 有效等价类 无效等价类,报表日期的类型及长度,6位数字字符(1),有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6),年份范围,在20032008之间(2),小于2003(7)大于2008(8),月份范围,在112之间(3),“报表日期”输入条件的等价类表,小于1(9)大于12(10),第二步:为有效等价类设计测试用例,测试数据 期望结果 覆盖范围,200306,等价类(1)(2)(3),输入有效,对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:,(1)6位数字字符(2)年在20032008之间(3)月在112之间,第三步:为每一个无效等价类设至少 设计一个测试用例,测试数据 期望结果 覆盖范围,003MAY,等价类(4),输入无效,20035,等价类(5),输入无效,2003005,等价类(6),输入无效,200105,等价类(7),输入无效,200905,等价类(8),输入无效,200300,等价类(9),输入无效,200313,等价类(10),输入无效,不能出现相同的测试用例,本例的10个等价类至少需要8个测试用例,例:对招干考试系统“输入学生成绩”子模块 设计测试录入准考证号的测试用例,准考证号数据格式定义:共6为数字组成,其中第一位为专业代号:1-行政专业,2-法律专业,3-财经专业后5位为考生顺序号,编码范围为:行政专业准考证号码为:110001111215 法律专业准考证号码为:210001212006 财经专业准考证号码为:310001314015,准考证号码的等价类划分 有效等价类:(1)110001 111215(2)210001 212006(3)310001 314015 无效等价类:(4)-110000(5)111216 210000(6)212007 31000(7)314016+,5.4.2 边界值分析法边界值分析法与等价类划分法区别(1)边界值分析不是从某等价类中 随便挑一个作为代表,而是使 这个等价类的每个边界都要作 为测试条件。(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试 情况,被测试子 域,测试内点,测试外点,如果在悬崖峭壁边可以自信地安全行走,平地就不在话下。如果软件在能力达到极限时能够运行,那么在正常情况下就不会出什么问题。,软件边界与悬崖很类似,输入条件,报表日期的类型及长度,1个数字字符5个数字字符7个数字字符有1个非数字字符全部是非数字字符6个数字字符,显示出错显示出错显示出错显示出错显示出错输入有效,日期范围,月份范围,“报表日期”边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,52003520030052003.5MAY-200305,月份为1月月份为12月月份12,200301200312200300200313,200301200812200300200813,输入有效输入有效显示出错显示出错,输入有效输入有效显示出错显示出错,在有效范围边界上选取数据,仅有1个合法字符比有效长度少1比有效长度多1只有1个非法字符6个非法字符类型及长度均有效,最小日期最大日期刚好小于最小日期刚好大于最大日期,最小月份最大月份刚好小于最小月份刚好大于最大月份,有效等价类和用来测试getNumDaysInMonth()方法所选的有效输入,有效等价类,一个月有31天,非闰年,1901,7(七月),一个月有31天,闰年,1904,7(七月),一个月有30天,非闰年,1901,6(六月),一个月有30天,闰年,1904,6(六月),一个月为28或29天,非闰年,1901,2(二月),月份输入值,年份输入值,一个月为28或29天,闰年,2(二月),1904,用来测试getNumDaysInMonth()方法的附加边界值,等价类,可以被400整除的闰年,2000,2(二月),可以被100整除的非闰年,1900,2(二月),非正数无效月份,1291,0,正数无效月份,1315,13,月份输入值,年份输入值,5.4.3 错误推测法(error guessing)根据经验、直觉和预感来进行测试例如:一定要考虑建立处理下列等价类:缺省值空白空值零值无输入条件在已经找到软件缺陷的地方再找找,5.4.4 因果图法 因果图适合于描述对于多种输入条件的组合,相应产生多个动作的形式来设计测试用例。因果图方法最终生成的是判定表。,因果图方法实例某电力公司有A、B、C、D四类收费标准,并规定:居民用电 100度/月 按A类收费 100度/月按B类收费动力用电 10000度/月,非高峰,B类收费 10000度/月,非高峰,C类收费 10000度/月,高峰,C类收费 10000度/月,高峰,D类收费,用因果图表明输入和输出间的逻辑关系,1,I1,2,A,B,C,4,3,5,D,I4,I3,I2,因,果,把因果图转换为判定表,组合条件,条件(原因),动作(结果),A,B,C,1,2,3,1,2,3,4,5,6,1,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,1,0,4,1,0,1,0,5,0,0,1,1,D,0,0,0,1,1,0,0,1,0,0,0,0,测试用例,为判定表每一列设计一个测试用例:,1列 居民电,90度/月 A2列 居民电,110度/月 B3列 动力电,非高峰,8000度/月 B4列 动力电,非高峰,1.2万度/月 C5列 动力电,高峰,0.9万度/月 C6列 动力电,高峰,1.1万度/月 D,条件 测试用例 预期结果组合(输入数据)(输出动作),状态测试 软件必须测试程序的状态及其转换。测试软件的逻辑流程建立状态转换图减少要测试的状态及转换的数量,空闲,等待用户输入命令,按下Esc键显示口令框,口令错误 消除,口令正确初始状态消失,空闲,等待用户输入命令,按下Esc键,口令正确,口令错误,不同形式的状态转换图,在黑盒测试中,不必了解代码中设置的地层变量,从软件用户的角度建立状态图即可,减少要测试的状态及转换的数量每种状态至少访问一次测试最常见最普遍的状态转换测试状态之间最不常用的分支测试所有错误状态及其返回值、测试随即状态转换失败状态测试找到测试软件失败的案例。竞争条件和时序错乱重复压迫重负,应联合使用,同时进行,设置2Bwatch 上的时间的顺序图,:2Bwatch用户,按下左和右按钮,:2Bwatch输入,:2Bwatch显示,:2Bwatch时间,时间,按下左按钮,按下右按钮,按下左和右按钮,闪烁小时,闪烁分钟,增加分钟,刷新,提交更新时间,停止闪烁,2Bwatch 设置时间功能的状态图和测试结果,按左按钮 按右按钮,按左按钮 按右按钮,4.2分钟以后,测量时间,设置时间,电池没电,3.按下左右按钮,5.按下左右按钮/蜂鸣,8.20年以后,7.20年以后,6.,2.,1.,激励因素,空集合,测量时间,1.初始变迁,测试的变迁,预期结果状态,按下左边按钮,测量时间,2.,同时按下两个按钮,设置时间,3.,等2分钟,测量时间,4.超时,5.5 针对专门环境和应用的测试5.5.1 GUI测试 常见GUI测试指南:对于窗口对于菜单和鼠标操作对于数据项,5.5.2 C/S体系结构的测试 整体C/S测试策略(三个不同层次)客户端应以“分离的”模式被测试(不考虑服务器和底层网络的运行)客户端软件和关联的服务器端应用被一起测试(网络运行不被明显考虑)完整的C/S体系结构(包括网络运行和性能)被测试,C/S常用测试方法客户端应用功能测试服务器测试(协调和数据管理功能、性能)数据库测试事务测试网络通信测试,5.5.3 实时系统测试 可采用以下四步策略:(1)任务测试(2)行为测试(3)任务间测试(4)系统测试,(1)任务测试(task testing)对每一个任务进行单独测试(白盒、黑盒测试),发现逻辑和功能上错误,不能发现定时上和行为上错误。,(2)行为测试(behavioral testing)用CASE工具创建应用系统模型,模拟实时系统行为。按类测试各种事件(如中断、控制信号、数据)。测试过的事件以随机次序、随机频率送给系统,检查软件行为方面的错误.,(3)任务间测试(intertask testing)检查与时间有关错误。如用不同数据速率、处理负载 测试相互通信的异步任务。通过消息队列或数据存储测试 任务间的通信来找出数据存储区错 误的范围。,(4)系统测试(system testing)软件、硬件组装后,找出软、硬件接口错误。,软件测试的过程,单元测试,被测模块,集成测试,设计信息,单元测试,被测模块,单元测试,被测模块,测试过的模块,确认测试,系统测试,软件需求,其它系统元素,装配好的软件,确认的软件,可运行的软件,5.6软件测试的步骤,软件测试策略,单元测试,U,C,D,R,S,I,V,ST,集成测试,确认测试,系统测试,系统工程,软件需求分析,软件设计,代码编写,5.6.1 单元测试一.单元测试的内容主要对模块的五个基本特性进行评价,模块,错误处理,模块接口,局部数据结构,重要的执行路径,边界条件,1.常见错误类型 接口错误I/O错误数据结构错误算法错误比较及控制逻辑错误错误处理错误,2.模块测试基本原则 至少一次测试所有语句测试所有可能的执行或逻辑路径的组合测试每个模块的所有入口和出口,3.确定单元测试数据集 值域值类离散值值的次序集(测试顺序文件和表),二.单元测试的方法单元测试一般为编码步骤的附属部分.模块不是独立的程序,自己不能运行,要靠其它部分来调用和驱动,要为每个单元测试开发两个软件:(1)驱动模块(驱动程序):相当于主模块(2)桩模块(测试存根、连接程序):代替所测模块调用的子模块,单元测试的测试环境举例:,B,A,C,D,E,待测试模块,单元测试的测试环境举例:,被测模块 B,驱动模块(模拟模块A),桩模块(测试存根)(模拟模块E),测试用例,测试结果,许多模块不能用简单的软件进行充分的单元测试,此时,完全的测试可放到集成测试阶段再进行.,单元测试的测试环境举例:,实际软件,华氏到慑氏转换模块,温度数据,实际配置,测试用例数据,结果,测试驱动软件,华氏到慑氏转换模块,结果,测试驱动际配置,单元测试的测试环境举例,温度显示模块,温度接口模块,实际配置,测试驱动际配置,温度显示模块,程序员编写的桩模块(测试存根),温度值的测试文件,5.6.2 集成测试(组装测试)集成测试需考虑的问题:数据穿越接口可能丢失.一模块可能破坏另一模块功能.子功能组装可能未产生所要求的 主功能.全程数据结构可能出问题.误差累积问题.,集成测试方法 通常采用黑盒测试技术 实施策略:非渐增式测试渐增式测试,深度优先广度优先,自顶向下结合自底向上结合,一.非渐增式集成方式 一次就把所有通过了单元测试的模块组合在一起进行全程序的测试.缺点:发现错误难以诊断定位.又称“莽撞测试”.,二.渐增式集成方式 从一个模块开始,测一次添加一个模块,边组装边测试,以发现与接口相联系的问题。,自顶向下结合方式举例:,A,D,B,E,模块测试结合顺序,C,F,深度优先:A、B、E、C、D、F,广度优先:A、B、C、D、E、F,自顶向下结合方式举例:(深度优先),A,测试 A,S2,S1,S3,A,加入B,S2,B,S3,S4,A,加入E,S2,B,S3,E,A,加入C,C,B,S3,E,加入D,C,B,D,E,加入F,C,B,D,E,A,A,F,S5,自底向上结合方式举例:,A,C,B,D,F,E,E,d1,C,d3,F,d4,B,d2,E,D,d5,F,自底向上结合方式举例:,Mc,D1,Ma,Mb,D2,D3,簇1,簇2,簇3,3.混合集成测试方法一般对软件结构的上层使用自顶向下结合的 方法;对下层使用自底向上结合的方法;,五.测试和测试测试(Alpha)在开发者的场所由用户进行,在开发着关注和控制的环境下进行.测试(Beta)最终用户在自己的场所进行.,5.6.4 系统测试 软件只是计算机系统的一个元素,软件最终要与其他系统元素(如新硬件、信息等)相结合,进行各种集成测试和确认测试.,用于系统测试的测试类型:(1)恢复测试(2)安全性测试(3)强度测试(4)性能测试,(1)恢复测试 以不同的方式强使软件出现故障,检测软件能否恰当地完成恢复.自动恢复:检测重新初始化、检测点设置、数据恢复、重新启动等是否正确.人工干预恢复:检测平均恢复时间是 否在允许范围内.,(2)安全性测试 设计测试用例,突破软件安全保护机构的安全保密措施,检验系统预防机制的漏洞.(3)强度测试 测试用例,检验系统能力最高能达到的实际限度,让系统处于资源的异常数量、异常频率、异常批量的条件下测试系统的承受能力.一般比平常限度高5-10倍的限度做测 试用例.,网站测试的实例 黑盒测试网页文字测试超级链接图形表单对象及其他功能(点击计数器、滚动文字等)灰盒测试网页(检查脚本和HTML语句)适合灰盒测试 白盒测试流行的Web语言(Java,JavaScript,ActiveX,VBScript,Perl,XML)与网站系统结构和编程有关的测试动态内容数据库驱动的网站用编程方法创建的网页服务器性能和加载安全性,网站测试的实例 配置和兼容性测试硬件平台浏览器软件和版本浏览器插件浏览器选项视频分辨率和色深、文字大小调制解调器速率 易用性测试,