?聚合報告有2中生成方式
1、在已有jtl文件的情況下,直接選擇加載文件即可生成 聚合報告
2、在運(yùn)行jmeter的過程中,動態(tài)生成聚合報告
聚合報告中統(tǒng)計的數(shù)據(jù)來源,其實都是統(tǒng)計的sampleResult中收集的數(shù)據(jù)。
需要特別注意的是:
Label:即為添加sample時設(shè)置名稱
samples:? 同名的請求名稱的請求次數(shù),會進(jìn)行合并統(tǒng)計
Average:同名請求的累加響應(yīng)時間/同名請求的累加請求次數(shù)
Median(50%Line) ? 90%Line? 95%LIne 99%Line? 這三個的統(tǒng)計邏輯是一致的,都是將請求相應(yīng)時間及請求次數(shù)放到一個按照請求時間排序的TreeMap中,讓后分別取50%、90%、95%、99%的請求次數(shù)對應(yīng)的那個請求時間。
1、聚合報告中的每一行,代表一個請求(同名的請求會只顯示一個,把結(jié)果合并)
2、聚合報告中的每一列信息,是由SamplingStatCalculator類的不同方法實現(xiàn)統(tǒng)計的,(相同名稱的請求會共用同一個SamplingStatCalculator)
不管是運(yùn)行jmeter時實時生成聚合報告,還是根據(jù)已經(jīng)存在jtl生成聚合報告,最終的底層都是調(diào)用StatGraphVisualizer類的add(sampleResult)方法來生成表格的一行數(shù)據(jù),傳遞的參數(shù)為每個請求的請求結(jié)果(sampleResult)信息。
add方法的調(diào)用時機(jī):
1、根據(jù)jtl文件生成報告時,每解析一行數(shù)據(jù)就調(diào)用一次add方法
2、實時運(yùn)行生成聚合報告,每請求一次,就調(diào)用一次add方法
注意:
private final Map tableRows = new ConcurrentHashMap<>();
tableRows封裝了相同名稱的sample對應(yīng)的SamplingStatCalculator對象,也就是同名的sample會使用相同的SamplingStatCalculator對象計算數(shù)據(jù),
samples Min Max的源碼:下面的方法在沒完成一個請求或者每解析一行jtl結(jié)果文件時都會調(diào)用一次
Media、90%Line、95%Line、99%Line
Throughput:
當(dāng)前統(tǒng)計的請求次數(shù)/(最后一個請求的結(jié)束時間-第一個請求的開始時間)
KB/sec
Error%