第五章软件测试工程.ppt

上传人:本田雅阁 文档编号:2561549 上传时间:2019-04-08 格式:PPT 页数:192 大小:813.01KB
返回 下载 相关 举报
第五章软件测试工程.ppt_第1页
第1页 / 共192页
第五章软件测试工程.ppt_第2页
第2页 / 共192页
第五章软件测试工程.ppt_第3页
第3页 / 共192页
亲,该文档总共192页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

1、第五章 软件测试工程,概述 软件开发过程必须伴有质量保证活动。 软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。,软件产品最大的成本是检测软 件错误、修正软件错误的成本。 在整个软件开发中,测试工作量 一般占30%40%,甚至50%。 在人命关天的软件(如飞机控制、核反应堆等)测试所花费的时间往往是其它软件工程活动时间之和的三到五倍,软件测试是为了发现错误而执行程序的过程,或者说,软件测试是根据软件的规格说明(例如软件的功能、性能、运行环境等要求)以及程序内部结构而设计一批测试用例,并利用这些测试用例去运行程序,以发现软件错误的过程。,测试用例是为了测试软件而设计的一组数据

2、,它应该包括输入的数据和预期输出的结果两部分。 测试用例=输入数据+预期结果,软件测试背景,软件是人编的所以不完美 实例: Intel的pentium处理器 1994年浮点除法缺陷 2000年8月28日,1.13MHZ处理器一个可能导致运行程序被挂起的执行指令问题 1999年12月3日,美国航天局火星极地登陆飞船失踪 1991年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度 千年虫:世界各地解决2000年错误超过数亿美元,质量管理领域权威人物J.M.Juran将质量定义为“决定产品性能和满意程度的特征”, 测试注重于产品的满意度。 测试应针对这样一种情况:软件产品在一些特定的范围内不

3、能满足客户的合理要求。 通过测试过程可以评定质量风险(可能的错误),了解被测试系统中存在的错误模式(观察到的错误症状)。,软件测试是一个查找错误的过程,所以软件测试只能证明错误的存在,而不是证明程序无错,不能保证经过测试的程序一定没有错误。 软件测试仅仅是一个手段,根本的目的是为了纠错,即纠正软件中的错误,从而提高软件的质量。 测试不可能发现所有错误,只能在有限的时间和经济条件下,尽可能地发现错误。,质量控制技术,质量控制活动分类,开发方法学,配置管理,验证技术,评 审,正确性验证,性能调试,组件测试,集成测试,系统测试,原子事务,模块冗余性,检 错,质量控制,避免错误,容 错,调 试,测 试

4、,测试的目的与地位 G.J.Myers在软件测试技巧中认为: 1.测试是为了寻找错误而运行程序的过程。 2.一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试。 3.一个成功的测试是揭示了迄今为止尚未发现的错误的测试。,E.W.Dijkstra 指出: “程序测试能证明错误的存在,但不能证明错误不存在。” 测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。,把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的。 软件测试要设法使软件发生故障,暴露软件错误。 测试的“成功”与“失败”:能够发现错误的测试是成功的测试,否

5、则是失败的测试。,“测试的目的是说明程序正确地执行它应有的功能” 这种说法正确吗? 例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。 为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6), 程序都能给出正确结果,是否就可认为程序是正确的? (两边之和必须大于第三边),难以说清的软件缺陷,古谚: “一片树叶飘落在森林中没有人听见,谁能说它发出了声音?”,由于不能报告没有看见的问题,因此,没有看见就不能说存在软件缺陷。,如果软件中的问题没有人发现,那么它算不算软件缺陷

6、?”,只有看到了,才能断言软件缺陷,尚未 发现的软件缺陷只能说是未知软件缺陷。,眼 见 为 实,测试原则 (1)所有的测试都应追溯到用户需求 最严重的错误(从用户角度)是那些导致软件无法满足需求的错误。 程序中的问题根源可能出现在开发前期的各阶段,纠正错误也必须追溯到前期工作。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求分析,概要设计,详细设计,编 码,单元测试,集成测试,确认测试,系统测试,开发前期出现错误的扩展,计划,需求 分析,设 计,编 码,测 试,A,A,B,软件生存期各阶段间需保持的正确性,用户要求,用户: 我要什么?,运行结果,计算机: 程序运行得 到的结果,源程序

