




已阅读5页,还剩257页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
邵方明 2001.11.09 软件测试培训 内容 什么是质量什么是质量 测试方法测试方法 测试工具测试工具 测试流程测试流程 品质的趋势 1900年代:品质是“检测”出來的 “QI” 1940年代前期:品质是“制造”出 來的 “QC” 1940年代前期:品质是“设计”出 來的 “QA” 什么是质量什么是质量 1960年代:品质是管理出來的 “TQC” 1980年代:品质是习惯出來的 “TQA” 重要名词解释 品质检查(Quality Inspection; QI): 將结果与品质判定基准比较,以确定 各物品的不良品或合格者 什么是质量什么是质量 品质管制(Quality Control; QC): 为了经济的“制造出”符合消費者 所要求的品质之产品或服务所规定出 的一连串方法与活动 品质保证(Quality Assurance; QA): 为了“保证充份满足”消费者所要 求之,品质,生产者所进行之系统性活 动 什么是质量什么是质量 重要名词解释 全面品质管制(Total Quality Control; TQC): 將一个组织內,各单位的品质开发; 品质维持;及品质改进的各项努力整 合起来,以使 行销.工程.生产与售后服务能以达到 最经济的水准,使客戶完全满意的有 效制度 ” 什么是质量什么是质量 全面品质保证(Total Quality Assurance; TQA): 以顾客为导向从企划,执行;检查; 到反馈,包含了公司所有部门及所有 的成员不断追 求品质改善,TQA是依循零缺点的保证 而成为习惯的一种生活方式. 产品的品质= 全部的品质內涵 什么是质量什么是质量 1. 产品品质 (Quality of Product) 开发品质,制造品质 2. 过程品质(Quality of Process 工作品质,服务品质 3. 环境品质(Quality of Environment) 心理环境品质,硬件环境品质 4. 管理品质(Quality of Management) 人力品质,决策品质 什么是质量什么是质量 软件质量特性(McCall)包含:正确 性,可靠性,效率,完整性,可使用 性,可维护性,可测试性,灵活性, 可移植性,复用性 软件质量特性软件质量特性 软件测试的目的和原则软件测试的目的和原则 软件测试用例设计软件测试用例设计 软件测试策略软件测试策略 软件测试种类软件测试种类 程序调试程序调试 测试方法测试方法 软件测试的目的和原则软件测试的目的和原则 n n 软件测试的目的软件测试的目的 n n 软件测试的原则软件测试的原则 n n 软件测试的对象软件测试的对象 n n 测试信息流测试信息流 n n 测试与软件开发各阶段的关系测试与软件开发各阶段的关系 软件测试定义软件测试定义 软件测试是为了发现错误而执行程序的 过程。 软件测试是根据软件开发阶段的规格说 明和程序的内部结构而精心设计的一批 测试用例(即输入数据及预期的输出结 果),并利用这些测试用例去运行程序 ,以发现错误的过程。 软件测试目的软件测试目的 测试是运行程序的过程,目的在于发现错 误,在 用户使用应用之前发现问题; 一个好的测试用例在于能够发现至今未发 现的错误; 一个成功的测试是发现了至今未发现的错 误的测试。 软件测试的目的软件测试的目的 n n 基于不同的立场,存在着两种完全不同基于不同的立场,存在着两种完全不同 的测试目的。的测试目的。 n n 从从用户的角度用户的角度出发,普遍希望通过软件出发,普遍希望通过软件 测试测试暴露软件中隐藏的错误和缺陷暴露软件中隐藏的错误和缺陷,以,以 考虑是否可接受该产品。考虑是否可接受该产品。 n n 从从软件开发者的角度软件开发者的角度出发,则希望测试出发,则希望测试 成为成为表明软件产品中不存在错误表明软件产品中不存在错误的过程的过程 ,验证该软件已正确地实现了用户的要,验证该软件已正确地实现了用户的要 求,确立人们对软件质量的信心。求,确立人们对软件质量的信心。 MyersMyers软件测试目的软件测试目的 (1) (1) 测试是测试是程序的执行过程程序的执行过程,目的在,目的在 于于发现错误发现错误; (2) (2) 一个好的测试用例在于一个好的测试用例在于能发现至能发现至 今未发现的错误今未发现的错误; (3) (3) 一个成功的测试是一个成功的测试是发现了至今未发现了至今未 发现的错误的测试发现的错误的测试。 n n 换言之,测试的目的是换言之,测试的目的是 n n 想以最少的时间和人力,想以最少的时间和人力,系统地找出软件系统地找出软件 中潜在的各种错误和缺陷中潜在的各种错误和缺陷。如果我们成功地。如果我们成功地 实施了测试,我们就能够发现软件中的错误实施了测试,我们就能够发现软件中的错误 。 n n 测试的附带收获是,它测试的附带收获是,它能够证明软件的功能够证明软件的功 能和性能与需求说明相符合能和性能与需求说明相符合。 n n 实施测试收集到的测试结果数据为可靠性实施测试收集到的测试结果数据为可靠性 分析提供了依据。分析提供了依据。 n n 测试不能表明软件中不存在错误,它只能测试不能表明软件中不存在错误,它只能 说明软件中存在错误。说明软件中存在错误。 软件测试的原则软件测试的原则 1. 1. 应当把应当把“ “尽早地和不断地进行软件尽早地和不断地进行软件 测试测试” ”作为软件开发者的座右铭。作为软件开发者的座右铭。 2. 2. 测试用例应由测试用例应由测试输入数据测试输入数据和对和对 应的应的预期输出结果预期输出结果这两部分组成这两部分组成 。 3. 3. 程序员应避免检查自己的程序。程序员应避免检查自己的程序。 4. 4. 在设计测试用例时,应包括在设计测试用例时,应包括合理合理 的输入条件的输入条件和和不合理的输入条件不合理的输入条件 。 5. 5. 充分注意测试中的群集现象。充分注意测试中的群集现象。 经验表明,经验表明,测试后测试后程序中残存的错误数程序中残存的错误数 目与该程序中已发现的错误数目成正比目与该程序中已发现的错误数目成正比 。 6. 6. 严格执行测试计划,严格执行测试计划,排除测试的随意性排除测试的随意性 。 7. 7. 应当对每一个测试结果做全面检查。应当对每一个测试结果做全面检查。 8. 8. 妥善保存测试计划,测试用例,出错统妥善保存测试计划,测试用例,出错统 计和最终分析报告,为维护提供方便。计和最终分析报告,为维护提供方便。 测试人员 测试人员 100% 50% 0% 完成比率 代码实现 消除缺陷 质量问题 延迟上市 维护的费用 1x 10x 100x 软件测试重要性软件测试重要性 项目持续时间 项目持续时间 100% 50% 0% 完成比率 消除缺陷 消除缺陷 保证软件质量 缩短上市时间 软件测试重要性 软件测试的对象软件测试的对象 n n 软件测试并不等于程序测试。软件测试并不等于程序测试。软件软件 测试应贯穿于软件定义与开发的整测试应贯穿于软件定义与开发的整 个期间个期间。 n n 需求分析需求分析、概要设计概要设计、详细设计以详细设计以 及程序编码及程序编码等各阶段所得到的等各阶段所得到的文档文档 ,包括需求规格说明、概要设计规,包括需求规格说明、概要设计规 格说明、详细设计规格说明以及源格说明、详细设计规格说明以及源 程序,程序,都应成为软件测试的对象都应成为软件测试的对象。 n n 为把握软件开发各个环节的正确性为把握软件开发各个环节的正确性 ,需要进行各种,需要进行各种确认确认和和验证验证工作。工作。 n n 确认确认( (ValidationValidation) ),是一系列的活动,是一系列的活动 和过程,目的是想证实在一个给定和过程,目的是想证实在一个给定 的外部环境中软件的逻辑正确性。的外部环境中软件的逻辑正确性。 n n 需求规格说明确认需求规格说明确认 n n 程序确认程序确认 ( (静态确认、动态确认静态确认、动态确认) ) n n 验证验证( (VerificationVerification) ),试图证明在软,试图证明在软 件生存期各个阶段,以及阶段间的件生存期各个阶段,以及阶段间的 逻辑协调性、完备性和正确性。逻辑协调性、完备性和正确性。 测试信息流测试信息流 测试信息流测试信息流 n n 软件配置软件配置:软件需求规格说明、软:软件需求规格说明、软 件设计规格说明、源代码等;件设计规格说明、源代码等; n n 测试配置测试配置:测试计划、测试用例、:测试计划、测试用例、 测试程序等;测试程序等; n n 测试工具测试工具:测试数据自动生成程序:测试数据自动生成程序 、静态分析程序、动态分析程序、静态分析程序、动态分析程序、 测试结果分析程序、以及驱动测试测试结果分析程序、以及驱动测试 的测试数据库等等。的测试数据库等等。 n n 测试结果分析测试结果分析:比较实测结果与:比较实测结果与 预期结果,评价错误是否发生。预期结果,评价错误是否发生。 n n 排错排错( (调试调试) ):对已经发现的错误:对已经发现的错误 进行错误定位和确定出错性质,进行错误定位和确定出错性质, 并改正这些错误,同时修改相关并改正这些错误,同时修改相关 的文档。的文档。 n n 修正后的文档再测试修正后的文档再测试:直到通过:直到通过 测试为止。测试为止。 n n 通过收集和分析测试结果数据,对软件通过收集和分析测试结果数据,对软件 建立可靠性模型建立可靠性模型 n n 利用可靠性分析,评价软件质量:利用可靠性分析,评价软件质量: n n 软件的质量和可靠性达到可以接受的程软件的质量和可靠性达到可以接受的程 度;度; n n 所做的测试不足以发现严重的错误;所做的测试不足以发现严重的错误; n n 如果测试发现不了错误,可以肯定,测如果测试发现不了错误,可以肯定,测 试配置考虑得不够细致充分,错误仍然试配置考虑得不够细致充分,错误仍然 潜伏在软件中。潜伏在软件中。 测试与软件开发各阶段的关系测试与软件开发各阶段的关系 n n 软件开发过程是一个自顶向下,逐步细软件开发过程是一个自顶向下,逐步细 化的过程化的过程 n n 软件计划阶段定义软件作用域软件计划阶段定义软件作用域 n n 软件需求分析建立软件信息域、功能和软件需求分析建立软件信息域、功能和 性能需求、约束等性能需求、约束等 n n 软件设计软件设计 n n 把设计用某种程序设计语言转换成程序把设计用某种程序设计语言转换成程序 代码代码 n n 测试过程是依相反顺序安排的自底测试过程是依相反顺序安排的自底 向上,逐步集成的过程。向上,逐步集成的过程。 测试用例设计测试用例设计 n n 两种常用的测试方法两种常用的测试方法 n n 黑盒测试黑盒测试 n n 白盒测试白盒测试 黑盒测试黑盒测试 n n 这种方法是把这种方法是把测试对象测试对象看做看做一个黑一个黑 盒子盒子,测试人员完全不考虑程序内,测试人员完全不考虑程序内 部的逻辑结构和内部特性,只依据部的逻辑结构和内部特性,只依据 程序的需求规格说明书,检查程序程序的需求规格说明书,检查程序 的功能是否符合它的功能说明。的功能是否符合它的功能说明。 n n 黑盒测试又叫做黑盒测试又叫做功能测试功能测试或或数据驱数据驱 动测试动测试。 n n 黑盒测试方法是在程序接口上进行黑盒测试方法是在程序接口上进行 测试,主要是为了发现以下错误测试,主要是为了发现以下错误: : n n 是否有不正确或遗漏了的功能是否有不正确或遗漏了的功能? ? n n 在接口上,在接口上,输入能否正确地接受输入能否正确地接受? ? 能否输出正确的结果能否输出正确的结果? ? n n 是否有数据结构错误或外部信息是否有数据结构错误或外部信息( (例例 如数据文件如数据文件) )访问错误访问错误? ? n n 性能上是否能够满足要求性能上是否能够满足要求? ? n n 是否有初始化或终止性错误是否有初始化或终止性错误? ? n n 用黑盒测试发现程序中的错误,用黑盒测试发现程序中的错误, 必须在必须在所有可能的输入条件和输所有可能的输入条件和输 出条件出条件中确定测试数据,来检查中确定测试数据,来检查 程序是否都能产生正确的输出。程序是否都能产生正确的输出。 n n 但这是但这是不可能不可能的。的。 n n 假设一个假设一个程序程序P P有有输入量输入量X X和和Y Y及及输输 出量出量Z Z。在字长为。在字长为3232位的计算机上位的计算机上 运行。若运行。若X X、Y Y取整数,按黑盒方法取整数,按黑盒方法 进行穷举测试:进行穷举测试: n n 可能采用的可能采用的 测试数据组:测试数据组: 2 232 32 2 2 3232 2 264 64 n n 如果测试一组数据需要如果测试一组数据需要1 1毫秒,一年毫秒,一年 工作工作365365 24 24小时,完成所有测试需小时,完成所有测试需 5 5亿年。亿年。 白盒测试白盒测试 n n 此方法此方法把测试对象看做一个透明的把测试对象看做一个透明的 盒子盒子,它允许测试人员利用程序内,它允许测试人员利用程序内 部的逻辑结构及有关信息,设计或部的逻辑结构及有关信息,设计或 选择测试用例,对程序所有逻辑路选择测试用例,对程序所有逻辑路 径进行测试。径进行测试。 n n 通过在不同点检查程序的状态,确通过在不同点检查程序的状态,确 定实际的状态是否与预期的状态一定实际的状态是否与预期的状态一 致。因此白盒测试又称为结构测试致。因此白盒测试又称为结构测试 或逻辑驱动测试。或逻辑驱动测试。 n n 软件人员使用白盒测试方法,主要想软件人员使用白盒测试方法,主要想 对程序模块进行如下的检查:对程序模块进行如下的检查: n n 对程序模块的对程序模块的所有独立的执行路径所有独立的执行路径 至少测试一次;至少测试一次; n n 对对所有的逻辑判定所有的逻辑判定,取取“ “真真” ”与取与取“ “假假 ” ”的两种情况都至少测试一次的两种情况都至少测试一次; n n 在循环的边界和运行界限内执行循在循环的边界和运行界限内执行循 环体;环体; n n 测试测试内部数据结构的有效性内部数据结构的有效性,等。,等。 n n 对一个具有对一个具有多重选择和循环嵌套多重选择和循环嵌套的的 程序,程序,不同的路径数目可能是天文不同的路径数目可能是天文 数字数字。给出一个小程序的流程图,。给出一个小程序的流程图, 它包括了一个执行它包括了一个执行2020次的循环。次的循环。 n n 包含的不同执行路径数达包含的不同执行路径数达5 520 20条, 条, 对每一条路径进行测试需要对每一条路径进行测试需要1 1毫秒毫秒 ,假定一年工作,假定一年工作365 365 24 24小时,要小时,要 想把所有路径测试完,需想把所有路径测试完,需31703170年。年。 逻辑覆盖逻辑覆盖 n n 语句覆语句覆 盖盖 n n 判定覆判定覆 盖盖 n n 条件覆条件覆 盖盖 n n 判定条件覆盖判定条件覆盖 n n 条件组合覆盖条件组合覆盖 n n 路径覆盖路径覆盖。 逻辑覆盖是以逻辑覆盖是以程序内部的逻辑结构为程序内部的逻辑结构为 基础基础的设计测试用例的技术。它属白的设计测试用例的技术。它属白 盒测试。盒测试。 (A1) and (B=0) (A=2) or (X1) X=X/A X=X+1 T T T T F F F F a a b b d d c c e e L1L1 ( ( a a c c e e ) ) = = (A1) (A1) and and (B=0)(B=0) and and (A=2) (A=2) or or (X/A1)(X/A1) = (A1) = (A1) andand (B=0) (B=0) andand (A=2) (A=2) oror (A1) (A1) andand (B=0) (B=0) andand (X/A1) (X/A1) = = (A=2) (A=2) andand (B=0) (B=0) oror (A1) (A1) andand (B=0) (B=0) andand (X/A1) (X/A1) L2 ( aL2 ( a b b d ) d ) = = notnot(A1) (A1) andand (B=0) (B=0) and and not not(A=2) (A=2) oror (X1) (X1) = = not not (A1) (A1) or notor not (B=0) (B=0) and and not not (A=2) (A=2) and notand not (X1) (X1) = = notnot (A1) (A1) and notand not (A=2) (A=2) and notand not (X1) (X1) or or notnot (B=0) (B=0) andand notnot (A=2) (A=2) and notand not (X1) (X1) L3 ( aL3 ( a b b e) e) = = not not (A1) (A1) andand (B=0) (B=0) and and (A=2) (A=2) oror (X1) (X1) = = not not (A1) (A1) or notor not (B=0) (B=0) and and (A=2) (A=2) oror (X1) (X1) = = notnot (A1) (A1) andand (A=2) (A=2) or or notnot (A1) (A1) andand (X1)(X1) oror notnot (B=0) (B=0) and and (A=2) (A=2) oror notnot (B=0) (B=0) andand (X1) (X1) L4 ( aL4 ( a c c d ) d ) = = (A1) (A1) andand (B=0) (B=0) andand not not (A=2) (A=2) oror (X/A1) (X/A1) = = (A1) (A1) and and (B=0) (B=0) and notand not (A=2) (A=2) andand notnot (X/A1) (X/A1) 语句覆盖语句覆盖 n n 语句覆盖就是设计若干个测试用例语句覆盖就是设计若干个测试用例 ,运行被测程序,使得,运行被测程序,使得每一可执行每一可执行 语句至少执行一次语句至少执行一次。 n n 在图例中,正好所有的可执行语句在图例中,正好所有的可执行语句 都在都在路径路径L1L1上,所以选择上,所以选择路径路径 L1 L1设设 计测试用例,就可以覆盖所有的可计测试用例,就可以覆盖所有的可 执行语句。执行语句。 n n 测试用例的设计格式如下测试用例的设计格式如下 【输入的【输入的( (A A, , B B, , X X) ),输出的,输出的( (A A, , B B, , X X) ) 】 n n 为图例设计满足为图例设计满足语句覆盖语句覆盖的测试用例的测试用例 是是: : 【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0, 3)】 】 覆盖覆盖 ace ace【L1L1】 (A=2) (A=2) andand (B=0) (B=0) oror (A1) (A1) andand (B=0) (B=0) andand (X/A1) (X/A1) 判定覆盖判定覆盖 n n 判定覆盖就是设计若干个测试用判定覆盖就是设计若干个测试用 例,运行被测程序,使得例,运行被测程序,使得程序中程序中 每个判断的取真分支和取假分支每个判断的取真分支和取假分支 至少经历一次至少经历一次。 n n 判定覆盖又称为判定覆盖又称为分支覆盖分支覆盖。 n n 对于图例,如果选择对于图例,如果选择路径路径L1L1和和L2L2 ,就可得满足要求的测试用例,就可得满足要求的测试用例: : n n 【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0, 3)】覆盖】覆盖 ace ace【L1L1 】 【(1, 1, 1)(1, 1, 1),(1, 1, 1)(1, 1, 1)】覆盖】覆盖 abd abd【L2L2 】 (A=2) (A=2) andand (B=0) (B=0) oror (A1) (A1) andand (B=0) (B=0) andand (X/A1)(X/A1) notnot (A1) (A1) and notand not (A=2) (A=2) and notand not (X1) (X1) or or notnot (B=0) (B=0) andand notnot (A=2) (A=2) and notand not (X1) (X1) n n 如果选择路径如果选择路径L3L3和和L4L4,还可得另一组可,还可得另一组可 用的测试用例用的测试用例: : 【(2, 1, 1)(2, 1, 1),(2, 1, 2)(2, 1, 2)】覆盖】覆盖 abe abe【L3L3】 【(3, 0, 3)(3, 0, 3),(3, 1, 1)(3, 1, 1)】覆盖】覆盖 acd acd【L4L4】 not not (A1) (A1) andand (X1) (X1) or or notnot (B=0) (B=0) andand (A=2)(A=2) or or notnot (B=0) (B=0) andand (X1) (X1) (A1) (A1) and and (B=0) (B=0) and notand not (A=2) (A=2) andand notnot (X/A1) (X/A1) 条件覆盖条件覆盖 n n 条件覆盖就是设计若干个测试用例,条件覆盖就是设计若干个测试用例, 运行被测程序,使得程序中运行被测程序,使得程序中每个判断每个判断 的每个条件的可能取值至少执行一次的每个条件的可能取值至少执行一次 。 n n 在图例中,我们事先可对所有条件的在图例中,我们事先可对所有条件的 取值加以标记。例如,取值加以标记。例如, n n 对于第一个判断:对于第一个判断: n n 条件条件 A A1 1 取真为取真为 ,取假为,取假为 条件条件 B B0 0 取真为取真为 ,取假为,取假为 n n 对于第二个判断:对于第二个判断: n n 条件条件A A2 2 取真为取真为 ,取假为,取假为 条件条件X X1 1 取真为取真为 ,取假为,取假为 测试用例测试用例 覆盖分支覆盖分支 条件取条件取 值值 【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0, 3)】 L1(c, e)L1(c, e) 【(1, 0, 1)(1, 0, 1),(1, 0, 1)(1, 0, 1)】 L2(b, d) L2(b, d) 【(2, 1, 1)(2, 1, 1),(2, 1, 2)(2, 1, 2)】 L3(b, e)L3(b, e) 或或 测测 试试 用用 例例覆盖分支覆盖分支 条件取值条件取值 【(1, 0, 3)(1, 0, 3),(1, 0, 4)(1, 0, 4)】 L3(b, e) L3(b, e) 【(2, 1, 1)(2, 1, 1),(2, 1, 2)(2, 1, 2)】 L3(b, e)L3(b, e) 判定条件覆盖判定条件覆盖 n n 判定条件覆盖就是设计足够的测试判定条件覆盖就是设计足够的测试 用例,使得用例,使得判断中每个条件的所有可判断中每个条件的所有可 能取值至少执行一次能取值至少执行一次,每个判断中的每个判断中的 每个条件的可能取值至少执行一次每个条件的可能取值至少执行一次。 测测 试试 用用 例例覆盖分支覆盖分支 条件取值条件取值 【(2, 0, 4)(2, 0, 4),(2, 0, 3)(2, 0, 3)】L1(c, e)L1(c, e) 【(1, 1, 1)(1, 1, 1),(1, 1, 1)(1, 1, 1)】L2(b, d) L2(b, d) (A=2) (A=2) andand (B=0) (B=0) oror (A1) (A1) andand (B=0) (B=0) andand (X/A1)(X/A1) notnot (A1) (A1) and notand not (A=2) (A=2) and notand not (X1) (X1) or or notnot (B=0) (B=0) andand notnot (A=2) (A=2) and notand not (X1) (X1) andand oror A1 T T B=0 T T X=X/A T T F F F F A=2 T T F F X1 F F X=X+1 条件组合覆盖条件组合覆盖 n n 条件组合覆盖就是设计足够的测条件组合覆盖就是设计足够的测 试用例,运行被测程序,使得试用例,运行被测程序,使得每每 个判断的所有可能的条件取值组个判断的所有可能的条件取值组 合至少执行一次合至少执行一次。 记记 A A1, B1, B0 0 作作 A A1, B0 1, B0 作作 A A 1, B1, B0 0 作作 A A 1, B0 1, B0 作作 A A2, X2, X1 1 作作 A A2, X2, X 1 1 作作 A2, X A2, X1 1 作作 A2, X A2, X 1 1 作作 测测 试试 用用 例例 覆盖条件覆盖条件 覆盖组合覆盖组合 【(2, 0, 4), (2, 0, 3)(2, 0, 4), (2, 0, 3)】(L1)(L1) , , 【(2, 1, 1), (2, 1, 2)(2, 1, 1), (2, 1, 2)】(L3)(L3) , , 【(1, 0, 3), (1, 0, 4)(1, 0, 3), (1, 0, 4)】(L3)(L3) , , 【(1, 1, 1), (1, 1, 1)(1, 1, 1), (1, 1, 1)】(L2)(L2) , , 路径测试路径测试 n n 路径测试就是设计足够的测试用例,路径测试就是设计足够的测试用例,覆覆 盖程序中所有可能的路径盖程序中所有可能的路径。 测测 试试 用用 例例 通过路径通过路径 覆盖条件覆盖条件 【(2, 0, 4), (2, 0, 3)(2, 0, 4), (2, 0, 3)】 ace (L1)ace (L1) 【(1, 1, 1), (1, 1, 1)(1, 1, 1), (1, 1, 1)】 abdabd (L2)(L2) 【(1, 1, 2), (1, 1, 3)(1, 1, 2), (1, 1, 3)】 abeabe (L3)(L3) 【(3, 0, 3), (3, 0, 1)(3, 0, 3), (3, 0, 1)】 acdacd (L4)(L4) 条件测试路径选择条件测试路径选择 n n 当程序中判定多于一个时,形成的当程序中判定多于一个时,形成的 分支结构可以分为两类:分支结构可以分为两类:嵌套型分嵌套型分 支结构支结构和和连锁型分支结构连锁型分支结构。 n n 对于嵌套型分支结构,若有对于嵌套型分支结构,若有n n个判定个判定 语句,需要语句,需要n n+1+1个测试用例;个测试用例; n n 对于连锁型分支结构,对于连锁型分支结构, 若有若有n n个判定个判定 语句,需要有语句,需要有2 2 n n 个测试用例,覆盖个测试用例,覆盖 它的它的2 2 n n 条路径。条路径。 循环测试路径选择循环测试路径选择 n n 循环分为循环分为4 4种不同类型:种不同类型:简单循环简单循环、 连锁循环连锁循环、嵌套循环嵌套循环和和非结构循环非结构循环 。 (1) (1) 简单循环简单循环 零次循环零次循环:从循环入口到出口:从循环入口到出口 一次循环一次循环:检查循环初始值:检查循环初始值 二次循环二次循环:检查多次循环:检查多次循环 mm次循环:次循环: 检查在多次循环检查在多次循环 最大次数循环、比最大次数多最大次数循环、比最大次数多 一次、少一次的循环。一次、少一次的循环。 例:求最小值例:求最小值 k k = = i i; ; for ( for ( j j = = i i+1; +1; j j = = n n; ; j j+ )+ ) if ( Aif ( Aj j A Ak k ) ) k k = = j j; ; k k = = i i ; ; j j = = i i+1;+1; j j = = n n? ? AAj jAAk k? k k = = j j j j + f d c a b e 测试用例选择测试用例选择 对最内层循环做简单循环的全对最内层循环做简单循环的全 部测试。所有其它层的循环变量置为部测试。所有其它层的循环变量置为 最小值;最小值; 逐步外推,对其外面逐步外推,对其外面 一层循环进行测试。测试时保持所有一层循环进行测试。测试时保持所有 外层循环的循环变量取最小值,所有外层循环的循环变量取最小值,所有 其它嵌套内层循环的循环变量取其它嵌套内层循环的循环变量取“ “典典 型型” ”值。值。 反复进行,直到所有反复进行,直到所有 各层循环测试完毕。各层循环测试完毕。 (2)(2) 嵌套循环嵌套循环 对全部各层循环同时取最小循环次对全部各层循环同时取最小循环次 数,或者同时取最大循环次数数,或者同时取最大循环次数 (3) (3) 连锁循环连锁循环 如果各个循环如果各个循环互相独立互相独立,则可以用与,则可以用与 简单循环相同的方法进行测试。但如简单循环相同的方法进行测试。但如 果几个循环不果几个循环不是互相独立是互相独立的,则需要的,则需要 使用测试嵌套循环的办法来处理。使用测试嵌套循环的办法来处理。 (4) (4) 非结构循环非结构循环 这一类循环应该使用结构化程序设计这一类循环应该使用结构化程序设计 方法重新设计测试用例。方法重新设计测试用例。 基本路径测试基本路径测试 n n 基本路径测试方法把覆盖的路径数压缩基本路径测试方法把覆盖的路径数压缩 到一定限度内,到一定限度内,程序中的循环体最多只程序中的循环体最多只 执行一次执行一次。 n n 它是在程序控制流图的基础上,它是在程序控制流图的基础上,分析控分析控 制构造的环路复杂性制构造的环路复杂性,导出基本可执行导出基本可执行 路径集合路径集合,设计测试用例的设计测试用例的方法。设计方法。设计 出的测试用例要保证在测试中,程序的出的测试用例要保证在测试中,程序的 每一个可执行语句至少要执行一次。每一个可执行语句至少要执行一次。 1. 1. 程序的控制流图程序的控制流图 n n 符号符号 为控制流图的一个结点,表为控制流图的一个结点,表 示一个或多个无分支的示一个或多个无分支的PDLPDL语句或语句或 源程序语句。箭头为边,表示控制源程序语句。箭头为边,表示控制 流的方向。流的方向。 n n 在选择或多分支结构中,分支的汇在选择或多分支结构中,分支的汇 聚处应有一个汇聚结点。聚处应有一个汇聚结点。 n n 边和结点圈定的区域叫做区域边和结点圈定的区域叫做区域,当,当 对区域计数时,图形外的区域也应对区域计数时,图形外的区域也应 记为一个区域。记为一个区域。 n n 如果判断中的条件表达式是由一个如果判断中的条件表达式是由一个 或多个逻辑运算符或多个逻辑运算符 (OR, AND, .)(OR, AND, .) 连接的复合条件表达式,则需改为连接的复合条件表达式,则需改为 一系列一系列只有单个条件的嵌套的判断只有单个条件的嵌套的判断 。 2. 2. 程序环路复杂性程序环路复杂性 n n 程序的环路复杂性给出了程序的环路复杂性给出了程序基本程序基本 路径集中的独立路径条数路径集中的独立路径条数,这是确,这是确 保程序中每个可执行语句至少执行保程序中每个可执行语句至少执行 一次所必需的测试用例数目的上界一次所必需的测试用例数目的上界 。 n n 从控制流图来看,一条独立路径是从控制流图来看,一条独立路径是 至少包含有一条在其它独立路径中至少包含有一条在其它独立路径中 从未有过的边的路径。从未有过的边的路径。 n n 例如,在图示的控制流图中,一组例如,在图示的控制流图中,一组 独立的路径是独立的路径是 path1path1:1 - 111 - 11 path2path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 111 - 2 - 3 - 4 - 5 - 10 - 1 - 11 path3path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 111 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11 path4path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 111 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11 n n 路径路径 path1 path1,path2path2,path3path3,path4path4 组成了控制流图的一个基本路径集组成了控制流图的一个基本路径集 。 3. 3. 导出测试用例导出测试用例 n n 导出测试用例,导出测试用例,确保基本路径集中确保基本路径集中 的每一条路径的执行的每一条路径的执行。 n n 根据判断结点给出的条件,选择适根据判断结点给出的条件,选择适 当的数据以保证某一条路径可以被当的数据以保证某一条路径可以被 测试到测试到 用逻辑覆盖方法用逻辑覆盖方法。 n n 每个每个测试用例执行之后测试用例执行之后,与预期结与预期结 果进行比较果进行比较。如果所有测试用例都。如果所有测试用例都 执行完毕,则可以确信程序中所有执行完毕,则可以确信程序中所有 的可执行语句至少被执行了一次。的可执行语句至少被执行了一次。 n n 必须注意,一些独立的路径必须注意,一些独立的路径( (如例中如例中 的路径的路径1)1),往往不是完全孤立的,往往不是完全孤立的, 有时它是程序正常的控制流的一部有时它是程序正常的控制流的一部 分,这时,这些路径的测试可以是分,这时,这些路径的测试可以是 另一条路径测试的一部分。另一条路径测试的一部分。 黑盒测试的测试用例设计黑盒测试的测试用例设计 n n 等价类划分等价类划分 n n 边界值分析边界值分析 n n 错误推测法错误推测法 n n 因果图因果图 等价类划分等价类划分 n n 等价类划分是一种典型的黑盒测试等价类划分是一种典型的黑盒测试 方法,使用这一方法时,方法,使用这一方法时,完全不考完全不考 虑程序的内部结构虑程序的内部结构,只依据程序的只依据程序的 规格说明来设计测试用例规格说明来设计测试用例。 n n 等价类划分方法等价类划分方法把所有可能的输入把所有可能的输入 数据数据,即程序的输入域,即程序的输入域划分成若干划分成若干 部分部分,然后,然后从每一部分中选取少数从每一部分中选取少数 有代表性的数据做为测试用例有代表性的数据做为测试用例。 n n 使用这一方法设计测试用例要经历使用这一方法设计测试用例要经历 划分等价类划分等价类(列出等价类表)和(列出等价类表)和选选 取测试用例取测试用例两步。两步。 n n 划分等价类划分等价类 等价类是指某个输入域的子集合。等价类是指某个输入域的子集合。 在该子集合中,在该子集合中,各个输入数据对于各个输入数据对于 揭露程序中的错误都是等效的揭露程序中的错误都是等效的。测。测 试某等价类的代表值就等价于对这试某等价类的代表值就等价于对这 一类其它值的测试。一类其它值的测试。 n n 等价类的划分有两种不同的情况:等价类的划分有两种不同的情况: 有效等价类有效等价类:是指对于程序的:是指对于程序的 规格说明来说,是合理的,有意义规格说明来说,是合理的,有意义 的输入数据构成的集合。的输入数据构成的集合。 无效等价类无效等价类:是指对于程序的:是指对于程序的 规格说明来说,是不合理的,无意规格说明来说,是不合理的,无意 义的输入数据构成的集合。义的输入数据构成的集合。 n n 在设计测试用例时,要同时考虑有在设计测试用例时,要同时考虑有 效等价类和无效等价类的设计。效等价类和无效等价类的设计。 n n 划分等价类等价类的原则。划分等价类等价类的原则。 (1)(1) 如果输入条件规定了取值范围,或如果输入条件规定了取值范围,或 值的个数,则可以确立一个有效等价类值的个数,则可以确立一个有效等价类 和两个无效等价类。和两个无效等价类。 n n 例如,在程序的规格说明中,对输例如,在程序的规格说明中,对输 入条件有一句话:入条件有一句话: “ “ 项数可以从项数可以从1 1到到999 ”999 ” 则有效等价类是则有效等价类是“ “11项数项数999999” ” 两个无效等价类是两个无效等价类是“ “项数项数1 1” ”或或“ “项项 数数999999” ”。在数轴上表示成。在数轴上表示成: : (2) (2) 如果输入条件规定了输入值的集合如果输入条件规定了输入值的集合 ,或者是规定了,或者是规定了“ “必须如何必须如何” ”的条件,这的条件,这 时可确立一个有效等价类和一个无效等时可确立一个有效等价类和一个无效等 价类。价类。 n n 例如,在例如,在PascalPascal语言中对变量标识符规语言中对变量标识符规 定为定为“ “以字母打头的以字母打头的串串” ”。那么所有。那么所有 以字母打头的构成有效等价类,而不在以字母打头的构成有效等价类,而不在 此集合内(不以字母打头)的归于无效此集合内(不以字母打头)的归于无效 等价类。等价类。 (3) (3) 如果输入条件是一个布尔量,如果输入条件是一个布尔量, 则可以确定一个有效等价类和一个则可以确定一个有效等价类和一个 无效等价类。无效等价类。 (4) (4) 如果规定了输入数据的一组值如果规定了输入数据的一组值 ,而且程序要对每个输入值分别进,而且程序要对每个输入值分别进 行处理。行处理。这时可为这时可为 每一个输入值确每一个输入值确 立一个有效等价类,此外针对这组立一个有效等价类,此外针对这组 值确立一个无效等价类,它是所有值确立一个无效等价类,它是所有 不允许的输入值的集合。不允许的输入值的集合。 n n 例如,在教师上岗方案中规定对教例如,在教师上岗方案中规定对教 授、副教授、讲师和助教分别计算授、副教授、讲师和助教分别计算 分数,做相应的处理。因此可以确分数,做相应的处理。因此可以确 定定4 4个有效等价类为教授、副教授个有效等价类为教授、副教授 、讲师和助教,一个无效等价类,、讲师和助教,一个无效等价类, 它是所有不符合以上身分的人员的它是所有不符合以上身分的人员的 输入值的集合。输入值的集合。 (5) (5) 如果规定了输入数据必须遵守如果规定了输入数据必须遵守 的规则,则可以确立一个有效等价的规则,则可以确立一个有效等价 类(符合规则)和若干个无效等价类(符合规则)和若干个无效等价 类(从不同角度违反规则)。类(从不同角度违反规则)。 n n 例如,例如,PascalPascal语言规定语言规定 “ “一个语句必须一个语句必须 以分号以分号;结束结束” ”。这时,可以确定一个。这时,可以确定一个 有效等价类有效等价类 “ “以以;结束结束” ”,若干个无效等,若干个无效等 价类价类 “ “以以:结束结束” ”、“ “以以,结束结束” ”、“ “以以 结束结束” ”、“ “以以LFLF结束结束” ”等。等。 n n 确立测试用例确立测试用例 在确立了等价类之后,建立等价类表,在确立了等价类之后,建立等价类表, 列出所有划分出的等价类。列出所有划分出的等价类。 n n 再从划分出的等价类中按以下原则再从划分出的等价类中按以下原则 选择测试用例:选择测试用例: ( ( 1)1) 为每一个等价类规定一个唯一编号;为每一个等价类规定一个唯一编号; (2)(2) 设计一个新的测试用例,使其设计一个新的测试用例,使其尽可能尽可能 多地覆盖尚未被覆盖的有效等价类多地覆盖尚未被覆盖的有效等价类,重,重 复这一步,直到所有的有效等价类都被复这一步,直到所有的有效等价类都被 覆盖为止;覆盖为止; (3)(3) 设计一个新的测试用例,使其设计一个新的测试用例,使其仅覆盖仅覆盖 一个尚未被覆盖的无效等价类一个尚未被覆盖的无效等价类,重复这,重复这 一步,直到所有的无效等价类都被覆盖一步,直到所有的无效等价类都被覆盖 为止为止。 n n 用等价类划分法设计测试用例的实用等价类划分法设计测试用例的实 例例 在某一在某一PASCALPASCAL语言版本中规定:语言版本中规定: “ “标识符是由字母开头标识符是由字母开头,后跟字母后跟字母 或数字的任意组合构成或数字的任意组合构成。有效字符有效字符 数为数为8 8个个,最大字符数为最大字符数为8080个个。” ” 并且规定:并且规定:“ “标识符必须先说明标识符必须先说明, 再使用再使用。” “” “在同一说明语句中在同一说明语句中, 标识符至少必须有一个标识符至少必须有一个。” ” 用等价类划分方法,建立输入等价类表用等价类划分方法,建立输入等价类表: : n n 下面选取了下面选取了9 9个测试用例,它们覆盖个测试用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兼职前台合同标准文本
- 加工酒合同样本
- 分公司 销售 合同标准文本
- 企业知识产权战略合作合同
- 代理商经销合同书
- 家庭家具买卖合同书5篇
- 土地长期租用转让合同5篇
- 酒店客房预订服务合同协议书范本模板6篇
- 业务外包协议模板合同9篇
- 机械租赁施工合同5篇
- 2025年科普知识竞赛题及答案(共100题)
- 地下混凝土水池蓄水试验方案20240401
- 头晕、抑郁与焦虑关系解析与应对策略
- 初中入团考试题型及答案
- 2025年北京卫生职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年河南推拿职业学院单招职业技能考试题库含答案
- 深基坑工程施工中的自动化设备应用
- 烟草公司办公楼物业服务方案
- 口腔保健科普讲座(幼儿园)课件
- 2024-2025学年全国版图知识竞赛考试题库资料(含答案)
- (完整)交管12123学法减分试题库带参考答案
评论
0/150
提交评论