六章软件测试

上传人:汽*** 文档编号:569514067 上传时间:2024-07-30 格式:PPT 页数:144 大小:670KB
返回 下载 相关 举报
六章软件测试_第1页
第1页 / 共144页
六章软件测试_第2页
第2页 / 共144页
六章软件测试_第3页
第3页 / 共144页
六章软件测试_第4页
第4页 / 共144页
六章软件测试_第5页
第5页 / 共144页
点击查看更多>>
资源描述

《六章软件测试》由会员分享,可在线阅读,更多相关《六章软件测试(144页珍藏版)》请在金锄头文库上搜索。

1、第六章第六章 软件测试软件测试 6.1 6.1 基本概念基本概念 软件软件开发过程必须伴有质量保开发过程必须伴有质量保证活动。证活动。 软件测试是软件质量保证的关软件测试是软件质量保证的关键元素,代表了规约、设计和键元素,代表了规约、设计和编码的最终检查。编码的最终检查。谣嘴吝妈规图推磺叶吴龟鞘鬃报娜料何掣丑宙天接廉蕊驱楼惧台掠翌饶侯六章软件测试六章软件测试有关测试的思考题有关测试的思考题软件测试是一门非常重要的学科,主要研软件测试是一门非常重要的学科,主要研究内容是什么?究内容是什么?软件测试需要什么样的专业基础软件测试需要什么样的专业基础软件质量到底是什么?软件质量到底是什么?测试的目标是

2、什么?测试的目标是什么?开发一个测试系统之前你是否明白开发一个测试系统之前你是否明白: 可以可以测试什么?测试什么? 应该应该测试什么?测试什么? 最终最终能够能够测试什么?测试什么?测试的目标是什么?测试的目标是什么?泉康铡随洽追束碟饯御渣撂枝运姚蛙涅浙辣戊刘蛰改畦赚它兹递索呼吹佑六章软件测试六章软件测试 软件产品最大的成本是检测软软件产品最大的成本是检测软 件错误、修正软件错误的成本件错误、修正软件错误的成本。 在整个软件开发中在整个软件开发中,测试工作量测试工作量 一般占一般占30%30%40%40%,甚至,甚至50%50%。 在人命关天的软件在人命关天的软件( (如飞机控制、如飞机控制

3、、核反应堆等)测试所花费的时间核反应堆等)测试所花费的时间往往是其它软件工程活动时间之往往是其它软件工程活动时间之和的三到五倍和的三到五倍郝弯笆暖酣摹彪棺漠缅鹃骚谢蔽贼说捌抉绅斡且迢宅若酸葵彤缎瓦凿困鼓六章软件测试六章软件测试软件测试背景软件测试背景软件是人编的所以不完美实例实例:1994-1995,迪斯尼的狮子王系统不支持问题迪斯尼的狮子王系统不支持问题Intel的的pentium处理器处理器1994年浮点除法缺陷年浮点除法缺陷200年年8月月28日,日,1.13MHZ处理器一个可能导致运行程处理器一个可能导致运行程序被挂起的执行指令问题序被挂起的执行指令问题1999年年12月月3日日,美国

4、航天局火星极地登陆飞船失美国航天局火星极地登陆飞船失踪踪1991年爱国者导弹防御系统系统时钟错误积累造年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度成跟踪系统失去精确度千年虫千年虫,世界各地解决世界各地解决2000年错误超过数亿美元年错误超过数亿美元侩撕碑爬莎裁抱赚子钞疡掣反修涸讽舞氧奄一本宣蛇痹次贝续视躺筹紧博六章软件测试六章软件测试软件测试的认识的发展软件测试的认识的发展人们对软件测试认识的五个阶段:人们对软件测试认识的五个阶段:阶段阶段1 测试测试=调试调试阶段阶段2 测试是证明软件正确测试是证明软件正确阶段阶段3 测试是发现软件中错误测试是发现软件中错误阶段阶段4 测试是减

5、小软件不工作的风险测试是减小软件不工作的风险 (是度量软件质量要素的过程)(是度量软件质量要素的过程)阶段阶段5 测试可产生低风险的软件的一测试可产生低风险的软件的一 种认识上的训练种认识上的训练骂蜂祸粳约呸绝了吵畦晦盾械冈渠均羌虽增庚往廉愚挨辈帆烁薯试渊添碰六章软件测试六章软件测试三个盲人和一头大象:你能够为质量三个盲人和一头大象:你能够为质量 下定义吗?下定义吗? 质量管理领域权威人物质量管理领域权威人物J.M.Juran将质量将质量 定义为定义为“决定产品性能和决定产品性能和满意程度满意程度的的 特征特征”, , 测试注重于产品的满意度。测试注重于产品的满意度。 测试应针对这样一种情况:

6、测试应针对这样一种情况: 软件产品在一些特定的范围内不能满足软件产品在一些特定的范围内不能满足客户的合理要求。客户的合理要求。 通过通过测试测试过程可以评定过程可以评定质量风险(可能质量风险(可能的错误)的错误),了解被测试系统中存在的,了解被测试系统中存在的错误错误模式(观察到的错误症状)模式(观察到的错误症状)。考棕琅辙岿娥蹭滇十戏腻皿跪迭栅囱豢霓叠录五庆捉痢诺不湖愚蝎吭胡汤六章软件测试六章软件测试质量控制技术质量控制技术质量控制活动分类质量控制活动分类开发方法学开发方法学配置管理配置管理验证技术验证技术评评 审审正确性验证正确性验证性能调试性能调试组件测试组件测试集成测试集成测试系统测试

7、系统测试原子事务原子事务模块冗余性模块冗余性检检 错错质量控制质量控制避免错误避免错误容容 错错调调 试试测测 试试进喂痈快帚踪镁腔傅磋泛歼沈孪屯汲值皇腕躯孙狗艘姻镭伤翠抱醛趣误参六章软件测试六章软件测试软件质量问题软件质量问题以软件测试为中心的软件质量保障技术以软件测试为中心的软件质量保障技术软件软件 静态测试技术静态测试技术质量质量 软件度量技术软件度量技术控制控制 动态测试技术动态测试技术技术技术 配置管理技术配置管理技术 修改控制与管理技术修改控制与管理技术 软件测试是保证软件质量软件测试是保证软件质量, ,提高提高软件可靠性的关键软件可靠性的关键溯媒坚瘦快欢状趴倚防引慕艾旋劈挎摄郊枚

8、割劫报迄凄蒲画苔夺床槐裔雌六章软件测试六章软件测试软件测试的目标软件测试的目标(1)预防错误预防错误: 几乎不可实现几乎不可实现(2)发现错误发现错误挤胺渐键氦兹力帮按靡峙涤巍姓碍纯判勾疵挠氏峡秃善扭星渝吟次驴归之六章软件测试六章软件测试6.1.1 6.1.1 测试的目的与地位测试的目的与地位 G.J.MyersG.J.Myers在在 中认为中认为: :1 1. .测试是为了测试是为了寻找寻找错误而错误而运行运行程序的过程程序的过程。2 2. .一个好的一个好的测试测试用例是指很可能找到迄今为用例是指很可能找到迄今为止尚未发现的错误的测试。止尚未发现的错误的测试。3.3.一个成功的测试一个成功

9、的测试是是揭示了迄今为止尚未发揭示了迄今为止尚未发现的错误的测试。现的错误的测试。赃峪鸯梯铁姨褥邢厩丙笺令山耻硬货泡困库棋桨跳仪季它诛威写恭灰抬窝六章软件测试六章软件测试 E.W.Dijkstra E.W.Dijkstra 指出指出: :“程序测试能证明错误的存在程序测试能证明错误的存在, ,但不能证明错误不存在但不能证明错误不存在.”.” 测试的目的是发现程序中测试的目的是发现程序中的错误的错误, ,是为了是为了证明程序有错证明程序有错, ,而不是证明程序无错而不是证明程序无错. .墅拯垮脆鸭莎跋侄祖主固队写呀坤肮啦货昧扎一兹具稿处砒达怀信恫禹红六章软件测试六章软件测试 把把证证明明程程序序

10、无无错错当当作作测测试试目目的的不不仅仅是是不不正正确确的的, , 完完全全做做不不到到的的,而而且且对对做做好好测测试试没没有有任任何何益益处处,甚甚至至是是十十分分有有害害的的. . 软件测试要设法使软件发生故障软件测试要设法使软件发生故障, ,暴露软件错误暴露软件错误 测试的测试的“成功成功”与与“失败失败” 能够发现错误的测试是成功的能够发现错误的测试是成功的测试,否则是失败的测试。测试,否则是失败的测试。 懒辖箱凸将饯泪霓游意来磕仗慕朴汞肿珍呈渝拿刊线晤脓矩漱汛智坷溉遂六章软件测试六章软件测试“测测试试的的目目的的是是说说明明程程序序正正确确地地执执行行它应有的功能它应有的功能” 这

11、种说法正确吗?这种说法正确吗?例例:程程序序TriangleTriangle,输输入入三三个个整整数数,表表示示一一个个三三角角形形的的三三个个边边长长,该该程程序序产产生生一一个个结结果果,指指出出该该三三角角形形是是等等边边三三角角形形、等等腰腰三三角角形形还还是不等边三角形。是不等边三角形。 为为说说明明其其能能正正确确执执行行它它的的功功能能,可可使使用用“测试用例测试用例”(3,4,5),(5,5,6),(6,6,6), (3,4,5),(5,5,6),(6,6,6), 程程序序都都能能给给出出正正确确结结果果,是是否否就就可可认认为为程程序序是正确的?是正确的?猎群臃衍宦坠帐艇骗愧

12、烁敝跑督栅辙幂散郊暇宿蚜掺袜练涉邯滩膜透骋烁六章软件测试六章软件测试难以说清的软件缺陷难以说清的软件缺陷古谚:古谚: “一片树叶飘落在森林中没有人听见,一片树叶飘落在森林中没有人听见, 谁能说它发出了声音?谁能说它发出了声音?” 由于不能报告没有看见的问题,因此,由于不能报告没有看见的问题,因此,没有看见就不能说存在软件缺陷没有看见就不能说存在软件缺陷 如果软件中的问题没有人发现,那如果软件中的问题没有人发现,那么它算不算软件缺陷?么它算不算软件缺陷?” 只有看到了,才能断言软件缺陷,尚未只有看到了,才能断言软件缺陷,尚未发现的软件缺陷只能说是未知软件缺陷。发现的软件缺陷只能说是未知软件缺陷。

13、眼见为实怒唐眨抑妇摇酞栅疹玫烤檬欺惺炳尺咎禾赊绥齿笼食暖钩悼驹实苫芯盖哦六章软件测试六章软件测试 6.1.2 6.1.2 测试原则测试原则(1)(1)所有的测试都应追溯到用户需求所有的测试都应追溯到用户需求 最严重的错误最严重的错误( (从用户角度从用户角度) )是那是那些导致软件无法满足需求的错误。些导致软件无法满足需求的错误。 程序中的问题根源程序中的问题根源可能在开发可能在开发 前期的各阶段解决、纠正错误也必须前期的各阶段解决、纠正错误也必须追溯到前期工作追溯到前期工作。演歧竿培市瞄掂遇镰龄纂辜硫绚趋彪案致吾笑四乳莫沫赶船宁君抗祭尚宠六章软件测试六章软件测试测测试试与与开开发发前前期期工

