以项目实战角度梳理测试基础知识
以项目实战角度梳理测试基础知识
文章目录
前言:快问快答!
Q:软件质量模型是什么?包含哪些内容(八大模块)?
A:软件质量模型是全面衡量软件质量的一个框架,包含功能性,性能,安全,易用性,呃呃呃…,可靠性…
Q: 如何设计测试用例?八个内容模块?用例设计方法有哪些?
A:我还没回答完呢,怎么又是八啊,我想想,测试用例文档的内容包括用例标题,用例编号,模块,优先级,预制条件…不对,是前置条件,操作步骤,测试数据,预期结果,实际结果(有没有来着?),一,二…八…九…不对怎么多一个啊。
Q:时间到!缺陷报告内容?
A:我就知道你会把测试用例和缺陷报告一块问…
Q:软件测试分类?(按阶段/代码/其他维度)缺陷判定标准?抓包目的?缺陷跟踪流程?软件测试流程?
Q:…QAQ…
如果你和我一样,是一位测试初学者,在学习了一遍测试的基础知识之后,还不能快速的回答出上述问题,或者已经学过的知识不能实战应用,那么不妨和我一起,以实际工作中项目实战的角度来梳理一遍测试的基础知识吧。

项目测试流程
注:文章接下来的内容都会以这个思维导图来展开,建议对照图片观看。因为本章目的为借助项目测试来梳理测试基础知识点,所以我们重点关注测试用例设计,测试用例执行,缺陷管理这三大方面。
我们一个完整的软件测试流程包括需求评审,测试计划编写,测试用例设计,测试用例执行,缺陷管理,测试报告,需求评审六大流程。其中需求评审,测试计划编写是测试前的准备工作,与我们测试基础知识关系不大,而测试报告就相当于测试人员的工作报告,我们在这里也不展开介绍,
项目需求评审
在测试之前,我们要有一份项目测试需求文档,那么就需要先对项目进行需求评审,确保各部门理解一致。
本环节一般不属于测试人员的主要工作,没有包含基础知识,我们直接略过
项目测试计划编写
一个好的计划书是工作开展必不可少的前置条件,测试计划主要包含了测什么内容,怎么分工,具体怎么测等内容,同样我们直接略过
项目测试设计
终于到测试人员的具体工作阶段了,在此之前,我们可以先回顾一下测试基础
注:测试设计是测试人员核心的工作点之一,是在测试计划之后、测试执行之前,基于需求规格说明书、产品原型等文档,设计测试方案、测试用例、测试场景的全过程,核心目的是明确 “怎么测”,确保测试工作有章可循、覆盖全面,同时提升测试效率、降低测试遗漏风险。
熟悉需求:文档/UI原型
这一步的主要目的是搞懂测试目的,理解达成一致,方便作为后续测试的依据
整理测试点
整理测试点是测试环节中很关键的一步,在面临复杂的业务时,我们通常会用合适的测试用例设计方法先进行测试分析,在通过分析结果组合梳理出测试点
功能:
- 显示:页面信息显示正确,页面布局和原型图一致
- 操作:按照测试用例设计方法细化
非功能:
- 性能
- 兼容
- 易用
- 安全
这里用到了软件质量模型对测试点进行了拆解
项目测试执行
前提:冒烟测试通过:对核心功能进行测试,保障提测内容具备可测性
编写完测试用例文档且冒烟测试通过后,开始执行测试用例,加入实际结果与预期结果对比,用pass和fail标记
测试执行过程中有一些辅助软件和方法
项目缺陷管理
- 提bug
- 验证bug
- 关闭/重新打开
这个过程通常借助以下缺陷管理软件(禅道)来执行,熟悉软件使用,这个过程中也涉及缺陷报告的编写,但通常情况下都会借助软件工具来实现
测试知识点
测试基础
认识软件测试
- 软件测试: 通过技术手段运行软件是否满足需求过程
- 目的: 减少软件缺陷(bug),保障软件质量!
要有一种面向bug的思想,看来我们测试人员天生就喜欢找茬呢()
软件测试技能:
-
功能测试: 功能测试主要验证程序的功能是否满足需求
-
自动化测试: 使用代码或工具代替人工验证项目功能(提效)
-
接口测试 : 针对模块与模块或系统与系统之间数据交互的测试
-
性能测试 : 模拟多人使用软件,查找服务器缺陷
软件测试分类:
-
按阶段划分:
- 单元测试 : 对于开发的源代码进行测试 [一般由开发做]
- 集成测试 : 也叫接口测试,测试系统和系统,模块和模块之间数据交互 [一般由测试人员做]
- 系统测试 : 也叫功能测试.测试整个软件产品的功能能否满足需求[一般由测试人员做]
- 验收测试 : 模拟用户验证是否满足用户的需求(分为内测和公测) [一般由用户/用户代表做]
-
按代码可见度划分:
- 黑盒测试 : 看不到源代码,进行功能级别的测试
- 灰盒测试 : 部分代码可见,相当于做接口测试
- 白盒测试 : 通过源代码测试源代码(单元测试)
-
其他划分:
-
冒烟测试:对核心功能进行测试,保障提测内容具备可测性
-
回归测试:
-
对已修复bug\更新后的bug再次进行测试,保证bug修复
-
确保已更新的新需求对已测过的功能没有负面影响
-
-
软件质量模型
质量模型:衡量一个优秀软件质量的框架
作用: 确定测试覆盖的范围和重点【被测软件产品质量的思考方向】
八大特性:
- 功能性 :软件是否具备完成其设计任务的能力
- 性能 :在规定条件下(如多用户)执行其功能时的资源利用率(时间/空间)
- 兼容性 :软件在不同运行环境中运行的能力,包括与其他软件,硬件.操作系统,网络环境的兼容
- 易用性 :对用户而言容易学习和使用的程度(包括用户界面直观性,易懂,易操作性)
- 安全 :软件保护数据和系统免受未经授权的访问,使用,修改等破坏的能力
- 可靠性 :软件在规定条件和时间内执行所需功能的能力,即是否稳定可靠,持续正常运行
- 可移植性 :软件从一个环境迁移到另一个环境的能力
- 可维护性:软件在生命周期内进行修改的容易程度
测试用例设计
测试用例设计方法:
-
等价类划分法
- 定义:等价类划分法是一种系统性的确定要输入的测试条件的方法。在所有测试数据中,对具有某种共同特征的数据集合进行划分。
- 场景:表单类型的页面进行测试时使用
- 步骤:
- 明确需求:目的、条件
- 按每个条件划分等价类:有效、无效
- 根据有效无效组合梳理测试点
- 注意事项:
- 有效:所有条件都有效【测试点数看单条件有效的最大数】
- 无效:只要有一个条件/一个项无效即可【测试点数就是每个无效类的和】
-
边界值分析法
- 场景:针对边界范围的数据进行测试时使用
- 步骤:
- 明确需求:目的、条件
- 按每个条件划分等价类:有效、无效
- 确定边界范围值:上点、离点、内点【和步骤2合并】
- 根据有效无效组合梳理测试点
- 注意事项:
- 需要有边界范围
- 离点可以优化【开区间选择内部离点测试、闭区间选择外部离点测试】
-
判定表法
-
判定表定义:是一种以表格形式梳理多条件组合逻辑判断的工具
-
作用:理清复杂逻辑,解决条件组合测试的混乱问题
-
组成:
-
条件(桩):列出问题中的所有条件,列出条件的次序无关紧要。
-
动作(桩):列出问题中可能采取的操作(可能有多个),操作的排列顺序没有约束。
-
条件(项):列出条件对应的取值,所有可能情况下的真假值。
-
动作(项):列出条件项的,各种取值情况下应该采取的动作结果
-
-
设计步骤
- 画判定表:找条件和动作,根据需求找出条件对应取值的全组合,得到执行的结果
- 测试点数量:2的n次方数量,n表示条件的个数
-
-
流程图法
-
说明:用图形(流程图)表示业务流程,测试每条路径
-
适用场景:根据用户的各种业务场景(功能组合),验证产品是否满足需求的过程,一般开发提测【冒烟】之后,先进行业务流程测试(保证正常功能具备可测性)
-
作用:确保复杂流程不漏测,解决业务覆盖问题
-
设计步骤:
- 根据流程图找出路径
- 根据路径覆盖测试点
-
编写测试用例
- 测试用例:为特定测试目的而设计编写详细的可执行文档
- 前提:已经梳理完xmind测试点
- 目的:
- 防止漏测
- 规范实施测试过程,提升效率
- 测试人员工作量化的一种体现
- 内容:
- 用例标题
- 用例编号
- 所属模块
- 优先级
- 前置条件(非必填)
- 执行步骤
- 测试数据(非必填)
- 预期结果
测试执行
- 执行准备
- 已完成测试用例
- 已经有可运行的测试环境【运维搭建】—> 测试是否具备搭建环境的能力?
- 先进行核心业务流程的冒烟测试【正向用例】
- 再进行其他功能模块及业务的用例执行,做好记录
- 执行结果: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
缺陷如何判定
- 少功能:软件未实现需求(规格)说明书中明确要求的功能
- 多功能:软件实现的功能超出需求(规格)说明书指明的范围
- 功能错误:软件出现了需求(规格)说明书中指 不应该出现的错误
- 隐性功能错误:软件未实现需求(规格)说明书中虽未明确指明但应该实现的要求
- 不易使用:软件难以理解,不易使用,运行缓慢,用户体验不好
缺陷描述(缺陷报告)
【前置】用例执行步骤
- 待测用例:准备待测试用例,最后一行添加一列执行结果
- 待测软件:开发体测后,运行待测软件
- 判断结果:判断实际结果是否和预期一致,一致则通过(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:最近规范了一下自己的打字习惯,刚开始用全手指打字,小拇指好痛…
本来打算买个键盘手托,在网上搜了半天感觉太占位置了就没买,看到一个评论说可以拿毛巾折叠垫着手腕,试了试效果还真不错,关键是吃饭的时候垫在外卖下面还能防止油溅在我的鼠标垫上,一巾两用,我之前怎么没想到呢()
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)