python获取http请求的首字节时间(TTFB)

 接口测试有一响应时间的指标,一般的思路是使用调用完成的时间减去调用开始的时间,这样统计将网络传输的时间包含在内,在数据响应小,传输时间在几毫秒的时候,这样的误差是可以接受的,但如果因为传输的数据很大,传输的链路比较长等原因导致传输过程耗时比较多时,则会带来较大的误差,因此以收到的第一个字节的时间为结束时间,来计算响应时间则能在一定程度上忽略网络带来的影响,能更真实的反应服务器的响应速度,这就是TTFB(Time-To-First-Byte),而一般的方式就是TTLB(Time-To-Last-Byte)
在使用chrome浏览器的开发者工具查看请求的详情时,在timing下会显示TTFB 如下图

1648696913(1).png

 我们在做http协议接口测试时,有什么优雅的方式也可以统计到TTFB吗?当然有的,如果您使用的是requests进行请求的话下面的代码可以做为参考

import requests
import time

start_time = time.perf_counter()
rsp = requests.get("http://www.baidu.com")

# 单位换算成毫秒
# Time-To-Last-Byte 到最后一个字节的的时间
TTLB = round((time.perf_counter() - start_time) * 1000, 2)
# Time-To-First-Byte 首字节时间 rsp.elapsed 返回一个  datetime.timedelta 对象
TTFB = round(rsp.elapsed.microseconds / 1000, 2)
print(f"HttpCode:{rsp.status_code} TTLB:{TTLB},TTFB:{TTFB}")

执行后响应如图:


image.png

ps:如果是基于tcp或udp的协议,也可以有类似的思路,在收到第一个字节时做为结束时间,来度量接口的响应时间,TTLB对于用户更有意义,但单纯就接口测试来说TTFB则更能反应应用接口的情况。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CDN访问异常篇之502/503/504错误 一. 源站不通或源站域名无法解析 CDN 都是公网上的节点,CDN配...
    TimLi_51bb阅读 8,094评论 0 1
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,096评论 6 13
  • 测试发现bug 开发不认为是bug的时候你怎么办? 1.1、首先明确开发说不是bug的理由。 1.2、如果是需求变...
    贩低阅读 614评论 0 0
  • 一. 性能测试 1.0 为什么要进行性能测试? 评估当前系统的能力 寻找性能瓶颈,优化系统性能 评估软件是否满足...
    友情提示阅读 189评论 0 0
  • 一. 性能测试 1.0 为什么要进行性能测试? 评估当前系统的能力 寻找性能瓶颈,优化系统性能 评估软件是否满足...
    5888eb1818d9阅读 228评论 0 0