Skip to content

IAST性能与稳定性测试方案

alipaydeshui edited this page Jul 6, 2023 · 10 revisions

测试目的

测试IAST agent在日常工作模式下和极端场景下的性能情况。

性能测试环境

服务器类型:Docker

测试机器CPU:2C

测试机器内存:4G

测试机器硬盘:25G

测试场景

考虑到日常场景中,以无漏洞场景为主,因此80%的样本都是无漏洞的简单场景。

  • 无漏洞简单场景(污点链路长度为10),占比80%
  • 有漏洞简单场景(污点链路长度为10),占比4%
  • 超长污点传播链路(污点传播链路长度200)有漏洞场景,占比4%
  • 超长调用链路(调用链路长度50,每次调用链路中污点链路长度为3)有漏洞场景,占比4%
  • 大污点对象(污点对象大小超过1K,污点链路长度为10)有漏洞场景,占比4%
  • 多污点对象(同一个请求同时跟踪100个污点对象,污点链路长度为10)有漏洞场景,占比4%

靶场用例:https://github.com/alipay/ant-application-security-testing-benchmark/blob/main/iast-java/src/main/java/com/iast/astbenchmark/cases/AstPerfCase001.java

测试方案

性能测试

1、根据测试场景及比例分配,构造性能测试样本集。

2、先不部署IAST agent,分别以50和100 QPS进行3次性能测试,取平均值。

3、部署IAST agent,关闭抽样检测和自降级等功能(如果有),开启污点跟踪,先预热10min,再分别按50 和100 QPS进行3次性能测试,每次10min,取三次的平均值作为最终结果。

注意:测试时要关注漏洞是否能持续检出。

如果涉及到不同产品的对比测试,建议把支持检测的漏洞类型配置成一致。

4、关注的主要性能指标

90%响应时间(毫秒)、响应时间平均值(毫秒)、最大响应时间(毫秒)、cpu_util平均值(百分比)、mem_util平均值(MB)、load平均值。

性能指标 不部署IAST agent50 QPS(三次取均值) 部署IAST agent 50 QPS(三次取均值) 不部署IAST agent100 QPS(三次取均值) 部署IAST agent 100 QPS(三次取均值)
90%响应时间(毫秒)        
响应时间平均值(毫秒)        
最大响应时间(毫秒)        
cpu_util平均值(百分比)        
mem_util平均值(MB)        
load平均值        

极限测试

部署IAST的情况下,压测QPS逐步从0压测到极限性能(CPU 100%)情况,观察被测应用关键性能指标,否随流量增长稳定增长,以及内存泄漏、死锁风险。

注意:测试时要关注漏洞是否能持续检出。

疲劳测试

部署IAST的情况下,50 QPS连续测试2个小时,观察各项指标是否大致平稳,有无明显波动,有无内存泄漏、死锁、fullgc情况。

注意:测试时要关注漏洞是否能持续检出。

Clone this wiki locally