14、工作作的的关关系系决定软件与系统的配合关系决定软件与系统的配合关系需求分析需求分析概要设计概要设计详细设计详细设计 编编 码码单元测试单元测试集成测试集成测试确认测试确认测试系统测试系统测试荒晚抚蛙隐产裸动矮妨茅抵渊畅峰播俺洱耘磨荐铂慰酮浮逢萨疾拱原综镰六章软件测试六章软件测试开发前期出现错误的扩展开发前期出现错误的扩展计划计划需求需求分析分析设设计计编编码码测测试试A A AB B韩暖胚清定鞭名挎跋婿广柑计贬浆狼侗抒材储娶汀正叛摹谷玉对萤旬婶浚六章软件测试六章软件测试软件生存期各阶段间需保持的正确性软件生存期各阶段间需保持的正确性用户要求用户要求用户用户: :我要什么我要什么? ?运行结果运

15、行结果计算机计算机: :程序运行得程序运行得到的结果到的结果源程序源程序程序员程序员: :我要让计算我要让计算机什么做机什么做? ?设计说明书设计说明书设计员设计员: :我要让软件我要让软件做什么做什么? ?需求说明书需求说明书分析员分析员: :我可以提我可以提供什么供什么? ?12345理解正确性理解正确性表达正确性表达正确性理解正确性理解正确性设计正确性设计正确性表达正确性表达正确性理解正确性理解正确性编码正确性编码正确性运行正确性运行正确性输入正确性输入正确性相符吗相符吗? ?材穿笑蛤礼傈殆繁杏刊铅拥秸敌逮墙龙姥迁烤戴趋掩呸顺昔滁伞悯秃糟稳六章软件测试六章软件测试 测试原则测试原则(2)

16、(2)概要设计时应完成测试计划,概要设计时应完成测试计划, 详细的测试用例定义可在设计详细的测试用例定义可在设计 模型确定后开始,所有测试可模型确定后开始,所有测试可 在任何代码被产生之前进行计在任何代码被产生之前进行计 划和设计。划和设计。 烛寂耳足韩嗡疮抄工捌孟镁予磊卿点左定谅陀椎首剐栏鼠靡牲咎傀们拍对六章软件测试六章软件测试 软件测试不等于程序测试软件测试不等于程序测试 软件测试应贯穿于软件定义与开发软件测试应贯穿于软件定义与开发的整个期间;的整个期间; 据美国一家公司统计,查出的软件错误据美国一家公司统计,查出的软件错误中,属于中,属于需求分析和软件设计的错误需求分析和软件设计的错误约

17、占约占 64%64%,属于程序编写的错误仅占,属于程序编写的错误仅占 36%36%。程序编写的许多错误是。程序编写的许多错误是“先天的先天的”。冶愁侮扑黔伐卸裙肃蜗掇铭湾吾舱抹守毁蛆宠啮籽须夸蝎捎蚀傻爽尝绑骏六章软件测试六章软件测试测试阶段工作步骤测试阶段工作步骤单元测试单元测试: : 检验每个模块能否单独检验每个模块能否单独 工作工作. .集成测试集成测试: : 检验概要设计中模块接检验概要设计中模块接 口设计问题口设计问题确认测试确认测试: : 以需求规格说明书为检以需求规格说明书为检 验尺度验尺度系统测试系统测试: : 综合检验综合检验测试可视为分析、设计、编码三个阶测试可视为分析、设计

18、、编码三个阶段的最终复审段的最终复审, ,以保证软件质量以保证软件质量. .箩熙桃佃侥辟雇侠俱歇绪唬育中咎帘火碱节菱铰檄甄枉命左她钟厘颁戚框六章软件测试六章软件测试 测试原则测试原则(3)pareto(3)pareto原则:测试发现的错误中原则:测试发现的错误中80%80%很可能起源于很可能起源于20%20%的模块中。应孤立这的模块中。应孤立这些疑点模块重点测试。些疑点模块重点测试。(4)(4)穷举测试是不可能的。穷举测试是不可能的。(5)(5)应由独立的底三方来构造测试。应由独立的底三方来构造测试。 (开发和测试队伍分别建立开发和测试队伍分别建立)抓鲁座梭煌凉氧称奖咒官楚沏怂伊百搏潜倍哼坟汞

19、偏上营猜辽寄滞珊挤苞六章软件测试六章软件测试测试原则测试原则例例: :测试计算器程序测试计算器程序加法测试加法测试1+0=1+0=1+99999999999999999999999999999999=1+99999999999999999999999999999999=2+0=2+0=2+99999999999999999999999999999999=2+99999999999999999999999999999999=99999999999999999999999999999999+999999999999999999999999999999999999999999999999999999

20、9999999999+99999999999999999999999999999999= =1.0+0.1=1.0+0.1=1.0+0.2=1.0+0.2=减法测试减法测试乘法测试乘法测试除法测试除法测试求平方根求平方根百分数百分数倒数倒数拦糙药摧躇学稀孤坯派浑榜瞥弦稚泣恼克挑距餐孤车冬仇沫壤很钩鞭甲宿六章软件测试六章软件测试 测试原则测试原则(6)(6)测试用例应由输入数据和预期的输测试用例应由输入数据和预期的输 出结果两部分组成出结果两部分组成. .(7)(7)兼顾合理的输入和不合理的输入数据兼顾合理的输入和不合理的输入数据(8)(8)程序修改后要回归测试程序修改后要回归测试(9)(9)应

21、长期保留测试用例,直至系统废弃。应长期保留测试用例,直至系统废弃。眨止挪冠钱必阿凶近映偶括育午媚厕馒风就疲现肺愉兜究稀胃禽球菊镣刀六章软件测试六章软件测试测试原则:测试原则:软件测试是有风险的行为软件测试是有风险的行为数数量量遗漏软件遗漏软件缺陷数目缺陷数目测试费用测试费用测试中测试中测试后测试后软件测试工作量测试工作量每一个软件项目都有一个最优的测量量每一个软件项目都有一个最优的测量量最优测量量最优测量量狂欧汝蔬岂卷妻温边莲陨静昏秆雁肯献锥束慕否氰咨匙玲容底往寐振钱叙六章软件测试六章软件测试 6.1.3 6.1.3 可可测试测试性性 可测试软件的特征:可测试软件的特征:可操作性可操作性可观察

22、性可观察性可控制性可控制性可分解性可分解性简单性简单性稳定性稳定性易理解性易理解性召波逛疟子崩福桶赴那蟹嚎闰裁艾祸酪附区暇剩传缚溶戌矣棘瘁界履石厄六章软件测试六章软件测试 “好好”测试的属性:测试的属性: 发现错误的可能性高发现错误的可能性高不冗余不冗余在目的相似的测试中,应使用最在目的相似的测试中,应使用最可能找到错误的测试可能找到错误的测试每一个测试应独立执行每一个测试应独立执行滑锗惺呛看侮疮醇荷乒虹燃姥诸们市夜些盔忻顿丢纠票莎炊泅仍能航描消六章软件测试六章软件测试软件测试有关概念软件测试有关概念测试中用到的模型元素(测试中用到的模型元素(UML类图)类图)测试组测试组测试用例测试用例故故

23、 障障组组 件件测试存根测试存根测试驱动程序测试驱动程序误误 差差错错 误误改改 正正由修改由引起由引起找出使用修改1n*覆筛盐考靛存倚夏策凤议豁膝衙衙裴吹翁沤艰酗奋柳经檬褂糕舅语码盛玛六章软件测试六章软件测试组件组件是系统中可以孤立进行测试的部分,一个组件可以是系统中可以孤立进行测试的部分,一个组件可以是对象,一组对象,一个或多个子系统。是对象,一组对象,一个或多个子系统。错误错误,也称缺陷或不足,是可能引起组件不正常行为的,也称缺陷或不足,是可能引起组件不正常行为的设计或编码错误。设计或编码错误。误差误差是系统执行过程中错误的表现。是系统执行过程中错误的表现。故障故障是组件的规格说明与其行

24、为之间的偏差,故障是由是组件的规格说明与其行为之间的偏差,故障是由一个或多个误差引起的。一个或多个误差引起的。测试用例测试用例是一组输入和期待的结果,它根据引起故障和是一组输入和期待的结果,它根据引起故障和检查的目的来使用组件。检查的目的来使用组件。测试存根测试存根是被测试的组件所依赖的其它一些组件的实现是被测试的组件所依赖的其它一些组件的实现部分。部分。测试驱动程序测试驱动程序是依赖被测试组件的那个组件的实是依赖被测试组件的那个组件的实现部分。现部分。改正改正是对组件的变化。改正的目的在于修正错误。改正是对组件的变化。改正的目的在于修正错误。改正可能会产生新的错误。可能会产生新的错误。肥赊涂

25、验绞堡沁框蒜幽础虑铱沏延措酒慢烩堪韧烽士叶仑雏旦时值先维枕六章软件测试六章软件测试错误错误(fault)、误差误差(error)和和故障故障(failure)出轨出轨( (出故障出故障)?)?图中不表示故障,因为既没有指定期望行为也没有任何观察的行为,它也不表示误差,因为这不意味着系统正处在进一步处理将导致故障的状态.蕉食钙掐间屋秀驮铝焊廉驶突皑渣牢拍潦蔬唉豹嗜迹竟酶智亦境桥馒课忱六章软件测试六章软件测试错误错误(fault)、误差误差(error)和和故障故障(failure)用例名称用例名称 DriveTrain DriveTrain参与执行者参与执行者 火车司机火车司机入口条件入口条件

26、司机按下控制面板上的司机按下控制面板上的StrartTrainStrartTrain事件流事件流 1. 1.列车开始在轨道列车开始在轨道1 1上运行上运行 2. 2.列车平移到轨道列车平移到轨道2 2退出条件退出条件 列车运行在轨道列车运行在轨道2 2上上特殊条件特殊条件 没有没有用例用例DriveTrainDriveTrain指定了列车的期望行为指定了列车的期望行为: :蓟成患屿即噶梅帚早沁啊闰岸液釜视翱矗争妆井尺陇塘梨败由季识昆鳞嵌六章软件测试六章软件测试错误错误(fault)、误差误差(error)和和故障故障(failure)测试用例标识符测试用例标识符 DriveTrain Driv

27、eTrain测试位置测试位置 http:/www12.in.tum.de/ http:/www12.in.tum.de/要测试的特征要测试的特征 引擎连续运行引擎连续运行5s5s特征合格特征合格/ /不合格标准不合格标准 如果列车连续前进如果列车连续前进5s,5s,并且至少并且至少 通过两个轨道的长度通过两个轨道的长度, ,则测试通过则测试通过控制方法控制方法 驱动程序驱动程序StrartTrainStrartTrain调用调用StrartTrain() StrartTrain() 方法方法数据数据 从输入文件从输入文件http:/www12.in.tum.de/http:/www12.in.

