1 测试目的

    (1)验证软件是否满足软件开发合同或者项目开发计划、系统/子系统设计文档,软件需求规格说明、软件设计说明和软件产品说明等规定的软件质量要求。

    (2)通过测试、发现软件缺陷

    (3)为软件产品的质量测量和评价提供依据

2 测试类型

    (1)单元测试

    (2)集成测试

    (3)配置项测试(软件合格性测试或确认测试)

    (4)系统测试

    (5)验收测试

    可根据软件规模、类型、完整性级别选择执行测试类别

    回归测试可出现现在上述的每个类别中。

3 测试过程

    (1)测试策划

    主要是进行测试需求分析,即确定需要测试的内容或质量特性;确定测试的充分性要求;提出测试的基本方法;确定测试的字眼和技术需求;进行风险分析与评估;制定测试计划(喊资源计划和进度计划)

    (2)测试设计

    依据测试需求,分析并选用已有的测试用例或设计新的测试用例;获取并验证测试数据;根据测试资源、风险等约束条件,确定测试用例执行顺序;获取测试资源,开发测试软件;建立并校准测试环境;进行测试就学评审、主要评审测试计划的合理性和测试用例的正确性、有效性和覆盖充分性,评审测试组织,环境和设备工具是否齐备并符合要求,在进入下一阶段工作之前,应通过测试就绪评审。

    (3)测试执行

    执行测试用例,获取测试结果;分析并判定测试结果。同时,根据不同的判定结果采取相应措施,对测试过程的正常或异常终止进行核对,并根据核对结果,对未达到测试终止条件的测试用例,决定是停止测试,还是需要修改过或补充测试用例集,并进一步测试。

    (4)测试总结

    整理和分析测试数据,评价测试效果和被测试软件相,描述测试状态。如,实际测试与测试计划和测试说明的差异,测试充分性分析、未能解决的测试事件等;描述被测试软件项的状态,如被测试软件与需求的差异,并发现的软件差错等;最后,完成软件测试报告,并通过测试评审。 

4 测试方法

    (1)静态测试方法

    静态测试方法包括检查单和静态分析方法,对文档的静态测试方法主要以检查单的形式进行,而对于代码的静态测试方法一般采用代码审查、代码走查和静态分析,静态分析一般包括控制流分析、数据流分析、接口分析和表达式分析。

    应用软件代码进行审查、走查或静态分析;对于规模较小、安全性要求很高的代码也可以进行形式化证明。

    (2)动态测试方法

    动态测试方法-般采用白盒测试方法和黑盒测试方法。黑盒测试方法-般包括功能分解、边界值分析、判定表、因果图、状态图、随机测试、猜错法和正交实验法等;白盒测试方法一般包括控制流测试(语句覆盖测试、分支覆盖测试、条件覆盖测试、条件组合覆盖测试、路径覆盖测试)、数据流测试、程序变异、程序插桩、域测试和符号值等。

    在软件动态测试过程中,应采用适用当的测试方法,实现测试目标。配置项测试盒系统测试一般采用黑盒测试方法;集成测试一般主要采用黑盒测试方法,辅助以白盒测试方法;单元测试一般采用白盒测试方法,辅助以黑盒测试方法。

