框架介绍

1、HttpRunner
是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

2、Locust
Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。HttpRunner 通过复用Locust ,可以在无需对 YAML/JSON 进行任何修改的情况下,直接运行性能测试。

3、 httprunner使用手册
附httprunner中文使用文档地址:https://cn.httprunner.org/

环境安装

1、安装httprunner: pip install httprunner==2.2.5
2、安装har2case: pip install har2case
3、检查安装是否成功:hrun -h/-v;har2case -h/-v
4、安装locust: pip install locustio

新增命令

在 HttpRunner 安装成功后,系统中会新增如下 5 个命令:
1、httprunner: 核心命令
2、hrun: httprunner 的缩写,功能与 httprunner 完全相同
3、locusts: 基于 Locust 实现性能测试
4、har2case: 辅助工具,可将标准通用的 HAR 格式(HTTP Archive)转换为YAML/JSON格式的测试用例

用例生成

(1)利用fiddler/charles对接口数据进行抓包,将结果导出为XX.har文件

(2)将导出的XX.har文件转化为json文件/yaml文件

转化为json文件:har2case  xx.har
转化为yaml文件:har2case  xx.har   -2y/--to-yml

(3) 转化成功后的yaml文件如下:

status_code: 请求的状态码
headers.Content-Type: 将响应头的内容格式做验证
content.msg: 响应内容的关键字作为验证
config: 作为整个测试用例集的全局配置项,包括变量(variables,name)
test: 对应单个测试用例
name 这个test的名字(用例的名称)
request 这个test具体发送http请求的各种信息, 如下:
url 请求的路径 (若config中有定义base_url, 则完整路径是用 base_url + url )
method 请求方法 POST, GET等等
headers:请求头
请求体: json格式的数据
validate(断言): 完成请求后, 所要进行的验证内容. 所有验证内容均通过该test才算通过,否则失败.

参数化:

testcases:
-
name: call demo_testcase with data 1
testcase: testcases/test_login.yml
parameters:
#      username: ["admin1","admin"]-username:- ["admin1"]- ["admin"]

测试用例(testcase)嵌套testcases

测试用例集是测试用例的无序集合,集合中的测试用例应该都是相互独立,不存在先后依赖关系的。
如果确实存在先后依赖关系怎么办,例如登录功能和下单功能。正确的做法应该是,在下单测试用例的前置步骤中执行登录操作。

- config:name:order product
- test:name:logintestcase:testcases/login.yml
- test:name:add to cartapi:api/add_cart.yml
- test:name:make orderapi:api/make_order.yml

变量取值:

在测试用例内部,HttpRunner划分了两层变量空间作用域context。

  • config:作为整个测试用例的全局配置项,作用域为整个测试用例;
  • test:测试步骤的变量空间context会继承或覆盖config中的定义的内容;

若某变量在config中定义了,在某test中没有定义,则该test会继承该变量
        若某变量在config中和某test中都定义了,则该test中使用自己定义的变量值

  • 各个测试步骤test的变量空间相互独立,互不影响;
  • 如需在多个测试步骤test中传递参数值,则需要使用extract关键字,并且只能从前往后传递

响应头和响应体的提取:

//response headers:
{“Content - Type”:"application/json",“Content - Length”:69
}
//response body:
{“success”:false,“person”:{"name":{“first_name”:"cs",“last_name”:"css",},“age”:29,“cities”:["Guangzhou","Shenzhen"]}
}            

那么对应的字段提取方式就为:

“headers.content-type”=>"application/json"
“headers.content-length”=>69
“body.success"/"content.success"/"text.success=>false"content.person.name.first_name"=>"cs"
"content.person.age"=>29
"content.person.cities"=>["Guangzhou","Shenzhen"]
"content.person.cities.0"=>"Guangzhou"
"content.person.cities.1"=>"Shenzhen"

可以看出,通过点( . )运算符,我们可以从上往下逐级定位到具体的字段:

  • 当下一级为字典时,通过.key来指定下一级的节点,例如.person,指定了content下的person节点;
  • 当下一级为列表时,通过.index来指定下一级的节点,例如.0,指定了cities下的第一个元素。

提取HTML的内容(正则表达式)

上传文件场景

生成项目文档

1、进入D盘
2、输入命令:hrun --startproject 项目名称
testcases:存放用例
testsuites:存放套件
reports:自动生成报告并放到该目录

3、 进入到目录,查看对应的文件和目录

可以看到生成的3个目录和一个py文件,api debugtalk.py testcases suite

4、将转化好的XX.har文件放置在项目文件夹testcases目录中

5、运行用例
(1) 运行单个用例:指定具体的xx.yml或xx.json文件
hrun 文件路径/hrun 文件路径 --log-level info

(2) 运行多个用例:hrun 文件的testcases目录

(3) 运行testsuites目录:运行testsuites目录中所有的yml用例

参数化:多个参数三种类型参数化

查看报告

在项目文件夹report中,生成了html格式的测试报告,包括log日志记录(包含request and response data)

注意事项:

(1) 对于依赖性强的测试用例,当前测试用例执行失败后,之后用例都将失败,因此无执行必要,遇到失败时不再继续运行后续用例命令

如下:

$ hrun filepath/testcase.yml --failfast

(2) 运行日志中查看更详细的响应内容

$ hrun docs/data/demo-quickstart-6.json --log-level debug
hrun xx.yaml --log-level debug

(3) 将运行过程中的中间数据作为日志保存:hrun xx.yaml --log-file xx.log

