微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2022年csdn最牛最全的DDT数据驱动性能测试

文章末尾给大家留下了大量的福利】

 

一、csv数据文件设置

1、使用场景:测试过程中需要使用手机号码等大量数据时,用random函数随机生成数字;也可以使用Excel拖动生成一批手机号,也有可以从数据库中导出一批手机号,把准备好的数据,放到txt文件,或者csv文件中,使用csv数据文件设置直接调用

2、txt文件、csv文件:都是文本文件,只是csv文件是用逗号分割列的文本文件

3、使用csv数据文件设置,建议使用 txt文件,有两点原因

  3.1 csv文件被打开时,占用的系统资源要多于txt,从性能测试角度分析,要尽可能使用不会影响到性能文件

  3.2 csv文件认使用Excel来编辑,Excel的认保存文件编码不是utf8,那么,在文件中有中文的时候,可能就会出现中文乱码

4、文件名:线程组添加csv数据文件设置后,必须导入文件,因为文件名为空,jmeter工具就会报错,整个脚本就不能运行

  4.1 相对路径:相对的起始点

    4.1.1 jmeter的bin文件夹 ----这个是jmeter的脚本认的保存路径

    4.1.2 jmx脚本保存的路径

  4.2 csv文件放置位置:放在jmx路径相同的位置,相对路径使用'.\'反斜杠

    4.2.1 这个.\ 可以在linux系统中被使用------也就是说,这个路径可以跨平台(兼容window、 mac、linux)

    4.2.2 做性能测试时,我们的jmx脚本可能要放到linux 系统中来运行,所以,我们建议这个相对路径的 斜杠 用 '.\'

  4.3 在使用CLI命令进行性能测试时,建议把csv的文件放在 jmeter命令执行的位置

5、变量名称定义的变量名称,会接收对应列的值,启动运行,就会从第一行开始取值,认: 如果你启动运行之后,会循环运行多次,那么,就会自动的从第一行开始往下取值,如果总的运行次数,超过我们文件数量,就会从第一行开始,再从上往下取值。 多个变量名称之间,用固定逗号来分割

6、忽略首行:选择 false不忽略首行; true忽略首行,从第二行开始

7、分隔符: 认为“,”这个是csv的认分割符合 这个可以根据你自己的文件中的分割符来改变。

8、遇到文件结束符再次循环?(T1):认为TRUE

  8.1 文件结束符:文件的最后一行的结束标记

  8.2 true:是的,我会继续循环,从头开始循环,文件第一行;false:停止循环

9、遇到文件结束符停止线程?(T2):认false

  9.1 停止循环:停止做某件事情,不再从文件开头进行循环

  9.2 false 不,我不会停止脚本的运行;true 是的,我会停止脚本的运行

10、T1+T2

  10.1 T1 true + T2 false == 不会停止运行,继续运行,又从头开始取值。

  10.2 T1 true + T2 true === 发生冲突,导致T2无效,会继续运行,从头开始循环

  10.3 T1 false + T2 true ===我会停止运行,T1也没用了

  10.4 T1 false + T2 false ===不会停止运行,T1就一直在最后一个空值 上循环

11、线程共享模式

  11.1 所有线程: 所有的并发用户都共享一个csv文件,所有线程取这个文件中的值的时候,循环取值

  11.2 当前线程组: 只在这线程组内共享文件数据

  11.3 当前线程: 线程组中每个线程都有一个独立csv文件

  11.4 后置处理器、csv数据文件设置等等一些元件中定义的变量,都是 jmeter 的参数变量,不能直接跨线程组

二、逻辑控制器

1、逻辑控制器是用来控制脚本执行的逻辑顺序,控制的主体为取样器

2、if条件控制:if条件满足才会去执行下面的取样器

  2.1 认请求下,必须使用jexl3 或 groovy这个函数,把表达式的结果计算出来,为真,才执行逻辑控制器下的取样器,如果为假,则不执行,输入框填写计算式:${__groovy(${jcode} == 0,)}

  2.2 去掉 Interpret condition as variable expression的复选框,输入框填写表达式{jcode} == 0

