Jmeter: send a file


Jmeter: send a file

Jmeter 是一款功能非常强大的压力测试软件。关于测试的相关概念、压力测试和功能测试的区别读者可以参考相关文章。

笔者只是近段时间用到 Jmeter做测试工作,所以接触到了该软件,并且正在学习 Jmeter的复杂功能。有关Jmeter 的中文手册,在网上也有资源。

由于文件上传是 Web应用中的一个常用功能,所以对其进行测试是在所难免的。但是对于文件上传的具体设置,Jmeter功能手册中只有简单的介绍,而网上的相关资料也比较少。

笔者目前已经完成了用 Jmeter测试文件上传功能的操作,其中过程也是几经波折,这里给大家介绍下,让大家少走弯路,希望对大家有帮助。

本文主要介绍使用 Jmeter对文件上传的测试操作。1将文件添加至 Jmeter(add a file to Jmeter)

主要用 Jmerter模拟页面表单上传文件的操作,页面表单中也可能包含其他参数。

注意,为了上传文件,必须设置 Use multipart/form-data for POST,否则request 中将不包含上传的文件。

另外,必须添加文件的 参数名称,否则在 server端用 servlet进行解析时,无法获得文件。

2 查看POST 内容 (look up into POST data)

笔者最开始遇到的问题是一旦添加文件,那么 server端对其他参数 authwaychallengeRes也无法解析了。所以最后通过观察 POST内容才明白原理。

注:这里的文件上传的原理可以参考李刚写的 STRUTS2.1权威指南。查看 Jmeter的 查看结果树 监听器,选择请求->Raw

截图如上,每一个“-----------------------------”为分隔符,代表一个表单域;最后一个“-----------------------------7d159c1302d0y0--”(以“--”结尾)分隔符为表单域结束边界。由此可以看到,POST data 中共有三个表单域,前两个部分为 request参数,最后一个即包含了name=file(这个name 的值可以自己定),filename=sklois.cer的为实际上传的文件内容<actual file content, not shown here>,部分即文件内容,这里未显示。注意在“Content-Transfer-Encoding: binary”和<actual file content, not shown here>之间有一行空白,这里必须清楚POST data 的详细格式,否则在 server端解析时会出错。

3 server 端解析(parse POST data of client at server)

这里采用 servlet编程,文件上传框架采用 Common-FileUpload组件。关于文件接收,网上有很多资料。这里以上面的例子来接收。

使用该上传组件需要 commons-fileupload-1.2.1.jar(新版本也可),复制至WEB-INF/lib路径下;

commons-io-1.4.jar 复制至 WEB-INF/lib路径下。Server端主要代码如下:

由此,便在 server端接收到了由 Jmeter传送过来的文件,并且保存为 filename。这里采用Common-FileUpload组件可以接收任意类型的文件,读者也可以直接采用底层的方法接

收文件,但是较为麻烦,所以还是推荐采用该组件,可以非常容易的提取各个不同的表单域。

笔者在测试上传文件时,遇到了很多问题,但是经过查看 POST data便对 Jmeter的传送机制有了很好的理解。读者有问题,可以查看详细的 POST data,有助于理解数据的封装格式。第二个问题主要是在server 端的解析,开始笔者也是自己用最底层的方式来读取,不过会出现较多问题,比较复杂。所以这里还是推荐采用Common-FileUpload组件,将得到事半

功倍的效果。
更多
Jmeter 的测试技巧,还希望和大家交流。 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache JMeter 源码(apache-jmeter-5.4.3_src.zip)可用于测试静态和动态资源、Web 动态应用程序的性能。 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。 Apache JMeter 功能包括: 能够加载和性能测试许多不同的应用程序/服务器/协议类型: 网络 - HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET,...) SOAP/REST 网络服务 FTP 通过 JDBC 数据库 LDAP 通过 JMS 的面向消息的中间件 (MOM) 邮件 - SMTP(S)、POP3(S) 和 IMAP(S) 本机命令或 shell 脚本 TCP Java 对象 全功能测试 IDE,允许快速记录测试计划(来自浏览器或本机应用程序)、构建和调试。 CLI 模式(命令行模式(以前​​称为非 GUI)/无头模式)从任何 Java 兼容操作系统(Linux、Windows、Mac OSX 等)加载测试 完整且可随时呈现的动态 HTML 报告 通过从最流行的响应格式、HTML、JSON、 XML或任何文本格式中提取数据的能力轻松关联 完全可移植性和100% Java 纯度。 完整的多线程框架允许多个线程并发采样和不同线程组同时采样不同功能。 缓存和离线分析/重放测试结果。 高度可扩展的核心: 可插拔采样器允许无限的测试功能。 可编写脚本的采样器(与 JSR223 兼容的语言,如Groovy和 BeanShell) 可以使用可插拔计时器选择多个负载统计信息。 数据分析和可视化插件允许极大的可扩展性和个性化。 函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值