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"))