软件工程6软件测试ppt课件.ppt

上传人:本田雅阁 文档编号:3301856 上传时间:2019-08-09 格式:PPT 页数:53 大小:1.03MB
返回 下载 相关 举报
软件工程6软件测试ppt课件.ppt_第1页
第1页 / 共53页
软件工程6软件测试ppt课件.ppt_第2页
第2页 / 共53页
软件工程6软件测试ppt课件.ppt_第3页
第3页 / 共53页
软件工程6软件测试ppt课件.ppt_第4页
第4页 / 共53页
软件工程6软件测试ppt课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《软件工程6软件测试ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程6软件测试ppt课件.ppt(53页珍藏版)》请在三一文库上搜索。

1、软件工程与项 目管理 第6章 软件测试 掌握:白盒测试、黑盒测试、测试用例、逻辑 覆盖、等价类划分、边界值分析、错误推测法 、因果图法、单元测试、集成测试、确认测试 、系统测试、Alpha测试和Beta测试。 6.1 软件测试概 述 6.1.1 软件测试的概念 软件测试是在软件投入运行之前对软件需求分析、设 计规格说明及编码的最终审查,是软件质量保证的关 键步骤,是为了发现错误而执行软件的过程。 6.1.2 软件测试的目的 软件测试的目的就是为了发现错误并纠正错误,可以 将其总结为以下几点: (1)测试是一个程序的执行过程,它的目的在于发 现错误。 (2)一个好的测试用例极可能发现至今未发现的

2、错 误。 (3)一个成功的测试是发现了至今末发现的错误的 测试。 6.1.3 软件测试的原则 (1)测试前要认定被测试软件有错,不要认为软件没有 错。 (2)要避免由程序编写者自己进行测试。 (3)要注意测试用例的合理设计和选择,预期结果的定 义要有利于错误的检测。 (4)软件测试要以软件需求规格说明书为标准。 (5)测试是相对的,不能穷尽所有的测试,要根据人力 物力安排测试。 (6)应当制定严格的测试计划。 (7)妥善保存测试计划与测试用例,为以后的维护提供 方便。 6.2 软件测试方 法 6.2.1 软件测试方法分类 1.按测试步骤与策略分类 可分为单元测试、集成测试、确认测试、系统测试

3、、测试和测试。 2.按测试技术分类 可分为白盒测试与黑盒测试。 3.按测试的环境分类 可分为静态测试与动态测试。 4.按测试的功能分 可分为配置测试、兼容性测试、语言测试、易用性 测试、文档测试、特殊测试等。 6.2.2 白盒测试 白盒测试是把程序看做一个透明的盒子,能够了解它的内部结构 和处理过程,即对程序的所有逻辑路径进行测试,检查是否都能 按预定要求正确工作。 用白盒测试方法不可能进行完全测试,因为企图遍历所有的路径 也是不可能做到的。 图6-1 一个程序的控制流程图 6.2.3 黑盒测试 黑盒测试法是把程序看成一个黑盒子,不考虑程序的内部逻辑结构和处 理过程,只着眼于程序的外部特性 很

4、显然,因为企图遍历所有的输入数据是不可能做到的,所以用黑盒测 试法也不可能进行完全的测试。 图6-2 一个简单的程序模型 6.3 测试用例 6.3.1 测试用例概述 测试用例是为特定目的而设计的一组测试输入 、执行条件和预期的结果。测试用例是执行的 最小实体。 以在图6-1的程序模型为例,输入变量为A、B 、C,输出变量为b,假设程序体为: b = A + B + C 则一个可能的测试用例为: A=1,B=2,C=3,b=6 “A=1,B=2,C=3”为测试输入,“b=6”为预期结果, 没有执行条件。 在实际测试工作中常存在以下误区: (1)好用例就是能发现到目前为止没有发现的缺陷 的用例。

5、(2)测试用例应该详细记录所有的操作信息,即使 一个以前没有接触过此系统的人员也能进行测试。 6.3.2 逻辑覆盖 1.语句覆盖 语句覆盖就是选择足够多的测试用例,使得被测程 序中的每个可执行语句至少执行一次。这是一种最基 本的覆盖要求。 例如,某PASCAL源程序如下: IF (A1) AND (B=0) THEN X:= X/A; IF (A=2) OR (X1) THEN X:=X+1; 为方便问题的讨论,图6-3给出了该段程序的流程图 ,其中共有两个判定,将判定“(A1) AND (B=0)”记为 P1,判定“(A=2) OR (X1)”记为P2;有4个条件,即 “A1”记为C1,“B

