1.7 自动化接口性能测试

316 阅读2分钟

1、接口性能测试应该关注的指标

1.1)请求响应时间(TLLB)

概念:客户端向服务端发出请求,服务端回应,客户端接收
1秒钟之内,性能很好
1~2秒钟之内,标准性能
2~3秒钟之内,性能合格

1.2)吞吐量

概念:一次性能测试过程中网络上传输数据量的总和
吞吐率 = 吞吐量/传输时间

1.3)每秒处理事务数(TPS/QPS)

QPS(TPS)=并发数/平均响应时间
概念:处理事务包含一下三个步骤
一:用户请求服务器
二:服务器自己的内部处理
三:服务器返回给用户

1.4)并发量

概念:系统能同时处理的请求数
C = nL / T
n:平均访问用户数
L:一天内从登录到退出的平均时间
T:一天多长时间用户使用系统

1.5)请求失败率

请求失败率=请求失败数/总共请求数

1.6)点击率

概念:每秒用户向服务器提交的HTTP请求

1.7)CPU占用情况

2、接口性能测试,例子:

# -*- coding:utf-8 -*-
import requests
import datetime
import time
import threading

'''
allow_redirects = False禁止重定向,添加在request参数后
params:get或post请求用params传参
response_time = float(responses.elapsed.microseconds) / 1000:获取响应时间,单位ms
nub = 10:设置并发线程数
ThinkTime = 0.5:设置线程思考时间
t.setDaemon(True):设置守护线程,守护线程线程优先级比较低
AverageTime = "{:.3f}".format(float(sum(test_request.times)) / float(len(test_request.times))):计算数组的平均值,保留3位小数
total_time = float(hour)*60*60 + float(minute)*60 + float(second) #计算总的思考时间+请求时间
'''

class TestParams:

   times = []
   error = []

   def test_request_params(self):
      url = 'http://httpbin.org/post?'
      header_data = {"Content-Type": "application/json"}
      params = {
                "show_env=1": 0,
                "show_env=2"1
      }
      responses = requests.request("POST", url, headers=header_data, data=params)
      print("状态码:", responses.status_code)
      print("返回报文:", responses.text)
      response_time = float(responses.elapsed.microseconds) / 1000
      my_request = TestParams()
      my_request.times.append(response_time)
      if responses.status_code != 200:
           my_request.error.append("0")

if __name__ == '__main__':
   test_request = TestParams()
   threads = []
   start_time = datetime.datetime.now()
   print("请求开始时间: %s" % start_time)
   nub = 10
   ThinkTime = 0.5
   for i in range(1, nub + 1):
      t = threading.Thread(target=test_request.test_request_params())
      threads.append(t)
   for t in threads:
      time.sleep(ThinkTime)
      print("线程数: %s" % t)
      t.setDaemon(True)
      t.start()
      t.join()
   end_time = datetime.datetime.now()
   print("请求结束时间: %s" % end_time)
   time.sleep(3)
   AverageTime = "{:.3f}".format(float(sum(test_request.times)) / float(len(test_request.times)))
   print("平均响应时间: %s ms" % AverageTime)
   use_time = str(end_time - start_time)
   hour = use_time.split(':').pop(0)
   minute = use_time.split(':').pop(1)
   second = use_time.split(':').pop(2)
   total_time = float(hour) * 60 * 60 + float(minute) * 60 + float(second)
   print("并发数: %s" % nub)
   print("总共消耗的时间: %s s" % (total_time - float(nub * ThinkTime)))
   print("错误请求数: %s" % test_request.error.count("0"))