软测理论

感谢:

b站博主: https://space.bilibili.com/1577736184

csdn: http://t.csdnimg.cn/IEkdK

基本概述

测试的定义

  • 使用人工或者自动的手段来运行或者测试某个系统的过程
  • 目的在于检验它是否满足规定的需求
  • 弄清预期结果实际结果的差别

测试的原则

  • 证明软件中存在缺陷
  • 不能穷尽测试
  • 测试应该尽早介入
  • 28原则
  • 不存在缺陷谬论
  • 妥善保存一切文档

测试的基本要求

  • 外观界面测试
  • 易用测试
  • 兼容性测试
  • 安全性测试
  • 性能测试
  • 功能测试

测试的流程

1、需求分析

阅读需求文档、产品文档、产品详细设计说明书,分析需求的点,参与需求评审

2、制定测试计划和测试方案

测试计划:测试整个项目的整体规划,人力物力的安排、整体的测试策略、测试的范围,风险的评估

测试方案:被测试的目标,选取何种测试工具、测试方法、测试重点

3、设计测试用例

4、执行测试用例

5、评估阶段、测试报告

软件测试的分类

1、按照测试阶段:单元测试、集成测试、系统测试

2、是否覆盖源代码: 白盒测试、黑盒测试

3、是否运行: 静态测试、动态测试

4、其他: 回归测试、冒烟测试、随机测试、验收测试

5、是否自动化: 人工测试、自动测试

详解

黑盒测试:基于软件需求,而不是基于软件内部设计和程序实现的测试方式

白盒测试:基于软件内部设计和程序实现的测试方式

单元测试:主要测试软件模块的源代码 。一般由开发人员而非独立测试人员来执行,因为测试者需要懂得该单元的设计与程序的实现,测试者可能需要编写额外的 测试驱动程序

集成测试:将一些“构件”集成一起时,测试他们能否正常运行。这里的“构件”可以是程序模块、客户机-服务器程序等待

功能测试:测试软件的功能是否符合功能性需求,通常采用黑盒测试方法。一般由独立的测试人员执行

系统测试:测试软件系统是否符合所有需求,包括功能性需求与非功能性需求。一般由独立测试人员执行,通常采用黑盒测试方法

回归测试:指错误被修正后或软件功能、环境发生变化后进行的重新测试。回归测试困难在于不好确定哪些内容应当被重新测试

验收测试:由客户或最终用户执行,测试软件系统是否符合需求规格说明书

负载测试:测试软件系统的最大负载,超出此负载软件可能会失常

压力测试:概念上与负载测试相似,叫法不同

性能测试:测试软件在各种状况下的性能,如正常或最大负载的状况下

易用性测试:测试软件是否易用,主观性比较强。一般要根据很多用户的测试反馈信息,才能评价易用性

安装与反安装测试:测试软件在“全部、部分、升级”等状况下的安装/反安装过程

恢复测试:测试该系统从故障中恢复过来的能力

安全性测试:测试该系统防止非法入侵的能力

兼容性测试:测试该系统与其他软件硬件兼容的能力

比较测试:通过与同类产品比较,考察该系统的优点缺点

Alpha测试:一种先期的用户测试,此时系统刚刚开发完成

Beta测试:一种后期的用户测试,此时系统已经通过内部测试,大部分错误已经改正,即将正式发行

软件测试过程模型

V模型:

用户需求—需求分析与系统—概要设计—详细设计—编码

单元测试—集成测试—系统测试—验收测试

  • 测试后置,忽视了测试对需求分析、系统设计的验证
  • 需求的满足情况一直到后期的验收测试才被验证

W模型:

用户需求—需求分析与系统设计—概要设计—详细设计—编码—集成—实施—交付

用户需求&验收测试设计—需求分析与系统分析&确认与系统测试设计—概要设计&集成测试设计—详细设计&单元测试设计—单元测试—集成测试— 确认测试与系统测试—验收调试

  • 测试的活动与软件开发同步进行
  • 测试对象不仅是程序,包括需求和设计
  • 尽早发现软件缺陷,降低软件开发的成本

测试用例、自动化测试理念

测试用例

特性
  • 有效性:测试用例能够被使用,且被不同的人员使用测试结果一致
  • 可复用性:如回归测试的使用
  • 可评估性
  • 可管理性
八大要素
  • 测试编码:方便归档和查询
  • 测试模块/功能
  • 预置条件:(测试前提条件)
  • 测试输入
  • 预期输出
  • 操作步骤
  • 测试用例标题(目的)
  • 级别(高、中、低)
  • 其他要素:用例设计日期、设计者、开发人员、测试结果、测试类型(功能、性能、压力等)
等价划分法
  • 有效等价类(有效输入)
  • 无效等价类(无效输入)
边界值

对输入或输出边界值进行测试,如4位数字,那么可选取9999、1000附近几个边界值进行输入

等价类划分和边界值法适用于普通文本输入框,因为可输入的内容很广泛

判定表法

也称为决策表,可以理解为因果图的最终产物,将复杂问题按照各种可能的情况全部列举出来,简明并且避免遗漏。用判定表能设计出完整的测试用例集合

场景法

从起点,通过一系列操作步骤,达成某一结果,到终点的过程测试,场景法主要用于冒烟测试。

分为基本流和备用流

测试力度&用例方法总结

力度
  • 简单:仅仅测试刚要,过于简单
  • 复杂:包含具体输入项、每个步骤、期待结果,过于复杂浪费时间成本
  • 中庸:一般介于两者之间即可。
总结
  • 先关注主要功能的业务流程、逻辑是否正确:场景法
  • 需要输入数据的地方:等价类划分法
  • 任何情况都可使用边界值法
  • 若程序包含输入条件的组合情况:因果图法和判定表法
  • 对于配置类软件,选项过多,需要考虑参数的很多组合情况:正交表法
缺陷报告

当发现了软件的缺陷和错误时,需要整理报告发送给相关人员处理。

一般在公司内部会有缺陷报告的书写模板,或可能使用高效管理bug的平台。

自动化测试

定义
  • 程序测试程序
  • 代码代替思维
  • 脚本代替人工

目的就是:更高的质量和效率。

手工&自动化

二者并不对立,什么手段效率高就使用什么手段。两者是互补的。

分类

按产品类型:PC端产品自动化测试、Web端产品自动化测试、App移动端产品自动化测试

按产品研发阶段:单元自动化测试、接口自动化测试、契约自动化测试、集成自动化测试、验收自动化测试

优势
  • 提高测试效率
  • 避免测试人员重复劳动
  • 回归测试方便可靠
  • 自动化脚本可复用
  • 支持多环境下的测试
劣势
  • 不能取代手工测试
  • 测试不容易发现界面、布局问题
  • 自动化测试工具是死的,不具备任何想象力
  • 开展前期,自动化测试投入成本高、风险大,且对测试员的技术、工具契合度都有要求