#review
测试执行
字数
4049 字
阅读时间
16 分钟
一、测试用例介绍
1. 什么是测试用例?
- 用例:用户的操作案例
- 测试用例:为特定测试目的而设计编写的详细的可执行文档
2. 为什么要写测试用例
- 防止漏测(好记性不如烂笔头)
- 规范实施测试过程,提升效率(高效执行)
- 测试人员工作量化的一种体现(做了多少)
3. 测试用例编写内容规范说明
- 用例编号:项目_模块_编号(英文简称)
- 用例标题:测试点(覆盖某个特定目的
功能点概述) - 模块/项目:所属项目或模块
- 优先级:表示用例的重要程度或者影响力 ( P0
p4 ) ( P0 最高,为最核心用例) - 若某功能出现 bug 会导致用户直接无法使用应用,则该功能的测试优先级最高,为P0,若不影响正常使用,可降低优先级
- 前置条件:(没有它无法进行)要执行此条用例,有哪些前置操作,该项
非必填 - 测试步骤:描述操作步骤(怎么执行的过程)
- 测试数据:操作的数据,没有的话可以为空,
非必填 - 预期结果:期望达到的结果(对应标题的结果)
- 例如:

4. 如何编写测试用例
- 分析需求明确测试目的(要验证什么/干什么?条件有哪些?)
- 基于需求条件覆盖各种可能场景(梳理测试点)
- 按照用例模板编写文档(测试点转为测试用例)
- 人工编写(首次):夯实基础
- AI生成
二、用例执行
1. 用例执行准备
- 说明:软件测试需要通过技术手段运行软件找出软件缺陷的过程
- 执行步骤:
- 搭建测试环境(测试/预生产环境)
- 常规有三套环境:
- 本地测试环境
- 预生产环境(无限接近正式环境):本地测完没有问题后,再提交到预生产环境进行测试
- 正式环境/生产环境(上线发布时使用)
- 常规有三套环境:
- 执行冒烟测试(验证主流程)
- 按照用例步骤执行,并记录实际结果(在测试用例后增加一项:
实际结果)
- 搭建测试环境(测试/预生产环境)
- 环境扩展
- 测试环境:被测项目运行所需要的硬件和软件的集合
- 环境分类:开发环境(开发用)、测试测试(测试用)、生产(用户 使用)
- 环境搭建人员:一般是运维、开发,最后才是测试人员
- 如何搭建:需要按照环境搭建文档进行安装及配置(一般服务器涉及Linux操作系统应用)
三、🌟🌟🌟测试用例执行辅助
1. 网络资源
- 网络资源:利用网络可以获取的任何信息资源
- 例如:浏览器输入百度的域名,就打开百度首页
- 资源怎么表示:通过URL表示
2. URL
- URL(Uniform Resource Locator):统一资源定位符,用来表示网络中资源存放的位置
- URL的组成(前三者必有):
- 协议:按照什么规则通信的应用服务。如:HTTP、HTTPS
- 域名或主机:访问的资源服务器的IP或者域名。例如:www.baidu.com
- 端口:标识特定的应用程序/服务,程序通信的出入口。若未指明端口号,则使用默认端口。例如:HTTP默认端口为80,HTTPS默认端口为443
- 资源路径(可选):存放的具体路径(/path)
- 查询参数(可选):请求携带的参数。通过
?进行分隔,多个参数之间通过&符号链接
- URL表示形式:
协议://hostname[:post]/path/[?查询参数1 & 查询参数2]
3. 网络传输协议
1) HTTP

协议:网络中数据传输遵循的规则
常见协议:HTTP/HTTPS、SSH、FTP等
Q:HTTP是啥? A:HTTP(Hyper Text Transfer Protocol):超文本传输协议,网络中传输类似于网页类型的文档的协议
HTTP访问过程:
- HTTP请求:请求行、请求头、请求体
- HTTP响应:响应行、响应头、响应体
a. HTTP请求
- HTTP请求说明:
- 请求行:请求数据包的内容
- 请求头:从第二行到空行之间的内容
- 请求体:空行下方的内容(不公开的数据)
- 示例:

