《软件工程软件测试精备课讲稿.ppt》由会员分享,可在线阅读,更多相关《软件工程软件测试精备课讲稿.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程软件测试精第九章第九章 软件测试软件测试【本章重点】【本章重点】n软件测试方法和策略;软件测试方法和策略;n测试用例设计;测试用例设计;【教学目标】【教学目标】n了解软件测试流程和方法;了解软件测试流程和方法;n熟悉测试用例的概念和编写样式;熟悉测试用例的概念和编写样式;n掌握测试报告设计方法和书写标准;掌握测试报告设计方法和书写标准;n灵活运用黑盒测试、白盒测试的各种具体策略进行实灵活运用黑盒测试、白盒测试的各种具体策略进行实例设计。例设计。第九章第九章 软件测试软件测试n 9.1 9.1 软件测试的基本概念软件测试的基本概念n 9.2 9.2 软件测试方法软件测试方法 n 9.3
2、9.3 软件测试流程软件测试流程 n 9.4 9.4 测试用例的设计测试用例的设计 n 9.5 9.5 面向对象软件测试面向对象软件测试 n 9.6 9.6 软件测试相关文档软件测试相关文档 n 9.7 9.7 小结小结 n 9.8 9.8 习题习题 9.1 软件测试的基本概念软件测试的基本概念 n9.1.1 9.1.1 软件测试的定义软件测试的定义 通常对软件测试的定义有如下描述:软件测试是为了发现程序中的错误而执行程序的过程。具体说,它是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,以发现程序错误的过程。9.1 软件测试的基本概念软件测试的
3、基本概念9.1.2 9.1.2 软件测试的原则软件测试的原则 n根据这样的测试目的,软件测试的原则应该是:(1)应当把尽早地和不断地进行软件测试作为软件开发者的座右铭。坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些隐患,提高软件质量。(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。如果对测试输入数据没有给出预期的程序输出结果,那么就缺少了检验实测结果的基准,就有可能把一个似是而非的错误结果当成正确结果。9.1 软件测试的基本概念软件测试的基本概念(3)程序员应避免检查自己的程序。如果由别人来测试程序员编写的程序,
4、可能会更客观,更有效,并更容易取得成功。(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。合理的输入条件是指能验证程序正确的输入条件,而不合理的输入条件是指异常的,临界的,可能引起问题变异的输入条件。(5)充分注意测试中的群集现象。测试时不要以为找到了几个错误问题就已解决,不需继续测试了。应当对错误群集的程序段进行重点测试,以提高测试投资的效益。9.1 软件测试的基本概念软件测试的基本概念(6)严格执行测试计划,排除测试的随意性。对于测试计划,要明确规定,不要随意解释。(7)应当对每一个测试结果做全面检查。这是一条最明显的原则,但常常被忽视。必须对预期的输出结果明确定义,对实测
5、的结果仔细分析检查,抓住关键,暴露错误。(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。9.2 软件测试方法软件测试方法 9.2.19.2.1静态测试与动态测试静态测试与动态测试n1 1静态测试静态测试n静态测试包括代码检查、静态结构分析、代码质量度量静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。也可以借助软件工具自动进行。n2 2动态测试动态测试n选取定义域的有效值,或选取定义域外的无效值;选取定义域的有效值,或选取定义域外的无效值;n对已选
6、取值决定预期的结果;对已选取值决定预期的结果;n用选取值执行程序;用选取值执行程序;n执行结果与预期的结果相比,不吻合则说明程序有错。执行结果与预期的结果相比,不吻合则说明程序有错。9.2 软件测试方法软件测试方法9.2.2 9.2.2 黑盒测试黑盒测试1 1等价类划分法等价类划分法 n等价类测试可以按照以下步骤进行:n为每一个等价类规定一个唯一的编号;n设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这个过程,直至所有的有效等价类均被测试用例所覆盖;n设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这个过程,直至所有的无效等价类均被测试用例所覆盖。n针对是否对无效数据
7、进行测试,可以将等价类测试分为标准等价类测试和健壮等价类测试。9.2 软件测试方法软件测试方法2 2边界值分析法边界值分析法n边界值分析法是一种补充等价类划分法的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。在测试过程中,可能会忽略边界值的条件,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。9.2 软件测试方法软件测试方法3.3.因果图法因果图法 9.2 软件测试方法软件测试方法恒等:若恒等:若C1C1是是1 1,则,则E1E1也是也是1 1,否则,否则E1E1为为0 0。非:若非:
8、若C1C1是是1 1,则,则E1E1是是0 0,否则,否则E1E1为为1 1。或:若或:若C1C1或或C2C2或或C3C3是是1 1,则,则E1E1是是1 1,否则,否则E1E1为为0 0。与:若与:若C1C1和和C2C2都是都是1 1,则,则E1E1是是1 1,否则,否则E1E1为为0 0。9.2 软件测试方法软件测试方法4 4决策表法决策表法 n在所有的黑盒测试方法中,基于决策表的测试是最为严格、最具有逻辑性的测试方法。决策表是分析和表达多个逻辑条件下执行不同操作的情况下的工具。在程序设计发展的初期,决策表就已被当作编写程序的辅助工具了。由于它可以把复杂的逻辑关系和多种条件组合的情况表达得
9、既具体又明确。9.2 软件测试方法软件测试方法黑盒测试实例黑盒测试实例 n【测试问题1】:某软件的一个模块的需求规格说明书中描述:某软件的一个模块的需求规格说明书中描述:“对于功率大于对于功率大于60马力的机器或者维修记马力的机器或者维修记录不全的或者已经运行录不全的或者已经运行8年以上的机器应予以年以上的机器应予以优先维修处理优先维修处理”(这里假定(这里假定“维修记录不维修记录不全全”和和“优先维修处理优先维修处理”有严格的定义)。有严格的定义)。符合上述条件的软件输出信息符合上述条件的软件输出信息“优先维修处理优先维修处理”,其他情况输出信息,其他情况输出信息“N”。请建立该需求的因果图
10、和化简(合并规则)后请建立该需求的因果图和化简(合并规则)后的决策表,并设计相应测试用例。的决策表,并设计相应测试用例。9.2 软件测试方法软件测试方法【解答】:【解答】:n分析程序的规格说明,列出原因和结果,如表分析程序的规格说明,列出原因和结果,如表9-1所示。所示。n表表9-1 测试问题测试问题1的因果条件的因果条件n原因结果原因结果C1:大于:大于60马力马力e1:优先维修处理:优先维修处理C2:维修记录不全:维修记录不全e2:NC3:运行:运行8年以上将因果年以上将因果图转换成决策表(化简后),如表图转换成决策表(化简后),如表9-2所示。所示。n设计测试用例。根据表设计测试用例。根
11、据表9-2的决策表分析,可以设的决策表分析,可以设计出计出4个测试用例,得到如表个测试用例,得到如表9-3所示的测试用例。所示的测试用例。9.2 软件测试方法软件测试方法图9-4 测试问题1的因果图表9-2 测试问题1的决策表(化简后)规则选项1-45-678条件C1C2C3111-1-1-1-110000动作e1e2测试用例70马力;维修记录齐全;运行9年。50马力;维修记录不全;运行5年。50马力;维修记录齐全;运行9年。50马力;维修记录齐全;运行5年。9.2 软件测试方法软件测试方法 测试用例编号输入数据预期输出170马力;维修记录齐全;运行9年。优先维修处理250马力;维修记录不全;
12、运行5年。优先维修处理350马力;维修记录齐全;运行9年。优先维修处理450马力;维修记录齐全;运行5年。N表9-3 测试问题1的测试用例 9.2 软件测试方法软件测试方法9.2.39.2.3白盒测试白盒测试 1逻辑覆盖测试法 2路径分析测试法(1)控制流图(2)程序环路复杂性(3)独立路径测试的步骤包括3个方面:n导出程序控制流图;导出程序控制流图;n求出程序环形复杂度;求出程序环形复杂度;n设计测试用例;设计测试用例;9.2 软件测试方法软件测试方法白盒测试实例白盒测试实例n【测试问题【测试问题2 2】:】:运用逻辑覆盖的方法测试如下程序:运用逻辑覆盖的方法测试如下程序:1 1If(x1&
13、yIf(x1&y1)then1)then2 2 y=y*2 y=y*23 3If(x=3|z1)thenIf(x=3|z1)then4 4 y+y+9.2 软件测试方法软件测试方法n【解答】:【解答】:n运用逻辑覆盖的方法设计测试用例组,如表运用逻辑覆盖的方法设计测试用例组,如表9-4所所示。示。n表表9-4 测试问题测试问题2的测试用例组的测试用例组n逻辑覆盖方法测试用例组语句覆盖逻辑覆盖方法测试用例组语句覆盖x=3,y=1,z=2判断覆盖判断覆盖x=3,y=1,z=2x=1,y=1,z=1条件覆盖条件覆盖x=3,y=0,z=1x=1,y=1,z=2判断判断/条件覆盖条件覆盖x=3,y=1,
14、z=2x=1,y=0,z=1条件组合覆盖条件组合覆盖x=3,y=1,z=2x=3,y=0,z=1x=1,y=1,z=2x=1,y=0,z=1路径覆盖路径覆盖x=3,y=1,z=2x=3,y=0,z=1x=2,y=1,z=1x=1,y=1,z=1 9.2 软件测试方法软件测试方法n【测试问题3】:运用路径分析的方法测试如下程序:运用路径分析的方法测试如下程序:1main()23 int flag,t1,t2,a=0,b=0;4 scanf(“%d,%d,%dn”,&flag,&t1,&t2);5 while(flag0)6 7 a=a+1;8 if(t1=1)9 then 10 11 b=b+1
15、;12 flag=0;13 14 else 15 16 if(t2=1)17 then b=b-1;18 else a=a-2;19 flag-;20 2122 printf(“a=%d,b=d%n”,a,b);23 9.2 软件测试方法软件测试方法【解答】:【解答】:n程序的流程图如图程序的流程图如图9-5所示,程序的控所示,程序的控制流图如图制流图如图9-6所示,所示,其中其中R1、R2、R3和和R4代表控制流图代表控制流图的的4个区域。个区域。R4代代表的是控制流图外表的是控制流图外的区域,也算作控的区域,也算作控制流图的一个区域。制流图的一个区域。n图图9-5 测试问题测试问题3的流程
16、图的流程图 9.2 软件测试方法软件测试方法图9-6 测试问题3的控制流图 9.3 软件测试流程软件测试流程 9.3.1 9.3.1 软件测试总体流程软件测试总体流程n1软件开发的V模型 n2软件测试过程 9.3.2 9.3.2 软件测试的具体策略软件测试的具体策略 n1单元测试 n2集成测试n3确认测试n4系统测试n5验收测试 9.4 测试用例的设计测试用例的设计 1测试用例的定义2测试用例的特性3测试用例的编制要素4测试用例的设计原则5测试用例的设计过程 9.5 面向对象软件测试面向对象软件测试 1.面向对象软件测试(Object-Orient Test)概述。2面向对象分析的测试(OOA
17、 Test)。3面向对象设计的测试(OOD Test)。4面向对象编程的测试(OOP Test)。9.5 面向对象软件测试面向对象软件测试5面向对象的单元测试(OO Unit Test)。6面向对象的集成测试(OO Integrate Test)。7面向对象的系统测试(OO System Test)。9.6 软件测试相关文档软件测试相关文档 n计算机软件测试文档编制规范国计算机软件测试文档编制规范国家标准给出了更具体的测试文档编制家标准给出了更具体的测试文档编制建议,其中包括以下几个内容:建议,其中包括以下几个内容:n测试计划测试计划n描述测试活动的范围、方法、资源和描述测试活动的范围、方法、
18、资源和进度,其中规定了被测试的对象,被进度,其中规定了被测试的对象,被测试的特性、应完成的测试任务、人测试的特性、应完成的测试任务、人员职责及风险等。员职责及风险等。9.6 软件测试相关文档软件测试相关文档n测试设计规格说明测试设计规格说明n详细描述测试方法,测试用例设计以及详细描述测试方法,测试用例设计以及测试通过的准则等。测试通过的准则等。n测试用例规格说明测试用例规格说明n测试用例文档描述一个完整的测试用例测试用例文档描述一个完整的测试用例所需要的必备因素,如输入、预期结果、所需要的必备因素,如输入、预期结果、测试执行条件以及对环境的要求、对测测试执行条件以及对环境的要求、对测试规程的要
19、求等。测试用例的设计将在试规程的要求等。测试用例的设计将在5.3节将作详细介绍。节将作详细介绍。9.6 软件测试相关文档软件测试相关文档测试步骤规格说明n测试规格文档指明了测试所执行活动的次序,规定了实施测试的具体步骤。它包括两部分:测试规程清单和测试规程列表。测试日志n日志是测试小组对测试过程所作的记录。测试事件报告n报告说明测试中发生的一些重要事件。测试总结报告n上述测试文档中,前4项属于测试计划类文档,后3项属于测试分析报告类文档。9.7 小结小结 软件测试的原则:n应当把尽早地和不断地进行软件测试作为软件开发者的座右铭。n程序员应避免检查自己的程序。如果由别人来测试程序员编写的程序,可
20、能会更客观,更有效,并更容易取得成功。n在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。9.7 小结小结n充分注意测试中的群集现象。n严格执行测试计划,排除测试的随意性。n应当对每一个测试结果做全面检查。n妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。9.7 小结小结通常的逻辑覆盖测试方法有:n语句覆盖;n判断覆盖;n条件覆盖;n判断/条件覆盖;n条件组合覆盖;n路径覆盖;9.8 习题习题n简述软件测试的定义和原则。n简述软件测试与软件开发各阶段的关系。n介绍软件测试流程中的各阶段策略。n测试用例的设计原则是什么?n根据程序是否运行可以把软件测试方法分为哪两大
21、类?n黑盒测试的具体方法主要包括什么?n白盒测试中逻辑覆盖测试的具体方法包括什么?n画出面向对象测试模型的结构图。9.8 习题习题 某城市电话号码由三部分组成。它们的名称和内某城市电话号码由三部分组成。它们的名称和内容分别是:容分别是:n地区码:空白或三位数字;地区码:空白或三位数字;n前前 缀:非缀:非0或或1的三位数字;的三位数字;n后后 缀:缀:4位数字。位数字。n假定被测程序能接受一切符合上述规定的电话号假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。码,拒绝所有不符合规定的电话号码。9.8 习题习题1.根据该程序的规格说明,做出等价类的划分,并设计相应的测试方案。2.逻辑覆盖测试是白盒测试用例的重要设计方法,针对下面的程序段,采用逻辑覆盖测试中的路径覆盖完成测试用例设计(要求:画出程序流图,设计相应测试用例组)。【程序段】:1If(x100&y500)then2 score=score+13If(x=1000|z5000)then4 score=score+5此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢
限制150内