@性能测试

一、性能测试讲解QPS、TPS、场景、虚拟用户等

1.1 名词解释

【虚拟用户】
模拟现实中的实际用户,测试工具使用虚拟用户代替真实用户
【性能测试场景】
可以理解为一个具体的测试用例。他是测试资源包括测试脚本、运行设置、运行用户数等的集合。在场景中,可以定义并发用户的数目,定义要运行的脚本。在一个场景中,可以使单个流程,也可以是多个流程的混合。
【事物】
为一个流程中某个或者某些环节的称谓,一个流程可称为一个大的事物,在这个大的事物中可包含许多小的事物
【响应时间】
性能测试中衡量交易性能的重要手段。计算的是端到端的时间,通俗讲是指从客户端发出交易请求到得到响应的整个过程
【平均响应时间】
指在测试过程中所有交易请求过程中平均的响应时间。也就是总共的交易量除以总共的交易时间。通常以秒为时间单位。
【90%响应时间】
将所有交易的响应时间按照从小到达排列,取排在90%的那个值,主要用于衡量系统的稳定性,比如两组数据 1,3,5,10,16) 和 5,6,7,8,9],他们的平均响应时间都是7,但是前面一组数据的90%响应时间值为16,而后面一组为9 (取的是数值从小到大排列,排90%的数)
【TPS】
系统每秒处理交易的数量,单位是笔/秒其是衡量系统处理能力的重要指标。通常表示一次交易申请和响应返回的过程
【QPS】
通常指的是每秒查询率,是一台服务器每秒能够相应的查询次数,是对查询服务器规定时间内处理流量多少的称量标准。
【网络吞吐量】
指单位时间内通过网络成功传输的数据量。单位为Byte/s。
【资源利用率】
主要指服务器硬件资源,网络资源等如cpu,内存使用率,磁盘IO,网络IO等。
【思考时间】
指在测试过程中虚拟用户在与系统产生交互之间的一个等待时间,用于模拟真实环境真实用户在使用系统时每一步操作的等待间隔时间。
【并发数】
指在某一时间,一定数量的虑拟用户同时对系统进行交互操作,通常性能测试工具可以设置集合点以加强并发点。

1.2 性能测试角度

用户视角

开发视角

系统管理员的性能