- HTTP请求行:
- 位置:HTTP请求第一行
- 作用:描述、协议版本信息
- 请求方法作用:按照什么方法操作资源
- 常见的HTTP请求方法:
- GET:从服务器获取资源(查)
- POST:在服务器新建一个资源(增)
- PUT:在服务器更新资源(改)
- DELETE:从服务器删除资源(删)
- 例:

- HTTP请求头:
- 位置:HTTP请求的第二行到空行之间
- 作用:描述请求客户端的属性信息
- 请求头的Content-Type:表示请求体的数据类型(了解即可,如果要记,则只记标红部分内容)
- text/html:HTML格式
- text/plain:纯文本格式
- image/jpeg:jpg图片格式
- multipart/form-data:在表单中进行文件上传时使用
- 例:

- 都是键值对,一个Key对应一个Value
- HTTP请求体:
- 一般敏感的数据信息都放在请求体中,因为对外不可见
- 位置:空行下面的内容
- 作用:描述请求携带的数据
- 请求体:表示传输的数据;在post和put方法中使用,配合请求头Content-Type
- 例:

b. HTTP响应
- HTTP响应说明:
- 响应行:响应数据包内容(返回是否成功处理HTTP请求的结果)
- 响应头:从第二行开始到空行之间的内容
- 响应体:空行下方的内容(服务器返回的东西)
- 示例:

- HTTP响应行:
- 位置:HTTP
- 作用:描述服务器处理结果
- 🌟🌟🌟常见响应状态码(三位数字组成):
- 3xx:重定向(发送的目标地址是旧地址,重定向返回了新的地址,需要往新地址重新传一遍HTTP请求数据)
- 例:

- 组成:协议版本信息+响应状态码+结果描述信息
- HTTP响应头:
- 位置:HTTP响应第二行到空白行
- 作用:描述服务器属性信息
- 组成:由键值对组成
- 例:

- HTTP响应体:
- 位置:HTTP响应空白行以下
- 作用:服务器返回的数据
- 类型:图片、、、xml等
- 例:服务器返回了html数据

四、抓包工具
1. 抓包介绍
抓包(packet capture):使用工具抓取客户端与服务器交互数据包的操作。
数据包:客户端与服务器相互交互的内容。
常见抓包工具:F12,Charles,Fiddler等
为什么抓包?
- 定位前后端bug(客户端--前端;服务端--后端)
- 弱网测试(模拟在网络环境差的情况下是否有问题)
- 绕过界面限制进行测试 ---- 就是做服务端的接口测试
如何区分前后端 bug?
- 如果抓不到请求或请求有误是前端问题;
- 如果有请求且正确但是没响应或者响应错误,那就是后端的问题;
- 如果抓包有请求也有响应且都正确,但是页面显示还是报错了,则还是前端问题(页面渲染)。
2. Charles介绍
- 工具介绍:Charles是一款在Windows/Mac下常用的数据包截取工具,支持Web/APP端网络数据包的抓取分析
- 抓包原理:

- 原先是客户端与服务端直接通信,现在Charles在两者中间充当网络代理的功能,客户端将请求发送给抓包工具,抓包工具作为网络代理代替客户端向服务器发送请求;服务端响应返回给抓包工具,抓包工具再返回给客户端
- 抓包工具 = 网络代理 = 站在通信中间的"邮差",拆开信件看内容后再转发
- 一般客户端是我们自己本机电脑,服务端是云端服务器
3. Charles配置
本配置教程以Firefox浏览器为例- 浏览器代理设置:

- Charles默认端口号为8888
- 🌟🌟🌟打开浏览器代理设置后,若Charles未启动(代理服务器未启动,则不管访问哪个网页都会被拒绝访问)
- Charles配置http代理:

