第7章 软件测试
7.1 软件测试目标
—— 测试是为了证明程序有错,而不是证明程序无错误
7.2 软件测试准则(6个)
—— 所有测试都应该能追溯到用户需求 —— 测试开始之前制定测试计划 —— Pareto原理可应用于软件测试
—— 从小规模测试开始,并逐步进行大规模测试 —— 穷举测试是不可能的
—— 由独立的第三方从事测试工作
7.3 软件测试方法
—— 测试时是否需要执行被测软件
…… 静态测试 定义:对被测程序进行特性分析的方法的总称,这些方法的主
要特性是无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。
…… 动态测试 定义:实际运行被测程序,通过输入相应的测试用例,判定执
行结果(输入/输出的对应关系)是否符合要求,从而检验程序的正确性、可靠性和有效性。
—— 测试是否针对内部结构和具体实现算法
…… 黑盒测试 定义:是一种从用户观点出发的测试。用这种方法进行测试时,
把被测程序当作一个黑盒,不考虑程序内部结构和特性,测试者只考虑程序输入输出和程序功能,根据需求规格说明书来设计测试用例,推断测试结果的正确性 …… 白盒测试 定义:依赖于对程序内部细节的严密检验,针对特定条件设计
测试用例,对软件的逻辑路径进行测试。 …… 灰盒测试
7.4 软件测试过程
7.4.1 单元测试
—— 定义:将每个模块作为一个独立的实体来测试。用详细设计描述作指南,对
重要的程序执行通路进行测试,以便发现模块内部的错误。发现编码和详细设计的错误。
—— 驱动模块,桩模块(存根程序) 7.4.2 集成测试
—— 定义:按照概要设计的要求组装独立模块成为子系统或系统,同时经过测试
来发现接口错误的一种系统化的技术。 —— 模式:
…… 非渐增式测试方法(分模块测试→一次性组装→所有模块集成测试) …… 渐增式测试方法(分模块测试→逐个模块组装→直到集成测试)
2
自顶向下集成(深度优先策略,宽度优先策略 ) 自底向上集成 三明治集成
7.4.3 系统测试
—— 定义:系统测试是指将经过集成测试的软件作为整个基于计算机系统的一个
元素,与计算机硬件、外设、支持软件、数据和人员等元素结合在一起,对计算机系统进行一系列的组装测试和确认测试。系统测试的依据是软件需求规格说明书,测试的内容主要包括功能测试和性能测试两方面。 —— 测试内容:功能测试,性能测试 7.4.4 确认测试
—— 定义:确认测试又称“验收测试”、“有效性测试”,其任务是验证软件的功能
和性能及其它特性是否与用户的要求一致。 —— 分类:Alpha测试(开发者+用户),Beta测试(用户+开发者) 7.4.5 回归测试
—— 定义:重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来
非预期的副作用。
—— 作用:保证由于调试或其他原因引起的变化,不会导致非预期的副作用。
7.5 测试用例的设计
7.5.1 测试用例的设计原则 7.5.2 白盒测试方法用例的设计
—— 逻辑覆盖
…… 语句覆盖:程序中每个可执行语句至少执行一次
…… 判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,
即判断真假值均曾被满足
…… 条件覆盖:使每个判断中每个条件的可能取值至少满足一次
…… 判定条件覆盖:使得判断条件中的所有条件可能至少执行一次取值,同
时所有判断的可能结果至少执行一次
…… 条件组合覆盖:使得每个判定表达式中条件的各种可能组合都至少执行
一次
…… 路径覆盖:覆盖程序中的所有可能的执行路径 —— 循环覆盖
…… 单循环 …… 嵌套循环 —— 基本路径测试
7.5.3 黑盒测试方法用例的设计
—— 等价类划分
…… 有效等价类 定义:指对于程序的规格说明来说,是合理的 有意义的输
入数据构成的集合
…… 无效等价类 定义:是指对于程序的规格说明来说,是不合理 的,是无
意义的输入数据构成的集合
—— 边界值分析 —— 错误推测 —— 因果图法
2
7.6 软件调试
—— 试探法 —— 回溯法 —— 对分查找法 —— 归纳法 —— 演绎法
2
因篇幅问题不能全部显示,请点此查看更多更全内容