以项目实战角度梳理测试基础知识

前言:快问快答!

Q:软件质量模型是什么?包含哪些内容(八大模块)?

A:软件质量模型是全面衡量软件质量的一个框架,包含功能性,性能,安全,易用性,呃呃呃…,可靠性…

Q: 如何设计测试用例?八个内容模块?用例设计方法有哪些?

A:我还没回答完呢,怎么又是八啊,我想想,测试用例文档的内容包括用例标题,用例编号,模块,优先级,预制条件…不对,是前置条件,操作步骤,测试数据,预期结果,实际结果(有没有来着?),一,二…八…九…不对怎么多一个啊。

Q:时间到!缺陷报告内容?

A:我就知道你会把测试用例和缺陷报告一块问…

Q:软件测试分类?(按阶段/代码/其他维度)缺陷判定标准?抓包目的?缺陷跟踪流程?软件测试流程?

Q:…QAQ…

如果你和我一样,是一位测试初学者,在学习了一遍测试的基础知识之后,还不能快速的回答出上述问题,或者已经学过的知识不能实战应用,那么不妨和我一起,以实际工作中项目实战的角度来梳理一遍测试的基础知识吧。

在这里插入图片描述

项目测试流程

注:文章接下来的内容都会以这个思维导图来展开,建议对照图片观看。因为本章目的为借助项目测试来梳理测试基础知识点,所以我们重点关注测试用例设计测试用例执行缺陷管理这三大方面。

我们一个完整的软件测试流程包括需求评审,测试计划编写,测试用例设计,测试用例执行,缺陷管理,测试报告,需求评审六大流程。其中需求评审,测试计划编写是测试前的准备工作,与我们测试基础知识关系不大,而测试报告就相当于测试人员的工作报告,我们在这里也不展开介绍,

项目需求评审

在测试之前,我们要有一份项目测试需求文档,那么就需要先对项目进行需求评审,确保各部门理解一致。

本环节一般不属于测试人员的主要工作,没有包含基础知识,我们直接略过

项目测试计划编写

一个好的计划书是工作开展必不可少的前置条件,测试计划主要包含了测什么内容,怎么分工,具体怎么测等内容,同样我们直接略过

项目测试设计

终于到测试人员的具体工作阶段了,在此之前,我们可以先回顾一下测试基础

注:测试设计是测试人员核心的工作点之一,是在测试计划之后、测试执行之前,基于需求规格说明书、产品原型等文档,设计测试方案、测试用例、测试场景的全过程,核心目的是明确 “怎么测”,确保测试工作有章可循、覆盖全面,同时提升测试效率、降低测试遗漏风险。

熟悉需求:文档/UI原型

这一步的主要目的是搞懂测试目的,理解达成一致,方便作为后续测试的依据

整理测试点

整理测试点是测试环节中很关键的一步,在面临复杂的业务时,我们通常会用合适的测试用例设计方法先进行测试分析,在通过分析结果组合梳理出测试点

功能:

非功能:

  • 性能
  • 兼容
  • 易用
  • 安全

这里用到了软件质量模型对测试点进行了拆解

项目测试执行

前提:冒烟测试通过:对核心功能进行测试,保障提测内容具备可测性

编写完测试用例文档且冒烟测试通过后,开始执行测试用例,加入实际结果与预期结果对比,用pass和fail标记

测试执行过程中有一些辅助软件和方法

项目缺陷管理

  • 提bug
  • 验证bug
  • 关闭/重新打开

这个过程通常借助以下缺陷管理软件(禅道)来执行,熟悉软件使用,这个过程中也涉及缺陷报告的编写,但通常情况下都会借助软件工具来实现

测试知识点

测试基础

认识软件测试
  • 软件测试: 通过技术手段运行软件是否满足需求过程
  • 目的: 减少软件缺陷(bug),保障软件质量!

要有一种面向bug的思想,看来我们测试人员天生就喜欢找茬呢()

软件测试技能:
  • 功能测试: 功能测试主要验证程序的功能是否满足需求

  • 自动化测试: 使用代码工具代替人工验证项目功能(提效)

  • 接口测试 : 针对模块与模块或系统与系统之间数据交互的测试

  • 性能测试 : 模拟多人使用软件,查找服务器缺陷

软件测试分类:
  • 按阶段划分:

    1. 单元测试 : 对于开发的源代码进行测试 [一般由开发做]
    2. 集成测试 : 也叫接口测试,测试系统和系统,模块和模块之间数据交互 [一般由测试人员做]
    3. 系统测试 : 也叫功能测试.测试整个软件产品的功能能否满足需求[一般由测试人员做]
    4. 验收测试 : 模拟用户验证是否满足用户的需求(分为内测和公测) [一般由用户/用户代表做]
  • 按代码可见度划分:

    1. 黑盒测试 : 看不到源代码,进行功能级别的测试
    2. 灰盒测试 : 部分代码可见,相当于做接口测试
    3. 白盒测试 : 通过源代码测试源代码(单元测试)
  • 其他划分:

    1. 冒烟测试:对核心功能进行测试,保障提测内容具备可测性

    2. 回归测试:

      • 对已修复bug\更新后的bug再次进行测试,保证bug修复

      • 确保已更新的新需求对已测过的功能没有负面影响