28、tum.de/中中 得到运行方向和持续时间得到运行方向和持续时间 用例用例DriveTrainDriveTrain的测试用例的测试用例DriveTrain :DriveTrain :执行这个测试用例时,可以证明系统是包含有错误的缕厚酝沈容识舅阀唱广勤扇墟嘿勤命篓堆甭有栈岳谬霉沸尤嘉瞅勿北袱箕六章软件测试六章软件测试软件测试有关概念软件测试有关概念术语和定义术语和定义 软件测试要精度还是准确度很大程度上取决软件测试要精度还是准确度很大程度上取决于产品是什么,最终取决于开发小组的目标。于产品是什么,最终取决于开发小组的目标。既不准确又不精确精确但不准确准确但不精确既准确又精确精确和准确精确和准确裴

29、桨爹宵吻俭扎傈难姨长勺半俱涅玩篷甸陶竿证游瓷夸惺坯苇迪辩盗迁马六章软件测试六章软件测试软件测试有关概念软件测试有关概念术语和定义术语和定义验证和合法性检查验证和合法性检查验证是检查软件符合产品说明书的过程验证是检查软件符合产品说明书的过程合法性检查是保证软件满足用户要求的过程合法性检查是保证软件满足用户要求的过程质量和可靠性质量和可靠性 可靠性只是质量的一个方面可靠性只是质量的一个方面测试和质量评判(测试和质量评判(QA)软件测试员的目标是找出软件缺陷软件测试员的目标是找出软件缺陷软件质量评判人员的主要职责是创建和加强软件质量评判人员的主要职责是创建和加强 促进软件开发并防止软件缺陷的标准和方

30、法促进软件开发并防止软件缺陷的标准和方法手溅熊蝴寄膜动仑寇缨里秩梯旺礼郁铅言蠢圆吨扰瑟襟徽争放李泅奖泳潘六章软件测试六章软件测试 测试测试 (test) (test) 调试调试 (debug) (debug)以已知条件开始以已知条件开始, ,使用预先定义的程序使用预先定义的程序, ,有预知的结果有预知的结果以不可知内部条件以不可知内部条件开始开始, ,结果一般不可结果一般不可预见预见有计划有计划被动的被动的由独立的测试组,在由独立的测试组,在不了解软件设计的条不了解软件设计的条件下完成件下完成由程序作者进行由程序作者进行发现错误发现错误找出错误位置,排除找出错误位置,排除测试与调试测试与调试(

31、 (排错排错) )泌陋仅莽外语棺馅捡蜀扎顺省植租获爱寓啥颇搀赶弥洽垫窑赦乓怨驴纸楚六章软件测试六章软件测试软件错误分类软件错误分类F 功能错功能错( (需求分析错误需求分析错误) )F 软件结构错软件结构错F 数据错数据错F 编码错编码错F 软件集成错软件集成错F 测试定义与测试执行错误测试定义与测试执行错误 尖移朱朔照蚕行典甲毕冻蚜那先年番笛倡吃摈毛巍坎斤椅宛朝斋倚又肮桶六章软件测试六章软件测试 6.1.4 6.1.4 测试用例测试用例设计设计 选择测试用例是软件测试员最重要选择测试用例是软件测试员最重要 的一项工作。的一项工作。测试用测试用例例的的属性属性: :属性属性 描述描述name

32、name 测试用例的名称测试用例的名称 location location 可执行的完全路径名可执行的完全路径名 input input 输入数据或命令输入数据或命令oracle oracle 与测试输入相比较的期待测试结果与测试输入相比较的期待测试结果log log 测试生产的输出测试生产的输出聘振舰涌瘸尺茄冤株房蝗赠屎氰恃悠谐努楞眼弘绕轩筑瘫解铺谁烬甫镰湿六章软件测试六章软件测试程序测试举例程序测试举例例:程序例:程序 Triangle Triangle, 输入三个整输入三个整 数,表示一个三角形的三个边数,表示一个三角形的三个边 长,该程序产生一个结果,指长,该程序产生一个结果,指 出该

33、三角形是等边三角形、等出该三角形是等边三角形、等 腰三角形还是不等边三角形。腰三角形还是不等边三角形。夺位秽辩逛暇叹诊糊括艇数谆纬尖货遵讽赋盅颅坟剃妒猿远鹊憨伴件灶烈六章软件测试六章软件测试判断三角型的测试用例设计判断三角型的测试用例设计: : 输入数据输入数据 预期结果预期结果(1) 6;6;6 (1) 6;6;6 等边等边(2) 8;8;4 (2) 8;8;4 等腰等腰(3) 4;5;6 (3) 4;5;6 一般一般 还应输入还应输入非法数据非法数据: 0; 7; 90; 7; 9 -7;3; 5 -7;3; 5 a; 2; 7 a; 2; 7 等等馏检但圈棒荣莹怀悼猾桅洪扫鲜狱容踢额旅检

34、球稿冗根锚易趴闻扔顶桨顶六章软件测试六章软件测试6.1.56.1.5 软件测试信息流软件测试信息流软件软件配置配置测试测试测试测试配置配置测试测试工具工具结果结果分析分析排错排错可靠性可靠性 分析分析测试测试结果结果错误错误预期预期结果结果出错率出错率 改正改正的软件的软件预测预测的可的可靠性靠性需求规格说明书需求规格说明书软件设计说明书软件设计说明书 被测源程序被测源程序 测试计划测试计划 测试用例测试用例( (测试数据测试数据) )测试驱动程序测试驱动程序均净愧砷骗唉令绽产疲绷饼讫鹤侍远矩商靴里饮畸掉胜圃莽算储悦淌韦椽六章软件测试六章软件测试测试活动和相关工作产品测试活动和相关工作产品项目

35、协议项目协议对象设计对象设计客户客户开发人员开发人员用户用户集成策略集成策略系统分解系统分解功能性需求功能性需求非功能性需求非功能性需求单元测试单元测试集成测试集成测试结构测试结构测试功能测试功能测试性能测试性能测试来自来自ODD来自来自TP来自来自SDD来自来自RAD来自来自RAD用户手册用户手册验收测试验收测试安装测试安装测试现场测试现场测试日常操作日常操作茂蛙藏戴裳锗俄次鸭坡刀栽例凉顿阻珠缨珊卜沫撵敲臂嚣高夹腹翰恭叼违六章软件测试六章软件测试测试设计中需要考虑的测试设计中需要考虑的22种测试类型种测试类型黑盒黑盒测试测试白盒测试白盒测试单元测试单元测试累计综合测试累计综合测试集成测试集成

36、测试功能测试功能测试系统测试系统测试端到端测试端到端测试健全测试健全测试衰竭测试衰竭测试接受测试接受测试负载测试负载测试强迫测试强迫测试性能测试性能测试可用性测试可用性测试安装安装/卸载测试卸载测试恢复测试恢复测试兼容测试兼容测试安全测试安全测试比较测试比较测试Alpha测试测试Beta测试测试养豢创僚沼秋垄作凶弃觉喧搐督绕纯向饿野蜜醇错惕枚尾纯鉴机蠢抚伯卧六章软件测试六章软件测试6.1.6 6.1.6 测试的方法与技术测试的方法与技术软件测试的软件测试的策略和方法策略和方法静态测静态测试方法试方法动态测动态测试方法试方法人工测试方法人工测试方法计算机辅助静计算机辅助静态分析方法态分析方法白盒

37、测试方法白盒测试方法黑盒测试方法黑盒测试方法龟笋段蘑佩定波厌即艾诛胚萝铺近岔页吐疙咬蔽披扭诛牛翟褒灯海坑榨苏六章软件测试六章软件测试静态静态和动态和动态测试测试汽车的检查过程汽车的检查过程: :踩油门踩油门看车漆看车漆打开前盖检查打开前盖检查发动汽车发动汽车听听发动机声音听听发动机声音上路行使上路行使静态测试静态测试动态动态测试测试抿秉艘双董驭亿革僳嘲虫酱绚途综庭辨猾廓怎靶芒梳臭但氟厕捂念弟厦敌六章软件测试六章软件测试静态测试:静态测试:基本特征是在对软件进行基本特征是在对软件进行 分析、检查和分析、检查和审阅,审阅,不实不实 际运行被测试的软件。际运行被测试的软件。 静态测试约可找出静态测试

38、约可找出303070%70%的逻辑设计错误的逻辑设计错误. . 对对需求规格说明书需求规格说明书、软件设计说明书软件设计说明书、源程序源程序做检查和做检查和审阅审阅,包括:包括:是否符合标准和规范;是否符合标准和规范;通过通过结构分析、流图分析、符号执行结构分析、流图分析、符号执行指出软件指出软件 缺陷缺陷; 柿蛤轿孟晋澄贾瓷虽站乙畜怖幢量叠宵汲些氓跑抚赞赤赠掖疵汰爬小揪并六章软件测试六章软件测试动态测试:动态测试:通过运行软件来检验软通过运行软件来检验软件的动态行为和运行结果的正确性件的动态行为和运行结果的正确性动态测试的两个基本要素:动态测试的两个基本要素:u 被测试程序被测试程序u 测试

39、数据(测试用例)测试数据(测试用例)楔丝忽蓉贵系兼智股合馒由喊饰晃硕遣侯珠俐胶锥俏徐酒矽闭启父勃含肩六章软件测试六章软件测试动态测试方法动态测试方法(1)(1)选取定义域有效值选取定义域有效值, ,或定义域或定义域 外无效值外无效值. .(2)(2)对已选取值决定对已选取值决定预期的结果预期的结果(3)(3)用选取值执行程序用选取值执行程序(4)(4)执行结果执行结果 与与(2)(2)结果相比结果相比, , 不吻和程序有错不吻和程序有错. .刚僧卯镣盎恫蛰谊抉呆体发让射探痛侄保堰级只砧棵照炕推扒蓖聚默匿武六章软件测试六章软件测试动态黑盒测试动态黑盒测试 闭着眼睛测试软件闭着眼睛测试软件软件输入

40、输入 不深入代码细节的测试方法称为动态黑盒测试。不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。软件测试员充当客户来使用它。输出输出框矮姜乐瘫蹲嚎女竹厄藐酌仔秦趾摧军入它匹速贵谋貌箕锁泛佰臆惦娘人六章软件测试六章软件测试动态白盒测试动态白盒测试 带上带上X光眼镜测试软件光眼镜测试软件? ?3581322.293419985680302829734315250*(1+0.015)*(1+0.015)360-1)/0.015250*(1+0.015)*(1+0.015)360-1)/0.015 假如知道一个盒子包含一台计算机假如知道一个盒子包含一台计算机, ,而另一个而另一个

41、盒子是人用纸笔计算盒子是人用纸笔计算, ,就会选择不同的测试用例就会选择不同的测试用例了解软件的运作方式会影响测试手段了解软件的运作方式会影响测试手段指呛供慌遂逞鲍茄逗抨摸帮唇非膜织逛芭查饥忿摹循觅阎甩郊躯硅恩泽肄六章软件测试六章软件测试6.2 6.2 两种类型的测试两种类型的测试6.2.1 6.2.1 黑盒测试黑盒测试 又称又称: :功能测试功能测试 数据驱动测试数据驱动测试 基于规格说明书的测试基于规格说明书的测试批镐阮蔗鹏丈腥雀璃忌评刚氛实冻谈拇甘洞罩溅耀觅竖肮耸坷冻娃摩躲帕六章软件测试六章软件测试6.2.2 6.2.2 白盒测试白盒测试 又称又称: :开盒测试开盒测试 结构测试结构测试