6、=0”记为C2,“A=2”记为C3,“X1” 记为C4;有5条路径,分别用a、b、c、d、e表示。 图6-3 本节例子程序的流程图 为了使每个语句都执行一次,程序执行的路径应该是 acbed”,b、,d这两个流程无论条件是否成立都会经 过。为此,可以设计以下一组测试用例: A2,B=0,X=5,此时,覆盖路径为acbed 。 2.判定覆盖 判定覆盖就是选择足够的测试用例,使得程序中的 每个判定至少都获得一次“真”值和一次“假”值,从而使 得程序的每个分支至少都执行一次。 对于“1.语句覆盖”中的例子,如果能够测试路径 acbed和abd或acbd和abed,就可满足判定覆盖 要求,为此,可设计

7、以下两组测试用例: (1)A=3,B=0,X=1,此时,P1为T,P2为F。 (2)A=2,B=1,X=1,此时,P1为F,P2为T。 3.条件覆盖 条件覆盖就是要设计足够多的测试用例,使被测试 程序中的每个判断语句中的每个逻辑条件的可能值至 少被满足一次。 仍以“1.语句覆盖”中的例子为例,为满足条件覆盖的 要求,必须使条件C1、C2、C3、C4都能取到“真”值 和“假”值,为此,可设计以下测试用例: (1)A=0,B=0,X=1,此时,C1为F,C2为T,C3 为F,C4为F,P1为F,P2为F,覆盖路径为abd。 (2)A=2,B=1,X=2,此时,C1为T,C2为F,C3 为T,C4为

8、T,P1为F,P2为T,覆盖路径为abed。 4.判定/条件覆盖 设计足够多的测试用例,使得被测试程序中的每个 判断本身的判定结果(真/假)至少满足一次,同时, 每个逻辑条件的可能值也至少满足一次。 (1)A=0,B=0,X=1,此时,C1为F,C2为T,C3 为F,C4为F,P1为F,P2为F,覆盖路径为abd。 (2)A=2,B=1,X=2,此时,C1为T,C2为F,C3 为T,C4为T,P1为F,P2为T,覆盖路径为abed。 (3)A=2,B=0,X=2,此时,C1为T,C2为T,C3 为T,C4为T,P1为T,P2为T,覆盖路径为acbed。 5.条件组合覆盖 条件组合覆盖要求设计足

9、够多的测试用例,使得被 测试程序中的每个判断的所有可能条件取值的组合至 少被满足一次。 (1)A=0,B=0,X=1,此时,C1为F,C2为T,C3 为F,C4为F,P1为F,P2为F,覆盖路径为abd。 (2)A=2,B=1,X=2,此时,C1为T,C2为F,C3 为T,C4为T,P1为F,P2为T,覆盖路径为abed。 (3)A=2,B=0,X=1,此时,C1为T,C2为T,C3 为T,C4为F,P1为T,P2为T,覆盖路径为acbed。 (4)A=0,B=1,X=2,此时,C1为F,C2为F,C3 为F,C4为T,P1为F,P2为T,覆盖路径为abed。 6.路径覆盖 路径覆盖要求设计足

10、够多的测试用例,使得被测试 程序中的每条路径至少被覆盖一次。 (1)A=0,B=0,X=1,此时,C1为F,C2为T,C3 为F,C4为F,P1为F,P2为F,覆盖路径 abde。 (2)A=2,B=1,X=2,此时,C1为T,C2为F,C3 为T,C4为T,P1为F,P2为T,覆盖路径abe。 (3)A=2,B=0,X=1,此时,C1为T,C2为T,C3 为T,C4为F,P1为T,P2为T,覆盖路径acbe。 (4)A=3,B=0,X=1,此时,C1为T,C2为T,C3 为F,C4为F,P1为T,P2为F,覆盖路径acde。 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条 件覆盖以及路径覆

