第6章 软件测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.1、软件测试的概念
测试的原则 3)程序员应该尽量避免检查自己编写的代码。 测试工作需要严格的工作作风,程序员在测试 自己编写的代码时往往会带有一些倾向性,使 得他们工作中常常出现一些疏漏。而且程序员 对设计规格说明书的理解错误而引入的错误更 是难于发现。
6.1、软件测试的概念
测试的原则
6.1、软件测试的概念
测试阶段的文档 软件测试工作所产生的文档、程序、服务、以 及相关的文件总和称之为软件测试产品 。 测试配置包括:测试计划;测试方案(包括测 试输入数据、测试的功能、测试预期结果); 文档审查项列表;代码审查项列表;软件测试 报告;软件问题报告;软件变更报告;软件测 试日志。
Biblioteka Baidu
引言
因为开发工作的前期不可避免地会引入错误,测试的根 本目的是为了发现和改正错误,这对于某些涉及人的生命安 全或重要的军事、经济目标的项目显得尤其重要。 1963年美国飞往火星的火箭爆炸,造成1000万美元的 损失。原因是FORTRAN程序: DO 5 I=1,3 误写为:DO 5 I=1 . 3 1967年苏联“联盟一号”载人宇宙飞船在返航时,由于 软件忽略一个小数点,在进入大气层时因打不开降落伞而 烧毁。
测试的原则 10)严格执行测试计划。在测试之前应该有明 确的测试计划,内容包括:要测试的软件功能 和内容、测试用例和预期结果、测试的进度安 排、需要的工具和资源、测试控制方式和过程 等。 11)做好测试记录,为统计和维护提供基础数 据
6.1、软件测试的概念
软件测试的对象
软件测试是否就是程序测试? 软件测试应贯穿于软件定义与开发的整个期间。 需求分析、概要设计、详细设计、程序编码等各 阶段所得到的文档资料,包括需求规格说明、概 要设计规格说明、详细设计规格说明以及源程序, 都应成为软件测试的对象。
chapter__7
29
6.2 黑盒测试和白盒测试方法
黑盒测试--基于需求的测试
30
chapter__7
6.2 黑盒测试和白盒测试方法
白盒测试法—介绍二种方法 语句覆盖√ 判定覆盖√ 条件覆盖 判定/条件覆盖 条件组合覆盖
覆盖标准 :
语句覆盖
使得程序中每个语句至少都能被执行 一次。
6.1软件测试的概念
测试的工作量 一般性软件其测试工作量大约占整个开发工作 量的40% 系统软件或关系到人的生命财产安全的重要软 件,其测试工作量通常可能达到整个开发工作 量的3—5倍
6.1、软件测试的概念
测试的目标 设计优秀的测试用例:以最小的代价、在最短的时间内, 尽可能多地发现软件中的错误 。 G.J.Myers在<软件测试技巧>给出了测试的观点: 测试是为了寻找错误而运行程序的过程。 与测试相关的三个重要观点: 1.测试是为了证明测试有错,而不是证明程序无错; 2.一个好的测试用例是指很可能找到迄今为止尚未 发现 的错误的测试; 3.一个成功的测试是揭示了迄今为止尚未发现的错误 的 测试。
6.1、软件测试的概念
根据是否要执行被测程序:分为静态测试和动态测 试 静态测试:主要通过代码审查和静态分析,检查源 代码中存在的问题。 过程:代码审查由有经验的程序设计人员根据软件 详细设计说明书,阅读程序来发现源程序中类型、 引用、参数传递、表达式等不必运行程序就能够发 现的错误。 特点:这种方法不需要专门的测试工具和设备,一 旦发现错误就能定位,但是此方法具有一定的局限 性。静态分析主要对程序进行控制流分析、数据流 分析、接口分析和表达式分析等
1、软件测试的定义 从广义上讲是指软件产品生存周期内所有的检 查、评审和确认活动 从狭义上讲,软件测试是为了发现错误而执行 程序的过程 软件测试是根据软件开发各阶段的规格说明和 程序内部结构而精心设计的一批测试用例,用这 些测试用例运行程序,以发现程序错误的过程。 一个测试用例是一组输入数据及其对应的预期输 出结果。
承上启下
编码阶段的主要任务? 编码与单元测试,都是软件实现阶段的 主要任务 所谓编码,就是写源程序代码
软件工程对编码研究的主要问题
软件项目的特性; 编码的效率 编码的质量 编程的风格
开发路线图
可 行 性 研 究
需 求 分 析
软件设计
软 件 编 码
软 件
测 试
维 护
软件工程导论
覆盖标准
使得程序中每个判定至少为TRUE 或FALSE各一次。
a
判断 N
判定覆盖
A=3,B=0,X=1 (沿路径acd执行) ,x=1/3+1 A=2,B=1,X=3 (沿路径abe执行), x=4
判定覆盖
课堂练习
1 2 3 4 If (x>1&& y=1) z=z*2 If (x=3|| z>1) y++ ①
6.2 黑盒测试和白盒测试方法
语句覆盖
从上例可看出,语句覆 盖实际上是很弱的,如果 第一个条件语句中的AND错 误地编写成OR,上面的测 试用例是不能发现这个错 误的;又如第三个条件语 句中X>1误写成X>0,这 个测试用例也不能暴露它, 此外,沿着路径abd执行时, X的值应该保持不变,如果 这一方面有错误,上述测 试数据也不能发现它们。
为使程序中每个语句至 少执行一次,只需设计一 个能通过路径ace的例子就 可以了,例如选择输入数 据为: A=2,B=0,X=3 就可达到“语句覆盖” 标准。
语句覆盖
6.2 黑盒测试和白盒测试方法
语句覆盖:
输入 ID a b x
预期输出 通过路 径 x 语句覆 盖
LC-001
3
1
1
3
ace
100%
根据上面的观点,你对软件测试有什么样的理解?
6.1、软件测试的概念
测试的目标 软件测试要设法使软件发生故障,暴露软件错