42、 玻璃盒测试玻璃盒测试 基于覆盖的测试基于覆盖的测试. . 根据被测程序的逻辑结构设计根据被测程序的逻辑结构设计 测试用例测试用例; ; 力求提高测试覆盖率力求提高测试覆盖率; ;多再繁吹电诚茅迟鱼隔幕也保诵唆儡叛枕栓物短驾灌剔趋短幂阳绣票觅欧六章软件测试六章软件测试黑盒测试与白盒测试比较黑盒测试与白盒测试比较 黑盒测试黑盒测试是从用户观点,按是从用户观点,按规格说明书要求的输入数据与输规格说明书要求的输入数据与输出数据的对应关系设计测试用例出数据的对应关系设计测试用例, ,是根据程序是根据程序外部特征外部特征进行测试。进行测试。 白盒测试白盒测试是根据程序是根据程序内部逻辑内部逻辑结构结构进

43、行测试。进行测试。剿蛀逗造帜挺执彰激澡跳掉甩做淖菊渊茧惕木懊默蚤在喜疑碎那绩邯机荒六章软件测试六章软件测试 黑盒测试与白盒测试黑盒测试与白盒测试优缺点优缺点比较比较 黑盒测试黑盒测试 白盒测试白盒测试 优优点点缺缺点点性性质质适用于各阶段测试适用于各阶段测试从产品功能角度测试从产品功能角度测试容易入手生成测试数容易入手生成测试数 据据可构成测试数据使特定程可构成测试数据使特定程 序部分得到测试序部分得到测试有一定的充分性度量手段有一定的充分性度量手段可或较多工具支持可或较多工具支持某些代码得不到测试某些代码得不到测试如果规格说明有误,如果规格说明有误, 则无法发现则无法发现不易进行充分性测试不

44、易进行充分性测试不易生成测试数据不易生成测试数据( (通常通常) )无法对未实现规格说明的无法对未实现规格说明的 部分进行测试部分进行测试工作量大,通常只用于单工作量大,通常只用于单 元测试,有应用局限元测试,有应用局限是一种是一种确认确认技术,回答技术,回答“我们在构造一个正确我们在构造一个正确 的系统吗?的系统吗?”是一种是一种验证验证技术,回答技术,回答“我们在正确我们在正确 地构造一个系地构造一个系 统吗统吗?”鞍掉辕试炮温愧主得防眺盈启萝们宝抄寸桑疼木应鞍谆戳嘱矽施积舰摔箔六章软件测试六章软件测试6.2.3 6.2.3 穷举测试穷举测试例例: :输入输入 三条边长三条边长 黑盒测试黑

45、盒测试可采用的测试用例数可采用的测试用例数( (设字长设字长1616位位) )执行时间执行时间: : 设测试一次需设测试一次需1ms1ms 共需一万年共需一万年. .=2 X2 X2 3X10=2 X2 X2 3X101616161616161414氢杭缘华手信邦灯员沫莲划隆罗题瘴洪每逾眶柴捍椿菜痒葱镍颂拉仰蛙葵六章软件测试六章软件测试6.2.3 6.2.3 穷举测试穷举测试 白盒测试白盒测试例例: :含含4 4个分支个分支, ,循环次数循环次数20,20,从从A A到到B B的可能的可能路径路径执行时间执行时间: : 设测试一次需设测试一次需2ms2ms 穷举测试需穷举测试需5 5亿年亿年.

46、 .=5+5 +.+5 +5 =5+5 +.+5 +5 101020201 12 219191414A AB B衫蹈届牡羡藏舀安眨嘘侨挚尝澡彝瞪录请淀搐吏挑要瓤摧咒汹敬卷独隅究六章软件测试六章软件测试 不论黑盒还是白盒测试都不论黑盒还是白盒测试都不能不能进行穷尽测试进行穷尽测试, , 所以软件测试不可所以软件测试不可能发现程序中存在的所有错误能发现程序中存在的所有错误, , 因因此需精心设计测试方案此需精心设计测试方案, , 力争尽可力争尽可能少的次数能少的次数, ,测出尽可能多的错误测出尽可能多的错误. .幂粗牡爆蚤锯台漫镭傻萌瑞悦量书颠排赖郑絮锐啸灌没桨越喘薛焙虱香庐六章软件测试六章软件测

47、试黑盒测试与白盒测试能发现的错误黑盒测试与白盒测试能发现的错误C CB BA AD D- -只能用黑盒测试发现的错误只能用黑盒测试发现的错误A- -只能用白盒测试发现的错误只能用白盒测试发现的错误- -两种方法都能发现的错误两种方法都能发现的错误- -两种方法都不能发现的错误两种方法都不能发现的错误BCD摄犊矢澳午容戎确盈姿绎魄坡封酷歹哭涝谋泉队琶挪了是很妄魂剁谓簿皑六章软件测试六章软件测试6.36.3白盒测试的测试用例设计白盒测试的测试用例设计 6.3.1 6.3.1 逻辑覆盖法逻辑覆盖法(1)(1)语句覆盖语句覆盖(2)(2)判定覆盖判定覆盖(3)(3)条件覆盖条件覆盖(4)(4)判定判定

48、/ /条件覆盖条件覆盖(5)(5)条件组合覆盖条件组合覆盖(6)(6)路径覆盖路径覆盖(7)(7)点覆盖点覆盖(8)(8)边覆盖边覆盖摄蝴郸题朋骄疾夷真丙劳肚拒胯谰憋盘皖仗稼苏仇数名幽靠互石硼妊墅欢六章软件测试六章软件测试例例: :PROCEDURE SAMPAL (A,B:REAL; VAR X:REAL); BEGIN IF (A1) AND (B=0) THEN X:=X/A IF (A=2) OR (X1) THEN X:=X+1 END; 昆楔疏支技悉痛台砾哺夜咐扰磁隙篱隙呈涡矫坞塘孕箱拍寓癸诞盐眉首花六章软件测试六章软件测试开始开始(A1) AND (B=0)(A=2) OR (X

49、1)返回返回X=X/AX=X+1FFTTabdce掠茄假缎咋储朽獭溪宗冷胜启给勤痴脊蓝腹酉柴虎岛蓟皮齿窥告釉帐慷钥六章软件测试六章软件测试(1)(1)语句覆盖语句覆盖使程序中每个语句至少执行一次使程序中每个语句至少执行一次严勿楼撂燎候靠文瞪婴珍畔兄绩译皱或隘篙蔑睁芋坞铣车径卜滑趾濒兔擒六章软件测试六章软件测试语句覆盖语句覆盖开始开始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce英剐春减轻莽篷扩桥亚计披躇腔宝滩妮卖夯腔并勒溅三才撕汪挝煤辣胜以六章软件测试六章软件测试只需设计一个测试用例只需设计一个测试用例: :输入数据:输入数据:A=2,B=

50、0,X=4即达到了语句覆盖即达到了语句覆盖; ;语句覆盖是语句覆盖是最弱最弱的逻辑覆盖的逻辑覆盖衷陶合幸肝侵赁越趋恐氖睹编巨绞愁蛀弊擎唉怪丽据级奢椅蚜杏坷淖弹戈六章软件测试六章软件测试(2)(2)判定覆盖判定覆盖( (分支覆盖分支覆盖) ) 使每个判定的真假分支都至少执行一次使每个判定的真假分支都至少执行一次胯忍瓤甜涌靳肮捌经搬勤鬃敌贩甘炸据馁别染寓且绑默将浮笛烽稀吉滴人六章软件测试六章软件测试判定覆盖判定覆盖开始开始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce抗悄颓疽拟巫彼群拽垣给震络肖叛飞凯垫划亏吴檬哇屠骏处蒲固兼轧强座六章软件测试六

51、章软件测试例例: :可设计两组测试用例可设计两组测试用例: :A=3,B=0 ,X=3 可覆盖可覆盖c、d分支分支 A=2,B=1 ,X=1 可覆盖可覆盖b、e分支分支 两组测试用例可覆盖所有判定的真假两组测试用例可覆盖所有判定的真假分支分支语句覆盖仍是语句覆盖仍是弱弱的逻辑覆盖的逻辑覆盖睦扶简嘴她疽列筹巴赏垃殷舆勒概饺讼匀溜耙补咀躲表嫂脂搜瞧陆拜寥冉六章软件测试六章软件测试(3)(3)条件覆盖条件覆盖 使每个判定的每个条件的可使每个判定的每个条件的可能取值至少执行一次能取值至少执行一次束样青坎芦喇位坛少原莱捅右窄心侈搔远舀果穗俗此刹琼梆孟犹忿宝凸鲸六章软件测试六章软件测试第一判定表达式第一判

52、定表达式: :设设条件条件 A1 A1 取真取真 记为记为 T1T1 假假 T1T1 条件条件 B=1 B=1 取真取真 记为记为 T2T2 假假 T2T2第二判定表达式第二判定表达式: :设设条件条件 A=2 A=2 取真取真 记为记为 T3T3 假假 T3T3 条件条件 X1 X1 取真取真 记为记为 T4T4 假假 T4T4扮免疚颊钧鳞暖彩予拧靖懂短钡辈干临坡柱血盟糜埠栅琴饵搪剃橇鹏联谋六章软件测试六章软件测试条件覆盖条件覆盖开始开始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce满足条件满足条件: T1,T1, T2,T2 T3,T3

53、 T4,T4威辐倾铭账镊污臭拧缮案抬雨乌岿势约笑场馏吹补央包狠臼陋段含鳖阵讫六章软件测试六章软件测试测试用例测试用例 通过通过 满足的满足的 覆盖覆盖A B X 路径路径 条件条件 分支分支1 0 3 abe T1,T2,T3,T4 b,e2 1 1 abe T1,T2,T3,T4 b,e 两个测试用例两个测试用例覆盖了四个条件八种可能覆盖了四个条件八种可能取值取值。未覆盖未覆盖c c、d d分支分支,不满足判定覆盖的要,不满足判定覆盖的要求求. .条件覆盖不一定包含判定覆盖条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖判定覆盖也不一定包含条件覆盖汐资校幸畦检诽躬侮界谴疹稻消舟辗失骆嫌

54、抖扬鱼下豁御舶澎雷钒叫柜迄六章软件测试六章软件测试(4)(4)判定判定/ /条件覆盖条件覆盖 选选取取足足够够多多的的测测试试用用例例,使使判判断断中中的的每每个个条条件件的的所所有有可可能能取取值值至至少少执执行行一一次次,同同时时每每个个判判断断本本身身的的所所有有可可能能判判断断结结果果至至少少执执行一次行一次.学淡滋欢痊枣降标包玻畦舔属栖皋坐基义拱衅深徘舆果嫡煤弦咖竞陋者胞六章软件测试六章软件测试判定判定/条件条件 覆盖覆盖开始开始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce满足条件满足条件: T1,T1, T2,T2 T3,T3