11、盖对于程序逻辑覆盖的要求是由弱 到强的,在实际测试工作中,应根据具体情况选择适 合的逻辑覆盖测试技术。 逻辑覆盖是一种白盒测试方法。 6.3.3 等价类划分 等价类划分方法是把被测试的程序的所有可能的输入 数据(有效的和无效的)划分成若干个等价类,从而 把无限的随机测试变成有针对性的等价类测试 等价类划分属于黑盒测试方法 等价类划分的测试一般分为两步进行: 第一步:划分等价类并给出定义。 第二步:选择测试用例。 划分初等价类以后,根据等价类设计测试用例时可 以按照以下两个步骤进行: (1)设计一个新的测试用例,以尽可能多地覆盖尚 未覆盖的有效等价类,重复这一步骤直到所有有效等 价类都被覆盖为止

12、。 (2)设计一个新的测试用例,使它覆盖一个且只覆 盖一个尚未覆盖的无效等价类,重复这一步骤直到所 有无效等价类都被覆盖为止。 注意,为避免因测试用例发现一个错误而掩盖其他 错误的情况发生,应该是每个测试用例只覆盖一个无 效等价类。 例如,某城市的电话号码由3部分组成,分 别是: (1)地区码:空白或3位数字; (2)前缀:非“0”或“1”开头的3位数; (3)后缀:4位数字。 假定被调试的程序能接受一切符合上述规定 的电话号码,拒绝所有不符合规定的号码,就 可用等价分类法来设计它的测试用例。 第一步:划分等价类,包括4个有效等价类,11个无效等价类 ,表6-1列出了划分的结果。在每一等价类之

13、后加有编号,以便 识别。 输入条件有效等价类无效等价类 地区码空白(1),3位数字(2)有非数字字符(5),少于3位数字(6),多 于三位数字(7) 前缀从200到999之间的3位 数字(3) 有非数字字符(8),起始位为“0”(9), 起始位为“1”(10),少于3位数字 (11),多于3位数字(12) 后缀4位数字(4)有非数字字符(13),少于4位数字(14) ,多于4位数字(15) 第二步:确定测试用例。表6-1中有4个有效 等价类,可选择如表6-2所示的两个测试用例 。 测试数据范围期望结果 ( ) 2762345等价类(1),(3),(4)有效 (635) 8059321等价类(2

14、),(3),(4)有效 对11个无效等价类,可选择如表6-3所示的 11个测试用例。 测试数据范围期望结果 (20A) 1234567无效等价类(5)无效 (33 ) 2345678无效等价类(6)无效 (7777) 3456789无效等价类(7)无效 (777) 34A6789无效等价类(8)无效 (234) 0456789无效等价类(9)无效 (777) 1456789无效等价类(10)无效 (777) 346789无效等价类(11)无效 (777) 23456789无效等价类(12)无效 (777) 345678A无效等价类(13)无效 (777) 345678无效等价类(14)无效 (

15、777) 34556789无效等价类(15)无效 6.3.4 边界值分析 经验表明,程序在处理边界值时最容易发生错误,例 如,许多程序错误出现在下标、数据结构和循环等边 界附近。因此,设计使程序运行边界值的测试方案, 可能会暴露出更多的错误。边界值分析方法正是根据 这一思路而提出的,它通过使程序在边界值处运行, 以判断程序是否存在错误。 按照边界值分析法,应该选取刚好等于、稍小于和稍 大于等价类边界值的数据作为测试数据,而不是选取 每个等价类内的典型值作为测试数据。 在使用边界值分析方法设计测试用例时,可以参照以下 : (1)如果输入条件规定了值的范围,可以选择正好等于 边界值的数据作为合理值

16、的测试用例,同时还要选择 刚好越过边界值的数据作为不合理值的测试用例。例 如,输入值的范围是1,100,可取0、1、100、101 等值作为测试数据。 (2)如果输入条件指出了输入数据的个数,则按最大个 数、最小个数、比最小个数少1、比最大个数多1等情 况分别设计测试用例。例如,一个输入文件可包括1 255个记录,则分别设计有1个记录、255个记录,以 及0个记录的输入文件的测试用例。 (3)对每个输出条件分别按照以上(1)或(2)的原则 确定输出值的边界情况。例如,一个学生成绩管理系 统规定,只能查询9598级大学生的各科成绩,既应 设计测试用例测试此查询范围内的某一届或四届学生 的成绩,还