7、,程序员: 我要让计算 机什么做?,设计说明书,设计员: 我要让软件 做什么?,需求说明书,分析员: 我可以提 供什么?,1,2,3,4,5,理解正确性 表达正确性,理解正确性 设计正确性 表达正确性,理解正确性 编码正确性,运行正确性 输入正确性,相符吗?,测试原则 (2)应该尽早制定测试计划。 概要设计时应完成测试计划,详细的测试用例定义可在设计模型确定后开始,所有测试可在任何代码被产生之前进行计划和设计。,测试原则 (3)应该由第三方进行测试工作。 一个软件项目的开发人员不应该同时是该软件的测试人员,基于心理因素,人们往往不愿意否定自己的工作。,测试原则 (4)穷举测试是不可能的。 测试

8、的最高目标是指发现错误的可能性最高的测试,所以,测试的关键技术是设计一组高产的测试用例,好的测试方案是尽可能发现至今为止仍未发现的错误。从某种意义上说,测试是否成功,取决测试用例的选择。,测试原则 (5)充分注意到错误的群集现象 经验表明,测试发现的错误中有80%的错误很可能是由20%的程序模块造成的,这是一种错误群集性现象。也就是说,在程序段中,发现错误数目多的地方,则残存错误的数目也比较多,这一现象已为许多程序测试实践所证明。,测试原则 (6)测试应该从“小规模”到“大规模” 通常,最初的测试重点往往是放在单个的程序模块中,然后,进一步的测试重点放在集成的模块族,最后是对整个系统进行测试。

9、随着测试的逐步深入展开,要集中测试容易出错的地方。,软件测试流程,软件 配置,测试,测试 配置,测试 工具,结果 分析,排错,可靠性 分析,测试 结果,错误,预期 结果,出错率,改正 的软件,预测 的可 靠性,需求规格说明书 软件设计说明书 被测源程序,测试计划 测试用例 (测试数据) 测试驱动程序,软件配置:需求规格说明、设计说明书、源程序等。软件配置中还应包含测试配置。 测试工具:为软件测试提供的某种服务程序。 评价:测试结果与期望结果比较,如果有差异则往往程序有错,需要改正。 可靠性预测有3种情况可以考虑: A.如果测试发现严重错误,则软件的质量和可靠性一定不高; B.如果测试结果是软件

10、功能完成正常,发现的问题不是严重错误,也容易修改,则可能:(1)软件质量和可靠性可以接受;(2)所进行的测试还不足以发现严重错误,错误被潜伏下来。 C.测试没有发现任何错误,则极有可能是测试配置选择不当(测试用例没有选好),错误被深深地潜伏下来,这是极危险。,软件测试对象,软件测试的对象应包括需求分析与设计以及编码等所获得一切的文档和程序。,软件测试方法,软件测试方法一般可以分成静态测试和动态测试等。 静态测试实际上是确认在给定的外部环境中软件的逻辑正确性,它应该包括需求规格说明和程序等的确认。 动态测试也称为机器测试,动态测试主要是通过动态分析以及程序测试来检查程序的执行状态,以确认程序的正

11、确性。,测试的方法与技术,软件测试的 策略和方法,静态测 试方法,动态测 试方法,人工测试方法,计算机辅助静 态分析方法,白盒测试方法,黑盒测试方法,静态和动态测试,汽车的检查过程: 踩油门 看车漆 打开前盖检查 发动汽车 听听发动机声音 上路行使,静态测试,动态测试,静态测试:基本特征是对软件进行 分析、检查和审阅,不实 际运行被测试的软件。 静态测试约可找出3070%的逻辑设计错误. 对需求规格说明书、软件设计说明书、源程序做检查和审阅,包括:是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件缺陷;,静态测试方法 (1)人工测试方法。人工测试就是通过人工阅读分析以及评审软件的文档