测试人员角度:
1: 测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
2:测试人员在做性能测试时除了要关注表面的现象如响应时间,也需要关注本质比如用户看不到的服务器资料科用率,架构设计是否合理? 代码是否合理等方方面面
性能测试的意义
1、评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。
2、识别体系中的弱点:受控的压力可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
3、系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。
4、验证稳定性(resilience) 可靠性 (reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
5、通过预埋未来数据,比如三年后的数据量来评估系统未来的支撑情况
6、通过节点性能测试可以用于计算生产服务器节点配比。

二、jmeter的基本使用

2.1 jmeter简介

基于java的压力测试工具,是一款开源的软件
下载地址:https://jmeter.apache.org/download_jmeter.cgi

2.2 jmeter环境搭建

安装:

2.3 jmeter基础元件

打开软件,会帮我们自动新建一个测试计划,可以在测试计划上进行我们的相关操作
测试计划

在测试计划里可以进行添加变量,可以勾选依赖添加到脚本中,例如在数据库操作时导入jdbc的易依赖

线程组
线程组内鼠标右键添加http请求

填写http请求的基本信息后,在http请求上右键,添加http信息头管理器,赋值接口的请求头信息

2.4 jmeter聚合报告

完成请求头信息管理器的添加和http请求的添加之后,要想看到结果,添加查看结果树和聚合报告,在线程组上右键取样器添加查看结果树和聚合报告

三、参数化、文件参数化、数值函数参数化

3.1 参数化的作用

参数化就是将某一些请求中的一些参数值替换为动态的请求,比如第一次请求的值是a,下一次迭代请求想要换成b,这就是典型的参数化场景
其目的在于模拟真实的用户请求

3.2 文件参数化

在线程组上右击添加,配置文件,CSV Data Set Config,打开文件参数化

相关选择的意思

3.3 数值函数参数化

函数助手使用
随机函数:${_Rando(1000,9999,)}
该函数有三个参数,第一个参数表示的是最小的数字,第二个数字表示范围内最大的数字,第三个为变量名称。通常用来表示本次迭代的值是多少
注意:
如果后期使用该值直接填写rando的话又会重新产生一个随机数,那么只能填写这个变量名
例:在请求上右键线程组,取样器,新建一个java请求,在请求上点击工具,创建函数助手对话框,选择randon


接着可以拷贝并招贴到我们的变量中

两次请求实现变量的关联

字符串函数

3.4 唯一值参数化

实际压测中经常会遇到用唯一值的情况,特别是对系统洗新增借口是,因为一些编号,订单等是唯一的,所以在大量压测下,唯一值特别重要,唯一值没有做好,很有可能导致脚本的失败
所以我么可以利用时间函数,时间永远往前走的,取当前系统时间戳,已达到我们的唯一值目的

步骤
打开工具–函数助手–time–
不进行值的设置,生成毫秒级别的随机



四、jmeter关联和控制器

4.1 提取数据关联

jmeter正则表达式提取通常用来提取后台数据的返回,得到返回的数据后将这数据给后面请求时用
右键线程组-添加-逻辑控制器-仅一次控制器
在那个请求返回的数据,就在那个请求上右键

右键选择添加,后置处理器,正则表达式提取器
选择正则提取器之后,进行相关参数的填写,需要提取的信息在哪里,就在要检查的响应字段里面勾选对应的值

正则表达式的解释:()括号里面就是我们要替换的值,.点就是代表任意字符,+代表任意个数,?代表从上往下找,找到匹配的第一个就返回

4.2 事务控制器

一次性控制器,多用于登录操作,避免在循环的时候重复登录消耗资源,没有用在将资源消耗在需要进行压测的业务上
可以在一次性控制器上右键添加逻辑控制器—事务控制器进行将一组操作放在一起(将仅一次控制器下的脚本复制粘贴到事务控制器下)

4.3 一次性控制器

4.4 循环控制器

控制循环的次数

4.5 吞吐量控制器

可按照比例和数量进行分配

4.6 用户变量定义

在线程组上右键—添加配置原件–用户定义的变量,进行变量的配置添加
测试计划的变量会覆盖线程组的变量

五、http协议讲解、抓包使用,响应断言

5.1 http讲解

HTTP协议 (HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为厂泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件,图片文件,查询结果等)
http组成部分
请求部分包括: 请求行、请求头部、空行、请求数据
响应部分包括:响应行、响应头、响应体
http响应码

http常规请求头
Accept: 告诉服务器,客户端支持的数据类型。告诉服务器,客户端采用的编码。
Accept-Charset:告诉服务器,客户机支持的数据压缩格式。
Accept-Encoding:Accept-Language: 告诉服务器,客户机的语言环境。
Host: 客户机通过这个头告诉服务器,想访问的主机名。If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间。
Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。 (一般用于防盗链)
User-Agent:客户机通过这个头告诉服务器,客户机的软件环境
Cookie: 客户机通过这个头告诉服务器,可以向服务器带数据。
Connection:客户机通过这个头告诉服务器,请求完后是关闭还是保持链接。
Date: 客户机通过这个头告诉服务器,客户机当前请求时间

5.2 fiddler抓包工具使用

抓取所有的https的包

filter过滤针对指定的接口进行抓取
抓取HTTPS设置
https证书导入
过滤设置
隐藏静态图片REGEX:.(js|csslgooglelico ljpglpnglfavicon?.)|mongodb.
隐藏tunnel to等

5.3 jmeter使用响应断言

测试技能-性能测试01相关推荐

  1. jenkins 下载插件 一直失败_实用测试技能分享:jmeter+Jenkins性能测试自动化搭建...

    这阶段有幸接手了公司新产品的测试,所以一直都很忙.后台收到一些同学的私信,想多了解下性能测试,正好闲暇之余,终于有时间总结了一些性能测试实践经验和测试过程,就跟大家聊一聊. 性能测试用来保证产品发布后 ...

  2. 软件测试面试简历测试技能

    测试技能 1.熟悉软件测试理论.测试流程,会编写测试要点.测试用例.测试报告. 2.掌握黑盒测试用例的设计方法,如:等价类.边界值.场景法.错误推测法. 3.掌握Linux基本操作命令,如:文件和目录 ...

  3. 学习新方法:加强探索性测试技能

    传统认知中的软件测试是一个使用测试用例设计技术设计用例并执行测试用例的过程. 测试用例技术的目的是确保能够更多地覆盖.检测软/硬件错误,减少冗余测试.自动化测试或多或少地被认为是机械地执行测试脚本,将 ...

  4. Spring+SpringMVC+Mybatis(开发必备技能)01、基础idea环境配置

    Spring+SpringMVC+Mybatis(开发必备技能) 01.基础idea环境配置 环境: 数据库:MySQL 开发工具:IntelliJ IDEA 2020.1.3 x64 框架:SSM( ...

  5. 打造具备互补测试技能的团队

    大多数测试工作需要多重角色:主题专家.工具师傅.分析师等等.James Bach或许是北美最为知名的测试人员了,他曾经识别出七类软件测试人员,而且这些还仅仅是围绕活动的,未考虑类型或项目或技术!我刚刚 ...

  6. 服务器压力测试_性能测试相关的面试题

    1.请问什么是性能测试.负载测试.压力测试? 性能测试:对一个软件系统而言,包括执行效率.资源占用.系统稳定性.安全性兼容性.可扩展性等. 负载测试:指在超负荷环境中运行,确定系统的处理能力,以及系统 ...

  7. 网络安全03_推荐书籍_网络安全工具_搜集到的网络安全学习的建议_Web安全/渗透测试技能要求_国内外安全企业网站

    网络安全03 一.推荐书籍 二.网络安全工具 三.搜集到的网络安全学习的建议 1.先网络后安全 很多初学者还没搞定网络看懂网络拓扑,就急着研究防火墙或VPN,其实这样就不清楚整个网络架构是如何安全演进 ...

  8. 第08节:云端测试和性能测试实战

    到上一课为止,我们已经介绍了微服务自动化测试的主要组成部分:单元测试.集成测试.组件测试(单服务测试)和端到端测试.它们足以确保对本地部署.运行的应用程序有足够的测试覆盖率.但是,随着越来越多的应用程 ...

  9. 测试学习——性能测试(一)

    测试学习--性能测试(一) 性能测试学习目标 理解性能测试理论 掌握JMeter性能测试工具 掌握Locust性能测试工具 性能测试 满足真实的业务场景.支持大量用户 使用自动化工具.模拟不同场景.对 ...

最新文章

  1. Some Rules from wrting your own dsl with ruby
  2. 程序员笔记|如何编写优雅的Dockerfile
  3. mysql的性能瓶颈分析、性能指标、性能指标信息的搜集工具与方法、分析调优工具的使用...
  4. 听研二师兄师姐报告收获
  5. knllgobjinfo: MISSING Streams multi-version data dictionary!!! 的一次处理 (二)
  6. AAAI 2022 | 北航提出基于特征纯化的视线估计算法,让机器更好地“看见”
  7. JAVA企业级应用TOMCAT实战视频课程
  8. 专访合一智芯杨桦:做AI芯片核心技术的底层设计师
  9. 浙江大学计算机考研408上岸,2016年跨考上岸浙江大学计算机研究生,初试412分经验谈!...
  10. Linux 2 unit7 挂载网络共享
  11. 产品经理是怎么产生的?
  12. ESP32+st7789/ili9341运行LVGL例程,依赖ESP-IDF编译lv_port_esp32官方Demo(1)
  13. “机密蔓延”成软件供应链安全的梦魇
  14. 中文编码--中国程序员之”银弹“?
  15. ef codefirst字段类型与sqlserver表字段类型对应概要
  16. linux软盘镜像下载,软盘镜像Image文件制作(WinImage Pro)
  17. 个人博客网站可以通过写系列连载文章来吸引用户
  18. 基于java的教师教学评价管理系统
  19. java 日期 英文月份_java日期月份转英文格式
  20. 阿里云服务器一年价格

热门文章

  1. Java 23种设计模式通俗理解
  2. 关于学习技术人员的看法
  3. Windows 8.1如何在任何地方集成SkyDrive
  4. 如何来制作公司组织结构图
  5. 解决gtid主从复制connecting问题
  6. 华为ensp模拟双isp出口
  7. matlab ode45画延时,ode45求解微分方程并画图
  8. 项目评审系统 PHP,HFSKY高校评审项目专家评审平台
  9. 通过网页版堡垒机访问服务器失败,堡垒机远程连接服务器被拒绝
  10. Git命令:本地项目上传到git码云,新建分支 删除分支 合并分支