3、foreach控制器:对一个明确列表数据来进行循环

  3.1 使用场景一:后置处理器提取出多个值的时候,多个值,就会自动带上_数字

  3.2 使用场景二:用一个变量来接收,从数据库中返回数据,当这个变量的值有 多个时,这个变量名称后面也会跟上_数字,你要用这些值。

4、循环控制器:控制取样器执行次数

5、仅一次控制器:启动运行之后,每个线程只会运行一次

6、事务控制器

  6.1 jmeter中,认,一个取样器执行一次请求,就是一个事务

  6.2 jmeter中,也可以通过事务控制器,把多个接口合并在一起,发起 一次完整的请求,当做一个事务。

  6.3 用jmeter做接口的性能测试, 先对单接口进行性能测试,然后,再 试多接口构成业务进行性能测试, 再多业务一起性能测试,系统的性能测试。

    6.3.1 全链路:发起请求的数据流的各个环节都需要测试。

      6.3.1.1 常规理解:使用jmeter先对1个接口进行测试,再扩展到2-3个,最后慢慢的把整个产品中, 非常多个多的接口,都进行性能测试,对于中小微企业,或者完全还没有性能测试部门的公司,这就是全链路测试

      6.4.1.2 真正意义上的全链路:多个接口都需要做性能测试;对应服务器的各个环境,都需要进行监控;流量回放;压测工具 ;全链路监控;全链路性能分析

三、其他协议脚本编写

1、soap协议 = = http协议 + xml数据

  1.1 用jmeter写soap协议脚本, 使用http取样器 + xml,数据放在消息体数据中

  1.2 soap协议接口版本 1.1版本与1.2版本的区别

    1.2.1 消息头: 1.1中 SOAPAction, Content-Type不一样

    1.2.2 请求体中,节点的标签名不一样

2、jdbc协议:java语言连接数据库执行sql的api接口协议

  2.1 jmeter调用jdbc协议: 需要数据库的驱动

    2.1.1 了解数据库的类型dbms: MysqL、oracle、 postgresqlsqlite

    2.1.2 获取java语言调用数据库的驱动包:通过maven仓库

      2.1.2.1 http://mvnrepository.com/ 搜索MysqL

      2.1.2.2 确认自己的MysqL的版本:如果自己的MysqL版本为5.7.x的版本,你的驱动包,可以选择大于等于数据库版本的包;如果你的MysqL是8.x的版本, 你选择的驱动包, 就要与你的数据库版本一致

    2.1.3 把下载的驱动包,放到jmeter的lib\ext文件夹中,然后,重启 jmeter

    2.1.4 jmeter连接MysqL数据库

      2.1.4.1 数据库的ip、port、账号、密码

      2.1.4.2 在jmeter中,添加数据库配置信息:JDBC Connection Configuration

          Variable Name for created pool: 自定义

          DatabaseURL(MysqL写法):jdbc:MysqL://msyql_ip:port/dbname

          JDBC Driver class:当你的数据库版本为5.7.x版本,可以直接 选择 com.MysqL.jdbc.Drvier;数据库版本为8.x版本: com.MysqL.cj.jdbc.Driver

          用户名,密码

    2.1.5 执行sql脚本 -----取样器

      2.1.5.1 jdbc request

          pool: 填写Configuration中自定义 pool名称

          sql Query: 写脚本

            query type: select statement

    2.1.6 sql Query:在执行查询语句时不建议查全表,因为jmeter图像界面工具,认只能支持10m的响应;查看结果树中,认只会显示最新的500响应,超过了会导致 jmeter卡死,后面程序有部分数据会看不到;在jmeter.properties配置文件中可以修改但是不建议改,因为,我们性能测试不用图像界面,也不用查看结果树。

      2.1.6.1 编写sql时这个结尾的分号可以不写,因为,jmeter不支持 一个取样器中写多个sql

      2.1.6.2 怎么定义变量来接收数据库查询结果:如果想使用特定的参数,则将不使用的参数用一个逗号隔开

      2.1.6.3 在sql中引用变量:1、直接变量引用 ${变量} ---这种用法,可能存在安全风险不建议使用;2、使用 ? 来占位,占用一个变量引用的位置:parameter values: 填写 ${变量};parameter type: 填写 varchar, 如果要传入整数 integer;注意: query type 修改为 prepared select statement ;带有 prepared 开头是在脚本中,可以传入参数;多个变量时,用逗号分割 

  2.2 sqlite数据库

    2.2.1 是一个关系型数据库,这个数据库,只需要你有图像界面系统,然后有浏览器, 这个数据库在你电脑里已经应用。

    2.2.2 使用:下载jar文件 mvn仓库中下载-放入jmeter的lib\ext文件夹, 重启jmeter

    2.2.3 JDBC Connection Configuration:pool: 自定义;DatabaseURL: jdbc:sqlite:sqlitefile.db;Drvier class: 选择 org.sqlite.JDBC;账号密码: 空

    2.2.4 这个数据库,不用建库,只需要建表;sqlite 数据库一个内存数据库,但是,这个数据库不支持多线程并发