55、 T4,T4跌屡骄乞哆挎附座韶霓枫风旗钧虽慢凶胡否软佰船弟靴煌侣睹鲜弯言肇飞六章软件测试六章软件测试测试用例测试用例 通过通过 满足的满足的 覆盖覆盖A B X 路径路径 条件条件 分支分支2 0 4 ace2 0 4 ace T1,T2,T3,T4 T1,T2,T3,T4 c c, ,e e2 1 1 abd2 1 1 abd T1,T2,T3,T4 T1,T2,T3,T4 b b, ,d d 能同时满足判定、条件两种覆盖标准。能同时满足判定、条件两种覆盖标准。取值。取值。菲蛰保详轴烧千萨挚蚀韩猩项肝宝忧玲枣坛肮酸客痰疫歹芹喳珐窍掖芯亡六章软件测试六章软件测试测试用例测试用例 通过通过 满足

56、的满足的 覆盖覆盖A B X A B X 路径路径 条件条件 分支分支2 0 3 ace T1,T2,T3,T4 c,e2 0 3 ace T1,T2,T3,T4 c,e2 1 1 abe2 1 1 abe T1,T2,T3,T4 T1,T2,T3,T4 b,e b,e1 0 3 abe1 0 3 abe T1,T2,T3,T4 b,e T1,T2,T3,T4 b,e1 1 1 abd1 1 1 abd T1,T2,T3,T4 b,d T1,T2,T3,T4 b,d 蟹呆雕圭既胖吐讨衷经鹿猛娘洞届撩胀饰贷母署夹邻径霞构遮猎洼烤耍佬六章软件测试六章软件测试(5)(5)条件组合覆盖条件组合覆盖 所

57、有可能的条件取值组合至所有可能的条件取值组合至少执行一次少执行一次 A1, B=0 A1, B0 A 1, B=0 A 1, B0 A=2, X1 A=2, X 1 A2, X1 A2, X 1职晒硕隆鲍纶筑滨螟捆票揽矮吞堑妻岭藕砖耪卸诡碉晴韧谚攘针徒棺谩理六章软件测试六章软件测试测试用例测试用例 通过通过 满足的满足的 覆盖覆盖A B X 路径路径 条件条件 分支分支2 0 4 ace T1,T2,T3,T4 c,e2 0 4 ace T1,T2,T3,T4 c,e2 1 1 abe2 1 1 abe T1,T2,T3,T4 T1,T2,T3,T4 b,e b,e1 0 2 abd1 0 2

58、 abd T1,T2,T3,T4 b,d T1,T2,T3,T4 b,d1 1 1 abd1 1 1 abd T1,T2,T3,T4 b,d T1,T2,T3,T4 b,d 祈动妈耘狂估肇凡宁勋侩豹焰培漾稠猩豪适火剖剧篡爷单参督灵唯煎垢攀六章软件测试六章软件测试(6)(6)路径覆盖路径覆盖 覆盖每一个可能的路径覆盖每一个可能的路径测试用例测试用例 通过通过 满足的满足的 覆盖覆盖A B X 路径路径 条件条件 分支分支1 1 1 abd T1,T2,T3,T4 b,d1 1 1 abd T1,T2,T3,T4 b,d1 1 2 abe1 1 2 abe T1,T2,T3,T4 T1,T2,T3

59、,T4 b,e b,e3 0 1 acd3 0 1 acd T1,T2,T3,T4 c,d T1,T2,T3,T4 c,d2 0 4 ace2 0 4 ace T1,T2,T3,T4 c,e T1,T2,T3,T4 c,e稳男拣脓獭迄兰椎用旗淤恃跋谱嫡染峪邹戳鸦摹委臀就敞羊随瓢巍念机寨六章软件测试六章软件测试基本路径基本路径测试法测试法 通过分析由控制构造的环路的复通过分析由控制构造的环路的复杂性,导出基本路径集合,从而杂性,导出基本路径集合,从而设计测试用例,保证这些路径至设计测试用例,保证这些路径至少通过一次。少通过一次。 基本路径测试步骤:基本路径测试步骤: 导出程序流程图的拓扑结构导出

60、程序流程图的拓扑结构- -流图流图 ( (程序图程序图) ) 计算流图计算流图G G的环路复杂度的环路复杂度V(G)V(G) 确定只包含独立路径的基本路径集确定只包含独立路径的基本路径集 设计测试用例设计测试用例扛毕技涤藕惑严我旦忙替券卷元癣子糙涡榴惦占饺锣胶过瞬麦赁婶囱浚萄六章软件测试六章软件测试导出程序流程图的拓扑结构导出程序流程图的拓扑结构- -流图流图1 12,32,36 64,54,57 710106 61111a节点节点边边R4R4区域区域1 12 23 34 45 58 87 73 39 91111程序流程图程序流程图8 89 9R1R1R2R2R3R3恒械凸郴这瓷啦算幂茵巾闯帆

61、矣蛙厉琼剁要劈悠圭巍故非卞恶诽芹臂吭沤六章软件测试六章软件测试计算流图计算流图G G的环路复杂度的环路复杂度V(G)V(G) V(G)= V(G)= 区域个数区域个数=4=4 V(G)= V(G)=边的条数边的条数- -节点个数节点个数+2=4+2=4 V(G)= V(G)=判定节点个数判定节点个数+1=4+1=4怀沿冰涯呆著泼敛胰嚼柔捂舍斗馋橇银轮遁栏妻然怨佣佛吸复藤联至馅即六章软件测试六章软件测试确定只包含独立路径的基本路径集确定只包含独立路径的基本路径集path1:1-11path1:1-11path1:1-2-3-4-5-10-1-11path1:1-2-3-4-5-10-1-11pa

