对于接口测试,大多数人下意识想到的后端接口,其实,除了后端接口,前端也有对应的打点接口的,那这些打点接口有什么用呢?一般来说这些打点接口是前端用来记录前端的相关参数在不同的界面跳转的时候,验证查看相关的数据是否读取与传入,方便自己调试的时候查看相关的数据,除此之外,这些打点数据可以用来做一些统计数据,查看前端哪些页面的访问情况,可以收集这些情况做大数据的分析。所以前端的接口,我们录制了主要了为了模拟移动端的打点,方便做数据统计分析用的,也可以作为移动端的一个压力测试,模仿用户高并发访问页面的数据。
一般来说,前端的打点数据接口和后端有些不一样,为了打点,除了会传入一些通用的字段数据外,还需要输入特定动作的字段,并且特定动作的字段,还会根绝不同的来源类型进行区分,所以相对后端接口来说,需要设置的选项多了不少。例如我自己现在录制的一个沙箱环境的微商城的查看商品的打点接口:
GET /s/pi-mall/1531564428887/i2.gif 这个接口看起来和后端的接口很多不一样,只有一个模块的区分,很多内容需要根据传入的数据进去区分的,具体的抓包截图如下:
从截图上可以看出,这个前端的打点接口需要传入2个url,
一个是左侧的网关接口(host ): gateway.master.sandbox.terran.wxpai.cn
一个是商品详情页面的地址(url)这个地址才是我接口的真正页面地址:http://31612.sandbox.terran.wxpai.cn/mall/mobile/2.4.0/?#/detail?id=17810
然后下面是需要传入的20多个参数。
开始录制的时候,为了方便,我是用了fiddler的headers页面的 request header的内容,这样可以一次性传入所有的参数
复制的时候,发现有部分传入的参数的符号被改了编码样式:
GET /s/pi-mall/1531642985754/i2.gif?url=http%3A%2F%2F31612.sandbox.terran.wxpai.cn%2Fmall%2Fmobile%2F2.4.0%2F%3F%23%2Fdetail%3Fid%3D17810&title=%E5%95%86%E5%93%81%E8%AF%A6%E6%83%85&ua=Mozilla%2F5.0%20(Linux%3B%20Android%207.0%3B%20KNT-AL20%20Build%2FHUAWEIKNT-AL20%3B%20wv)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Version%2F4.0%20Chrome%2F57.0.2987.132%20MQQBrowser%2F6.2%20TBS%2F044109%20Mobile%20Safari%2F537.36%20MicroMessenger%2F6.7.1321(0x26070030)%20NetType%2FWIFI%20Language%2Fzh_CN&screen_width=360&screen_height=640&pixel_depth=32&screen=360x640&referer=http%3A%2F%2F31612.sandbox.terran.wxpai.cn%2Fmall&uid=55527&ent_id=31612&app_type=pi&domain=31612.sandbox.terran.wxpai.cn&user_mark=&device=KNT-AL20%20Build%2FHUAWEIKNT-AL20&os=Android&os_version=7.0&pf=wechat&pf_version=6.7.1321&ch=&prev_ch=&client_type=web&app=pi-mall&log_type=pageview&prev_page=%2Findex¤t_page=%2Fdetail%3Fid%3D17810&path=%2Fdetail%3Fid%3D17810&mod_path=%23%2Fdetail&prev_mod_path=%23%2Fdetail&product_id=17810&sharer_id=&_=1531642985753.49f305a6 HTTP/1.1
开始以为是被加密的时候改码显示了,所以手动一个个改回图一第一次看到参数的格式,并且把 可能会换动的参数给参数化,例如 ent_id 、user_id、product_id 这一类的变量用 ${ent_id} 的格式进行才参数化,这样可以在录制循环前面加个加个自定义变量进行一次性输入。但是发现地址好长,需要对应着一个个参数位置去来回修改,看的眼睛都花了,而且调试了半小时,发现很容易改错了地方,老提示报错。于是决定采用parameters 部分逐个添加对应的参数和数值,这样就不用担心改错了参数了,并且可以和图一的参数表格一一对应,然后完成后的结果如下:
开始以为这样就可以设置成功了,于是单击执行这个任务测试了下,发现报错了:
java.net.URISyntaxException: Illegal character in fragment at index 180:
但是仔细的对着每一个参数和抓包的图一的数据对照,发现没写错什么啊,为什么会报这个错的?然后百度了一下这个错误,才知道原来前端的打点接口后面接的是url,很多格式需要转码,具体的解释如下:
(解答参考地址:https://blog.csdn.net/maybe_frank/article/details/78714449)
于是按照这个格式一个个的改会转码的格式(原来是自己一个错误的理解,擅自改回正常的显示格式引起的错误,一直以为前段打点接口传入参数内容和后端接口一直,原来是需要转码的),这个坑踩的不冤,于是按照这个格式修改完毕后,重新执行了一次就OK了
终于顺利的完成了第一个前段打点接口的录制了。