测试的“成功”与“失败”
能够发现错误的测试是成功的 测试,否则是失败的测试。
软件测试横跨两个阶段。
例:测试计算器程序 •加法测试
1+0= …… 1+99999999999999999999999999999999= 2+0= …… 2+99999999999999999999999999999999= …… 3+99999999999999999999999999999999+999999999999999999999999999999 99= 1.0+0.1= 1.0+0.2= ……
6.2 黑盒测试和白盒测试方法
语句覆盖
【优点】 :可以很直观地从源代码得到测试用 例,无须细分每条判定表达式。 【缺点】 :由于这种测试方法仅仅针对程序逻 辑中显式存在的语句,但对于隐藏的条件是无 法测试的。如在多分支的逻辑运算中无法全面 的考虑。语句覆盖是最弱的逻辑覆盖。
判定覆盖
判断 M a
第六章 软件测试
本章要点
1)软件测试的概念
2)黑盒测试和白盒测试方法 3)单元测试过程 4)集成测试,系统测试,验收测试的基本过程
要求
掌握 了解 理解 了解
提问
什么是测试? 玩游戏是不是对游戏软件的测试?
#include "stdio.h" main() {char c; int letters=0,space=0,digit=0,others=0; printf("please input some characters\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else others++; } printf("all in all:char=%d space=%d digit=%d others=%d\n",letters, space,digit,others); }
静态测试
在知道程序内部 结构的情况下采 用的测试技术或 策略。
动态测试
在不知道程序内部结 构,只知道程序规格 的情况下采用的测试 技术或策略。
chapter__7
黑 盒 测 试
白 盒 测
灰 盒
测 试