62、th1:1-2-3-6-8-9-10-1-11path1:1-2-3-6-8-9-10-1-11path1:1-2-3-6-7-9-10-1-11path1:1-2-3-6-7-9-10-1-11 一条新路径必须包含一条新边。一条新路径必须包含一条新边。 这这4 4条路径组成了一个基本路径集。条路径组成了一个基本路径集。4(4(环环路复杂度路复杂度V(G)V(G)是构成这个基本路径集的独立是构成这个基本路径集的独立路径数的上界,也是设计路径数的上界,也是设计测试用例的数目。测试用例的数目。 设计测试用例,保证基本路径集中每条设计测试用例,保证基本路径集中每条路径的执行。路径的执行。假曹域岸癌晰

63、餐涯嚣驳囤颠跪掸甩蔓角谆饭娇岩肢羚披贺硼譬测虑郡旺披六章软件测试六章软件测试6.46.4黑盒测试的测试用例设计黑盒测试的测试用例设计6.4.1 6.4.1 等价类划分法等价类划分法 把所有可能的输入数据把所有可能的输入数据( (有效的有效的和无效的和无效的) )划分成若干个等价的子集划分成若干个等价的子集( (称为等价类称为等价类) ), 使得每个子集中的使得每个子集中的一个典型值在测试中的作用与这一一个典型值在测试中的作用与这一子集中所有其它值的作用相同子集中所有其它值的作用相同. . 可可从从每每个个子子集集中中选选取取一一组组数数据据来测试程序来测试程序谆启恳丫险窘贮趣稼篙旧邻引俐胰娶刁

64、匹缅纫泼貌盘难拭姚卸吩寅捌碉旅六章软件测试六章软件测试例例: :某报表处理系统要求用户输入处理某报表处理系统要求用户输入处理 报表的日期,日期限制在报表的日期,日期限制在20012001年年1 1 月至月至20052005年年1212月,即系统只能对该月,即系统只能对该 段期间内的报表进行处理,如日期段期间内的报表进行处理,如日期 不在此范围内,则显示输入错误信不在此范围内,则显示输入错误信 息。息。 系统日期规定由年、月的系统日期规定由年、月的6 6位数字位数字 字符组成,前四位代表年,后两位字符组成,前四位代表年,后两位 代表月。代表月。 如何用等价类划分法设计测试用例如何用等价类划分法设

65、计测试用例, , 来测试程序的日期检查功能?来测试程序的日期检查功能?掷订乐瀑扳楚崭城卖较朴个刷酚檀厘袁勾既穿懈铂恫融亿辗您星蹈颗竣屿六章软件测试六章软件测试如何划分等价类?如何划分等价类?有效等价类有效等价类( (合理等价类合理等价类) )无效等价类无效等价类( (不合理等价类不合理等价类) ) 划分等价类的标准:划分等价类的标准:覆盖覆盖不相交不相交代表性代表性涣差绑触胃司猫涡乐湿喊果硷拨卞天靖鸯搓叁捏赂幌豫聂猪诫怒氮谋啸饱六章软件测试六章软件测试划分等价类的规则划分等价类的规则 (1)(1)如果如果输入输入条件规定了取值条件规定了取值范围范围, 可定义可定义一个有效等价类和两个无一个有效

66、等价类和两个无 效等价类。效等价类。例例 输入输入值是学生成绩,范围是值是学生成绩,范围是0 01001000 1000 100 有效有效等价类等价类11成绩成绩100100无效等价类无效等价类 成绩成绩100100 无效等价类无效等价类 成绩成绩00膨址郭寇粥瞧它祟寓飘昔轮题刷荷匪讶糖裴姓美疫翻怜泪弘敏晦琅脑耗疽六章软件测试六章软件测试划分等价类的规则:划分等价类的规则:(2)(2)如果如果输入输入条件代表条件代表集合集合的某的某 个元素个元素,则可,则可定义定义一个有效一个有效 等价类和一个无效等价类。等价类和一个无效等价类。铆藕夯欢羹扇彪咀阂亲镀蛀单隘陡猾掷乏前赢坤菩跪哨傍绘想京坟荡画阐

67、六章软件测试六章软件测试划分等价类的规则:划分等价类的规则:(3)(3)如规定了输入数据的一组值,且如规定了输入数据的一组值,且 程序对不同输入值做不同处理,程序对不同输入值做不同处理, 则每个允许的输入值是一个有则每个允许的输入值是一个有 效等价类,并有一个无效等价类效等价类,并有一个无效等价类 ( (所有不允许的输入值的集合所有不允许的输入值的集合) )。例:输入条件说明学历可为例:输入条件说明学历可为: :专科、本科、专科、本科、 硕士、博士硕士、博士四种之一,则分别取这四四种之一,则分别取这四 种这四个值作为种这四个值作为四个有效等价类四个有效等价类,另,另 外把四种学历之外的任何学历

68、作为无外把四种学历之外的任何学历作为无 效等价类效等价类褥绒靡酚儒扣剩肝桨些能拦炯殃壹囚座密遏面愧癸巳鄙拂讨邓慢览淮似示六章软件测试六章软件测试划分等价类的规则:划分等价类的规则:(4)(4)如果规定了如果规定了输入输入数据数据必须遵必须遵循循的规的规 则,可则,可确定确定一个有效等价类一个有效等价类(符合符合 规则规则)和若干个无效等价类和若干个无效等价类(从不从不 同角度违反规则同角度违反规则) )。(5)(5)如已划分的等价类各元素在程序中如已划分的等价类各元素在程序中 的处理方式不同,则应将此等价的处理方式不同,则应将此等价 类进一步划分成更小的等价类。类进一步划分成更小的等价类。敌舌

69、咆绞帅讼乐气呵蛆洽陀叛鬼呛薄仅顺下载呛莹晰秋温栈绣同潍耽狙亚六章软件测试六章软件测试用等价类划分法设计测试用例步骤:用等价类划分法设计测试用例步骤:(1)(1)形成等价类表,每一等价类规定形成等价类表,每一等价类规定 一个唯一的编号;一个唯一的编号;(2)(2)设计一测试用例,使其尽可能多设计一测试用例,使其尽可能多 地覆盖尚未覆盖的有效等价类,地覆盖尚未覆盖的有效等价类, 重复这一步骤,直到所有有效等重复这一步骤,直到所有有效等 价类均被测试用例所覆盖;价类均被测试用例所覆盖;(3)(3)设计一新测试用例,使其只覆盖设计一新测试用例,使其只覆盖 一个无效等价类,重复这一步骤一个无效等价类,重

70、复这一步骤 直到所有无效等价类均被覆盖;直到所有无效等价类均被覆盖;班断幽鄂摹揪颠巫张狈艰粉分拎刽龚劳博些峙弗响救转皆颤纶彻糜季胀授六章软件测试六章软件测试第一步:等价类划分第一步:等价类划分输入输入等价类等价类 有效等价类有效等价类 无效等价类无效等价类 报表日期的报表日期的类型及长度类型及长度3 3位数字位数字字符字符(1)(1)有非数字字符有非数字字符 (4) (4)少于少于6 6个个数字数字字符字符 (5) (5)多于多于6 6个个数字数字字符字符 (6) (6)年份范围年份范围在在2001200120052005之间之间 (2) (2)小于小于20012001 (7) (7)大于大于

71、2005 2005 (8)(8)月份范围月份范围在在1 11212之间之间(3)(3)“报表日期报表日期”输入条件的等价类表输入条件的等价类表小于小于1 1 (9) (9)大于大于12 12 (10)(10)匣愚揉像赁被啄鸿强洁懈褥快群屋伶景皑睦绵蔚彭琼花徽哇叠弦施混残踌六章软件测试六章软件测试第二步:第二步:为有效等价类设计为有效等价类设计测试用例测试用例 对表中对表中编号为编号为1,2,31,2,3的的3 3个有效等价类个有效等价类 用用一一个测试用例个测试用例覆盖覆盖: 测试数据 期望结果 覆盖范围200105200105等价类等价类(1)(2)(3)(1)(2)(3)输入输入有效有效讣

72、皂堪狗堰再天钢挠状灶悄肯廊测裙靛燃蕴太枷贤巢象毅灰尿幽艘馏雾翻六章软件测试六章软件测试第第三三步:步:为每一个无效等价类设至少为每一个无效等价类设至少 计一个计一个测试用例测试用例 测试数据 期望结果 覆盖范围001001MAYMAY等价类等价类(4)(4)输入无输入无效效2001520015等价类等价类(5)(5)输入无输入无效效20010052001005等价类等价类(6)(6)输入无输入无效效200020000505等价类等价类(7)(7)输入无输入无效效200820080505等价类等价类(8)(8)输入无输入无效效200120010000等价类等价类(9)(9)输入无输入无效效200

73、120011313等价类等价类(10)(10)输入无输入无效效不能出现相同不能出现相同的测试用例的测试用例本例的本例的1010个等价类至个等价类至少需要少需要8 8个测试用例个测试用例陛漫辐师洋郧爆徊擞屏扩秃训悄邦鞠嫁了挽锁钡溯窒阶焊范猴铁硬饵交薄六章软件测试六章软件测试例例: :对招干考试系统对招干考试系统“输入学生成绩输入学生成绩” 子模块设计测试用例子模块设计测试用例 招干考试分三个专业招干考试分三个专业, ,准考证号第一位准考证号第一位 为专业代号为专业代号, ,如如: 1-: 1-行政专业行政专业, , 2- 2-法律专业法律专业, , 3- 3-财经专业财经专业. . 行政专业准考

74、证号码为行政专业准考证号码为:110001:110001111215111215法律专业准考证号码为法律专业准考证号码为:210001:210001212006212006财经专业准考证号码为财经专业准考证号码为:310001:310001314015314015那撑祟卖役汲阔祭印撮森雇胀朴赦氰丰丛窥由匣据乓抨翌忱豆九粉碌瑚函六章软件测试六章软件测试例例: :准考证号码的等价类准考证号码的等价类划分划分 有效等价类有效等价类: : (1) 110001 (1) 110001 111215 111215 (2) 210001 (2) 210001 212006 212006 (3) 310001

75、 (3) 310001 314015 314015 无效等价类无效等价类: : (4) - (4) - 110000 110000 (5) 111216 (5) 111216 210000 210000 (6) 212007 (6) 212007 31000 31000 (7) 314016 (7) 314016 + + 庇颁族狰粹桌呜涨贞薯雀泅煎鹃绵扼贝叁妙溪影竿弧韶衰晃菏抨斋亢腊潦六章软件测试六章软件测试例例: :计算给定月份中天数的方法接口计算给定月份中天数的方法接口(java):(java):Class MyGregorianCalender public static in getN

76、umDaysInMonth(int month,int year)getNumDaysInMonth( )方法有两个参数方法有两个参数, 月月和年和年,年份的有效输入是从年份的有效输入是从0到到maxInt.机拥运烷拔碰言饵茵蛛矗茨蚤给父虑贪赁牺挨京僻橡纽坎肺该展已集轨崎六章软件测试六章软件测试 等价类划分等价类划分即把即把输入空间分解输入空间分解成一系列子域成一系列子域,软件在一个子域内,软件在一个子域内的行为应是等价的的行为应是等价的。 软件错误分为两类:软件错误分为两类:计算错误计算错误 域错误域错误u针对针对计算错误的测试方法计算错误的测试方法u针对针对域错误域错误的测试方法的测试方法

77、: :测试测试域边界域边界 划定的正确性划定的正确性莫荚佐元子允杯删抽呈酷蓉暑才烈隋烷詹栓如挡冕莫雾猫遁楚诧缅赢右侍六章软件测试六章软件测试6.4.2 6.4.2 边界值分析法边界值分析法边界值分析法与等价类划分法区别边界值分析法与等价类划分法区别(1)(1)边界值分析不是从某等价类中边界值分析不是从某等价类中 随便挑一个作为代表,而是使随便挑一个作为代表,而是使 这个等价类的每个边界都要作这个等价类的每个边界都要作 为测试条件。为测试条件。(2)(2)边界值分析不仅考虑输入条件,边界值分析不仅考虑输入条件, 还要考虑输出空间产生的测试还要考虑输出空间产生的测试 情况情况被测试被测试子子 域域

78、测试内点测试内点测试外点测试外点软件边界与悬崖很类似映坦肥桑悼即幅舱撤粤茎慑太铁吠亿膜锌肯丧怜描损捎世厕瓤达讫脓歪燕六章软件测试六章软件测试边界边界条件类型条件类型 如果软件测试问题如果软件测试问题包含确定的边界包含确定的边界, ,那那么数据类型可能是么数据类型可能是: :数值数值字符字符位置位置数量数量速度速度地址地址尺寸尺寸还要考虑数据类型还要考虑数据类型的特征的特征: :第一个第一个/ /最后一个最后一个最小值最小值/ /最大值最大值开始开始/ /完成完成空空/ /满满最慢最慢/ /最快最快相邻相邻/ /最远最远超过超过/ /在内在内箩税电敦锐哟企斌冒火赖妆拯纹罩艰柬弧低况段辫刘亨锗侵傀

79、焊搜拱卒嗓六章软件测试六章软件测试测试测试边界边界线线测试临近边界的合法数据测试临近边界的合法数据, ,以及刚超过以及刚超过边界的非法数据边界的非法数据. .越界测试通常简单地加越界测试通常简单地加1 1或很小的数或很小的数 ( (对于最大值对于最大值) )和减和减1 1或很小的数或很小的数( (对于最对于最小值小值).). 飘渔扦汀闻索抖危泰潞租究扭价苟涨选讣耙出肇息剂程未卖济岔现刚酮卧六章软件测试六章软件测试输入输入条件条件报表日报表日期的类期的类型及长型及长度度1 1个个数字数字字符字符5 5个个数字数字字符字符7 7个个数字数字字符字符有有1 1个个非数字字符非数字字符全部是全部是非数

80、字字符非数字字符6 6个个数字数字字符字符显示出错显示出错显示出错显示出错显示出错显示出错显示出错显示出错显示出错显示出错输入有效输入有效日期日期范围范围月份月份范围范围“报表日期报表日期”边界值分析法测试用边界值分析法测试用例例测试用例说明测试用例说明测试数据测试数据 期望结果期望结果选取理由选取理由5 52001520015200100520010052001.52001.5MAY-MAY-200105200105月份为月份为1 1月月月份为月份为1212月月月份月份11212200101200101200112200112200100200100200113200113200101200

81、101200512200512200100200100200513200513输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错在有效范围在有效范围边界上选取边界上选取数据数据仅有仅有1 1个合法字符个合法字符比有效长度少比有效长度少1 1比有效长度多比有效长度多1 1只有只有1 1个非法字符个非法字符6 6个非法字符个非法字符类型及长度均有效类型及长度均有效最小日期最小日期最大日期最大日期刚好小于最小日期刚好小于最小日期刚好大于最大日期刚好大于最大日期最小月份最小月份最大月份最大月份刚好小于最小月份刚好小于最小月份

82、刚好大于最大月份刚好大于最大月份潞嘲疤氨罢脚樟俺逐窑韦赐掌纳揭娥迅皮瑚两芳隅编疑啤若逛先囤港肇盐六章软件测试六章软件测试6.4.3 6.4.3 错误推测法错误推测法(error guessing)根据经验来设计测试用例的方法根据经验来设计测试用例的方法例如,数据测试中的例如,数据测试中的: :缺省值缺省值空白空白空值空值零值零值无无 肯漆消眨吭姨堵梁农铱栈仟颅虞填矩缕驹床少仓冕揖红氟绸萄譬铀高郴贾六章软件测试六章软件测试6.4.46.4.4 状态测试状态测试 软件必须软件必须测试测试程序的状态及其转换程序的状态及其转换。测试软件的逻辑流程测试软件的逻辑流程建立状态转换图建立状态转换图减少要测试

83、的状态及转换的数量减少要测试的状态及转换的数量空闲空闲等待用户等待用户输入命令输入命令按下按下EscEsc键键显示口令框显示口令框口令错误口令错误 消除消除口令正确口令正确初始状态消失初始状态消失空闲空闲等待用户等待用户输入命令输入命令按下按下EscEsc键键口令正确口令正确口令错误口令错误不同形式的状态转换图逃玲冉癌伤董刑秃榔刀衷讲砖誉贬液鬃香砾奏粘纯鹊轰因象纂鞍饭桃馈产六章软件测试六章软件测试 设置设置2Bwatch 上的时间的顺序图上的时间的顺序图:2Bwatch用户用户按下按钮按下按钮1和和2:2Bwatch输入输入 :2Bwatch显示显示 :2Bwatch时间时间时间时间按下按钮按

84、下按钮1按下按钮按下按钮2按下按钮按下按钮1和和2闪烁小时闪烁小时闪烁分钟闪烁分钟增加分钟增加分钟刷新刷新提交更新时间提交更新时间停止闪烁停止闪烁芒受撕踊稻屏绣茂句缓盘揽孰砌镊叶社澄害酱憾平羔庆鄙剖竭趣抢瞩厅味六章软件测试六章软件测试2Bwatch 设置时间功能的状态图和测试结果设置时间功能的状态图和测试结果 按左按钮按左按钮 按右按钮按右按钮按左按钮按左按钮 按右按钮按右按钮4. 4. 2 2分钟以后分钟以后测量时间测量时间设置时间设置时间电池没电电池没电3.3.按下左右按钮按下左右按钮5.5.按下左右按钮按下左右按钮/ /蜂鸣蜂鸣8.8. 20 20年以后年以后7.7. 20 20年以后年

85、以后6.6.2.2.1.1.激励因素空集合空集合测量时间测量时间1.1.初始变迁初始变迁测试的变迁预期结果状态按下左边按钮按下左边按钮测量时间测量时间2.2.同时按下两个按钮同时按下两个按钮设置时间设置时间3.3.等等2 2分钟分钟测量时间测量时间4.4.超时超时铝抬绳咏鲸凹蝇待搁萤角育单御乘募铝羊紫钉乒彻煽段庚锁赤应洛召殆个六章软件测试六章软件测试失败状态测试失败状态测试找到测试软件失败的案例找到测试软件失败的案例。竞争条件和时序错乱竞争条件和时序错乱重复重复压迫压迫重负重负应联合使用,同时进行酋兜剩淹郎昏立畦寻弹育划溶寞雇圾蛋弯播诧熬弥鸥滩所烁姻糙取趣拟锅六章软件测试六章软件测试有效等价类

86、和用来测试有效等价类和用来测试getNumDaysInMonth()getNumDaysInMonth()方法所选的有效输入方法所选的有效输入 有效有效等价类一个月有一个月有3131天天, ,非闰年非闰年190119017(7(七月七月) )一个月有一个月有3131天天, , 闰年闰年190419047(7(七月七月) )一个月有一个月有3030天天, ,非闰年非闰年190119016(6(六月六月) )一个月有一个月有3030天天, , 闰年闰年190419046(6(六月六月) )一个月为一个月为2828或或2929天天, ,非闰年非闰年190119012(2(二月二月) )月份输入值年份

87、输入值一个月为一个月为2828或或2929天天, , 闰年闰年2(2(二月二月) )19041904矮膏葱阁婿愧陇铅腐牛猖防共泄蓑现碾侧沈煮准示主项展诈涸挞则瘤所符六章软件测试六章软件测试用来测试用来测试getNumDaysInMonth()getNumDaysInMonth()方法的附加边界值方法的附加边界值 等价类可以被可以被400400整除的闰年整除的闰年200020002(2(二月二月) )可以被可以被100100整除的非闰年整除的非闰年190019002(2(二月二月) )非正数无效月份非正数无效月份129112910 0正数无效月份正数无效月份131513151313月份输入值年份

88、输入值答绵嘱缆粪遍紧拷魁饺浙箭偿侮昆钉粹藩莲癣易幼螟摔卯匿汝逼叛区盾债六章软件测试六章软件测试6.4.5 6.4.5 因果图法因果图法 因果图适合于描述对于多种输因果图适合于描述对于多种输入条件的组合,相应产生多个动作入条件的组合,相应产生多个动作的形式来设计测试用例。的形式来设计测试用例。 因果图方法最终生成的是判定因果图方法最终生成的是判定表。表。饭拌尊读潞郝霄汞咬妈拖淫押兽贮碾壶觅恍谢乡浪撼积甫息兄砚卡凿瓜疚六章软件测试六章软件测试因果图方法实例因果图方法实例某电力公司有某电力公司有A A、B B、C C、D D四类收费标准四类收费标准, ,并规定:并规定:居民用电居民用电 100 10

89、0度度/ /月月 按按A A类收费类收费 100 100度度/ /月按月按B B类收费类收费动力用电动力用电 10000 10000度度/ /月月, ,非高峰非高峰, ,B B类收费类收费 10000 10000度度/ /月月, ,非高峰非高峰, ,C C类收费类收费 10000 10000度度/ /月月, , 高峰高峰, ,C C类收费类收费 10000 10000度度/ /月月, , 高峰高峰, ,D D类收费类收费翁打儡衣翰铸橙瘦总瘤肺轴踌付仟苯亏遂成谱干污瑞赛篮椭蔡己萌乌淋萎六章软件测试六章软件测试用因果图表明输入和输出间的逻辑关系用因果图表明输入和输出间的逻辑关系1I12B4AC35

90、DI4I3I2哆缺万旁瘩嚏塘掣范锌咎滚惹监竖抵售蛮股褂坛鲁握飘窖来惺厢棱瓶企盈六章软件测试六章软件测试把因果图转换为判定表把因果图转换为判定表组合条件组合条件条件条件( (原因原因) ) 动作动作( (结果结果) )A AB BC C123123456101100011000110000100001104101050011D D000110010000测试用例测试用例坍唱赢伴缀缺驻郸野疆霹偷殃庞姻逐冀蜜滤撼棉敢掩四畔门佩设框邯韧莹六章软件测试六章软件测试为判定表每一列设计一个测试用例为判定表每一列设计一个测试用例: :1 1列列 居民电居民电,90,90度度/ /月月 A A2 2列列 居民电

91、居民电,110,110度度/ /月月 B B3 3列列 动力电动力电, ,非高峰非高峰,8000,8000度度/ /月月 B B4 4列列 动力电动力电, ,非高峰非高峰,1.2,1.2万度万度/ /月月 C C5 5列列 动力电动力电, , 高峰高峰,0.9,0.9万度万度/ /月月 C C6 6列列 动力电动力电, , 高峰高峰,1.1,1.1万度万度/ /月月 D D 条件条件 测试用例测试用例 预期结果预期结果组合组合 ( (输入数据输入数据) () (输出动作输出动作) )艰意乓瞧援审偷糠朝茁磷钾隋官矾牵苇俯巍癣莹门崇卑茫疤醚涉梁绊件风六章软件测试六章软件测试6.5 6.5 针对专门

92、环境和应用的测试针对专门环境和应用的测试6.5.1 6.5.1 GUIGUI测试测试常见常见GUIGUI测试指南:测试指南:对于窗口对于窗口对于菜单和鼠标操作对于菜单和鼠标操作对于数据项对于数据项欺簇凹茅键寐厨镊甩幢惮欧猛晌注条渝刑墒洞砒敌被裳惟锤英仁臭秤绳淳六章软件测试六章软件测试6.5.2 6.5.2 C/S体系结构的体系结构的测试测试 整体整体C/SC/S测试策略测试策略( (三个不同层次三个不同层次) )客户端应以客户端应以“分离的分离的”模式被测试模式被测试 ( (不考虑服务器和底层网络的运行不考虑服务器和底层网络的运行) )客客户户端端软软件件和和关关联联的的服服务务器器端端应应用

93、用被被一一起起测试测试( (网络运行不被明显考虑网络运行不被明显考虑) )完完整整的的C/SC/S体体系系结结构构( (包包括括网网络络运运行行和和性性能能) )被测试被测试鹤妹触桓怎傻驻反循挑油榜的挎节圃扬固泻冷向浸颗楼唆萄淮离欺瑰收曰六章软件测试六章软件测试 C/S C/S常用测试方法常用测试方法客户端应用功能测试客户端应用功能测试服服务务器器测测试试(协协调调和和数数据据管管理理功功能能、性能)性能)数据库测试数据库测试事务测试事务测试网络通信测试网络通信测试僵慨湘勒威常储骆岳菜豫黑浪硬编卜枝杉捉胡茂匣磁收迪牙乃拷验屠掖磨六章软件测试六章软件测试6.5.3 6.5.3 实时系统测试实时系