一、保存数据到入csv、txt文件

1、写代码

2、不写代码

  2.1 从数据库获取数据,写入文件

    2.1.1 在jdbc取样器下面,添加保存响应到文件(右键-监听器-保存响应到文件

    2.1.2 文件名称前缀: 写一个文件名包含文件格式:例如 jdbcresult.txt (文件可以是txt、xls、xlsx格式)

    2.1.3 勾选:Don't add number to preffix,Don't add content type suffix,否则保存文件类型会出错

    2.1.4 如果保存的文件名不变,保存响应到文件,保存的则是最后一个取样器执行的结果到文件中,会覆盖前面的响应结果

  2.2 有注册接口,用了参数,我期望把用到的参数值保存到本地文件

    2.2.1 写代码

    2.2.2 不写代码方法:http://testingpai.com/article/1595507274025

二、DDT数据驱动二

1、用sqlite数据库获取数据,作为性能测试输入源数据

2、用传统的csv方式,作为性能测试输入源数据

3、两者的区别

  3.1 使用的数据量如果完全相同的话,csv\txt文件用的内存会比 sqlite的方式大一些

  3.2 csv\txt文件本身包含了我们不需要的数据,所以csv\txt文件大小就要比sqlite方式占用内存要大

    3.2.1 比如:txt文件中有5列,但是,使用csv数据文件设置我只需要使用其中的3列,那么有多余2列的数据也会占用内存。

    3.2.2 sqlite数据库是以查询的方式来获取数据,所以我只需要select查询对应3列数据就可以,这样不会占用更多的内存。

  3.3 csv数据文件设置,不可以从指定位置开始读取数据,因为每次读取,都是读取整个csv\txt文件。而用sqlite数据库查询的方式,可以使用查询语句从指定行查询数据:select xxx from table limit xxx offset xxx。

  3.4 在性能测试中,如果要使用数据驱动性能测试,sqlite查询数据的方 式,要比传统的csv方式要更灵活,效率也更高。

三、websocket协议

1、概念:是一种基于TCP的全双工通信协议,websocket这个协议与http协议相同,都是用tcp方式来传输数据

2、协议区分:ws--没有加密的数据传输方式;wss--使用加密方式来传输数据

3、全双工通信

  3.1 http:半双工, 只能从通信的一方主动发生数据给另一方进行数据通信

  3.2 websocket: 全双工, 双方都可以主动发起数据通信

    3.2.1 数据传输:客户端 -> 服务器端发送数据,也可以由服务器端主动 --> 客户端发送数据。

    3.2.2 典型应用:微信,QQ消息提醒,物联网

  3.3 websocket VS socket:两种完全不同的协议

    3.3.1 websocket是应用层的一个协议,是在互联网中进行数据通信的一 个协议,这个协议的数据是暴露在互联网中的

    3.3.2 socket 是服务与服务之间进行数据通信的协议---这种方式的 数据有效率比较高。

    3.3.3 websocket可以用jmeter元件写脚本进行测试,socket就需要写代码调用

    3.3.4 jmeter测试websocket协议,需要引入插件 jpgc

4、jmeter引入插件

  4.1 jar包:jmeter-plugins-manager-1.7.jar,放到jmeter的lib\ext文件夹 重启jmeter、

  4.2 在"选项"菜单下 plugins manager入口

    4.2.1 installed plugins 已经安装的

    4.2.2 available plugins 可以安装的:搜索 websocket 或者 拉到最下面---勾选 websocket samplers by perter Doornbosch----点击 【apply changes and restart jmeter】

    4.2.3 upgrade 需要升级

5、编写脚本

  5.1 启动项目:./stwebsocketserver.sh

  5.2 取样器:

    5.2.1 websocket close 关闭

    5.2.2 websocket open connection 建立一个连接:serverURL--ws

    5.2.3 websocket Single Read sample 从服务器上获取消息

    5.2.4 websocket Single write sample 向服务器发送指令:use existing connection 使用已经建立的连接;Data:txt-文本,binary: 二进制

    5.2.5 websocket request-response sample 读-写请求都有

四、MQ消息队列

1、实现消息队列的软件很多 mqtt、rabbitmq、kafka .....

2、发送一个消息,服务器收到消息,根据先收到先处理的原则,排队,在前面的就会被先消费,属于异步消息

3、启动项目:./stmqttserver.sh

  3.1 服务端口

    3.1.1 1883 MQTT/tcp 协议端口,可以被外部访问

    3.1.2 11883 MQTT/tcp 协议端口,只能在内部访问

    3.1.3 8883 MQTT/ssl 协议端口

    3.1.4 8083 MQTT/ws 协议端口

    3.1.5 8084 MQTT/wss 协议端口

    3.1.6 18083 HTTP端口,可以通过浏览器访问 admin / public

4、测试

  4.1 安装mq插件插件管理 > 可安装的插件 > 搜索mqtt > 选择 MQTT Protocol Support, 下载

    注意:插件下载,有可能会失败,因为,这些插件的服务器在国外,所以,网络原因可能导致失败。

  4.2 publisher 发布主题:tcp://youmqttserver_ip:1883 主题内容

  4.3 subscriber 订阅主题:tcp://youmqttserver_ip:1883 主题

  4.4 MQ异步消息的性能测试

    4.4.1 开启2个jmeter线程组

      4.4.1.1 1个jmeter进行 主题发布,可以是单个用户发送

      4.4.1.2 1个jmeter进行多用户并发的 主题订阅:设计性能场景进行测试,最终要得到是订阅性能报告

五、dubbo协议

1、现在企业中用springboot做微服务的开发,微服务之间的通信,很多都会用dubbo, 这个协议,通信内容,不会暴露在公网

2、测试:

  2.1 启动服务 ./stdubboserver.sh

  2.2 把jmeter-plugins-dubbo-2.7.3-jar-with-dependencies.jar放到jmeter的 libext文件夹中重启jmeter

  2.3 取样器:dubbo sample

    2.3.1 registry setting填写 注册中心信息

      2.3.1.1 protocol: 协议选择zookeeper,认端口2181

      2.3.1.2 address: ip:20181

    2.3.2 点击 【get provider list】:yes 出现jmeter有几秒无响应

      2.3.2.1 选择method: list

  2.4 带有参数

    2.4.1 paramType: 开发接口文档给出

    2.4.2 paramValue: 开发接口文档给出

 重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料

【需要的扫描文章末尾的官方推广二维码进技术吹牛聊天群】

记得备注【csdn000】哦

项目实战

app项目,银行项目,医药项目,电商,金融

大型电商项目

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

python自动化测试++全套模板+性能测试

听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