一、 安装 locust1pip install locust
验证是否安装成功1import locust
1. HttpUser(User)在 User 类中,具有一个client属性,它对应着虚拟用户作为客户端所具备的请求能力。
继承 HttpUser 类。HttpUser 是最常用的用户类。它添加了一个client属性,用于发出 HTTP 请求。
其 client 属性绑定了HttpSession类,而 HttpSession 又继承自requests.Session。
通过 client 属性来使用Python requests库的所有方法,调用方式也与 requests 完全一致。
client 的方法调用之间就自动具有了状态记忆的功能, 从而后续 HTTP 请求操作都能带上登录态。
虽然 Locust 仅内置了对 HTTP/HTTPS 的支持,但它可以扩展到测试几乎任何系统。只需要基于 User 类实现 client 即可。我们可以使用 locust-plugins ,这个是第三方维护的库,支持 Kafka、mqtt,webdriver 等测试。
2. TaskS ...
一. JAVA 环境配置1. 验证 Java 环境是否安装1java --version
2.MAC JAVA 安装JAVA 官网下载地址 https://www.oracle.com/java/technologies/downloads/#java11-mac
12345# 查看 Java 是否安装成功java --version# 查看 Java 安装路径/usr/libexec/java_home -V
3.环境配置第一次配置环境变量,需要创建一个 .bash_profil 的隐藏配置文件
1touch .bash_profile
使用一下命令打开配置文件
1open -e .bash_profile
在配置文件中输入一下环境变量JAVA_HOME 的地址需要更换为 上一步 查找的地址
123456JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-11.0.14.jdk/Contents/Home"CLASS_PATH="$JAVA_HOME/lib"PATH=".$PA ...
一、数据收集 (Exporter)
exporter 是 prometheus 一类数据采集组件的总称, 他负责从目标处收集数据, 并转换为 prometheus 支持的格式node_exporter 是一种比较主流的服务器性能指标采集工具, 默认端口为 9100mysql_exporter 用于收集 MySQL 数据库的各项指标, 默认端口为 9104
1. 下载 Exporter常用的 Exporter 下载
nohup 静默启动, 2>&1 不显示 nohup 时的报错信息, & 允许后台运行
12cd /usr/local/node_exporternohup ./node_exporter >/dev/null 2>&1 &
二、保存数据 (Prometheus 普罗米修斯)
Prometheus: 是一款开源的监控报警系统与时序数据库, 默认端口为 9090对时间精度要求较高, 如果服务器时间与现实时间不同步, 可能无法收集到准确的数据.
时间校准命令:
1ntpdate ntp.aliyun.com
如果提示没有 没 ...
HTTP 协议解读一、 HTTP 协议请求报文格式:四个部分
请求行:独占一行的。由:请求方法、请求路径、请求协议/版本组成。
请求头 :从第二行到第 N 行。由键值对 组成。可以有 1 对,也可以有 N 对。key:value
空行 : 独占一行的。由回车换行组成。
请求正文 :请求消息体
二、常见请求头含义
User-Agent:告诉服务器客户端的相关信息(如果是浏览器会有版本,内核等信息)
referer:告诉服务器,此请求是从哪个页面上发出来 (防盗链)
X-Requested-With:告诉服务器这个是一个 ajax 请求
Cookie:带给服务器的 cookie 信息
content-type:告诉服务器消息体的数据类型
application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml
三、 HTTP 响应报文响应报文格式:四个部分组成
状态行:独占一行。由协议/协议的版本、状态码、状态描述符组成
响应头:从第二行到第 N 行。由键值对组成。
空行:独占一行的。由回车换 ...
一、接口名词透析1. token - 令牌
token : 由服务器产生,存在服务器的内存或硬盘中
有一套产生规则,会涉及到加密算法
根据 账户和密码 生成,用于验证 用户登录信息
主要通过 响应消息体传输给 客户端
2. cookies
cookies : 存储在 浏览器的某个位置
可以被禁用、删除,安全性不高
cookie 是分站点的,站点与站点之间的 cookie 是相互独立的
cookie 与 sessionid 配合实现登录
3. sessionId
session 是一个对象,由服务器产生, 保存在服务器的内存中
有自己的管理机制,包括 产生、销毁、超时等
sessionId 是 session 对象的一个属性,是全局唯一的,永远都不会重复的
cookies 工作流程(主要里面就是 jsessionID)
客户端发送一个请求到服务器
服务器返回响应数据—响应头—setCOOkies—-给我们客户端
这个时候这个 cookies 不一定是有效!—-需要登录的网站—临时 cookies
需要登录—-服务器判断这个账号密码正确之后,之前的 cookies 变成可以使用的!
...
一、 测试架构规划四文件夹:
docs : 主要用于存放 和项目相关的文件;
logo : 主要用于存放 项目执行的日志;
report : 用于存放报告的 原始数据;
data : 用于存放 测试数据;
四包文件 :
libs : 用于存放 基本的 代码;
configs : 用于存放 配置文件;
test_case : 用于存放 测试用例;
tools : 用于存放 封装的 工具;
二、接口测试用例设计
编号
模块
接口名称
优先级
标题
URL
前置条件
请求方式
请求头
请求参数
预期结果
响应预期结果
实际结果
三、自动化结合 excel 用例执行配置:
123# configs/confing.pyHOST = 'http://121.41.14.39:8082'
登录:
12345678910111213141516171819202122232425262728# libs/login.pyimport requestsimport hashlibfrom configs.config import HOSTdef get_md5(passwo ...
一. 安装1.1 Pytest 环境搭建安装:
1pip install pytest
查看是否安装成功:
1pip show pytest
1.2 命名规则
.py 测试文件必须以 test_ 开头(或者以 _test 结尾)
测试类必须以 Test 开头,并且 不能 有 init 方法
测试方法必须以 test_ 开头
断言必须使用 assert
1.3 pytest 输出的信息
. :用例通过
F :用例失败—没有语法报错
E :语法错误
1.4 运行参数
-s: 打印代码中 print 内容
-v: 打印更详细的执行信息, 包括 测试类、测试函数等
1.5 案例12345678910# 1- 封装测试类class TestLogin: # [({},{}),({},{})] @pytest.mark.parametrize('inData,respData', get_excelData2('登录模块', 'Login') ...
一、 fixture1. fixture 详解fixture(scope='function',params=None,autouse=False,ids=None,name=None)
scope:有四个级别参数”function”(默认),”class”,”module”,”session”
params:一个可选的参数列表,它将导致多个参数调用 fixture 功能和所有测试使用它。
autouse:如果 True,则为所有测试激活 fixture func 可以看到它。如果为 False 则显示需要参考来激活 fixture
ids:每个字符串 id 的列表,每个字符串对应于 params 这样他们就是测试 ID 的一部分。如果没有提供 ID 它们将从 params 自动生成
name:fixture 的名称。这默认为装饰函数的名称。如果 fixture 在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能 arg 遮蔽,解决这个问题的一种方法时将装饰函数命
2. fixture 作用范围scope 参数可以控制 fixture 的作用范围:
sess ...
一、 用例定制化执行1. mark 标签的使用在测试类、测试方法前使用 :@pytest.mark.标签名
标签名 尽量使用 类的名称 或 测试方法的名称,以便后续调用
2. 运行 mark 标签1.运行一个 标签(’-m’, ‘标签名 ‘)1pytest.main(['测试文件.py', '-s', '-m', '标签名', '--alluredir', '../report/tmp'])
2. 运行多个 标签(’-m’, ‘标签名 or 标签名’)1pytest.main(['测试文件.py', '-s', '-m', '标签名 or 标签名', '--alluredir', '../report/tmp'])
3. 排除一个标签(’-m’, ‘ not 标签名 ‘)1pytest.main(['测试文件.py', ' ...
一、Mock 技术1. 使用场景
第一个后端没有开发好,自动化测试的脚本需要提前开发与调试可以使用 mock 技术
提供执行效率:调用第 3 方接口—-响应特别的长(有不稳定的情况)—10s——在自动化脚本调试的前期
2. 实现方案
自己开发一个后端—-使用 django flask—-对于一般的测试人员有很大的挑战!
使用 moco 框架 减轻测试人员的开发的成本
二、 Mock 服务搭建(moco 框架)1. moco 框架实现 mock 的技术可以分为两类,mock 数据和 mock 服务:
mock数据:即 mock 一个对象,写入一些预期的值,通过它进行自己想要的测试。
常见的有:EasyMock、Mockito 、WireMock、JMockit。主要适用于单元测试。
mock 服务:即 mock 一个 sever,构造一个依赖的服务并给予他预期的服务返回值,适用范围广,更加适合集成测试。
如 moco 框架
2. mock 服务搭建1. 下载 moco 框架在 github 上获取 moco 的 jar 包,当前版本是:V1.2.0
Github 地址 : ...