4. 如何抓包
在对抓包软件进行设置后,我们就可以通过使用抓包工具实现以下三个目的:
- 定位前后端bug(客户端--前端;服务端--后端)
- 弱网测试(模拟在网络环境差的情况下是否有问题)
- 绕过界面限制进行测试 ---- 就是做服务端的接口测试
1)如何判断bug来源是前端还是后端
如果遇到了无法明确判断前后端问题的bug,则需要用到抓包工具去判断,以TP商城为例:
后端显示该账户性别为女,但管理后台发现该账户性别保密,难以确认哪个是正确的性别设置,也难以判断是前端错误还是后端错误,这就需要用到抓包工具了
具体步骤是:
- 打开抓包工具,在TP商城登录界面输入账号密码(若没有则去注册一个)
- 登录成功后,打开抓包工具,发现已经抓取到了该网址的请求和响应信息:

- 查看响应体信息,排查到底是前后端哪里的bug:

- 转为JSON视图,更方便查看:

- result内的数据信息就是服务器从数据库中拿到的该用户的全部信息
- password的显示是经过加密处理的,user_id是唯一标识
- sex:该值仅与数据库内的设置有关,看看哪个值对应哪种性别就行,若数据库中数据与登录后前端显示数据不一致,则说明是前端问题,否则是后端问题
- 数据库设置:

🌟🌟🌟🌟🌟定位思路
- 确定请求是否有问题,请求有问题 --> 前端
- 例如:前端输入的数据有问题,则不应该发送请求,也就抓不到请求数据包,若真的发送了请求,并使用Charles抓包工具抓取到了对应的数据,则说明请求有问题,这是前端的错误
- 确认响应是否有问题,响应有问题 --> 后端
- 若前端返回的错误数据未经过校验就直接存入了数据库,则后端也有错误
- 因为响应的数据包源于数据库
- 请求响应都没有问题,但页面显示错误 --> 前端
Q:如何确定响应的问题? A:返回的数据和数据库是否一致,若一致,则响应没有问题;若不一致,则响应有问题
2)模拟弱网测试
弱网测试:模拟带宽较低的网络测试延迟
- 需求:模拟3G网络带宽,访问tpshop首页,查看延时多少?是否有异常
- 设置:
- 设置网络带宽
- 操作对应页面/APP应用
- Charles查看延迟时间/趋势变化
- 确认应用程序是否有异常
作用场景
模拟软件系统在不同的网络带宽下能否正常使用
笼统步骤
- 通过Charles工具设置网络带宽
- 开启Charles弱网开关,然后操作客户端进行验证
- 查看数据包对应的延迟时间 / 看客户端是否异常(如网页显示不全)
详细步骤
- 设置网络带宽(一般模拟3G、4G网即可):
解释:
- 查看访问网站的网络延迟(一般找耗流量最大的页面/接口来测试):

- Charles右上角打开弱网模拟后再登录统一网站测试其弱网延迟

- 先查看网页是否显示不全,再查看弱网模拟下的网络延迟(duration)

- 与产品人员沟通,了解网络延迟要求,若满足要求,则通过测试,否则不通过
- 弱网测试结束后记得关闭弱网模拟
3)绕过界面做服务端(后端)的测试
适用场景
- 绕过页面的异常类数据测试
- 核心目的:验证的逻辑
步骤
断点操作设置
- 找到断点设置

- 设置断点内容
仅host地址必填,一般都只用到Request请求,因为要改请求数据,host地址是我们要测试的网页地址 - 打开断点

- 前往前端界面输入数据后点击登陆

- 随后前端界面暂停,Charles抓包工具进入断点界面进行操作,后续关联的URL不需要修改,直接点击execute执行即可(仅修改测试网页的输入数据):

- 修改数据是为了绕过前端界面,这样前端输入的数据是通过前端检查的,而实际传入的却是修改后的数据,这就可以用来判断后端是否真的做了检验,若后端也对数据做了检验,则登录会失败
- 测试完毕后,查看页面显示结果,确认是否符合预期
- 测试完毕后关闭断点
为什么需要绕过界面做服务端的测试?
因为前端也会有对输入数据的判断,若是仅由前端进行判断而后端不判断,则会导致前端被攻击后整个项目直接瘫痪,若后端也做了判断,则可以有双层防护,不至于前端失效就导致整个项目失效