《基于Jmeter的性能測試框架搭建》改進(jìn)一

《基于Jmeter的性能測試框架搭建》文末筆者提到了不少待改進(jìn)之處修然,如下所示。

  • Grafana性能圖表實時展現(xiàn)艰猬,測試過程中需實時截圖形成測試報告,不夠人性化埋市。
    解決方案:自動生成測試報告并郵件通知冠桃。
  • Grafana性能圖表需測試人員實時監(jiān)控,人力成本較高道宅。
    解決方案:自動生成測試報告并郵件通知食听。
  • 多腳本構(gòu)建的話,無法區(qū)分Grafana展現(xiàn)的性能圖表對應(yīng)哪個腳本污茵。
    解決方案:傳參區(qū)分腳本樱报,并生成每個接口對應(yīng)的測試報告。
  • 如果考慮持續(xù)監(jiān)控泞当,可加入預(yù)警功能迹蛤。
    解決方案:依賴Grafana的預(yù)警功能。
  • 未能自動生成測試報告襟士。
    解決方案:自動生成測試報告并郵件通知盗飒。
  • 需登錄jenkins停止腳本構(gòu)建,操作不夠便利陋桂。
    解決方案:前端增加停止構(gòu)建操作箩兽。
  • 每次只能提交一個腳本進(jìn)行構(gòu)建。
    解決方案:支持批量構(gòu)建章喉。

結(jié)合筆者所在項目組現(xiàn)狀汗贫,優(yōu)先解決了以下幾個問題。

本期改進(jìn)

1秸脱、多腳本構(gòu)建的話落包,無法區(qū)分Grafana展現(xiàn)的性能圖表對應(yīng)哪個腳本。

最終解決方案:將腳本名稱寫入influxdb庫摊唇,然后再通過Grafana配置讀取咐蝇。

  • 創(chuàng)建influxdb數(shù)據(jù)庫interfaceName并插入數(shù)據(jù)(腳本名稱)
<!-- 依賴關(guān)系 -->
<dependency>
      <groupId>org.influxdb</groupId>
      <artifactId>influxdb-java</artifactId>
      <version>2.5</version>
</dependency>
//創(chuàng)建數(shù)據(jù)庫,并寫入對應(yīng)腳本的名稱
    public static void influxdb(String interfaceName) throws Exception {
        Map<String,String> configMap = new HashMap<String, String>();
        configMap = getProperties("config\\config.properties");
        InfluxDBUtil svr = new InfluxDBUtil(configMap.get("Influxdb"))  //對應(yīng)測試機地址
                .setDatabase("interfaceName", "autogen")  //數(shù)據(jù)庫名
                .setAuthentication("admin", "admin")      //grafana datasource配置的用戶名和密碼
                .setRetentionPolicy("30m", 1)
                .build();

        for (int i = 0; i < 5; i++) {
            Map<String, String> tags = new HashMap<String ,String>();
            tags.put("system", configMap.get("InfluxdbSystem"));  //對應(yīng)的應(yīng)用

            Map<String, Object> fields = new HashMap<String, Object>();
            fields.put("interfaceName", interfaceName);           //面板展現(xiàn)的腳本名稱

            svr.insert("interface", tags, fields);
            System.out.println(i);
        }
    }
  • 配置Grafana的datasource巷查。


    DataSource配置
  • 配置Grafana面板配置有序。


    面板配置
  • 執(zhí)行壓測小工具提交腳本抹腿,展現(xiàn)性能數(shù)據(jù)(注意圖二展現(xiàn)了腳本名稱)。
    壓測小工具

    性能圖表
2旭寿、需登錄jenkins停止腳本構(gòu)建警绩,操作不夠便利。

最終解決方案:無需解決盅称,測試人員需登錄jenkins查看構(gòu)建日志肩祥,分析構(gòu)建結(jié)果。

構(gòu)建日志

3缩膝、每次只能提交一個腳本進(jìn)行構(gòu)建混狠。

