天天看点

测试基本理论

基本概念

软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤;软件测试是在一定的软件、硬件、网络环境下,遵循相对规范的软件测试流程,使用合理的测试方法以及适当的测试工具运行或测试某个系统的过程。

测试目的

评价一个程序和系统的特性或能力,并确定它是否达到预期的结果;在软件分发到最终用户手中之前,以最少的时间和人力找出软件中潜在的各种错误和缺陷

测试原则

  1. 所有测试的标准都是建立在用户需求之上
  2. 尽早定义好产品的质量标准
  3. 测试应尽早介入
  4. 穷尽测试是不可能的
  5. 测试应贯穿于软件整个生命周期
  6. 程序员应避免检查自己的程序
  7. 要站在客户的角度进行测试

测试分类

  1. 按照内部结构

    白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查

    黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求

    灰盒测试:介于白盒与黑盒之间,在关注输出正确的同时也考虑内部的实现逻辑

  2. 按照是否运行

    静态测试:不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程

    动态测试:实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程

  3. 按照开发阶段

    单元测试: 又叫模块测试,对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能

    集成测试:又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增测试。重点测试不同模块的接口部分

    系统测试:指将整个软件系统看成一个整体进行测试,包括对功能、性能以及软件所运行的软硬件环境进行测试

    验收测试: 指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统

  4. 按照测试类型

    功能测试:指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性

    性能测试:是为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据;

    压力测试:压力测试是在强负载(大数据量、大量并发用户等)下,查看应用系统的操作行为,从而发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力;压力测试可分为高负载下的长时间的稳定性压力测试和极限负载下导致系统崩溃的破坏性压力测试;

    负载测试:负载测试是模拟软件系统所承受的负载条件的负荷,通过不断加载的方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,来发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题;负载测试更多地体现了一种方法或一种技术

    接口测试:主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系

    界面测试:是对所有人机交互界面提供的操作和显示界面进行的测试,以检验是否满足用户的需求

    可靠性测试:也称软件的可靠性评估,指根据软件系统可靠性结构(单元与系统间可靠性关系)、寿命类型和各单元的可靠性试验信息,利用概率统计方法,评估出系统的可靠性特征量

    恢复性测试:主要检查系统的容错能力,当系统出错时,能否在指定时间间隔内修正错误并重新启动系统

    边界测试:用来探测和验证代码在处理极端的或偏门的情况时会发生什么,包括一、输入域/输出域的边界;二、数据结构的边界;三、状态转换的边界;四、功能界限的边界或端点

    容量测试:通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行

    兼容性测试:指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试

    安全性测试:是有关验证应用程序的安全服务和识别潜在安全性缺陷的过程

    冒烟测试:指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性

    其他专项测试:安装测试、文档测试、易用性测试、健壮性测试、本地化测试、无障碍测试、回归测试、Monkey测试、A/B测试、验收测试

测试设计方法

  1. 等价类划分

    有效等价类:对于程序规格说明来说是合理的、有意义的输入数据构成的集合

    无效等价类:与有效等价类相反

  2. 边界值分析:对输入或输出的边界值进行测试的黑盒测试方法
  3. 错误推断:基于经验和直觉推测程序中可能存在的各种错误,从而有针对性的设计测试用例的方法
  4. 因果图法:利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
  5. 判定表驱动:判定表是分析和表达多逻辑条件下执行不同操作的情况的方法
  6. 正交实验法:从大量的实验数据中挑选适量的,有代表性的点来进行测试用例设计的方法,类似的方法还有聚类分析法、因子法等
  7. 功能图法:综合了逻辑覆盖和路径覆盖的测试方法,偏向于灰盒测试的一种测试方法
  8. 场景法:根据不同的触发场景来设计测试用例

测试计划和方案

  1. 测试计划:

    对测试全过程的组织、资源、原则等进行规定和约束,并制定测试全过程各个阶段的任务分配以及时间进度安排,并提出对各项任务的评估,风险分析和管理需求。

  2. 测试方案:

    描述需要测试的特性,测试的方法,测试环境的规划,测试工具的设计和选择,测试用例的设计方法,测试代码的设计方案。

    测试方案需要在测试计划的指导下进行,测试计划提出“做什么”,而测试方案明确“如何做”!