5 测试用例

    (1)测试用例设计原则

    1. 基于测试需求的原则。应按照测试类别的不同要求,设计测试用例。如,单元测试依据详细设计说明,集成测试依据概要设计说明,配置项测试依据软件需求规格说明,系统测试依据用户需求(系统/系统设计说明,软件开发计划等)

    2. 基于测试方法的原则。应明确所采用的测试用例设计方法。为达到不同的测试充分性要求,应采用相应的测试方法,如等价类划分、边界值分析、猜错法、因果图等方法。

    3. 兼顾测试充分性和效率的原则。测试用例集应兼顾测试的充分性和测试的效率;每个测试用例的内容也应完整,具有可操作性。

    4. 测试执行的可在现性原则。应保证测试用例执行的可再现性。

    (2)测试用例要素

  • 名称和标识。每个用例用例应有唯一的名称和标识符

  • 测试追踪。说明测试所依据的内容来源,如系统测试依据的是用户需求,配置项测试依据的是软件需求,集成测试盒单元测试依据的软件设计。

  • 用例说明。简要描述测试的对象、目的和所采用的测试方法。

  • 测试的初始化要求,应考虑下初始化要求:

    • 硬件配置:被测系统的硬件配置情况,包括硬件条件或者电气状态。

    • 软件配置:测试的初始条件。

    • 测试配置:测试系统的配置情况,如用于测试的模拟系统和测试工具等的配置。

    • 参数设置。测试开始前的设置,如标记、第一断点、指针、控制参数和初始化数据等的设置。

  • 其他对于测试用例的特殊说明。

  • 测试的输入。在测试用例执行中发送给被测对象的所有测试命令、数据和信号等。

    1. 每个测试输入的具体内容(如确定的数量、状态或信号等)及其性质(如有效值、无效值、边界值等)

    2. 测试输入的来源(例如,测试程序产生、磁盘文件、通过网络接收、人工键盘输入等),以及选择输入所使用的方法(例如,等价类划分、边界值分析、差错推测、因果图、功能图方法)

    3. 测试输入时真实的还是模拟的。

    4. 测试输入的时间顺序或事件顺序。

  • 期望的测试结果。说明测试用例执行中由被测试软件所产生期望的测试结果,即经过验证,认为正确的结果。必要时,应提供中间的期望结果。期望测试结果应该具有内容。如确定的数值、状态或信号等,不应是不确定的概念或笼统额描述。

  • 评价测试结果的准则。判断测试用例执行中产生的中间和最后结果是否正确的准则。对于每个结果,应根据不同情况提供如下信息。

  • 操作过程,实施测试用例的执行步骤,把测试的操作过程定义为一系列按照执行顺序排列的相对独立的步骤,对于每个操作应提供:

    1. 每一步所需的测试操作动作、测试程序的输入、设备操作等。

    2. 每一步期望的测试结果。

    3. 每一步的评价准则

    4. 程序终止伴随的动作或差错指示

    5. 获取和分析实际结果过程

  • 前提和约束。在测试用例说明中施加的所有前提提交和约束条件,如果有特别限制、参数偏差测试

  • 终止条件。说明测试正常终止和异常终止的条件。

6 测试管理

    (1)过程管理。对测试过程中的测试活动和测试资源进行管理。

测试项目负责人:管理监督测试项目,提供技术指导,获取适当的资源,制定基线,负责项目的安全保密和质量管理。

测试分析员:确定测试计划、测试内容、测试方法、测试数据生成方法、测试(软、硬件)环境、测试工具、评价测试工作的有效性。

测试设计员:设计测试用例、确定测试用例的优先级、建立测试环境。

测试程序员:编写测试负责软件

测试员:执行测试、记录测试结果

测试系统管理员:对测试环境和资产管理和维护。

配置管理员:设置、管理和维护测试配置管理数据库。

    测试的准入准出条件:

    准入条件:

  • 具有测试合同(或项目计划)

  • 具有软件测试所需的各种文档

  • 提交的被测试软件是受控

  • 软件源代码正确通过编译汇报

    准出条件:

  • 已完成合同(项目计划)所规定的软件测试任务

  • 实际测试过程中遵循了原定的软件测试计划和软件测试说明

  • 客观、详细记录了软件测试过程和软件测试中发现的所有问题

  • 软件测试文档齐全、符合规定

  • 软件测试的全过程自始至终在控制下进行

  • 软件测试中的问题或异常有合理解释或正确有效的处理。

  • 软件测试工作通过了测试评审。

  • 全部测试软件、被测试软件、测试支持软件和评审结果已纳入配置管理。

    (2)配置管理

    (3)评审

  • 测试就绪评审:评审测试文档内容的完整性、正确性和规范性

  • 测试评审:

7 测试文档

    测试计划、测试方案、测试报告

8 测试工具

    (1)测试工具分类

  • 静态测试工具:对软件需求、结构设计、详细设计和代码进行评审、走查和审查工具;复杂度分析、数据流分析、控制流分析、接口分析、句法和语义分析等工具。

  • 动态测试工具:支持执行测试用例和评价测试结果的工具,包括支持选择测试用例、设置环境、运行所选择测试、记录执行活动、故障分析和测试工作有效性评价;覆盖分析、捕获和回放、存储器测试、变异测试、仿真器及性能分析、测试用例管理等工具

  • 支持测试过程活动的其他工具

    (2)测试工具选择

  • 软件测试工具需求及确认

  • 成本和收益分析

  • 测试工具的整体质量因素

9 软件完整性级别与测试的关系