测试大神是如何自己上手写性能工具的?

发表于:2023-12-21 09:58

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

 作者:虫师    来源:博客园

  显示性能测试进度
  前些天逛github发现了tqdm,他可以动态显示程序的执行进度。根据前面开发的功能,在运行性能时,如果并发用户和请求数很大,那么终端就处于执行状态,不会有任何信息输出,直到运行结果,结果才被打印出来。
  > python3 kb.py https://wwww.baidu.com -u 10 -q 10
  请求URL: https://wwww.baidu.com
  用户数:10,循环次数: 10
  ============== Running ===================
  # 漫长的等待....
  ....................................................................................................
  ============== Results ===================
  最大:       0.955 s
  最小:       0.2573 s
  平均:       0.4585 s
  请求成功 100
  请求失败 0
  ============== end ===================
  这个体验非常糟糕。加入tqdm,体验就好很多了。
  tqdm的用法超级简单,看一个简单的例子:
  from time import sleep
  from tqdm import trange
  for i in trange(10):
      sleep(0.5)
  在终端运行上面的程序,动态显示执行进度。
  > python demo.py
  100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:05<00:00,  2.00it/s]
  生成 kb 命令
  上一篇借助 click 来给python文件执行时接收参数
  > python3 kb.py https://wwww.baidu.com -u 10 -q 10
  这样很不专业,也不够方便。 ab 是这样执行:
  > ab -c 10 -n 100 https://wwww.baidu.com
  那么,能不能把kb.py 变成一个命令,一次安装,到处执行,并且去掉前面的 python。
  很简单,只需要使用python的argparse 模块即可。
  import argparse
  def main():
      """
      API test: parse command line options and run commands.
      """
      parser = argparse.ArgumentParser(description=__description__)
      parser.add_argument(
          '-v', '--version', dest='version', action='store_true',
          help="show version")
      args = parser.parse_args()
      if args.version:
          print("kb {}".format(__version__))
          sys.exit(0)
      return 0
  def console_main():
      main()
      return 0
  配合 setup.py 安装文件,就可以生成 命令工具了。
  # setup.py 
  entry_points='''
      [console_scripts]
      kb=kb.run:console_main
  '''
  执行setup.py 命令安装
  python setup.py install
  在 python安装目录下生成 kb 命令工具。
  最新kb使用
  ·install
  > git clone https://github.com/SeldomQA/kb
  > cd kb
  > python3 setup.py install
  · 使用
  查看帮助:
  > kb --help
  usage: kb [-h] [-v] [-u USERS] [-q REQUESTS] [url]
  kb is a simple performance testing tool, Simulate concurrent requests through
  a coroutine.
  positional arguments:
    url                   URL to hit
  optional arguments:
    -h, --help            show this help message and exit
    -v, --version         show version
    -u USERS, --users USERS
                          Number of concurrent users
    -q REQUESTS, --requests REQUESTS
                          Number of requests
  · 运行
  通过kb命令实现URL并发请求:
  > kb https://www.baidu.com -u 5 -q 20
  URL: https://www.baidu.com
  users: 5, requests: 20
  ============== Running ===================
  100%|████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<?, ?it/s]
  100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.45it/s]
  100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.41it/s]
  100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.31it/s]
  100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.20it/s]
  100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.14it/s]
  ============== Results ===================
  Max:       0.2601 s
  Min:       0.054 s
  Average:   0.0968 s
  pass:  100
  fail:  0
  total: 100
  ================== end ===================
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号