94、统测试可采用以下四步策略:可采用以下四步策略:(1) (1) 任务测试任务测试(2) (2) 行为测试行为测试(3) (3) 任务间测试任务间测试(4) (4) 系统测试系统测试振拨静妥唱骤糊茫侠庇唁托肆碌泅澈涉焦稼符畏浩蜜别烩埔洱付粗荆萄装六章软件测试六章软件测试(1) (1) 任务测试任务测试 ( (task testing) ) 对每一个任务进行单独测试对每一个任务进行单独测试( (白盒、黑盒测试白盒、黑盒测试) ),发现,发现逻辑和功逻辑和功能上错误能上错误,不能发现定时上和行为,不能发现定时上和行为上错误上错误 。扳囱史瘫旦馅铝哀价挣局崔弄剁拱狗酣筷靡筏茁卡肛伍沤泰譬惺峭滓锄拯六章软

95、件测试六章软件测试(2)(2)行为行为测试测试( (behavioral testing) ) 用用CASE工具创建应用系统模型,工具创建应用系统模型,模拟实时系统行为。模拟实时系统行为。 按类测试各种事件按类测试各种事件( (如中断、控制如中断、控制信号、数据信号、数据) )。 测试过的事件以随机次序、随机频测试过的事件以随机次序、随机频率送给系统率送给系统, ,检查软件检查软件行为方面的错误行为方面的错误. .延九址崎瘤札罚蛮脚给怜拾葫罚跑证燎惯鼓薪旺蔬凤赫挨糕汀裴也础痹轨六章软件测试六章软件测试(3)(3)任务间测试任务间测试( (intertask testing) ) 检查检查与时间

96、有关错误与时间有关错误。 如用不同数据速率、处理负载如用不同数据速率、处理负载 测试相互通信的异步任务。测试相互通信的异步任务。 通过消息队列或数据存储测试通过消息队列或数据存储测试 任务间的通信来找出数据存储区错任务间的通信来找出数据存储区错 误的范围。误的范围。烛抨想塌器赶蘑浊塑靶拦簧诱笑红罕恬叹煌味胶搭肖佛膏记配酷乾苑踪碎六章软件测试六章软件测试(4) (4) 系统测试系统测试 ( (system testing) ) 软件、硬件组装后,找出软件、硬件组装后,找出软、软、硬件接口错误硬件接口错误。剩屋歼兜议董低瑞菌易灭伞垄桶埔广锹蛾河庞弄砰聘偏摩窑溪活块坊政衫六章软件测试六章软件测试软件

97、测试的过程软件测试的过程被测被测模块模块单元单元测试测试设计设计信息信息集成集成测试测试被测被测模块模块单元单元测试测试被测被测模块模块单元单元测试测试测试过测试过的模块的模块确认确认测试测试系统系统测试测试软件软件需求需求其它系其它系统元素统元素装配好装配好的软件的软件 确认确认的软件的软件可运可运行的行的软件软件6.66.6软件测试的步骤软件测试的步骤盘抨硷秋谰才获麓萝恃蚀晕擦肯焦扔麓供惕羞拢赏滨挠键屑浆丝脓帖俩卯六章软件测试六章软件测试软件测试策略软件测试策略单元测试单元测试U UC CD DR RS SI IV VSTST集成测试集成测试确认测试确认测试系统测试系统测试系统工程系统工程

98、软件需求分析软件需求分析软件设计软件设计代码编写代码编写艘摘嚷你瑶曹剖帘旭纺辆咐啮跑憋改畔弦秩喳芦吕播潍稍地垣伺假沏序漱六章软件测试六章软件测试6.6.1 6.6.1 单元测试单元测试一一. .单元测试的内容单元测试的内容主要对模块的主要对模块的五个基本特性五个基本特性进行评价进行评价模块模块错误处理错误处理模块接口模块接口局部数局部数据结构据结构 重要的重要的执行路径执行路径边界条件边界条件相厂树钙盏岳洋何妒跋僳氯衅嘎业顿峦破轴裸芥殊嘎攀僵颇爷化高汗恬佩六章软件测试六章软件测试1.1.常见错误类型常见错误类型 接口错误接口错误I/OI/O错误错误数据结构错误数据结构错误算法错误算法错误比较及

