第2章软件测试的策略与过程-课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第2章软件测试的策略与过程-课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 策略 过程 课件
- 资源描述:
-
1、第二章 软件测试策略与过程2第2章 软件测试策略与过程2.1 软件测试的复杂性分析2.2 排除软件缺陷的手段2.3 软件测试方法与策略2.4 单元测试2.5 集成测试2.6 确认测试2.7 系统测试2.8 验收测试2.9 测试后的调试2.10 面向对象的软件测试3本章教学目标 理解软件测试的复杂性 理解软件测试的方法与策略 明确单元测试的主要任务和过程 明确集成测试的方法和确认测试的准则 明确系统测试的八个领域测试要点 明确验收测试的主要内容和相关配置42.1 软件测试的复杂性分析1、无法对程序进行完全测试 (1)测试所需要的输入量太大 (2)测试的输出结果太多 (3)软件实现的途径太多 (4
2、)软件规格说明没有一个客观标准2、测试无法显示潜在的软件缺陷和故障 通过软件测试只能报告软件已被发现的缺陷和故障,无法报告隐藏的软件故障。3、存在的故障现象与发现的故障数量成正比 结论:应当对故障集中的程序段进行重点测试5M1D1D2D3D4M2M3M4M5M6M7D5=20次循环次数01220独立路径数51+52+53+5211014(1百万亿)每个测试用例(考虑、执行、验证结果)5分钟共需测试时间10亿年无法进行完全测试的例子-16无法进行完全测试的例子-2程序PXYZ若X、Y为所有可能的整数 在字长32位机上测试X1、Y1 Z1 Xn、Yn Znn=232232=264 1.84 101
3、97软件测试的复杂性分析(续)4、不能修复所有的软件故障 原因:没有足够的进行修复;修复的风险较大;不值得修复;可不算做故障的一些缺陷;“杀虫剂现象”。结论:关键是要进行正确的判断、合理的取舍,根据风险分析决定哪些故障必须修复,哪些故障可以不修复。5、软件测试的代价 工作原则:就是如何将无边无际的可能性减小到一个可以控制的范围,以及如何针对软件风险做出恰当选择,去粗存精,找到最佳的测试量,使得测试工作量不多也不少,既能达到测试的目的,又能较为经济。8软件测试的复杂性分析(续)软软件件缺缺陷陷故故障障数数量量测试工作量测试工作量测试中测试中测试后测试后测试费用测试费用遗漏缺陷数目遗漏缺陷数目优化
4、测试量优化测试量图图2-1 测试工作量和软件缺陷数量之间的关系测试工作量和软件缺陷数量之间的关系92.2 排除软件缺陷的手段 软件测试 软件项目评审10软件测试 软件测试 测试在软件开发中占有重要地位 测试成本占总开发成本的近一半11软件开发成本分布软件类型开发成本按阶段分布%需求与设计实现测试控制软件462034航空航天软件342046操作系统331750科技计算软件442630商业应用软件44282812测试人员所占比例13实际产品中的情况TeamExchange 2000Windows 2000Program Manager25About 250Developer140About 170
5、0Tester350About 3200Tester/Dev2.5About 1.914需求分析设计走查概要设计设计评审详细设计编码代码走查单元测试集成测试确认测试测试评审需求评审单元测试计划软件项目评审回归测试系统测试15 T:测试 R:评审UT:单元测试 IT:集成测试ST:系统测试AT:验收测试引入消除传递RRRR需求设计编程测 试UT ITATSTR运行/维护T软件生存期中缺陷的引入、传递与消除16缺陷跟踪17缺陷的状态 Microsoft Fixed Duplicated Postponed By design Not repro Wont fix Athens Olympic Ga
6、mes System Open In Analysis Accepted Rejected Fixed Delivered Pending Closed Reopened Unresolved18根据微软的经验,每修复三到四个根据微软的经验,每修复三到四个Bug一般就一般就会产生一个新的会产生一个新的Bug。19测试对象 程序测试:发现程序中的缺陷测试数据程序P比较结果数据预期数据相符不符追查缺陷20测试对象 文档测试:发现文档中存在的各种错误,以及各种文档之间的逻辑不一致性等需求规格说明设计说明(概要与详细)程序(代码走查,编写的代码是否符合既定的规范和标准等,不是指可执行的二进制代码)测试
7、用例、测试计划、测试结果报告用户手册、安装/配置手册、帮助文档等 其他样本/范例,错误提示信息和产品支持信息等所有与软件产品有关联的部分都可成为被测试的对象!21测试计划测试用例测试程序测试建立可靠性模型排错评估测试结果预期结果修正的软件可靠性模型软件配置测试配置测试工具测试结果错误出错率回归测试软件测试信息流22为什么要实施测试评审PPlan 计划 DDo 实施CCheck 检验、审查AAction 措施、行动 软件开发中软件开发中:PSDP 软件开发计划 SRS 软件需求规格说明 D软件设计、实现、编程 C软件测试、软件评审 A解决测试和评审中发现的问题回答:测试是否按计划实施 测试是否充
8、分而有效地检验了功能、性能和使用要求体现PDCA循环APCD23APCDAPCDTestingP:制定测试计划D:执行测试C:测试评审A:解决测试评审发现的问题软件开发软件测试测试计划与测试评审的关系24需求分析概要设计详细设计编码单元测试集成测试确认测试系统测试决定软件与系统的配合关系测试与开发前期工作的关系25发现的错误数周周总缺陷数目不同阶段的缺陷数目测试查错曲线26生存期各阶段V、V&T活动系统测试分析设计编码维护安装测试单元测试验证确认系统测试 质量控制集成测试回归测试验收测试Do the thing rightDo the right thing271.需求分析阶段 制定本项目的V
9、V&T计划 设置基于需求的测试用例 对需求进行评审与分析 对用户手册初稿进行评审与分析2.概要设计阶段 修订VV&T计划 制定基于设计的测试步骤 对概要设计进行评审与分析3.详细设计阶段 设置基于设计的功能测试数据 对详细设计进行评审与分析软件生存期各阶段的VV&T活动284.程序编写和单元测试完成测试用例说明书进行单元测试进行集成测试5.安装进行系统测试进行验收测试6.运行和维护阶段软件评价软件修改评价回归测试(引自美国国家标准局信息处理标准FIPS PUB101)软件生存期各阶段的VV&T活动(续)29如何正确对待测试工作明确测试工作意义加强责任心,疏忽可能造成恶果学习实践钻研,积累经验,
10、努力提高业务水平处理好与编程人员关系30测试工作评估问题1.你单位是否有专人负责测试工作?2.你们是否有、是否用测试计划规范?3.你们是否有、是否用单元测试规程?4.你们是否有、是否用测试报告规范?5.测试过程(包括计划和实施)与整个开发过程是否并行开展?(测试在开发初期着手,在开发结束完成)6.测试能够确认规格说明得到正确的实现吗?7.除规格说明以外,你能否确认用户的期望也能满足吗?8.测试人员能验证开发的阶段(如需求和设计)的精确性和完全性吗?9.测试人员向开发人员报告缺陷以期进一步采取措施吗?10.在制定计划之前测试人员能估计业务风险吗?31测试工作评估问题(续)11.针对被测软件是否提
11、出了可度量的测试目标?12.如已提出,它与商业风险有关吗?13.测试中发现的缺陷是否做了纪录和总结,使其用于改进开发过程和测试过程?14.测试人员是否根据以前的工作经验判断可能的缺陷?15.是否有改进测试过程的办法?16.你为缺陷命名吗?17.是否利用缺陷记录、总结和事故数据来评价测试过程的有效性?18.是否采用度量(如千行代码缺陷数)来计划和评价测试过程?19.是否已建立了测试人员的培训制度?20.采用测试工具来支持测试过程吗?32不同等级的测试机构等级否个数状 态特 点117-20把测试工作当作艺术(art)u测试依赖于测试人员个人的技巧和创造性u对测试人员无指导,无要求u测试工作效果不稳
12、定,有时好,有时糟u顾客和用户不能靠测试的有效性判断质量213-16把测试工作当作技艺(craft)u有测试过程、规范、标准和测试计划u测试计划得不到实施u测试人员只热衷于找缺陷,报告开发人员u用户不信任测试过程,只好做验收测试39-12执行已确切定义的测试过程u测试过程已被定义,单位但未得到有效执行u测试工作针对规格说明,重视问题的需求u测试结束时没有提供表明被测软件能否投入使用的正式报告33不同等级的测试机构45-8先进的测试机构u有明确的测试目标,可优化利用测u试资源实现目标u重视测试过程薄弱环节的改进50-4最先进的测试机构u测试工作基于降低风险,测试人员u工作有效u测试得到度量,过程
13、得到很好定义u缺陷得到记录、分析和总结,且用u其改进过程u测试成本显著下降u顾客和用户相信测试过程,不依靠u验收测试取得满意产品342.3 软件测试方法与策略2.3.1 静态测试与动态测试2.3.2 黑盒测试与白盒测试2.3.3 软件测试过程2.3.4 软件测试原则35软件测试策略 什么是软件测试策略?是为软件工程过程定义的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤。软件测试策略包含的特征:(1)测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中。(2)不同的测试技术适用于不同的时间点。(3)测试是由软件的开发人员和(对于大型系统而言)独立的测试组来管理的。(4
14、)测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。36软件测试充分性准则 对任何软件都存在有限的充分测试集合。如果一个软件系统在一个测试数据集合上的测试是充分的,那么再多测试一些数据也应该是充分的。这一特性称为单调性。即使对软件所有成分都进行了充分的测试,也并不表明整个软件的测试已经充分了。这一特性称为非复合性。即使对软件系统整体的测试是充分的,也并不意味软件系统中各个成分都已经充分地得到了测试。这个特性称为非分解性。软件测试的充分性应该与软件的需求和软件的实现都相关。软件越复杂,需要的测试数据就越多。这一特性称为复杂性。测试得越多,进一步测试所能得到的充分性增长就越少。这一特性称
15、为回报递减率。372.3.1 静态测试与动态测试1、静态测试 静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行。静态测试方法也可利用计算机作为对被测程序进行特性分析的工具,但与人工测试方式有着根本区别。另一方面,因它并不真正运行被测程序,只进行特性分析,这又与动态方法不同。所以,静态方法常常称为“分析”,静态测试是对被测程序进行特性分析方法的总称。38静态测试与动态测试(续)代码检查代码检查 代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循
16、、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。代码检查的具体内容:变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等。代码检查的优点:在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。代码检查的缺点:非常耗费时间,而且代码检查需要知识和经验的积累。39静态测试与动态测试(续)静态结构分析静态结构分析 静态结构分析主要是以图形的方式表现程序的内部结构。例如函数调用关系图、函数内部控制流图。其中:函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系;控制流图显示一个函
17、数的逻辑结构,由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。40静态测试与动态测试(续)代码质量度量代码质量度量 软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合。针对软件的可维护性,目前业界主要存在三种度量参数:Line复杂度、Halstead复杂度和McCabe复杂度。其中Line复杂度以代码的行数作为计算的基准。Halstead以程序中使用到的运算符与运算元数量作为计数目标(直接测量指标),然后可以据以计算出程序容量、工作量等。McCabe复杂度 一般称为圈复杂度,它将软件的流程图转
18、化为有向图,然后以图论来衡量软件的质量。41静态测试与动态测试(续)静态测试阶段的任务:(1)检查算法的逻辑正确性。(2)检查模块接口的正确性。(3)检查输入参数是否有合法性检查。(4)检查调用其他模块的接口是否正确。(5)检查是否设置了适当的出错处理。(6)检查表达式、语句是否正确,是否含有二义性。(7)检查常量或全局变量使用是否正确。(8)检查标识符的使用是否规范、一致。(9)检查程序风格的一致性、规范性。(10)检查代码是否可以优化,算法效率是否最高。(11)检查代码注释是否完整,是否正确反映了代码的功能。42静态测试与动态测试(续)静态测试可以完成以下工作:(1)发现下列程序的错误:错
19、用局部变量和全局变量;未定义的变量、不匹配的参数;不适当的循环嵌套或分支嵌套、死循环、不允许的递归;调用不存在的子程序,遗漏标号或代码。(2)找出以下问题的根源:从未使用过的变量;不会执行到的代码、从未使用过的标号;潜在的死循环。(3)提供程序缺陷的间接信息:所用变量和常量的交叉应用表;是否违背编码规则;标识符的使用方法和过程的调用层次。(4)为进一步查找做好准备。(5)选择测试用例。(6)进行符号测试。43静态测试与动态测试(续)2、动态测试动态方法的主要特征是:计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况即输入与输出的对应关系进行分析,以达到检测的目的。动态测试包括:(1
20、)功能确认与接口测试 (2)覆盖率分析 (3)性能分析 (4)内存分析442.3.2 黑盒测试和白盒测试 若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒测试(Black-box Testing)方法。黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。白盒测试又称为结构测试、逻辑驱动测试或
21、基于程序的测试,一般用来分析程序的内部结构。45黑盒测试和白盒测试(续)46黑盒测试和白盒测试(续)1、黑盒测试 黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。黑盒测试的特点:(1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。47
22、黑盒测试和白盒测试(续)48黑盒测试和白盒测试(续)黑盒测试主要是为了发现以下几类错误:v是否有不正确或遗漏了的功能?是否有不正确或遗漏了的功能?v在接口上,输入能否正确地接受?能否输出正确的结果?在接口上,输入能否正确地接受?能否输出正确的结果?v是否有数据结构错误或外部信息访问错误?是否有数据结构错误或外部信息访问错误?v性能上是否能够满足要求?性能上是否能够满足要求?v是否有初始化或终止性错误?是否有初始化或终止性错误?黑盒测试的难点:在哪个层次上进行测试?黑盒测试的具体技术方法:边界值分析法 等价类划分法 因果图法 决策表法49黑盒测试和白盒测试(续)2、白盒测试 白盒测试将被测程序看
23、作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”通常的程序结构覆盖有:语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 路径覆盖50黑盒测试和白盒测试(续)51黑盒测试和白盒测试(续)?X=2 y=2x Y=4 X=2Y=4未知等式与已知等式黑盒黑盒白盒白盒3、黑盒测试法和白盒测试法的比较、黑盒测试法和白盒测试法的比较52黑盒测试和白盒测试(续)黑盒测试:以用户的观点,从输入数据与输出数据的对应关系,即根据程序外部特性进行测试,而不考虑内
24、部结构及工作情况。黑盒测试技术注重于软件的信息域(范围),通过划分程序的输入和输出域来确定测试用例。若外部特性本身存在问题或规格说明的规定有误,则应用黑盒测试方法是不能发现问题的。白盒测试:只根据程序的内部结构进行测试。测试用例的设计要保证测试时程序的所有语句至少执行一次,而且要检查所有的逻辑条件。如果程序的结构本身有问题,比如说程序逻辑有错误或者有遗漏,那也是无法发现的。53黑盒测试和白盒测试(续)项目项目黑盒测试法黑盒测试法白盒测试法白盒测试法规划规划方面方面功能的测试功能的测试结构的测试结构的测试优点优点方面方面 能确保从用户的角度能确保从用户的角度出发进行测试出发进行测试 能对程序内部
25、的特定部位进能对程序内部的特定部位进行覆盖测试行覆盖测试缺点缺点方面方面无法测试程序内部特无法测试程序内部特定部位;当规格说明有定部位;当规格说明有误,则不能发现问题误,则不能发现问题无法检查程序的外部特性;无法检查程序的外部特性;无法对未实现规格说明的程无法对未实现规格说明的程序内部欠缺部分进行测试序内部欠缺部分进行测试测试测试方法方法 边界分析法边界分析法 等价类划分法等价类划分法 决策表测试决策表测试 语句覆盖,判定覆盖,语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,判定/条件覆盖,条件覆盖,路径覆盖,循环覆盖,路径覆盖,循环覆盖,模块接口测试模块接口测试54黑盒测试和白盒测试(续)A A
展开阅读全文