• 1. 软件测试技术
  • 2. 软件测试流程测试组织和管理:建立测试队伍 编写测试计划 编写测试用例 测试执行 测试结果总结、分析 测试数据的度量(更高要求)
  • 3. 测试用例的定义 测试用例是为了特定目的而设计的测试数据及与之相关的测试规程的一个特定的集合,或称为有效地发现软件缺陷的最小测试执行单元。 测试用例就是将软件测试的行为活动,做一个科学化的组织归纳。测试用例的设计如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。 测试用例是测试工作的指导,是软件测试的必须遵守的准则。更是软件测试质量稳定的根本保障。
  • 4. 设计测试用例根据系统规格说明书、系统设计文档、测试范围、技术特点、程序结构等设计用例。 1)可重复利用 2)有效性:穷举是不可行的 3)可管理性 4)继承性 5)基础性
  • 5. 良好测试用例的特征可以最大程度地找出软件隐藏的缺陷 可以最高效率的找出软件缺陷 可以最大程度地满足测试覆盖要求 既不过分复杂、也不能过分简单 使软件缺陷的表现可以清楚的判定 测试用例包含期望的正确的结果 待查的输出结果或文件必须尽量简单明了 不包含重复的测试用例 测试用例内容清晰、格式一致、分类组织
  • 6. 测试用例的组成元素测试用例编号ID 测试用例标题 测试的模块测试输入条件 期望的输出结果 其它说明ID模块标题测试步骤期望的结果说明001登录输入正确密码用户在登录界面输入正确的密码后,按回车键程序提示登录成功002登录输入错误密码用户在登录界面输入错误的密码后,按回车键程序提示输入密码错误,请重新输入003登录不输入的空密码用户在登录界面没有输入任何密码使密码为空后,按回车键 程序提示用户没有输入密码,请输入程序应该告知用户没有输入密码,而不是密码错误
  • 7. 测试用例报告 编制人审定人软件名称 编号/版本测试用例名称 用例编号测试的模块时间参考信息参考的文档及章节号或功能输入说明 列出选用的输入项,覆盖正常、异常情况 输出说明 逐条与输入项对应,列出预期输出 环境要求 测试要求的软、硬件、网络要求 用例间的依赖关系 特殊规程要求
  • 8. 软件测试方法静态、动态测试 黑盒、白盒测试 ALAC(Act-like-a-customer)测试 自动化测试、随机测试
  • 9. 动态技术的应用 白盒测试
  • 10. 白盒测试技术白盒测试应该根据程序的控制结构设计测试用例,原则是: 保证模块中每一独立的路径至少执行一次; 保证所有判断的每一分枝至少执行一次; 保证每一循环都在边界条件和一般条件下至少各执行一次; 验证所有内部数据结构的有效性。
  • 11. 白盒测试方法Program control-flow (逻辑覆盖法) Data-flow coverage examine how variables are treated along the paths Fault based techniques Mutation test. Generate "mutants" (program with slight modification) run mutants against test set if many mutants stay "alive" , the test set is of low quality
  • 12. 逻辑覆盖逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。这一方法要求测试人员对程序的逻辑结构有清楚的了解,甚至要能掌握源程序的所有细节。 由于覆盖测试的目标不同,逻辑覆盖又可分为: 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 路径覆盖
  • 13. 点覆盖 Node Coverage如果连通图 G 的子图G´是连通的,而且包含G的所有节点,则称G´是G的点覆盖。 与语句覆盖标准相同。
  • 14. 语句覆盖 Statement coverage语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行,但它是最弱的逻辑覆盖准,效果有限,必须与其它方法交互使用。To be continue…
  • 15. PROCEDURE Example(A,B:real; X:real ); Begin IF (A>1) AND (B=0) THEN X:= X / A; IF ( A=2 ) OR (X>1) THEN X:=X+1 END;I. A=2, B= 0, X=4 ---- sacbed语句覆盖 所有的语句至少执行一次! 是最弱的逻辑覆盖eF(A>1) and (B=0)(A=2) or (X>1)X = X / AX=X+12sd1aF4cTb5T637
  • 16. 语句覆盖优缺点优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。 缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。 例如:IF (A>1) AND (B=0) THEN, “null else”, 用例不需要考虑迫使 A<1的出错情况。
  • 17. 判定覆盖 Decision Coverage判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即程序中的每个分支至少执行一次 。判定覆盖又称为分支覆盖(Branch coverage)。 判定覆盖只比语句覆盖稍强一些,实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。因此,还需要更强的逻辑覆盖准则去检验判断内部条件。 To be continue…
  • 18. X = X / AI: A=3, B=0,X=1: sacbdII: A=2, B=1,X=1: sabed满足判定覆盖的测试用例一定满足语句覆盖:判定覆盖比语句覆盖强。但仍是弱的逻辑覆盖。(A>1) and (B=0)(A=2) or (X>1)X=X+12sd1aF4cTb5TeF37满足判定覆盖(A>1)and (B=0) 为一个判定 A>1 为一个条件每个语句至少执行一次! 每个判定的每种可能都至少执行一次! 即每个判定的真假分支都至少执行一次!6
  • 19. 边覆盖 Edge Coverage如果连通图 G 的子图G´是连通的,而且包含G的所有边,则称G´是G的边覆盖。 通常与判定覆盖标准相同。17Ⅰ: A=3,B=0,X=3 (1-4-5-3); Ⅱ: A=2,B=1,X=1 (1-2-6-7)Ⅲ: A=1,B=1,X=1 (1-2-3); Ⅳ: A=2,B=0,X=4 (1-4-5-6-7)243567
  • 20. 判定覆盖的优缺点优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。 缺点:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。
  • 21. 判定-判定 路径覆盖 DD-pathsDD-path: decision-decision path. DD-path, 定义: 开始于判定点-结束于判定点并且中间不包含其他的判定点。 例如: 1 4 5 1 2 2 6 7 2 3 与判定覆盖等价
  • 22. 条件覆盖 Condition Coverage条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。 条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。 To be continue…
  • 23. 每个语句至少执行一次,而且判定表达式中的每个条件都要取得各种可能的结果。第一判定表达式: 设条件 A>1 取真 记为T1 假 F1 条件 B=0 取真 记为T2 假 F2 第二判定表达式: 设条件 A=2 取真 记为T3 假 F3 条件 X>1 取真 记为T4 假 F4条件覆盖要求这8种值都要取到(A>1) and (B=0)(A=2) or (X>1)X = X / AX=X+12sd1aF4cTb5T637eF
  • 24. (A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅱ: A=1, B=1,X=1: sabdⅠ: A=2, B=0,X=4: sacbed测试 用例通过路径满足的条件ABX204sacbedT1,T2,T3,T4111sabdF1,F2,F3,F4同时满足判定覆盖(A>1) and (B=0)(A=2) or (X>1)X = X / AX=X+12sd1aF4cTb5T637eF
  • 25. (A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅳ: A=1, B=1,X=2: sabedⅢ: A=2, B=0,X=1: sacbed测试 用例通过路径满足的条件ABX201sacbedT1,T2,T3,F4112sabedF1,F2,F3,T4不满足判定覆盖(A>1) and (B=0)(A=2) or (X>1)X = X / AX=X+12sd1aF4cTb5T637eF
  • 26. 条件覆盖的优缺点优点: 显然条件覆盖比判定覆盖增加了对符合判定情况的测试,增加了测试路径。 缺点: 要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
  • 27. 条件覆盖不一定包含判定覆盖 判定覆盖也不一定包含条件覆盖 条件覆盖通常比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却关心整个判定表达式的值。但也可能有相反的情况:虽然每个条件都取到了不同值,但判定表达式却始终只取一个值。判定覆盖和条件覆盖(DC)
  • 28. 判定-条件覆盖既然判定条件不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,就自然会提出一种能同时满足两种覆盖标准的逻辑覆盖,这就是判定--条件覆盖。 判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。换言之,即是要求各个判断的所有可能的条件取值组合至少执行一次。To be continue…
  • 29. 判定-条件覆盖测试用例I,II既满足判定覆盖也满足条件覆盖的要求。严格来讲,合适的条件覆盖测试用例设计应该做到满足判定--条件覆盖的标准:判定-条件覆盖并不比条件覆盖更强。 判定-条件覆盖有缺陷。表面上,它测试了所有条件的取值,但事实并非如此,往往某些条件掩盖了另一些条件,会遗漏某些条件取值错误的情况。为彻底地检查所有条件的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。
  • 30. 判定-条件覆盖的优缺点优点:判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。 缺点:判定/条件覆盖准则的缺点是未考虑条件的组合情况。
  • 31. 条件组合覆盖 (Multiple Condition)条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。 这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。测试还不完全。
  • 32. A>1, B=0 A>1, B≠0 A≤1, B=0 A≤1, B≠0 A=2, X>1 A=2, X≤1 A≠2, X>1 A≠2, X≤1选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。(A>1) and (B=0)(A=2) or (X>1)X = X / AX=X+12sd1aF4cTb5T637eF
  • 33. (A>1) and (B=0)(A=2) or (X>1)X = X / AX=X+12sd1aF4cTb5T637e(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)I. A=2,B=0,X=4II. A=2,B=1,X=1III. A=1,B=0,X=2IV. A=1,B=1,X=1I: sacbed II: sabed III: sabed IV: sabd覆盖路径满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。F
  • 34. 测试用例通过路径满足的条件条件组合覆盖分支ABX204sacbedT1,T2,T3,T41, 54563211sabedT1,F2,T3,F42, 6263102sabedF1,T2,F3,T43, 7263111sabdF1,F2,F3,F44, 823 4组测试数据可以使8种条件组合 每种至少出现一次显然,满足条件组合覆盖的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖。 所以,条件组合覆盖是前述几种覆盖中最强的。但满足条件组合覆盖的不一定能使程序中的每条路径都执行到,如sacbd。
  • 35. 条件组合覆盖的优缺点优点:多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。并且每个条件都显示能单独影响判定结果。 缺点:线性地增加了测试用例的数量。
  • 36. 路径覆盖路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。这是最强的覆盖准则。但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。
  • 37. 测试用例通过路径满足的条件ABX111sabdF1,F2,F3,F4112sabedF1,F2,F3,T4301sacbdT1,T2,F3,F4204sacbedT1,T2,T3,T4路径覆盖是相当强的逻辑覆盖,它保证程序中每条可能的路径都至少执行一次,因此更具代表性,暴露错误的能力也比较强。但为了做到路径覆盖,只需考虑每个判定式的取值,并没有检验表达式中条件的各种可能组合。如果将路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据。路径覆盖 (Path coverage)条件3 A≤1, B=0 没有被覆盖
  • 38. 路径覆盖的优缺点优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。 缺点:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。而在有些情况下,一些执行路径是不可能被执行的,如:   If  (A)B++;   If  (!A)D--; 这两个语句实际只包括了2条执行路径,即A为真或假时候对B和D的处理,真或假不可能都存在,而路径覆盖测试则认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。
  • 39. Level-i PathLevel-0 path, 是从起点到终点的一条无圈路,即不包含循环、圈。 Level-i path, 开始于level-(i-1) path中的点,并且可能含有圈。一般来说表示嵌套循环的语句结构。
  • 40. 123456713121110981415161718 图1-18
  • 41. Test CasesLevel-0: [1] 1-2-4-5-7-8-9-14-15-17-18 [2] 1-2-4-5-7-8-9-14-16-17-18 Level-1: [1] 2-3-2 [2] 5-6-5 [3] 9-10-11-13-9 [4] 9-10-12-13-9 [5] 17-8
  • 42. Level-i Paths & Branch TestingLevel-i paths are not always subsumed by branch testing There are 4 level-i paths 1-2-4-5-7 1-2-4-6-7 1-3-4-5-7 1-3-4-6-7 There are two branches Cover level-i paths 1 and 4 or Cover level-i paths 2 and 31765432
  • 43. 单元测试
  • 44. 单元测试的定义定义: 单元测试是对软件基本组成单元进行的测试。 时机: 一般在代码完成后由开发人员完成,QA人员辅助. 概念: 模块, 组件, 单元 
  • 45. 单元测试的 目标和任务目标: 单元模块被正确编码 信息能否正确地流入和流出单元; 在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。 在为限制数据加工而设置的边界处,能否正确工作。 单元的运行能否做到满足特定的逻辑覆盖。 单元中发生了错误,其中的出错处理措施是否有效。
  • 46. 模块错误处理模块接口局部数 据结构 重要的 执行路径边界条件主要对模块的五个基本特性进行评价在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。单元测试的内容
  • 47. 模块接口测试对被测模块的数据流进行测试。To be continue…实际参数与形式参数的个数是否相同; 实际参数与形式参数的属性是否匹配; 实际参数与形式参数的量纲是否一致; 调用预定义函数时所用参数的个数、属性和次序是否正确; 是否存在与当前入口点无关的参数引用; 是否修改了只读型参数; 对全程变量的定义各模块是否一致; 是否把某些约束作为参数传递。
  • 48. 如果模块内包括外部I/O,还应该考虑下列因素: 文件属性是否正确; OPEN与CLOSE语句是否正确; 缓冲区容量与记录长度是否匹配; 在进行读写操作之前是否打开了文件; 在结束文件处理时是否关闭了文件; 正文书写/输入错误; I/O错误是否检查并做了处理。模块接口测试
  • 49. 局部数据结构测试局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误: 不合适或不相容的类型说明; 变量无初值; 变量初始化或缺省值有错; 不正确的变量名(拚错或不正确地截断); 出现上溢、下溢和地址异常
  • 50. 路径测试选择适当的测试用例,对模块中重要的执行路径进行测试。 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。 对基本执行路径和循环进行测试可以发现大量的路径错误。
  • 51. 错误处理测试检查模块的错误处理功能是否包含有错误或缺陷。 出错的描述是否难以理解 出错的描述是否能够对错误定位 显示的错误与实际的错误是否相符 对错误条件的处理正确与否 在对错误进行处理之前,错误条件是否已经引起系统的干预等
  • 52. 边界测试注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。这类信息对进行性能评价是十分有用的。
  • 53. 单元测试的步骤通常单元测试在编码阶段进行。在源程序代码编制完成,经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。利用设计文档,设计可以验证程序功能、找出程序错误的多个测试用例。对于每一组输入,应有预期的正确结果。To be continue…
  • 54. 单元测试的方法模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。这些辅助模块分为两种: 驱动模块(Driver):相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。 桩模块(Stub):用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。
  • 55. 被测模块,与它相关的驱动模块及桩模块共同构成了一个“测试环境”,如下图: 单元测试的方法测试用例驱动模块测试结果被测模块桩模块桩模块桩模块
  • 56. 驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,它需要一定的开发费用。 若驱动模块和桩模块比较简单,实际开销相对低些。 仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法(集成测试)。 提高模块的内聚度可简化单元测试,如果每个模块只完成一个功能,所需测试用例数目将显著减少,模块中的错误也更容易发现。 单元测试的方法
  • 57. 动态技术的应用 黑盒测试
  • 58. 黑盒测试功能测试或者数据驱动测试。它是在已知产品所应 具有的功能,通过测试来检测每个功能是否都能正 常使用: 1)是否有不正确或遗漏的功能 2)在接口上,是否能正确的接受输入数 据,能否产生正确的输出 3)访问外部信息是否有错 4)性能上是否满足要求 5)界面是否错误、是否不美观 6)初始化和终止错误
  • 59. 黑盒测试用例设计方法等价类划分 边界值分析法 错误推测法 因果图法 功能图法
  • 60. 等价类指某个输入域的子集合,在该集合中,各个输入数据对于揭露程序中的错误都是等效的,具有等价性。 例如:对所有实数进行开方运算的程序的测试 将实数分类:正实数、负实数、零。
  • 61. 划分等价类等价类的划分有两种不同的情况: 有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。 在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。
  • 62. 划分等价类的原则如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。例如,在规格说明中,对输入条件有一句话: “…… 项数可以从1到999 ……” 则有效等价类是“1≤项数≤999”; 两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:1999有效等价类无效等价类无效等价类
  • 63. 划分等价类的原则如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。 例如, 程序输入条件为x=10, 则有效等价类为x=10, 无效等价类为x≠10. 在编程语言中对变量标识符规定为“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。
  • 64. 划分等价类的原则如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。 例如:输入条件为x=true, 则有效等价类为x=true,无效等价类为x= false
  • 65. 划分等价类的原则④ 如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。 例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。
  • 66. 划分等价类的原则如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。 例如, Pascal语言规定 “一个语句必须以分号‘;’结束”。这时,可以确定一个有效等价类 “以‘;’结束”,若干个无效等价类 “以‘:’结束”、“以‘,’结束”、“以‘ ’结束”、“以LF结束”等。 有效Email地址的规则:含有﹫,﹫后面是*.*, Emaild地址不带特殊符号”,#,&,’等。 有效等价类:满足所有的条件的输入的集合。 无效等价类:任何不满足一个或者多个条件的输入的集合
  • 67. 划分等价类的原则⑥ 在确定已知的等价类中各元素在程序处理中的方式不同的情况下,应再将该等价类进一步划分为更小的等价类。
  • 68. 等价类划分法设计测试用例形成等价类表,每一等价类规定一个唯一的编号; 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;且分割有效等价类直至最小。 设计一新的测试用例,使其尽可能多的覆盖尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类均被覆盖,即分割无效等价类直至最小。
  • 69. 某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。 系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。 如何用等价类划分法设计测试用例,来测试程序的日期检查功能? 等价类划分法—实例
  • 70. 第一步:等价类划分输入条件有效等价类无效等价类报表日期的 类型及长度6位数字字符(1)有非数字字符 (4) 少于6个数字字符 (5) 多于6个数字字符 (6)年份范围在2003~2008 之间 (2)小于2003 (7) 大于2008 (8)月份范围在1~12之间(3)小于1 (9) 大于12 (10)“报表日期”输入条件的等价类表
  • 71. 第二步:为有效等价类 设计测试用例对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:测试数据期望结果覆盖范围200306输入有效等价类(1)(2)(3)(1) 6位数字字符 (2) 年在2003~2008之间 (3) 月在1~12之间
  • 72. 第三步:为每一个无效等价类 至少设计一个测试用例测试数据期望结果覆盖范围003MAY输入无效等价类(4)20035输入无效等价类(5)2003005输入无效等价类(6)200105输入无效等价类(7)200905输入无效等价类(8)200300输入无效等价类(9)200313输入无效等价类(10)不能出现相同 的测试用例本例的10个等价类至 少需要8个测试用例有非数字字符 (4) 少于6个数字字符 (5) 多于6个数字字符 (6)小于2003 (7) 大于2008 (8)月份小于1 (9) 月份大于12 (10)
  • 73. 边界值分析法边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。 人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。被测试 子 域测试内点测试外点测试边界
  • 74. 边界值地确定如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。 分析规格说明,找出其他可能的边界条件。
  • 75. 边界点 图示闭区间半开半闭区间开区间外点外点外点外点外点外点上点上点上点上点上点上点内点内点内点闭区间[50,100]的上点为50和100,外点是49和101, 在域范围内的都是内点; 半开半闭区间(50,100]的上点为50和100,外点是51和101, 在域范围内的都是内点; 开区间(50,100)的上点为50和100,外点是51和99, 在域范围内的都是内点
  • 76. 上点: 就是边界上的点,不管它是开区间还是闭区间,就是说,如果该点是封闭的,那上点就在域范围内,如果该点是开放的,那上点就在域范围外; 内点: 就是在域范围内的任意一个点; 外点: 就是离上点最近的一个点,如果边界是封闭的,那离点就是域范围外离上点最近的点,如果边界是开放的,那离点就是域范围内离上点最近的点。
  • 77. 内部边界值地确定 (隐含)项范围或值位(bit)0 或 1字节(byte)0~255千(K)1024兆(M)1048576吉(G)1073 741 824太(T)1099 511 627 776
  • 78. 内部边界值地确定字符的边界值检查:ASCII和Unicode, 其他边界值检验
  • 79. “报表日期”边界值--用例输入条件测试用例说明测试数据期望结果选取理由报表日 期类型 及长度1个数字字符5显示出错仅有1个合法字符6个数字字符200305输入有效类型及长度均有效5个数字字符20035显示出错比有效长度少17个数字字符2003005显示出错比有效长度多1有1个非数字字符2003.5显示出错只有1个非法字符全是非数字字符MAY---显示出错6个非法字符年份范围年份为2003年200305输入有效最小年份年份为2008年200805输入有效最大年份年份<2003年200205显示出错刚好小于最小年份年份>2008年200905显示出错刚好大于最大年份月份范围月份为1月200301输入有效最小月份月份为12月200312输入有效最大月份月份<1200300显示出错刚好小于最小月份月份>12200313显示出错刚好大于最大月份
  • 80. 错误推测法基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。 经验表明,一段程序中已经发现的错误数往往和尚未发现的错误数成正比。因此进一步测试要着重测试发现错误较多的程序段。
  • 81. 错误推测法测试用例设计发现程序经常出现的错误的方法: 单元测试中发现的模块错误; 产品的以前版本曾经发现的错误; 输入数据为0或字符为空; 当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键; 这种情况在产品说明书中常常忽视,程序员也可能经常遗忘,但是在实际使用中却时有发生。程序员总会习惯性的认为用户要么输入信息,不管是看起来合法的或非法的信息,要不就会选择Cancel键放弃输入。
  • 82. 因果图法等价分类法和边界分析法,均没有考虑到输入情况的组合。 因果图法:一种利用图解法分析输入的各种条件组合(相应产生多个动作的形式) ,从而设计测试用例的方法。分析关联转换输出输入/输出数据输入/输出数据 间的关系不同组合间的关联 约束或限制条件将因果图转换成判定表导出测试用例
  • 83. 例子第一列字符必须是A或者B,第二列字符必须是一个数字,在此情况下进行文件的修改;但如果第一列字符不正确,则输出信息L;如果不是数字,则给出信息M.编号原因编号结果1第一列字符是A21修改文件2第一列字符是B22给出信息 L3第二列字符是数字23给出信息 M11中间原因12112221323||&&!!E
  • 84. 根据因果图建立判定表 按条件的各种组合情况产生对应的动作。原因1和原因2不能同时成立,故可排除这种情况。从判定表可设计出测试用例:6个测试用例是所需的数据。
  • 85. 作业中国象棋中马的走法,具体说明: 1、如果落点在棋盘外,则不移动棋子; 2、如果落点与起点不构成日字型,则不移动棋子; 3、如果落点处有自己方棋子,则不移动棋子; 4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子; 5、如果不属于1-4条,且落点处无棋子,则移动棋子; 6、如果不属于1-4条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子; 7、如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
  • 86. 提示原因: 落点在棋盘外; 不构成日字; 落点有自方棋子; 绊马腿; 落点无棋子; 落点为对方棋子; 落点为对方老将。 结果: 不移动; 移动; 移动己方棋子消除对方棋子; 移动并战胜对方。
  • 87. 功能图法功能图法就是用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型组成。 功能图法是一种黑盒和白盒混合用例设计方法。 例如:Windows的屏幕保护程序测试(有密码保护功能)
  • 88. 屏幕保护— 程序流程图空闲状态等待输入密码Esc键按下 显示密码输入框不正确的密码 清空密码输入框正确的密码 屏幕初始化
  • 89. 状态迁移图空闲 状态等待密 码输入不正确的密码输入Esc键按下正确的密码输入
  • 90. 逻辑功能表输入Esc按下 其它键按下 正确的密码输入 错误的密码输入I1 I2 I3 I4输出显示密码输入框 密码错误提示信息O1 O2状态空闲状态 等待输入密码 返回空闲状态 初始化屏幕S1 S2 S3 S4
  • 91. 黑盒测试与 白盒测试比较黑盒测试白盒测试优 点 ①适用于各阶段测试 ②从产品功能角度测试 ③容易入手生成测试数据①可构成测试数据使特定程序部分得到测试 ②有一定的充分性度量手段 ③可或较多工具支持缺 点①某些代码得不到测试 ②如果规格说明有误,则无法发现 ③不易进行充分性测试 ①不易生成测试数据(通常) ②无法对未实现规格说明的部分进行测试 ③工作量大,通常只用于单元测试,有应用局限性 质是一种确认技术,回答“我们在构造一个正确的系统吗?” (Verification)是一种验证技术,回答 “我们在正确地构造一个系统吗?” (Validation)
  • 92. 作业程序:输入三个整数作为三角形的边长。根据输入判断是否构成三角形?如果是,判断此三角形为一般三角形、等腰三角形、或者是等边三角形。 用等价类划分方法为该程序进行测试用例设计。
  • 93. 提示分析题目中给出的和隐含的对输入条件的要求: a) 整数 b) 3个数 c) 非零数 d) 正数 e) 两边之和大于第三边 f) 等腰 g) 等边
  • 94. (本页无文本内容)