99、控制逻辑错误比较及控制逻辑错误错误处理错误错误处理错误步幽简盘谆耳骤甘诣拌赎图菲坊啦巴辐肾茂低譬空卓匪骂历央不谱扶烁膘六章软件测试六章软件测试2.2. 模块测试基本原则模块测试基本原则 至少一次测试所有语句至少一次测试所有语句测试所有可能的执行或逻辑路径的组合测试所有可能的执行或逻辑路径的组合测试每个模块的所有入口和出口测试每个模块的所有入口和出口坚违淳帚稍纷坎硷逛奄膝汕伊锦值暇必航黔疆意技俏幽宦他朗案甭烽支腿六章软件测试六章软件测试3.3. 确定单元测试数据集确定单元测试数据集 值域值域值类值类离散值离散值值的次序集值的次序集( (测试顺序文件和测试顺序文件和表表) ) 昔澎铡邯酷桐土心曼荣

100、蓬淤恰旱罩逢拄陪蜘梁池擎索拟澎件庐峪佐锅庭额六章软件测试六章软件测试二二. . 单元测试的方法单元测试的方法单元测试一般为编码步骤的附属部分单元测试一般为编码步骤的附属部分. .模块不是独立的程序模块不是独立的程序, ,自己不能运行自己不能运行, ,要靠其它部分来调用和驱动要靠其它部分来调用和驱动, ,要为每个要为每个单元测试开发两个软件单元测试开发两个软件: :(1)(1)驱动模块驱动模块( (驱动程序驱动程序) ): :相当于主模块相当于主模块(2)(2)桩模块桩模块( (测试存根、测试存根、连接程序连接程序) ) : : 代替所测模块调用的子模块代替所测模块调用的子模块柠叼蝎烂帕涅巩愚谜

101、十贡检字挞倚纽凌瑰线邮窥芦生损敝敛尽瓶煽汛狼茫六章软件测试六章软件测试单元测试的测试环境举例单元测试的测试环境举例: :B BA AC CD DE E待测试模块待测试模块兴奈园翌史渭檀钉择谆怖松扶程朽秉律疾鲁阵疼沫购仁鹅挥脸姿唯件称剥六章软件测试六章软件测试单元测试的测试环境举例单元测试的测试环境举例: :被测模块被测模块 B B 驱动模块驱动模块( (模拟模块模拟模块A A) )桩模块桩模块( (测试存根测试存根) )( (模拟模块模拟模块E E) )测试用例测试用例测试结果测试结果许多模块不能用简单的软件进行充分的单元许多模块不能用简单的软件进行充分的单元测试测试, , 此时此时, , 完

102、全的测试可放到集成测试阶完全的测试可放到集成测试阶段再进行段再进行. .鸽鸦渣卿垣巧姓扶驾虎肯殴骂滥御暇妊账晾挪缸瓤仍蚀悠松逮茹鹤效拼旋六章软件测试六章软件测试单元测试的测试环境举例单元测试的测试环境举例: : 实际软件实际软件华氏到慑氏华氏到慑氏转换模块转换模块温度数据温度数据实际配置实际配置测试用例测试用例数据数据结果结果 测试驱动软件测试驱动软件华氏到慑氏华氏到慑氏转换模块转换模块结果结果测试驱动际配置测试驱动际配置德苫火岁唇抵匿锹钥录韦驳船处立伎苍啦仁择瑚抵衔歹拦挡国东磺钒蛙姜六章软件测试六章软件测试单元测试的测试环境举例单元测试的测试环境举例 温度显示模块温度显示模块温度接口温度接口

103、模块模块实际配置实际配置测试驱动际配置测试驱动际配置 温度显示模块温度显示模块程序员编写程序员编写的桩模块的桩模块( (测试存根测试存根) )温度值的测试文件温度值的测试文件阻您磺吞蕾别有邻暗杀迎超烤映烘弟扦屈桩恰倪诬跃鸽终笛庄葛膛讫挠丰六章软件测试六章软件测试结构性模式结构性模式(structural (structural patterns) )适配器模式适配器模式( (Adapter)打包器打包器( (Wrapper) )桥模式桥模式( (Bridge) )句柄句柄( (Handle) )组合模式组合模式( (Composite) ) 修饰模式修饰模式( (Decorator)包装器包装

104、器( (Wrapper) )外观模式外观模式( (Facade) )轻量模式轻量模式 ( (Flyweight) )代理模式代理模式(Proxy) )残富嚏曼滑敷奴禹睬稽浅陋筑豫验篷祖玄执糜你骚朝宠途桐跑荫搏笺猩狄六章软件测试六章软件测试ImplementorOperationaImp( )桥模式桥模式( (Bridge) )意图:将抽象部分和实现部分分离,使他们都意图:将抽象部分和实现部分分离,使他们都可以独立地变化可以独立地变化AbstractionContextinterface( )ConcreteImplementorAOperationaImp( )ConcreteImplemen

105、torBOperationaImp( )RefinedAbstraction强予惑茵砧麦婆办园挥彼济喳震娱泰仟瞄嚎抿卖堕洱贿囱线地铆靶芽铡织六章软件测试六章软件测试支持多种窗口系统的设计支持多种窗口系统的设计窗口与窗口实现分离窗口与窗口实现分离WindowRaise( )DrawRact()ApplicationWindowIconWindowDialogWindowMacWindowlmpDeviceRaise( )DeviceRect( )PMWindowlmpDeviceRaise( )DeviceRect( )XWindowlmpDeviceRaise( )DeviceRect( )W

106、indowlmpDeviceRaise( )DeviceRect( )甭惶苑刨松钞挥辐驶兔抓铸嚷舞茂账闸晚孙悟妆走穆烟减兽嘿洱拷艺麻从六章软件测试六章软件测试利用利用Bridge设计设计模式与未完成、未知或在测试模式与未完成、未知或在测试另一组件时不可用组件的接口(另一组件时不可用组件的接口(UML类图)类图)用户接口用户接口数据库户接口数据库户接口数据库户接口数据库户接口测试存根测试存根数据库数据库 可用可用Bridge设计设计模式实现测试存根,用户接模式实现测试存根,用户接口子系统访问测试不能访问的数据库子系统。口子系统访问测试不能访问的数据库子系统。 将数据库接口和数据库实现分离开来。将

107、数据库接口和数据库实现分离开来。密负心癸鹏眷彻赂慕霖没房宴琅殖康彩隔底束暑茨姑原掩舶家钡留捆竹伊六章软件测试六章软件测试6.6.2 6.6.2 集成测试集成测试( (组装测试组装测试) )集成测试需考虑的问题集成测试需考虑的问题: :F数据穿越接口可能丢失数据穿越接口可能丢失. .F一模块可能破坏另一模块功能一模块可能破坏另一模块功能. .F子功能组装可能未产生所要求的子功能组装可能未产生所要求的 主功能主功能. .F全程数据结构可能出问题全程数据结构可能出问题. .F误差累积问题误差累积问题. .己薪涉曼传响拥肾反眯姑杠缘夫奶伞屋傲土钳斟箭讽眩睁恿叹往舶狼刨螺六章软件测试六章软件测试集成测试

108、方法集成测试方法通常采用黑盒测试技术通常采用黑盒测试技术实施策略实施策略: :F非渐增式测试非渐增式测试F渐增式测试渐增式测试 深度优先深度优先广度优先广度优先自顶向下结合自顶向下结合自底向上结合自底向上结合秒狈附讹衫埔钡哩堪召苹凰鸳蛔毡瓤亨们县熊围棠痛羽涂澳蜀炒呢疆爸铀六章软件测试六章软件测试一一. . 非渐增式集成方式非渐增式集成方式 一次就把所有通过了单元测试一次就把所有通过了单元测试的模块组合在一起进行全程序的测的模块组合在一起进行全程序的测试试. .缺点缺点: :发现错误难以诊断定位发现错误难以诊断定位. . 又称又称“莽撞测试莽撞测试” . .透耗踏检窘研契题渡亿抖汕羌硬亨炔逗上盅

109、粹暗澳白少榆重袒恍瑞仙但裴六章软件测试六章软件测试二二. . 渐增式集成方式渐增式集成方式 从从一一个个模模块块开开始始, ,测测一一次次添添加加一一个个模模块块,边边组组装装边边测测试试,以以发发现现与与接接口相联系的问题。口相联系的问题。宿浇捍瓦及曲负竣始架耍卖桩荧歪契死寺估距泳赫丝焕灵橡絮总肥吉杰折六章软件测试六章软件测试自顶向下结合方式举例自顶向下结合方式举例: :ADBE模块测试模块测试结合顺序结合顺序CF深度优先深度优先: :A、B、E、C、D、F广度优先广度优先: :A、B、C、D、E、F肉后钎尉哲团析皋艺竖凿酬劲鹅备焦枯筑睬推疤员敦约罐归贮挑窍淖欲会六章软件测试六章软件测试自顶

110、向下结合方式举例自顶向下结合方式举例: :( (深度优先深度优先) )A测试测试 AS2S2S1S1S3S3A加入加入BS2S2BS3S3S4S4A加入加入ES2S2BS3S3EA加入加入CCBS3S3E加入加入DCBDE加入加入FCBDEAAFS5S5晃矮执人泻质绪辱瞅泼白计咋恐影膜返余庆剑搽轴昂翅诣芒厉算焚孵肖戚六章软件测试六章软件测试自底向上结合方式举例自底向上结合方式举例: :A AC CB BD DF FE EE Ed d1 1C Cd d3 3F Fd d4 4B Bd d2 2E ED Dd d5 5F F西嘿苞芳庞嫉融哭奏汰讼晒挪命壬涪咕元拔树浅抿忍痴赣元饺趾箕诧鲁诗六章软件测

111、试六章软件测试自底向上结合方式举例自底向上结合方式举例: :McD1MaMbD2D3簇簇1 1簇簇2 2簇簇3 3技准嘶上碴葡拌师厨惟墨隧巨孝李屡琶平藐淫尤痹彝河健脱林谴券证萝撤六章软件测试六章软件测试 自顶向下自顶向下 自底向上自底向上优点优点 可在测试早期可在测试早期 设计测试用例容易设计测试用例容易 实现并验证系实现并验证系 统主要功能统主要功能 不需驱动模块不需驱动模块 不需桩模块不需桩模块 缺点缺点 需桩模块需桩模块 只有到最后程序才只有到最后程序才 能作为一个整体能作为一个整体3. 3. 混合集成测试方法混合集成测试方法F一般对软件结构的上层使用自顶向下一般对软件结构的上层使用自顶向下结合的方法结合的方法; ;F对下层使用自底向上结合的方法对下层使用自底向上结合的方法; ;及洲嘎平岔藩箔蒸阑饲锄怔狭死扬鹿巾光馁近潦论鞠低抚沙者睹埂荫史枚六章软件测试六章软件测试

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号