12、、程序资料等等,以发现程序中的错误,尤其是一些设计上的逻辑错误在机器上不易发现,需要人工复查。根据统计,好的人工评审,可以发现30%到70%的编码或逻辑设计错误。 (2)计算机辅助静态分析。为了提高测试的效率,人们可以设计一些分析工具对被测试的程序进行静态分析,从中提取一些信息。例如,检查程序中的局部变量和全局变量、参数的匹配、判断与循环的嵌套匹配、潜在的死循环、不执行的代码、过程调用层次等等。 (3)程序正确性说明。程序正确性证明是试图找到某种方法,确切地证明程序是没有错误的。所谓证明,就是确信一个断言真实性的论证。这种证明可以形式化的或非形式化。,动态测试:通过运行软件来检验软件的动态行为

13、和运行结果的正确性。 动态测试的两个基本要素: 被测试程序 测试数据(测试用例),动态测试方法 (1)选取定义域有效值,或定义域 外无效值. (2)对已选取值决定预期的结果 (3)用选取值执行程序 (4)执行结果 与(2)结果相比, 不吻和则程序有错.,动态黑盒测试 闭着眼睛测试软件,软件,输入,不深入代码细节的测试方法称为动态黑盒测试。 软件测试员充当客户来使用它。,输出,动态白盒测试 带上X光眼镜测试软件,?,3581322.293419985680302829734315,250*(1+0.015)*(1+0.015)360-1)/0.015,250*(1+0.015)*(1+0.015

14、)360-1)/0.015,假如知道一个盒子包含一台计算机,而另一个 盒子是人用纸笔计算,就会选择不同的测试用例,了解软件的运作方式会影响测试手段,穷举测试 例:输入 三条边长 黑盒测试 可采用的测试用例数 (设字长16位) 执行时间: 设测试一次需1ms 共需一万年.,=2 X2 X2 3X10,16,16,16,14,穷举测试 白盒测试 例: 含4个分支,循环次数 20,从A到B的可能 路径 执行时间: 设测试一次需2ms 穷举测试需5亿年.,=5+5 +5 +5 10,20,1,2,19,14,A,B,第一次为5,第二次为5*5,不论黑盒还是白盒测试都不能 进行穷尽测试, 所以软件测试不

15、可 能发现程序中存在的所有错误, 因 此需精心设计测试方案, 力争尽可 能少的次数,测出尽可能多的错误.,两种类型的测试 黑盒测试 又称:功能测试 数据驱动测试 基于规格说明书的测试,白盒测试 又称:开盒测试 结构测试 玻璃盒测试 基于覆盖的测试. 根据被测程序的逻辑结构设计测试用例;力求提高测试覆盖率;,黑盒测试与白盒测试比较 黑盒测试是从用户观点,按 规格说明书要求的输入数据与输 出数据的对应关系设计测试用例, 是根据程序外部特征进行测试。 白盒测试是根据程序内部逻辑结构进行测试。,黑盒测试与白盒测试优缺点比较,黑盒测试 白盒测试,优 点,缺 点,性 质,适用于各阶段测试 从产品功能角度测

16、试 容易入手生成测试数 据,可构成测试数据使特定程 序部分得到测试 有一定的充分性度量手段 较多工具支持,某些代码得不到测试 如果规格说明有误, 则无法发现 不易进行充分性测试,不易生成测试数据(通常) 无法对未实现规格说明的 部分进行测试 工作量大,通常只用于单 元测试,有应用局限,是一种确认技术,回答: “我们在构造一个正确 的系统吗?”,是一种验证技术,回答: “我们在正确地构造一个系 统吗?”,黑盒测试与白盒测试能发现的错误,C,B,A,D,-只能用黑盒测试发现的错误,A,-只能用白盒测试发现的错误,-两种方法都能发现的错误,-两种方法都不能发现的错误,B,C,D,测试用例设计 选择测