黑盒测试 方法和白 盒测试方 法综合的 28 策略。
6.2 黑盒测试和白盒测试方法
白盒测试--基于代码的测试
4)在设计测试用例时,应该包括有效的、期望的 输入情况,也要包括无效的和不期望的输入情况。 即能够验证程序正常运行的合理输入,也能够验证 对异常情况处理的不合理输入数据以及临界数据输 入。 5)在测试时,人们常常过多地考虑合法和期望的输 入条件,以检查程序是否做了它应该做的事情,而 忽视了不合法的和预想不到的输入条件。 6)用户在使用系统时,输入一些错误指令和参数是 经常发生的,如果软件遇到这种情况不能做出适当 的反应,给出相应的提示信息,可能会误导用户,甚 至会造成严重损失。
6.1、软件测试的概念
测试的难点
测试用例是设计者对测试对象的理解,因此,其质 量很大程度上取决于设计者的分析、理解和设计能 力。这是一种缺乏指导性方法的、不易制订标准规 范的、需要“技巧”的设计活动。 开发组织与测试组织难一很好的配合。长期以来, 大都数软件开发人员认为测试活动是对开发人员劳 动成果的不断“挑剔”。但实际上,测试工作的出 发点是确保开发人员的劳动成果成为可接收的、高 品质的软件产品。 有效的测试工作需要投入足够的人力和物力,需要 对工作的难度和消耗有充分的估计。
•减法测试、乘法测试、除法测试、求平方根、百分数、倒数
6.1、软件测试的概念
测试的原则
1)应该把测试贯穿在整个开发过程之中。事实 上从需求分析阶段开始,每个阶段结束之前都要 进行阶段审查,目的是尽早发现和纠正错误。 2)每个测试用例都应该包括测试输入数据和这 组数据输入作用下的预期输出结果。在实际操作 中可以列出一张电子表格,包括每个测试用例的 编号、类型、输入数据、预期输出结果、实际输 出结果、出错原因分析。
6.1、软件测试的概念
测试的类型
单元测试:针对模块代码的测试,测试的粒度最小 集成测试:把经过单元测试的模块组合在一起,重 点测试模块之间的接口。 系统测试:系统集成后,对整个系统包括硬件等环 境的综合测试。 验收测试:以用户为主,对软件功能、性能进行全 面测试。验证软件是否满足需求规格说明书的要求, 检查所有的配置成份是否齐全。
引言
由于软件是一种高密集度的智力产品,比一般的 硬件产品更复杂和难以控制。虽然在前阶段的开发 过程中,采取了相应的措施,但仍然不可避免地会 存在错误。
还得提醒一下同学们:软件测试是很困难的,必 须要有一整套的方法和技术进行指导。
6.1、软件测试的概念
1、测试的定义 测试的英文单词 为Testing,即检验或考试之意。
6.1、软件测试的概念
测试的原则 8)软件中遗留的错误数量与已经发现的错误 数量成正比。根据这个规律对测试中发现错误 成堆的模块更要仔细测试。例如,在某个著名 的操作系统中,44%的错误仅与4%的模块有关。 9)回归测试的关联性要特别引起注意,修改 一个错误而引起更多错误的现象并不少见。
6.1、软件测试的概念
6.1、软件测试的概念
测试的类型 动态测试:在指定的环境上运行被测程序,输 入测试数据,获得测试结果,将获得的测试结 果与预期的结果进行比较,发现程序的错误 。 过程:设计测试用例,运行被测程序。 特点:需要有程序的运行环境,必要时要编写 测试驱动程序和桩程序。
6.1、软件测试的概念
测试的类型 从测试内容上又划分为如下类型:P287
本章要点
1)软件测试的概念
2)黑盒测试和白盒测试方法 3)单元测试过程 4)集成测试,系统测试,验收测试的基本过程
要求
掌握 了解 理解 了解
不实际运行程序,而是通过检查 和阅读等手段来发现错误并评估 代码质量的软件测试技术。也称 为静态分析技术。
软件测试技术
实际运行程序,并通 过观察程序运行的实 际结果来发现错误的 软件测试技术。
【例】对严重智障人的测试。要初步测试一个人的智力 是否存在严重障碍,可以出如下算术测试题: 1 + 2=? 2 + 2=? 2 × 2 =? 如果他的回答全部正确,就可以初步断定不是严重智力 障碍,反之,可能是智力严重障碍。 所谓测试的目的是发现被测试对象具有某种属性或者存 在某些问题。
6.1软件测试的概念
相关文档
最新文档