软件测试基础

发布时间 2023-03-30 10:18:43作者: 奈非天

测试基础

软件测试

测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计、实施、维护的的整个生命周期过程

软件测试是对软件形成过程的文档、检查软件数据和执行程序代码的测试,而不仅是对程序进行的测试。

软件测试基础

定义:使用人工或自动手段来运行或测试某个系统的过程。

目的:在于检验它是否满足规定的需求或是弄清预期结果实际结果之间的差别,评估软件的质量。

软件生命周期(SDLC,System Development Life Cycle,SDLC)是软件从开始立项到最终被废弃不用这个过程叫做软件生命周期,整个生命周期包括需求调研阶段–需求分析阶段(需求规格说明书)–设计(设计文档)–编码–测试–上线交付(部署到客户)–产品支持(运维)

测试的基本原则

  • 测试时上下文相关的
  • 穷尽测试是不可能的
  • 测试是尽早介入的(尽早发现问题,降低项目成本)
  • 杀虫剂悖论(重复使用同一份测试用例,不能发现新bug)
  • 缺陷群集性(在一个bug周围往往存在其他bug)
  • 测试证明存在缺陷
  • 无错谬论(软件带缺陷上线,评估缺陷对客户的影响)

测试对象:程序、数据、文档

软件开发模型

  • 瀑布型
  • 原型
  • 敏捷:是一种以人为核心、迭代、循序渐进的开发方法

软件测试模型

V模型

RAD模型是软件开发过程中的一个重要模型,他通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。

  • 用户需求 验收测试
  • 需求分析 系统测试(根据需求说明书编写)
  • 概要设计 集成测试 (根据概要设计中模块功能及接口等实现方法编写)
  • 详细设计 单元测试(和详细设计一起出来) - 软件编码

W模型

  • 需求分析SRS–概要设计HLD–详细设计LLD–编码实现coding–模块集成–系统构建–系统安装
  • 需求评审–测试项–系统测试计划–系统测试方案–系统测试用例–系统测试报告
  • 概要设计说明书–集成测试计划–IT方案–IT用例
  • 详细设计说明书–单元测试计划–UT方案–UT用例

H模型

软件测试阶段

单元测试

  • 针对软件基本组成单元(软件设计最小单元,函数、类)来进行正确性检验的测试工作

集成测试

  • 是对单元之间及单元与第三方接口之间的测试,目的是验证接口是否与设计相符,是否与需求相符
  • 集成策略:自底而上(驱动模型)、自顶而上(桩模块的开发)、渐增式(依次增加一个没有测试的模块一起测试)

系统测试

  • 是将集成好的软件系统与计算机硬件、外设、数据、和人员等元素结合在一起,在实际运行环境下,对系统进行一系列测试

确认测试(有效性测试)

  • 验证软件有效性,验证软件功能和性能及其特性是否与用户一致,若达到则表明软件是合格的

验收测试

  • 在交付客户部署前,根据合同、SRS、《验收测试计划》进行测试

Alpha测试

  • 由公司员工进行

Beta测试

  • 由其他人(用户)进行

UAT 测试

  • 用户对软件的接受程度的测试,系统操作的可行性、使用感等

回归测试

  • 测试–发现bug–提交bug–修改bug–再次验证的过程
  • 在软件的任意阶段都可以进行,发现缺陷,缺陷得到修复,修改之后的代码是否影响了之前的功能
  • 回归测试策略:完全重复性测试、选择性重复性测试(覆盖修改法、周边影响法、指标达成法)

冒烟测试

  • 验证当前开发交付的版本可不可以进行后续的测试,基本功能能不能跑通

软件测试类型

功能测试

  • 根据SRS 和测试需求列表,检验产品的功能实现是否符合产品需求

    • 根据需求来测的功能

性能测试

  • 用来测试软件在集成系统中的运行性能(响应时间)

    • Cpu使用情况
    • IO使用情况
    • 内存使用情况
    • 信道使用情况
    • 每个模块执行时间百分比
    • 一个模块等待IO

