利用L+F抓包的形式录制APP的性能脚本

发表于:2020-12-09 10:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:温妮小蜜蜂    来源:博客园

  最近公司要求做APP性能测试,尝试网上所有的方法,整崩溃了还是没有有弄好,手机连接代理,但是录制的时候有些接口就是抓不到,流程接口抓不全,导致数据插入不到数据库。后来直接撇开LoadRunner,只对Fiddler做代理抓包,将抓到的包进行分割处理,就成了我们所需要的性能测试脚本,具体操作如下(在做次操作之前,电脑和手机连接同意WiFi,台式电脑可以用无线网卡):
  1.Fiddler打开代理,填写代理端口,如图所示:
  Tools——Options-——Connections
  2.对手机进行代理设置,在连接的WiFi下进行手动代理设置,如下图所示:
  3.此时,你的fiddler应该可以抓到你手机上的包了,为了方便快速,在fiddler中只过滤你需要的请求
  4.在fiddler中抓取到请求之后选中你所需要的的全部请求,进行导出
  导出步骤,选中右键:save——Selected Sessions——as Text…,将文件导出之后是个txt文件;在LoadeRunner中创建一个py文件,或者pycharm中创建py文件,定义一个字符串,将txt中的文件中的内容放入到字符串中,进行分割,再进行运行,运行的结果就是你要的性能测试脚本了。具体代码如下:
  import os
  strinfo=’’‘此处将txt文件中的全部内容粘贴进来’’’
  import re
  strlist = strinfo.split('------------------------------------------------------------------')
  reqlist = []
  redict = {}
  pamlist =[]
  pamddict={}
  pattern = [r'POST (.*) HTTP/1.1',r'GET (.*) HTTP/1.1',r'OPTIONS (.*) HTTP/1.1',r'PUT (.*) HTTP/1.1']
  for i in range(len(strlist)):
      for pat in pattern:
          relist=re.findall(pat, strlist[i])
          if len(relist)>0:
              redict['method']=pat.split(" ")[0]
              redict['url']=relist[0]
              redict['order']=i
              reqlist.append(redict)
          redict={}
  
  partern = [r'{(.*)}']
  for j in range(len(strlist)):
          if 'POST https' in strlist[j] or 'PUT https' in strlist[j]:
              for pat in partern:
                  relist = re.findall(pat,strlist[j])
                  if len(relist)>1:
                      pamddict['pam']='{'+relist[0]+'}'
                      asa=re.sub('"','\\"','{'+relist[0]+'}')
                      pamddict['pam']=asa
                      pamddict['order']=j
                      pamlist.append(pamddict)
                  pamddict={}
  # print(pamlist)
  parmlist=[]
  for u in pamlist:
      ordernum = u['order']
      for k in reqlist:
          ordern = k['order']
          if ordern == ordernum:
              k['pam']=u['pam']
               
  for da in reqlist:
      if 'pam' in da.keys():
          reqmethod='''
              web_custom_request("web_custom_request",
              "URL=%s",
              "Method=%s",
              "TargetFrame=",
              "Resource=0",
              "Referer=",
              "Body=%s",
              LAST);
          '''%(da['url'],da['method'],da['pam'])
      else:
          reqmethod='''
              web_custom_request("web_custom_request",
              "URL=%s",
              "Method=%s",
              "TargetFrame=",
              "Resource=0",
              "Referer=",
              "Body=",
              LAST);
          '''%(da['url'],da['method'])
      print(reqmethod) 
  运行结果如下:
  运行的结果就是性能脚本啦,将结果粘贴到LoadeRunner中,这样脚本的全流程都会抓到,而且不会漏掉,运行脚本,数据库检查数据是否插入,如果插入说明你就成功了!

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号