在这里插入图片描述

接口的性能测试—locusts

1、执行性能测试用例:locusts -f 文件路径(相对路径) --processes
(在 Locust 中需使用多核处理器的能力,–processes 参数,可以一次性启动 1 个 master 和多个 salve。若在 --processes 参数后没有指定具体的数值,则启动的 slave 个数与机器的 CPU 核数相同。)

2、用例运行完成后,在浏览器中输入地址 http://localhost:8089/,可查看到locust页面

  • Number of total users to simulate:并发用户数
  • Hatch rate (users spawned/second):多少秒启动这些并发
  • Host:接口的主机地址

locustos在执行请求动作

3、查看性能测试报告:

(1)每秒完成的请求数(RPS:Requests Per Second)

(2)响应时间(Response Times),单位ms

(3)不同时间的虚拟用户数:稳定值(一定时间后)

(4)查看cpu并发压力:类似负载均衡–CPU usage(cpu的使用率)

(5)参数说明

host:http://10.0.10.27:10080
请求路径(name):/api/login

(6)脚本执行结果

从测试结果可以看出,实际上每秒并没有触发10个请求(RPS值不到10),因为在locustfile.py文件里面有个等待机制
min_wait = 1000 最小等待时间1秒
max_wait = 5000 最大等待时间5秒
把max_wait改成1000就可以达到 10 RPS了
locustfile.py
当启动locusts的时候,会在当前目录自动生成一个locustfile.py文件。这个才是locust的脚本文件

使用locust执行locustfile.py脚本文件
locust -f locustfile.py
测试结果 RPS=9.9 接近10

自从学了这套框架,自动化+性能都学会了相关推荐

  1. 自从学了这套框架,自动化+性能都解决了

    框架介绍 1.HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 2.Loc ...

  2. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

  3. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)......

    手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 原文: 手把手0基础项目实战(一)--教你搭建一套可自动化构 ...

  4. 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)

    2019独角兽企业重金招聘Python工程师标准>>> 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你 ...

  5. 阿里高级微服务架构师亲手教你搭建一套可自动化构建的微服务框架

    这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构 你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行,系统与系统之间通过RPC接口通信.这样这些系统之间的耦合度大大降低 ...

  6. rf框架搭建_RF框架—自动化UI框架解决方案模版

    RF框架-自动化UI框架解决方案模版 第一章 项目特色 基于WEBUI自动化项目企业实战经验总结搭建的属于自己的一套自动化开发脚手架. 技术框架选用Robot Framework用于验收测试和验收测试 ...

  7. java restful netty_Java RESTful 框架的性能比较

    来源:鸟窝 , colobu.com/2015/11/17/Jax-RS-Performance-Comparison/在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单 ...

  8. 美团性能分析框架和性能监控平台

    2019独角兽企业重金招聘Python工程师标准>>> 美团性能分析框架和性能监控平台 美团的性能小组在过去1年的时间,成功将项目详情页.首页.搜索和筛选页的加载时间从10秒左右降到 ...

  9. 列表左右箭头滑动_我写了一套框架,把滑动窗口算法变成了默写题

    读完本文,你可以去力扣拿下如下题目: 76.最小覆盖子串 567.字符串的排列 438.找到字符串中所有字母异位词 3.无重复字符的最长子串 ----------- 鉴于前文 二分搜索框架详解 的那首 ...

最新文章

  1. 16. Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】
  2. 五句话搞定JavaScript作用域【转】
  3. 【原】HTML页面元素加载顺序研究报告(2)----背景图片
  4. 【Linux】Linux用户、用户组、文件权限学习笔记
  5. PHP快速入门教程:WHILE循环示例
  6. electron打包现成的vue项目成.exe文件,build打包vue项目(quasar 框架)
  7. MachineLearning(6)-Daviad Silver强化学习课程脉络整理
  8. 数学建模灵敏度分析_数学建模中的灵敏度分析,到底在分析什么?
  9. 1360:奇怪的电梯(lift) 《信息学奥赛一本通》
  10. 排序算法 c++(思想+code)
  11. php md5 验证,怎么核对md5?
  12. 掌握这4个Word小技巧, 助您论文排版事半功倍~
  13. 【历史上的今天】5 月 19 日:Java 之父诞生;中国首家互联网公司成立;CP/M 操作系统发明者出生
  14. DTL 模板 for
  15. 1.23山师训练赛补题
  16. ubuntu与centos哪个更适合做服务器。
  17. 零基础怎么建模?超详细建模教程——第一期
  18. 招商银行信用卡中心实习生招聘(第二批)题解
  19. Adobe Pro DC 2022 软件详细安装教程
  20. 【记录】ubuntu下安装和部署RAP2

热门文章

  1. 对温州服装企业创名牌模式的分析(摘)
  2. 【转】CAN总线学习笔记(2)- CAN协议数据帧与遥控帧
  3. kali修改文件权限不够_Linux用户权限管理及用户权限管理命令操作
  4. quot;CoolReaperquot; --酷派手机后门
  5. Java实现 LeetCode 837 新21点(DP)
  6. run cesm2.1.3 with my own forcing dataset
  7. Zstack 鼎阳SDS6204示波器和Archiver Appliance的重度测试2
  8. 用计算机做计时时钟的控制,使用Visual C ++制作一个微秒精度的计时器(Vb也适用)...
  9. idea中html的红波浪线是什么意思,IDEA中thymeleaf 表达式报红波浪线
  10. 程序猿?NO!我是个快乐的开发者!