看誰跑的快 效能測試框架

2021-09-25 10:58:36 字數 2668 閱讀 4339

1.專案簡介:

描述乙個程式的好壞可以很好的幫助我們去優化程式,提高**水平。在比較有相同功能的方法時,我們通常會在特定的負載下,看系統的響應時間和表現。

所以以基於jmh基準測試框架為靈感,編寫了一款簡單的測試框架「看誰跑的快」

2.專案靈感

​ 1.首先高中物理在進行試驗的時候,我們要進行多組試驗,而且要控制變數,反應在**中,我們 肯定不能只測試一組資料,而是一定要多測試,達到減小誤差的效果,為了實現配置可修改

通過自定義註解的方式配置試驗組和每組要測試的數目

​ 2.要測試的類都放到乙個com.test.cases包下然後進行並且要測試的類都要繼承乙個介面口, case(只代表乙個標記而已,不定義任何方法)

​ 3.要測試的方法使用自定義註解benchmark打上標記

5.**實現

自定義註解

引數配置

@target()

@retention

(retentionpolicy.runtime)

public @inte***ce

measurement

測試類的標註

@target()

@retention

(retentionpolicy.runtime)

public @inte***ce

benchmark

測試用例的自動載入

public

class

caseloader

//將路徑進行解碼操作

string name1=urldecoder.

decode

(url1.

getpath()

,"utf-8");

//獲取檔案操作類

file file=

newfile

(name1)

;//獲取檔案下的列表

file[

] files=file.

listfiles()

;for

(file i:files)

//獲取檔名

string name=i.

getname()

;if(i.isfile()

)}}//獲取例項物件

list

listcase=

newarraylist

();for

(string i:casename)

}return

newcaserunner

(listcase);}

private

boolean

hasintfcase

(string i, class

caseclass)

throws classnotfoundexception

return

false;}

}

測試:

public

class

caserunner

public

void

run(

)throws invocationtargetexception, illegalacces***ception

//獲取類中所有方法

method[

] methods=cls.

getmethods()

;run

(methods,cases,it,g);}

private

void

run(method[

] methods,case cases,

int it,

int g )

throws invocationtargetexception, illegalacces***ception

measurement measurement1 = method.

getannotation

(measurement.

class);

if(measurement1 != null)

for(

int i =

0; i < g; i++

)long end = system.

currenttimemillis()

; system.out.

println

("花費"

+(end - start +1)

+"ms");

}}}}

com.test.cases包下如果有需要測試的類,將待測試類實現cases,然後要測試方法使用@benchmark標註,並初始化引數@measurement(group=***,iteration=***)

6.總結

​ 完成了基本測試功能,可以自定義測試引數,對各類的**進行測試,

​ 專案總的來說還有許多不足的地方,比如沒有實現預熱功能,不能專案啟動時,效能沒有達到最好,沒有實現存jar包匯入專案,會繼續跟進,完善專案

php swoole框架效能測試對比

測試機器為虛擬機器,1核2g記憶體,php環境和mysql都在虛擬機器內。php 7.3.2 swoole 4.4.5 測試框架有 結果為分別測試五次取的平均值 ab n 1000 c 100 http host 輸出 hello world 測試結果 ab n 1000 c 100 http ho...

服務框架訊息排程效能測試

測試環境 cpu intel core i5 4590 cpu 3.30ghz 4核,64位 記憶體 8g 交換機速率 10 100mbps 伺服器網絡卡速率 100mbps 測試資料 一 服務同節點訊息處理個數 每個服務跑滿1個cpu 100 1 32位元組以內 1000萬 秒 2 64位元組 9...

介面測試框架接入效能測試實踐分享

前言 現如今介面測試在軟體質量行業中的地位,已經越來越重要,相對於上層的ui自動化測試和下層的單元測試,介面測試的 低 投入 高 回報,也成了絕大多數質量保障實踐的首選。在開展介面測試時,往往很多時候都只在關注介面的功能性質量,而對於非功能性的質量保障驗證,比如效能 安全,在實際工程應用或者設計用例...