Jmeter测试上传图片base64编码接口

最近遇到一个项目,接口中有需要上传图片的字段,它是以图片base64编码格式的形式传递的。(Base64目前主要用于HTML5、移动开发等不考虑IE6的场景中。)请求报文示例如下:

关于如何测试实现的问题:

1)如何对图片进行编码?
2)为了实现接口自动化测试,如何能实现自动base64编码

解决方案:

方法1:利用图片在线转码base64编码网站进行编码。
编码网站:http://tool.css-js.com/base64.html

上传本地图片,根据需要勾选:“包含头”等选项,生成图片base64编码即可。

缺点:测试不同的图片时,都需要手工进行编码,再复制编码到接口请求报文中,无法实现自动化,测试效率低。

方法2:利用Jmeter的beanshell编写图片base64编码的转换代码
1)编写图片base64编码代码
一般情况,开发会提供该代码;如果没有,也不用怕,百度一下即可,或者有代码功底的同学可自己写。部分代码如下:

2)生成jar包,放置在${JMETER_HOME}\lib\ext目录下

3)编写beanshell,调用编码方法进行编码

4)参数化请求报文

实际请求报文:

此方法较好的解决了手工图片base64编码的问题,为后续的自动化测试提供支持。

扩展一下:如果上传图片不是以base64编码的格式,即以图片文件的方式进行发送请求报文时,该如何处理?

解决方案:利用jmeter的sampler中“同请求一起发送文件”的功能

a、点击【同请求一起发送文件】栏目的添加按钮;
b、点击浏览按钮,选择一张需要上传的图片,地址将会自动记录到文件名称栏目;
c、填写参数名称,此处为【image】;
d、MIME类型为multipart/form-data

(注意:另外一种设置就是>为了上传文件,还必须勾选"Use multipart/form-data for POST",然后MIME类型可根据实际情况填写,否则request将不包含上传的文件。)

保存该HTTP请求,并执行,查看服务器,即可发现,上面步骤选择的图片已经成功上传到服务器。如需进行图片参数化,只需对图片的路径进行参数化即可。

原文地址:http://blog.51cto.com/tiantiantesting/2108436

时间: 2024-09-30 00:24:52

Jmeter测试上传图片base64编码接口的相关文章

Base64编码详解

Base64编码过程:将二进制序列转换为Base64字符序列(ASCII码序列). 一.标准Base64字符表 二.Base64编码示例 编码字符串"Hello!!",输出结果"SGVsbG8hIQ==" 三.Base64编码 原理:一个字节包括8位二进制, 然而字符表总共才64个字符,用6位二进制完全容纳64个字符,所以每6位二进制转换为对应的Base64字符. 编码过程:第一次读6位二进制,该子节剩余的2位转到下一次操作.恰好最少3个字节(24位)能转换成4个B

Base64编码原理及应用

最近在做一个H5上传图片并压缩的项目,其过程主要是先将图片上传通过readAsDataURL获取上传图片base64编码,然后根据高宽比将图片画到canvas上实现压缩,在通过toDataURL获取压缩后的图片.点击可查看demo在该过程中用到base64编码,于是就想弄清楚base64编码原理,才有了这篇博客. Base64编码的来历 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送.这样用途就

Jmeter测试接口文档

一.测试需求描述 1. 本次测试的接口为http服务端接口 2. 接口的主要分成两类,一类提供给查询功能接口,一类提供保存数据功能接口,这里我们举例2个保存数据的接口,因为这两个接口有关联性,比较有代表性: 3.接口描述: 保存信用卡账户信息接口: 传入参数:args={"clientNo":"434343556","alias": "**信用卡2","cardName": "长城*****卡2&

jmeter测试dubbo接口

本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文件为: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation=

jmeter测试接口-打开很多TCP的连接数TIME_WAIT状态(Linux环境)导致报错的解决方法

一 发现问题: 服务器是Linux系统,用jmeter测试接口,发现打开很多的TCP连接,[[email protected] bin]# ulimit -n 65535用这个命令设置了总的连接数:进行压测的时候,连接数可能达到50000以上,很容易报错:查看各个状态的TCP个数:netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a,s[a]}',发现连接状态TIME_WAIT的状态很多,(统计80端口连接数netstat -

【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发

目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 [阐述]:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的. 具体资料大家可以参照原文<Jmeter测试SOAP协议(Jmeter 3.3)>感谢作者:stone9159 [步骤]: 一.创建WebService接口模拟

JMeter 测试 JAVA 接口

使用JMeter测试JAVA接口,需要编写一个java类,继承AbstractJavaSampleClient,实现具体接口的调用,然后将此工程打包为一个jar包,防止在JMETER_HOME\lib\ext目录下,然后在JMeter里配置调用. 编写Java类,继承AbstractJavaSampleClient 打包 jar 将jar包放置至 JMETER_HOME\lib\ext 目录 JMeter里配置调用 1. 添加依赖 <dependency> <groupId>org

jmeter测试 flask 接口请求

flask的代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- from flask import Flask, url_for, request app = Flask(__name__) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': print(request.form['userid']) # 获取post穿过

base64编码上传图片java后台接收实例

原文地址:http://blog.csdn.net/tonyfreak/article/details/72522855 思路 前台传以data:image/jpeg;base64,开头的base64编码的String字符串,后台接收字符串以后先进行base64解码 .decodeBuffer(),转换成二进制编码,然后使用字节输出流FileOutputStream()将文件保存到指定目录下. 报下面的错误 Error parsing HTTP request header Note: furt