一个“\”引发的血案——记一次hyperpacer回放时的“500”错误
上一篇 /
下一篇 2016-04-25 09:17:16
/ 个人分类:hyperpacer
51Testing软件测试网F-D%xwiW公司要求测试工具统一从jmeter迁到hyperpacer了。

,uZ3b:R7n#@0Vm!Q|BZS0今天,在用hyperpacer 测试的时候,控制台突然冒出来很多个“500”的错误。
7Z.}2\L"mn?%_0 bA6T:C\Hc5l0_0我们都知道,http状态码中5开头的一般都是客户端的问题,因为是新从jmeter转到hyperpacer上来,所以第一反应:是不是工具自身的问题啊???
*s8s2W*Pz3Zw v(N051Testing软件测试网jr`0i6{T:t"r^,dX反复执行了几次,发现都是在同一个请求的地方才会出现“500”,是并发的问题?修改并发用户数,改成单个用户,发现问题依旧。51Testing软件测试网[
Z`6jVz]
51Testing软件测试网4g7W z4VM}ag查看出问题的这个请求,
H;j/E;PV9M051Testing软件测试网 qpC]se
51Testing软件测试网u|Z%^6W
51Testing软件测试网1n+f7TX-a很简单的json数据,没看出来有什么问题。客户端看不出来问题,那就再看看服务端的日志信息,果然看到抛出来一个异常51Testing软件测试网;z)sRbn V
8ENulkR:E6@u0
x4~?Jx#F
Q0V%~)aZO.?TZ0异
常提示信息很明显,在第一行的第300的字符处有一个非法的转义,回到客户端,可以看到POST的主体数据有 "text": "全路径信息:11
变动费用\1160 出单手续费\11600010
出单手续费"这样一行。我们知道,“\”会被当作转义的标识,即在看到“\”这个字符是会认为是后面的字符需要转义,比如我们这里的例子就是会对"\1"
去进行转义处理,"\1"没看到过有这个转义,应该是个没有意义的转义,所以报了非法转义。51Testing软件测试网2v&^7@-kSZ1U~9dY"U
51Testing软件测试网 KH;k1MO-pk如果确实需要使用"\",需要使用"\\"进行转义后才会被识别为"\",那么解决就简单了,每个"\"前面再加上一个"\"进行转义就可以了。51Testing软件测试网:|p,H8[8C
w*F*]N%H@B4`S0然而,你以为你以为的就是你以为的吗?NO~~~~51Testing软件测试网:j/z5k8H
h6]1A4~.q|,}n
51Testing软件测试网]r D2O)X9uL:|Fd加完了转义后,再次执行,发现还是依旧在这里报错,错误信息依然是非法的转义。这次又是什么原因呢?
u8v] l(Qwk
c051Testing软件测试网X[(}$_(V"M;n6U:FsB想了好久想不太明白,后来猜测可能是hyperpacer本身对请求体进行解析的时候需要进行一次转义,而json在传递数据的时候也要求将需要转义的字符先进行转义在放到value中,这样也就是需要转义后再转义,也就是说一个"\"转义再转义的话就是“\\\\”,
这样修改后,果然就不再报500了。51Testing软件测试网s5q
u)^ K
51Testing软件测试网c rk|@2H4sbL~问题虽然解决了,但是还是留下一个小疑问,如果真是猜测的:工具本身对请求解析是也需要进行转义,那么截获请求并生成的时候工具也就应该会先做好转义的处理啊,总觉得还是有些矛盾的地方。51Testing软件测试网T`-E/iNw3eVr|2c$Y2O
z
51Testing软件测试网V8b}&N$ELi1bi Z留个小尾巴,以后再详细分析吧。51Testing软件测试网7i3^3D-P9q"W?
51Testing软件测试网 R(Bc8?%@'J1LRg([问题总归是解决了,最后,给大家做个小备忘,一般常需要使用“\”来进行转义的字符如下8个:
/h#ye#YL]0
n4JQ4U rT'w;R{0\b 退格
R;\9Wxk6Z nq(v0\f 换页
5l&sV2Vkh0\n 换行
HRCYPB_z}0\r 回车
51Testing软件测试网"BYt+R;W q
W-c6{\t 水平制表
;W&v wkv0\\ 反斜杠
51Testing软件测试网
X5uj?6e\' 单引号
)SfPp)Vk'lJR;s0\" 双引号
收藏
举报
TAG:
转义
错误码
hyperpacer