17、需设计查询94级、99级学生成绩的测试用 例(不合理输入等价类)。 (4)如果程序的规格说明给出的输入或输出域是个有序 集合(如顺序文件、线性表、链表等),则应选取集 合的第一个元素和最后一个元素作为测试用例。 6.3.5 错误推测法 在测试程序时,人们可能根据经验或直觉推 测程序中可能存在的各种错误,从而有针对性 地编写检查这些错误的测试用例,这就是错误 推测法。 例如,当对一个排序程序进行测试时,可先 用边界值分析法设计测试用例: (1)输入表为空表。 (2)输入表中仅有一个数据。 (3)输入表为满表。 根据排序问题的具体描述,使用错误推测法 可以补充以下测试用例: (1)输入表已经排序。

18、 (2)输入表的排序恰与所要求的顺序相反。 (3)输入表中的所有数据全部相同。 此外,经验证明,在一段程序中已经发现的 错误数量往往与尚未发现的错误数量成正比。 因此,在进一步测试时要着重测试那些已发现 较多错误的程序段。 6.3.6 因果图法 考虑输入条件之间的相互组合,程序可能会产生一些 新的错误,但要检查输入条件的组合不是一件容易的 事情,即使把所有输入条件划分成等价类,它们之间 的组合情况也相当多。因此必须考虑采用一种对于多 种条件的组合相应产生多个动作的形式来设计测试用 例,这就需要利用因果图(逻辑模型)。 因果图方法用4种符号分别表示了规格说明中的4种 因果关系,如图6-4所示,左

19、结点表示输入状态(或称 原因),右结点表示输出状态(或称结果)。ci表示 原因,通常置于图的左部;ei表示结果,通常在图的 右部。ci和ei均可取值0或1,0表示某状态不出现,1 表示某状态出现。 图6-4 因果图法表示的4种因果关系 6.4 软件测试策 略 6.4.1 测试流程与测试计划 测试计划一般由项目负责人制定,一般来说,应包括以下几方面: 1.项目基本情况 这部分应包括产品的一些基本情况介绍。例如,产品的运行平台和应 用领域,产品的特点和主要功能模块等。对于大的测试项目,还要包括 测试的目的和侧重点。 2.测试任务 对测试任务进行简要描述,主要包括测试的目标、程序运行环境、测 试要求

20、等内容。 3.测试策略 这是整个测试计划的重点所在,既要描述如何公正、客观地开展测试 ,又要考虑模块、功能、整体、系统、版本、压力、性能、配置和安装 等各个方面的测试用例。应尽可能地考虑到细节,越详细越好,并制作 测试记录文档的模板,为即将开始的测试做准备。还应详细、具体地描 述测试用例的目的、输入数据、预期输出、测试步骤、进度安排、条件 等。 4.测试组织 测试的组织首先要考虑测试的方法及测试用例的选择原则;其次对测 试资源进行配置,包括测试人员、测试环境、设备等;最后要制定调试 进度安排,即计划表。 5.测试评价 主要是说明所进行的各项测试的范围、局限性及评价测试结果的准则 。 通常一个软

21、件是由若干个子系统构成的,每个子系统又由许多模块组 成。与开发过程类似,测试过程也必须分步骤进行,只有在前一个步骤 完成后,才能进入下一个步骤的测试。具体来说,软件的测试通常分为4 个阶段:单元测试、集成测试、确认测试与系统测试,如图6-5所示。 图6-5 软件测试流程图 6.4.2 单元测试 单元测试也称模块测试,它是软件测试的第一步,通 常在编码阶段就开始进行。单元测试以详细设计为指 南对模块进行正确性检验,其目的在于发现模块内部 可能存在的各种错误。 单元测试的内容主要有以下5个方面: 1模块接口测试 2局部数据结构测试 3路径测试 4错误处理测试 5边界测试 6.4.3 集成测试 实践

