Alex_McAvoy

想要成为渔夫的猎手

网络四到七层测试

【并发 TCP 连接容量测试】

并发 TCP 连接容量测试是为了检验被测设备或被测系统内存性能及其连接状态表能同时容纳的最大连接数目

在测试前,应进行如下配置:

  • 应用层采用 HTTP1.1 或以上版本,因为其具有默认维持 TCP 连接的特性
  • 设置一个初始 TCP 尝试连接速率,即每秒尝试发出的 TCP 连接请求数目,可参考产品手册说明或同类产品的最大速率,该值设置为等于或小于被测设备能容纳的最大连接请求速率
  • 定义客户端请求对象的字节大小,该对象是服务器响应客户端 GET 请求时返回的传输对象,建议参数设置为 512B、1024B 等较小值,以免大尺寸的传输对象占据太多带宽,影响并发连接容量的测试结果

测试使用二分搜索法来确定最大并发 TCP 连接容量,测试过程如下:

  1. 根据设定的初始尝试连接速率,由客户端发起连接请求,被测设备将每一个连接状态记录在连接状态表中
  2. 如果被测设备可以容纳当前连接速率下的连接请求数目,则客户端提高尝试连接速率,增加并发连接请求数目
  3. 如果被测设备不能支持当前连接速率下的连接请求数目,则客户端降低尝试连接速率,减少并发连接请求数目

在每一轮测试结束后,测试仪表都需要发起一系列 TCP 的 RST 报文关闭 TCP 连接,由于绝大多数被测设备的连接表项在 TCP 连接关闭后仍会保存一段老化时间后才被删除,因此在发起下一轮测试之前,测试仪表需要等待一个连接记录生存周期,以确保连接表已清空,也可以通过重启设备或手动清空方式删除这些记录

【最大 TCP 连接建立速率测试】

最大 TCP 连接建立速率测试是为了测试被测设备对连接的处理速度

在测试前,进行如下配置:

  • 定义一个初始要建立的 TCP 连接数目,其大小应低于被测设备所能承受的最大并发连接数
  • 请求对象的字节大小定义和并发容量测试中一样

测试使用二分搜索法来确立最大 TCP 连接建立速率,测试过程如下:

  1. 由虚拟客户端以初始 TCP 连接数目发起连接请求
  2. 如果被测设备能成功建立所有的连接,则增加连接请求数目
  3. 如果被测设备不能成功建立所有的连接,则减少连接请求数目
  4. 直到得到一个最大 TCP 连接建立速率,该速率下发送的所有连接都能成功建立

若最终期望速率与实际速率基本吻合,说明被测设备有足够的性能处理连接请求

【最大 TCP 连接拆除速率测试】

最大 TCP 连接拆除速率测试是为了测试被测设备释放资源的速度

在测试前,进行如下配置:

  • 欲拆除的 TCP 连接数目
  • 规定 TCP 连接的关闭模式:3 次握手关闭方式或 4 次握手关闭方式
  • 规定 TCP 连接的关闭发起方:客户端或服务器发起

测试过程同样使用二分搜索法,对配置参数中设定的 TCP 连接数目,迭代使用不同的速率进行连接拆除

【HTTP 传输速率测试】

HTTP 传输速率测试用于测试被测设备处理应用层流量的性能,同时也检验传输层及以下的协议的性能是否足够支撑上层的应用

应用层平均传输速率的计算公式为:

其中,$n$ 为传输对象的数目,$size$ 为传输对象的大小,单位为字节,$time$ 为完成所有事务所持续的时间,单位为秒

测试前,需要模拟多个虚拟客户端和服务器,同时进行参数配置:

  • 传输层需要设置尝试连接的数目、连接的关闭模式、连接关闭方向
  • 设定每个连接请求中包含的 GET 请求对象个数 $n$、每次请求的对象大小 $size$

测试运行中,根据所配置的虚拟客户端数目,连接总数将被平均分配给每个客户端,例如:连接总数为 100,参与测试的虚拟客户端数目为 4,则每个客户端将发起 25 个连接请求,此外,如果虚拟客户端在一个连接中发起多个 GET 请求,那么所请求的对象的大小必须是相同的

测试采用二分搜索法,测试过程如下:

  1. 在不同的测试轮次中改变 GET 请求的对象大小
  2. 如果客户端都能成功地获得服务器响应,则增加 GET 请求对象的大小
  3. 如果有客户的请求无法获得响应,则降低 GET 请求的对象的大小
  4. 进行多次迭代,每次利用公式计算传输速率

【最大 HTTP 事务处理速率测试】

最大 HTTP 事务处理速率测试是为了检验 DUT/SUT 能支持的用户存取 HTTP 对象的最大速率,其侧重点在于在于检验服务器的CPU运算速度、内存资源利用率等性能指标

对用户而言,如果服务器端的运算性能和资源不足,尽管网络带宽足够,用户仍然无法体验快速流畅的网络应用

在进行测试前,需要进行参数设置,其与 HTTP 传输速率测试相同

测试采用二分搜索法,测试过程如下:

  1. 保持传输对象大小不变
  2. 如果某次事务都处理成功,则提高事务的数目
  3. 反之,则降低事务的数目
  4. 在所有事务处理都成功的前提下,根据事务的时间开销和事务数目,计算获得最大 HTTP 事务处理速率
感谢您对我的支持,让我继续努力分享有用的技术与知识点!