最終解決方案:多腳本提交時,jenkins按腳本提交的先后順序排隊構(gòu)建疾层。
同一套壓測環(huán)境将饺,為了保證單個接口壓測的準(zhǔn)確性,筆者并不建議并行構(gòu)建多個接口痛黎,可以通過壓測小工具提交腳本串行構(gòu)建予弧。

jenkins構(gòu)建

觸發(fā)Jenkins構(gòu)建擴展

除了《基于Jmeter的性能測試框架搭建》提及的webhook,Poll SCM觸發(fā)jenkins構(gòu)建,也可以通過curl或jenkins-cli觸發(fā)構(gòu)建舅逸。

curl命令構(gòu)建
curl  -i -u 'jenkinsUserName:jenkinsPassword' -X POST -H "$CRUMB" "http://jenkinsurl/jenkins/job/jobName/build?delay=0sec"
jenkins-cli構(gòu)建
  • 下載jenkins-cli.jar
    通過jenkinsUrl/cli下載對應(yīng)版本的jenkins-cli.jar桌肴。


    jenkins-cli.jar下載
  • 通過build命令觸發(fā)構(gòu)建

//觸發(fā)jenkins構(gòu)建
 configMap = getProperties("config\\config.properties");
String jenkinsCliUrl = "lib\\lib\\jenkins-cli.jar";
String jenkinsUrl = configMap.get("JenkinsUrl");
String jobName = configMap.get("JenkinsJobName");
String userName = configMap.get("JenkinsUserName");
String password = configMap.get("JenkinsPassword");
String commandStr = "java -jar " + jenkinsCliUrl + " -s " + jenkinsUrl + " build " + jobName + " --username " + userName + " --password " + password;
Runtime.getRuntime().exec(commandStr); //觸發(fā)jenkins構(gòu)建

需要注意的是,通過jenkins-cli方式觸發(fā)構(gòu)建琉历,需設(shè)置jenkins的全局安全配置為“任何用戶可以做任何事(沒有任何限制)”或勾選“Allow anonymous read access”坠七,否者會報錯。


全局安全配置
  • 更多的命令可通過help或在jenkinsUrl/cli查看
java -jar jenkins-cli.jar -s http://jenkinsUrl/jenkins/ help
可用命令

參考資料

Influxdb數(shù)據(jù)庫讀寫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旗笔,一起剝皮案震驚了整個濱河市彪置,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝇恶,老刑警劉巖拳魁,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撮弧,居然都是意外死亡潘懊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門贿衍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來授舟,“玉大人,你說我怎么就攤上這事贸辈∈褪鳎” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奢啥。 經(jīng)常有香客問我秸仙,道長,這世上最難降的妖魔是什么桩盲? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任寂纪,我火速辦了婚禮,結(jié)果婚禮上正驻,老公的妹妹穿的比我還像新娘弊攘。我一直安慰自己抢腐,他們只是感情好姑曙,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著迈倍,像睡著了一般伤靠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啼染,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天宴合,我揣著相機與錄音,去河邊找鬼迹鹅。 笑死卦洽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斜棚。 我是一名探鬼主播阀蒂,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弟蚀!你這毒婦竟也來了蚤霞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤义钉,失蹤者是張志新(化名)和其女友劉穎昧绣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捶闸,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡夜畴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了删壮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贪绘。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖醉锅,靈堂內(nèi)的尸體忽然破棺而出兔簇,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布垄琐,位于F島的核電站边酒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏狸窘。R本人自食惡果不足惜墩朦,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翻擒。 院中可真熱鬧氓涣,春花似錦、人聲如沸陋气。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巩趁。三九已至痒玩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間议慰,已是汗流浹背蠢古。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留别凹,地道東北人草讶。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像炉菲,于是被迫代替她去往敵國和親堕战。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 引言 談到性能測試颁督,部分公司連專門用于性能測試的環(huán)境都沒有践啄,更別提性能測試框架/平臺了。下面沉御,筆者就“基于Jmet...
    Tomandy閱讀 8,455評論 2 48
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,522評論 25 707
  • 好多年了屿讽,每年長假我和先生都分別行動,到一個不堵車吠裆、不宰客伐谈,有你愛吃的飯菜,有想念你的人的地方.........
    筱鸚閱讀 730評論 0 5