22、表明,一些模块虽然在单独运行时能正常工作, 但并不能保证连接起来也能正常工作。程序在某些局 部不能反映出来的问题,在全局上可能会暴露出来, 影响系统功能的实现。因此,有必要在单元测试的基 础上,将所有模块按照设计要求组装成为子系统或系 统,随后进行测试,这样的测试方法即为集成测试。 集成测试的策略有很多种,如自底向上集成测试、自 顶向下集成测试、Big-Bang集成测试、三明治集成测 试、核心集成测试、分层集成测试、基于使用的集成 测试等。 6.4.4 确认测试 确认测试又称为有效性测试。在整体测试通过之后, 应开始对软件进行有效性测试,通常采用黑盒测试法 来验证软件功能是否与用户要求相一致。

23、因此,确认 测试的测试计划和测试过程的设计都是用来验证软件 是否达到了功能要求,文档资料是否正确、完整,以 及软件的可移植性、兼容性和可维护性等性能是否满 足要求。 确认测试可以包括以下测试内容:安装测试、功能测 试、可靠性测试、安全性测试、时间及空间性能测试 、易用性测试、可移植性测试、可维护性测试、文档 测试。 6.4.5 系统测试 系统测试是将已经确认的软件与计算机硬件、外设、网络等其他元 素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通 过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地 方。 1. 恢复测试 恢复测试用于测试计算机系统在出现错误后是否具有在一

24、定时间内 恢复并继续运行的能力。 2安全性测试 安全性测试用于测试计算机系统内的保护机制能否保护系统不受到 非法侵入。 3压力测试 无论是白盒测试,还是黑盒测试都对软件正常的程序与性能进行检查 ,而压力测试正好相反,它是测试软件对非正常情况的处理能力。 4性能测试 性能测试就是要测试软件在集成系统中的运行性能。 6.4.6 Alpha测试和Beta测试 Alpha测试是指软件开发公司组织内部人员模拟各类 用户对即将面市的软件产品(称为Alpha版本)进行 测试,试图发现并修正错误。 Beta测试是指软件开发公司组织各方面的典型用户在 日常工作中实际使用Beta版本,并要求用户报告异常 情况、提

25、出批评意见,然后软件开发公司再对Beta版 本进行改错和完善。 6.4.7 软件测试自动化 软件测试自动化是一项让计算机代替测试人员进 行软件测试的技术,它可以将测试人员从繁琐和重复 的测试活动中解脱出来,专心从事有意义的测试设计 等活动。如果采用自动比较技术,还可以自动完成测 试用例执行结果的判断,从而避免了人工比对存在的 疏漏问题。设计良好的自动化测试,在某些情况下可 以实现“夜间测试”和“无人测试”。在大多数情况下,软 件测试自动化可以减少开支,增加有限时间内可执行 的测试数量,在执行相同数量测试时节约测试时间。 6.4.8 测试分析报告 测试分析报告一般包含以下内容: (1)项目基本情

26、况介绍。 (2)测试计划的执行情况。主要说明测试的组织情 况、每个项目的测试结果等。 (3)测试评价。说明经过测试所表明的软件具有的 能力、存在的缺陷及限制,以及可能对软件运行带来 影响、弥补缺陷的建议,最后说明测试结论,即能否 通过。 6.5 软件调试技 术 6.5.1 调试步骤 (1)从错误的外部表现(如输出信息)入手,确定出错 的大致位置。 (2)研究相关部分的程序,找出错误的内在原因。 (3)修改设计与代码,以排除错误。 (4)重复进行暴露这个错误的测试,在测试过程中观察 两方面内容:是否排除了该错误,以及是否引进了新 的错误。 (5)若所做的修改无效,则撤销修改,恢复到修改前的 状态。 6.5.2 调试方法 1简单的调试技术 1)在程序中插入打印语句 2)运行部分程序 3)借助调试工具 2回溯策略 回溯法能成功地用于程序的调试。方法是从可能出现错误的地 方开始人工地沿控制流程往回追踪,直至发现出错的根源。 3排除策略 排除法基于归纳和演绎原理,采用“分治”的概念,首先收集与 错误出现有关的所有数据假想一个错误原因,用这些数据证明 或反驳它;或者一次列出所有可能的原因,通过测试一一排除。 只要某次测试结果说明某种假设己呈现端倪,就应立即精化数据 ,找出其错误根源。 第6章 结束 谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1