17、试用例是软件测试员最重要 的一项工作。 测试用例的属性: 属性 描述 name 测试用例的名称 location 可执行的完全路径名 input 输入数据或命令 oracle 与测试输入相比较的期待测试结果 log 测试生产的输出,程序测试举例 例:程序 Triangle, 输入三个整 数,表示一个三角形的三个边 长,该程序产生一个结果,指 出该三角形是等边三角形、等 腰三角形还是不等边三角形。,判断三角型的测试用例设计: 输入数据 预期结果 (1) 6;6;6 等边 (2) 8;8;4 等腰 (3) 4;5;6 一般 还应输入非法数据: 0; 7; 9 -7;3; 5 a; 2; 7 等,白

18、盒测试的测试用例设计 逻辑覆盖法 (1)语句覆盖 (2)判定覆盖 (3)条件覆盖 (4)判定/条件覆盖 (5)条件组合覆盖 (6)路径覆盖 (7)点覆盖 (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 (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,(1)语句覆盖 使程序中每个语句至少执行一次,语句覆盖,开始,(A1) AN

19、D (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,只需设计一个测试用例: 输入数据:A=2,B=0,X=4 则覆盖ace,可以执行程序中的每一条语句,即达到了语句覆盖; 语句覆盖是最弱的逻辑覆盖,(2)判定覆盖(分支覆盖) 使每个判定的真假分支都至少执行一次,判定覆盖,开始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,例:可设计两组测试用例: A=3,B=0 ,X=3 可覆盖c、d分支 A=2,B=1 ,X=1 可覆盖b、e分支 两组测试用例可覆盖所有判定

20、的真假 分支。 语句覆盖仍是弱的逻辑覆盖。,(3)条件覆盖 使每个判定的每个条件的可能取值至少执行一次,第一判定表达式: 设条件 A1 取真 记为 T1 假 T1 条件 B=1 取真 记为 T2 假 T2 第二判定表达式: 设条件 A=2 取真 记为 T3 假 T3 条件 X1 取真 记为 T4 假 T4,条件覆盖,开始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,满足条件: T1,T1, T2,T2 T3,T3 T4,T4,测试用例 通过 满足的 覆盖 A B X 路径 条件 分支 1 0 3 abe T1,T2

21、,T3,T4 b,e 2 1 1 abe T1,T2,T3,T4 b,e 两个测试用例覆盖了四个条件八种可能 取值。 未覆盖c、d分支,不满足判定覆盖的要 求. 条件覆盖不一定包含判定覆盖 判定覆盖也不一定包含条件覆盖,(4)判定/条件覆盖 选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.,判定/条件 覆盖,开始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,满足条件: T1,T1, T2,T2 T3,T3 T4,T4,测试用例 通过 满足的 覆盖

22、A B X 路径 条件 分支 2 0 4 ace T1,T2,T3,T4 c,e 2 1 1 abd T1,T2,T3,T4 b,d 能同时满足判定、条件两种覆盖标准取值。,测试用例 通过 满足的 覆盖 A B X 路径 条件 分支 2 0 3 ace T1,T2,T3,T4 c,e 2 1 1 abe T1,T2,T3,T4 b,e 1 0 3 abe T1,T2,T3,T4 b,e 1 1 1 abd T1,T2,T3,T4 b,d,(5)条件组合覆盖 所有可能的条件取值组合至少执行一次 A1, B=0 A1, B0 A1, B=0 A1, B0 A=2, X1 A=2, X1 A2, X

23、1 A2, X1,测试用例 通过 满足的 覆盖 ABX 路径 条件 分支 204 ace T1,T2,T3,T4 c,e 211 abe T1,T2,T3,T4 b,e 102 abd T1,T2,T3,T4 b,d 111 abd T1,T2,T3,T4 b,d 它是这几种覆盖标准中最强的,(6)路径覆盖 覆盖每一个可能的路径 测试用例 通过 满足的 覆盖 A B X 路径 条件 分支 1 1 1 abd T1,T2,T3,T4 b,d 1 1 2 abe T1,T2,T3,T4 b,e 3 0 1 acd T1,T2,T3,T4 c,d 2 0 4 ace T1,T2,T3,T4 c,e,

24、循环测试,(1)简单循环测试 假设n是允许通过循环的最大次数,应该进行下列的测试: 跳过整个循环; 只执行循环一次; 执行循环两次; 执行循环m次,其中,mn-1; 执行循环n-1,n,n+1次。,(2)嵌套循环测试 如果把简单循环的方法直接用于嵌套循环,可能的测试次数会随着嵌套循环的层数的增加按几何级数增加,导致不现实的测试数目,可以进行下列的测试: 从最内层循环开始测试,把其他循环都设置为最小值; 对最内层循环使用简单测试方法,使外层循环的迭代参数取最小值(例如,循环计算器等),并且,为越界或非法值增加一些额外的测试; 由内向外,对下一个循环进行测试,保持它的所有外层循环为最小值,其他的嵌

25、套循环取“典型”值。如此继续进行,直到测试完所有循环。,(3)串接循环测试 如果串接循环的各个循环都彼此独立,则可以使用简单循环测试的方法来进行。但是,如果在两个串接循环中,第一个循环的循环计算器的值是第二个循环的初始值,则这两个循环并不是独立的。这时,建议使用嵌套循环测试方法来进行。,基本路径测试法 通过分析由控制构造的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。 基本路径测试步骤: 导出程序流程图的拓扑结构-流图 (程序图) 计算流图G的环路复杂度V(G) 确定只包含独立路径的基本路径集 设计测试用例,导出程序流程图的拓扑结构-流图,1,2,3,6,4,5,

26、7,10,11,a,节点,边,R4,区域,1,2,3,4,5,8,7,6,9,10,11,程序流程图,8,9,R1,R2,R3,计算流图G的环路复杂度V(G) V(G)=区域个数=4 V(G)=边的条数-节点个数+2=4 V(G)=判定节点个数+1=4,确定只包含独立路径的基本路径集 path1:1-11 path2:1-2-3-4-5-10-1-11 path3:1-2-3-6-8-9-10-1-11 path4:1-2-3-6-7-9-10-1-11 一条新路径必须包含一条新边。 这4条路径组成了一个基本路径集。4(环 路复杂度V(G)是构成这个基本路径集的独立 路径数的上界,也是设计测试

27、用例的数目。 设计测试用例,保证基本路径集中每条 路径的执行。,黑盒测试的测试用例设计 等价类划分法 把所有可能的输入数据(有效的 和无效的)划分成若干个等价的子集 (称为等价类), 使得每个子集中的 一个典型值在测试中的作用与这一 子集中所有其它值的作用相同. 可从每个子集中选取一组数据来测试程序,例:某报表处理系统要求用户输入处理 报表的日期,日期限制在2001年1 月至2005年12月,即系统只能对该 段期间内的报表进行处理,如日期 不在此范围内,则显示输入错误信 息。 系统日期规定由年、月的6位数字 字符组成,前四位代表年,后两位 代表月。 如何用等价类划分法设计测试用例, 来测试程序

28、的日期检查功能?,如何划分等价类? 有效等价类(合理等价类) 无效等价类(不合理等价类) 划分等价类的标准: 覆盖 不相交 代表性,划分等价类的规则,(1)如果输入条件规定了取值范围, 可定义一个有效等价类和两个无 效等价类。,例 输入值是学生成绩,范围是0100,0 100,有效 等价类 1成绩100,无效等价类 成绩100,无效等价类 成绩0,划分等价类的规则:,(2)如果输入条件代表集合的某 个元素,则可定义一个有效 等价类和一个无效等价类。,划分等价类的规则:,(3)如规定了输入数据的一组值,且 程序对不同输入值做不同处理, 则每个允许的输入值是一个有 效等价类,并有一个无效等价类 (

29、所有不允许的输入值的集合)。 例:输入条件说明学历可为:专科、本科、 硕士、博士四种之一,则分别取这四 个值作为四个有效等价类,另外把四 种学历之外的任何学历作为无效等价类,划分等价类的规则:,(4)如果规定了输入数据必须遵循的规 则,可确定一个有效等价类(符合 规则)和若干个无效等价类(从不 同角度违反规则)。 (5)如已划分的等价类各元素在程序中 的处理方式不同,则应将此等价 类进一步划分成更小的等价类。,用等价类划分法设计测试用例步骤:,(1)形成等价类表,每一等价类规定 一个唯一的编号; (2)设计一测试用例,使其尽可能多 地覆盖尚未覆盖的有效等价类, 重复这一步骤,直到所有有效等 价

30、类均被测试用例所覆盖; (3)设计一新测试用例,使其只覆盖 一个无效等价类,重复这一步骤 直到所有无效等价类均被覆盖;,第一步:等价类划分,输入等价类 有效等价类 无效等价类,报表日期的 类型及长度,6位数字字符(1),有非数字字符 (4) 少于6个数字字符 (5) 多于6个数字字符 (6),年份范围,在20012005 之间 (2),小于2001 (7) 大于2005 (8),月份范围,在112之间(3),“报表日期”输入条件的等价类表,小于1 (9) 大于12 (10),第二步:为有效等价类设计测试用例 对表中编号为1,2,3的3个有效等价类 用一个测试用例覆盖:,测试数据 期望结果 覆盖

31、范围,200105,等价类(1)(2)(3),输入有效,第三步:为每一个无效等价类至少设 计一个测试用例,测试数据 期望结果 覆盖范围,001MAY,等价类(4),输入无效,20015,等价类(5),输入无效,2001005,等价类(6),输入无效,200005,等价类(7),输入无效,200805,等价类(8),输入无效,200100,等价类(9),输入无效,200113,等价类(10),输入无效,不能出现相同 的测试用例,本例的10个等价类至 少需要8个测试用例,例:对招干考试系统“输入学生成绩” 子模块设计测试用例 招干考试分三个专业,准考证号第一位 为专业代号,如: 1-行政专业, 2

32、-法律专业, 3-财经专业. 行政专业准考证号码为:110001111215 法律专业准考证号码为:210001212006 财经专业准考证号码为:310001314015,例:准考证号码的等价类划分 有效等价类: (1) 110001 111215 (2) 210001 212006 (3) 310001 314015 无效等价类: (4) - 110000 (5) 111216 210000 (6) 212007 310000 (7) 314016 + ,例:计算给定月份中天数的方法接口(java): Class MyGregorianCalender public static in g

33、etNumDaysInMonth(int month,int year) getNumDaysInMonth( )方法有两个参数, 月和年,年份的有效输入是从0到maxInt.,等价类划分即把输入空间分解成一系列子域,软件在一个子域内的行为应是等价的。,软件错误分为两类:计算错误 域错误,针对计算错误的测试方法 针对域错误的测试方法:测试域边界 划定的正确性,边界值分析法 边界值分析法与等价类划分法区别 (1)边界值分析不是从某等价类中 随便挑一个作为代表,而是使 这个等价类的每个边界都要作 为测试条件。 (2)边界值分析不仅考虑输入条件, 还要考虑输出空间产生的测试 情况,被测试 子 域,测

34、试内点,测试外点,软件边界与悬崖很类似,边界条件类型,如果软件测试问题 包含确定的边界,那 么数据类型可能是: 数值 字符 位置 数量 速度 地址 尺寸 ,还要考虑数据类型的特征: 第一个/最后一个 最小值/最大值 开始/完成 空/满 最慢/最快 相邻/最远 超过/在内 ,测试边界线 测试临近边界的合法数据,以及刚超过边界的非法数据. 越界测试通常简单地加1或很小的数 (对于最大值)和减1或很小的数(对于最小值).,输入 条件,报表日 期的类 型及长 度,1个数字字符 5个数字字符 7个数字字符 有1个非数字字符 全部是非数字字符 6个数字字符,显示出错 显示出错 显示出错 显示出错 显示出错

35、 输入有效,日期 范围,月份 范围,“报表日期”边界值分析法测试用例,测试用例说明,测试数据,期望结果,选取理由,5 20015 2001005 2001.5 MAY- 200105,月份为1月 月份为12月 月份12,200101 200112 200100 200113,200101 200512 200100 200513,输入有效 输入有效 显示出错 显示出错,输入有效 输入有效 显示出错 显示出错,在有效范围 边界上选取 数据,仅有1个合法字符 比有效长度少1 比有效长度多1 只有1个非法字符 6个非法字符 类型及长度均有效,最小日期 最大日期 刚好小于最小日期 刚好大于最大日期,最

36、小月份 最大月份 刚好小于最小月份 刚好大于最大月份,错误推测法(error guessing) 根据经验来设计测试用例的方法。 例如,数据测试中的: 缺省值 空白 空值 零值 无,状态测试 软件必须测试程序的状态及其转换。 测试软件的逻辑流程 建立状态转换图 减少要测试的状态及转换的数量,空闲,等待用户 输入命令,按下Esc键 显示口令框,口令错误 消除,口令正确 初始状态消失,空闲,等待用户 输入命令,按下Esc键,口令正确,口令错误,不同形式的状态转换图,设置2Bwatch 上的时间的顺序图,:2Bwatch用户,按下按钮1和2,:2Bwatch输入,:2Bwatch显示,:2Bwatc

37、h时间,时间,按下按钮1,按下按钮2,按下按钮1和2,闪烁小时,闪烁分钟,增加分钟,刷新,提交更新时间,停止闪烁,2Bwatch 设置时间功能的状态图和测试结果,按左按钮 按右按钮,按左按钮 按右按钮,4. 2分钟以后,测量时间,设置时间,电池没电,3.按下左右按钮,5.按下左右按钮/蜂鸣,8. 20年以后,7. 20年以后,6.,2.,1.,激励因素,空集合,测量时间,1.初始变迁,测试的变迁,预期结果状态,按下左边按钮,测量时间,2.,同时按下两个按钮,设置时间,3.,等2分钟,测量时间,4.超时,失败状态测试 找到测试软件失败的案例。 竞争条件和时序错乱 重复 压迫 重负,应联合使用,同

38、时进行,有效等价类和用来测试getNumDaysInMonth()方法所选的有效输入,有效等价类,一个月有31天,非闰年,1901,7(七月),一个月有31天, 闰年,1904,7(七月),一个月有30天,非闰年,1901,6(六月),一个月有30天, 闰年,1904,6(六月),一个月为28或29天,非闰年,1901,2(二月),月份 输入值,年份 输入值,一个月为28或29天, 闰年,2(二月),1904,用来测试getNumDaysInMonth()方法的附加边界值,等价类,可以被400整除的闰年,2000,2(二月),可以被100整除的非闰年,1900,2(二月),非正数无效月份,12

39、91,0,正数无效月份,1315,13,月份 输入值,年份 输入值,因果图法 因果图适合于描述对于多种输入条件的组合,相应产生多个动作的形式来设计测试用例。 因果图方法最终生成的是判定表。,因果图方法实例 某电力公司有A、B、C、D四类收费标准, 并规定: 居民用电 100度/月 按A类收费 100度/月按B类收费 动力用电 10000度/月,非高峰,B类收费 10000度/月,非高峰,C类收费 10000度/月, 高峰,C类收费 10000度/月, 高峰,D类收费,用因果图表明输入和输出间的逻辑关系,1,I1,2,B,4,A,C,3,5,D,I4,I3,I2,把因果图转换为判定表,组合条件,

40、条件 (原因),动作 (结果),A,B,C,1,2,3,1,2,3,4,5,6,1,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,1,0,4,1,0,1,0,5,0,0,1,1,D,0,0,0,1,1,0,0,1,0,0,0,0,测试用例,为判定表每一列设计一个测试用例:,1列 居民电,90度/月 A 2列 居民电,110度/月 B 3列 动力电,非高峰,8000度/月 B 4列 动力电,非高峰,1.2万度/月 C 5列 动力电, 高峰,0.9万度/月 C 6列 动力电, 高峰,1.1万度/月 D,条件 测试用例 预期结果 组合 (输入数据) (输

41、出动作),软件测试的过程,被测 模块,单元 测试,设计 信息,集成 测试,被测 模块,单元 测试,被测 模块,单元 测试,测试过 的模块,确认 测试,系统 测试,软件 需求,其它系 统元素,装配好的软件,确认 的软件,可运 行的 软件,软件测试的步骤,软件测试策略,单元测试,U,C,D,R,S,I,V,ST,集成测试,确认测试,系统测试,系统工程,软件需求分析,软件设计,代码编写,单元测试 一.单元测试的内容 主要对模块的五个基本特性进行评价,模块,错误处理,模块接口,局部数 据结构,重要的 执行路径,边界条件,1.常见错误类型 接口错误 I/O错误 数据结构错误 算法错误 比较及控制逻辑错误

42、 错误处理错误,2.单元测试基本原则 至少一次测试所有语句 测试所有可能的执行或逻辑路径的组合 测试每个模块的所有入口和出口,3. 确定单元测试数据集 值域 值类 离散值 值的次序集(测试顺序文件和表),二.单元测试的方法 单元测试一般为编码步骤的附属部分。 模块不是独立的程序,自己不能运行, 要靠其它部分来调用和驱动,要为每个 单元测试开发两个软件: (1)驱动模块(驱动程序):相当于主模块 (2)桩模块(测试存根、连接程序) :代替所测模块调用的子模块,单元测试的测试环境举例:,B,A,C,D,E,待测试模块,单元测试的测试环境举例:,被测模块 B,驱动模块 (模拟模块A),桩模块(测试存

43、根) (模拟模块E),测试用例,测试结果,许多模块不能用简单的软件进行充分的单元测试, 此时, 完全的测试可放到集成测试阶段再进行。,单元测试的测试环境举例:,实际软件,华氏到慑氏 转换模块,温度数据,实际配置,测试用例数据,结果,测试驱动软件,华氏到慑氏 转换模块,结果,测试驱动际配置,单元测试的测试环境举例,温度显示模块,温度接口 模块,实际配置,测试驱动实际配置,温度显示模块,程序员编写的桩模块 (测试存根),温度值的测试文件,结构性模式(structural patterns) 适配器模式(Adapter)打包器(Wrapper) 桥模式(Bridge)句柄(Handle) 组合模式(

44、Composite) 修饰模式(Decorator)包装器(Wrapper) 外观模式(Facade) 轻量模式 (Flyweight) 代理模式(Proxy),Implementor,OperationaImp( ),桥模式(Bridge) 意图:将抽象部分和实现部分分离,使他们都可以独立地变化,Abstraction,Contextinterface( ),ConcreteImplementorA,OperationaImp( ),ConcreteImplementorB,OperationaImp( ),RefinedAbstraction,支持多种窗口系统的设计窗口与窗口实现分离,Wi

45、ndow,Raise( ) DrawRact(),ApplicationWindow,IconWindow,DialogWindow,MacWindowlmp,DeviceRaise( ) DeviceRect( ) ,PMWindowlmp,DeviceRaise( ) DeviceRect( ) ,XWindowlmp,DeviceRaise( ) DeviceRect( ) ,Windowlmp,DeviceRaise( ) DeviceRect( ) ,利用Bridge设计模式与未完成、未知或在测试 另一组件时不可用组件的接口(UML类图),用户接口,数据库户接口,数据库户接口,测试存

46、根,数据库,可用Bridge设计模式实现测试存根,用户接口子系统访问测试不能访问的数据库子系统。 将数据库接口和数据库实现分离开来。,集成测试(组装测试) 集成测试需考虑的问题: 数据穿越接口可能丢失. 一模块可能破坏另一模块功能. 子功能组装可能未产生所要求的 主功能. 全程数据结构可能出问题. 误差累积问题.,集成测试方法 通常采用黑盒测试技术 实施策略: 非增量式系统集成 增量式系统 集成,深度优先 广度优先,自顶向下结合 自底向上结合,一.非增量式系统集成 一次就把所有通过了单元测试 的模块组合在一起进行全程序的测 试。 缺点:发现错误难以诊断定位, 又称“莽撞测试” 。,二. 增量式系统集成 从一个模块开始,测一次添加一个模块,边组装边测试,以发现与接口相联系的问题

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

当前位置:首页 > 其他


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