软件质量模型

质量模型:衡量一个优秀软件质量的框架

作用: 确定测试覆盖的范围和重点【被测软件产品质量的思考方向】

八大特性:

  • 功能性 :软件是否具备完成其设计任务的能力
  • 性能 :在规定条件下(如多用户)执行其功能时的资源利用率(时间/空间)
  • 兼容性 :软件在不同运行环境中运行的能力,包括与其他软件,硬件.操作系统,网络环境的兼容
  • 易用性 :对用户而言容易学习和使用的程度(包括用户界面直观性,易懂,易操作性)
  • 安全 :软件保护数据和系统免受未经授权的访问,使用,修改等破坏的能力
  • 可靠性 :软件在规定条件和时间内执行所需功能的能力,即是否稳定可靠,持续正常运行
  • 可移植性 :软件从一个环境迁移到另一个环境的能力
  • 可维护性:软件在生命周期内进行修改的容易程度

测试用例设计

测试用例设计方法:
  • 等价类划分法
    • 定义:等价类划分法是一种系统性的确定要输入的测试条件的方法。在所有测试数据中,对具有某种共同特征的数据集合进行划分。
    • 场景:表单类型的页面进行测试时使用
    • 步骤:
      • 明确需求:目的、条件
      • 按每个条件划分等价类:有效、无效
      • 根据有效无效组合梳理测试点
    • 注意事项:
      • 有效:所有条件都有效【测试点数看单条件有效的最大数】
      • 无效:只要有一个条件/一个项无效即可【测试点数就是每个无效类的和】
  • 边界值分析法
    • 场景:针对边界范围的数据进行测试时使用
    • 步骤:
      • 明确需求:目的、条件
      • 按每个条件划分等价类:有效、无效
      • 确定边界范围值:上点、离点、内点【和步骤2合并】
      • 根据有效无效组合梳理测试点
    • 注意事项:
      • 需要有边界范围
      • 离点可以优化【开区间选择内部离点测试、闭区间选择外部离点测试】
  • 判定表法
    • 判定表定义:是一种以表格形式梳理多条件组合逻辑判断的工具

    • 作用:理清复杂逻辑,解决条件组合测试的混乱问题

    • 组成:

      1. 条件(桩):列出问题中的所有条件,列出条件的次序无关紧要。

      2. 动作(桩):列出问题中可能采取的操作(可能有多个),操作的排列顺序没有约束。

      3. 条件(项):列出条件对应的取值,所有可能情况下的真假值。

      4. 动作(项):列出条件项的,各种取值情况下应该采取的动作结果

    • 设计步骤

      1. 画判定表:找条件和动作,根据需求找出条件对应取值的全组合,得到执行的结果
      2. 测试点数量:2的n次方数量,n表示条件的个数
  • 流程图法
    • 说明:用图形(流程图)表示业务流程,测试每条路径

    • 适用场景:根据用户的各种业务场景(功能组合),验证产品是否满足需求的过程,一般开发提测【冒烟】之后,先进行业务流程测试(保证正常功能具备可测性

    • 作用:确保复杂流程不漏测,解决业务覆盖问题

    • 设计步骤:

      1. 根据流程图找出路径
      2. 根据路径覆盖测试点
编写测试用例
  • 测试用例:为特定测试目的而设计编写详细的可执行文档
  • 前提:已经梳理完xmind测试点
  • 目的:
    • 防止漏测
    • 规范实施测试过程,提升效率
    • 测试人员工作量化的一种体现
  • 内容:
    1. 用例标题
    2. 用例编号
    3. 所属模块
    4. 优先级
    5. 前置条件(非必填)
    6. 执行步骤
    7. 测试数据(非必填)
    8. 预期结果

测试执行

  • 执行准备
    • 已完成测试用例
    • 已经有可运行的测试环境【运维搭建】—> 测试是否具备搭建环境的能力?
    • 先进行核心业务流程的冒烟测试【正向用例】
    • 再进行其他功能模块及业务的用例执行,做好记录
      • 执行结果:pass(通过)、fail(失败)

测试执行辅助

HTTP相关介绍

协议:网络通信使用一套规则。【源于扩展知识计算机网络:网络七层模型(理论)】

HTTP:超文本(文字、图片、音频、视频)传输协议,访问网络中资源常使用的一种协议。默认端口号:80

HTTPS:安全的超文本传输协议。默认端口号:443

HTTP包含:HTTP请求(请求行、请求头、请求体) + HTTP响应(响应行、响应头、响应体

  • **URL:**统一资源定位符,表示网络资源的存储位置

    • 构成:协议://域名或IP:端口号/资源路径?查询参数
    • 必填:协议://域名或IP:端口号 如果是协议默认的端口号,可以不写
  • 网络协议:计算机通信的规则

    • 常见应用层协议:HTTP、SSH等
  • HTTP介绍

    • 超文本传输协议:传输html页面文档信息的协议【默认端口80,安全传输用HTTPS协议,默认端口443】

    • HTTP构成

      • HTTP请求:请求行、请求头、请求体
      • HTTP响应:响应行、响应头、响应体
    • 请求行:描述请求的方法,URL,协议版本信息

    • HTTP常见请求方法

      • GET:从服务器获取资源(查)
      • POST:在服务器新建一个资源(增)
      • PUT:在服务器更新资源(改)
      • DELETE:从服务器删除资源(删)
    • 请求头:描述请求客户端的属性信息

    • 请求头的Content-Type表示请求体数据类型

      • text/html:html格式

      • text/plain:纯文本格式

      • image/jpeg:jpg图片格式

      • application/json: JSON数据格式

      • application/x-www-form-urlencoded: 表单默认的提交数据格式

      • multipart/form-data:在表单中进行文件上传时使用

    • 请求体:描述请求携带的数据(包含敏感数据),在post和put方法中使用,配合请求头Content-Type

    • 响应行:描述服务器处理结果HTTP/1.11 200 OK

    • 响应状态码

      • 2xx:成功 【200】
      • 3xx:重定向 【301、302】
      • 4xx:客户端错误 【401、403、404】
      • 5xx:服务器端错误 【500、503】
    • 响应头:描述服务器属性信息,由键值对组成

    • 响应体:服务器返回数据(图片,json,html等)

Charles抓包

抓包:使用工具抓取客户端与服务器之间交互的数据包

应用场景:

  • 抓包并定位前后端bug(重点掌握这个)
  • 模拟弱网测试
  • 绕过界面(拦截请求修改),模拟测试后台接口

定位前后端bug

  • ①确认请求是否有问题,请求有问题–>前端
  • ②确认响应是否有问题,响应有问题–>后端
  • ③请求响应都没有问题,但页面显示错–>前端

软件缺陷管理

软件的缺陷
  • 定义:软件在使用过程中存在的任何异常问题都叫做软件的缺陷,简称BUG
缺陷如何判定
  • 少功能:软件未实现需求(规格)说明书中明确要求的功能
  • 多功能:软件实现的功能超出需求(规格)说明书指明的范围
  • 功能错误:软件出现了需求(规格)说明书中指 不应该出现的错误
  • 隐性功能错误:软件未实现需求(规格)说明书中虽未明确指明但应该实现的要求
  • 不易使用:软件难以理解,不易使用,运行缓慢,用户体验不好
缺陷描述(缺陷报告)

【前置】用例执行步骤

  1. 待测用例:准备待测试用例,最后一行添加一列执行结果
  2. 待测软件:开发体测后,运行待测软件
  3. 判断结果:判断实际结果是否和预期一致,一致则通过(pass),不一致(fail)则提交缺陷报告
  • 核心要素
    • 缺陷的标题:测试条件+实际结果(预期结果)
    • 缺陷的预置条件:和用例条件一致
    • 缺陷的复现步骤:测试步骤+测试数据
    • 缺陷的预期结果:和用例预期结果保持一致
    • 缺陷的实际结果:和用例预期结果不一致
    • 缺陷的必要附件(可选):图片,日志等信息(证据)
  • 其他要素:
    • 缺陷编号:唯一标记
    • 严重级(s):阻塞(Blocker)致命(Critical)严重(Major)一般(Normal)微小(Trivial)
    • 优先级(p):p0 > p1 > p2 > p3 > p4
    • Bug类型:功能问题,兼容问题,性能问题,易用性问题,架构环境等
    • 缺陷状态:新建(new)打开(open)已修复(fixed)已关闭(closed)延迟(delayed)
    • 所属项目:
  • 目的:搞清楚工作中如何和开发协同处理bug,直到bug清除

本片文章是我通过写博客提升能力的初次尝试,如有勘误欢迎各位大佬指正

ps:最近规范了一下自己的打字习惯,刚开始用全手指打字,小拇指好痛…

致命(Critical)严重(Major)一般(Normal)微小(Trivial)

  • 优先级(p):p0 > p1 > p2 > p3 > p4
  • Bug类型:功能问题,兼容问题,性能问题,易用性问题,架构环境等
  • 缺陷状态:新建(new)打开(open)已修复(fixed)已关闭(closed)延迟(delayed)
  • 所属项目:
缺陷跟踪流程
  • 目的:搞清楚工作中如何和开发协同处理bug,直到bug清除
缺陷跟踪流程在这里插入图片描述

本片文章是我通过写博客提升能力的初次尝试,如有勘误欢迎各位大佬指正

ps:最近规范了一下自己的打字习惯,刚开始用全手指打字,小拇指好痛…

本来打算买个键盘手托,在网上搜了半天感觉太占位置了就没买,看到一个评论说可以拿毛巾折叠垫着手腕,试了试效果还真不错,关键是吃饭的时候垫在外卖下面还能防止油溅在我的鼠标垫上,一巾两用,我之前怎么没想到呢()

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