负载测试

  • 是不断的对被测对象,施加负荷,观察被测对象在不同符合指标下的性能情况,验证系统的负载承受能力,并要求在超负荷情况下,依然正常实现业务功能。

压力测试

  • 调查系统在超负荷情况下的表现,找到系统运行的极限条件,关注在超负荷的情况下,速度有多快

容量测试

  • 系统到底能够处理多大的数据量

安全测试

  • 是指验证系统的保护机制在实际保护系统不受非法的侵入,保证数据的完整性和保密性。在受到恶意攻击时,设备的自我保护能力、防护能力等

    • 系统的登录
    • 用户管理
    • 防火墙
    • 系统数据
    • Web安全性,如Web的加密,解密、数字签名等
    • 数据库的安全性
    • 内部的通信协议
    • 系统防病毒测试

GUI测试

  • 对系统界面进行测试,界面设计与界面设计的吻合情况,确认界面处理的正确性
  • 测试对象:简单界面元素:各种控件
  • 组合类界面元素:复杂的界面元素,不如:工具栏,组合框、菜单栏。
  • 完整界面(窗口):对话框、单文档窗口、多文档父窗口、多文档子窗口等

可用性测试

  • 从用户角度看软件好不好上手。
    问题:过分复杂的功能或者指令、困难的安装过程、误信息不准确或者过于简单、用户被迫记住太多信息、语法、格式和定义不一致

安装卸载测试

  • 根据安装、卸载文档进行检查文档中的步骤能不能正确安装。不仅是找安装软件的本身的错误,还要找安装文档本身的错误

异常测试

  • 系统异常测试与系统的指标测试有关系。通过人工干预手段是软、硬件异常,验证异常前后的功能和运行状态,来检查系统的容错、排错和恢复能力。可靠性测试

文档测试

  • 目标是验证用户文档是正确的,并保证操作手册的过程能够工作

网络测试

  • 在网络环境下与其他设备对接,进行系统功能、性能与指标方面的测试,保证对接正常

稳定性测试

  • 长时间运行后,系统的状况如何,系统平均无故障MTBF时间是否满足系统设计要求

兼容性测试

  • 验证被测对象与硬件、其他软件之间的兼容情况、不同的版本、机型、分辨率等

软件测试方法

白盒测试

  • 是依据被测软件的内部结构设计测试用例,来对内部控制流程进行测试,可不顾整体功能的实现

    • 静态测试

      • 不运行被测软件
    • 动态测试

      • 运行被测软件

黑盒测试

  • 只考虑整体功能,不考虑内部具体实现,又称基于规格的测试

灰盒测试

  • 典型的灰盒测试,比如:集成测试和系统测试
    既利用被测对象的整体,又利用内部具体实现,采用灰盒

人工测试

  • 有人来完成测试活动

自动化测试

  • 概念:为了提高工作效率,节省人力和成本,把人为驱动的测试转化为机器执行

软件测试流程

  • 测试计划阶段–测试计划(模板、标准等)
  • 测试设计阶段–测试方案(技术性指导)
  • 测试实现阶段–测试用例、测试规格ISTQB(测试活动顺序)
  • 测试执行阶段–测试报告、缺陷报告

测试工程师系统测试各阶段任务

测试相关文档:需求跟踪矩阵(RTM)
需求评审报告
测试计划:测试内容、测试方法、测试手段、测试环境、
测试方案:从技术角度对一次测试活动进行规划工具的设计、测试赛用例的设方法、测试数据的设计等。
环境搭建手册

  1. 软件需求阶段:评审SRS
  2. 软件设计阶段:审软件概要设计说明书、详细设计说明书、协助编写系统测试计划
  3. 软件编码阶段:设计系统测试用例、准备测试资源(测试工具、测试环境等)、开发测试脚本、开发测试工具、准备测试数据
  4. 软件测试阶段:执行测试用例、提交缺陷单、跟踪缺陷、回归测试、提交测试报告