小米分布式測試平臺 (一)- 初識 Pecker

轉(zhuǎn)載自:https://mp.weixin.qq.com/s?__biz=MzU0OTQxNTA4Nw==&mid=2247483830&idx=1&sn=5b80f1a2335cfdc093ba799c1009d0b2&chksm=fbb17076ccc6f960cf892c0c7a1c801d7c7d3f558d9b9d9f16a8137c948576abbefc56843fd9&mpshare=1&scene=1&srcid=0813hZ6PWr8odS2gPUCw0qCj#rd

系列二:通用HTTP測試工具開發(fā)詳解

一顷窒、前言

小米分布式測試平臺(Pecker)是一款集成各種測試的平臺悦即。包括但不限于性能測試、功能回歸測試徒扶、上線準(zhǔn)入測試等趣席。測試種類不限于 RPC兵志、HTTP醇蝴、自定義 Java 接口等等宣肚。

二、背景

你的服務(wù)跑的有多快悠栓?你的服務(wù)平均響應(yīng)時(shí)間是多長霉涨?你的服務(wù)能抗多少流量按价,能抗多久?每次新服務(wù)上線或新活動上線前笙瑟,相關(guān)研發(fā)同學(xué)通常會思考這幾個(gè)問題楼镐。“這也許只有QA同學(xué)應(yīng)該知道吧”往枷。

流量猛增框产,服務(wù)雪崩,不應(yīng)該按斫唷秉宿!服務(wù)容量已經(jīng)算上buffer了,為什么還是敗在大流量之下屯碴?

在這樣的背景之下描睦,我們著手開發(fā)了小米分布式測試平臺-Pecker。旨在盡最大可能解放研發(fā)人員生產(chǎn)力导而,提前發(fā)現(xiàn)服務(wù)瓶頸和缺陷忱叭,保證服務(wù)穩(wěn)定運(yùn)行。

小米分布式測試平臺(Pecker)是一款集成各種測試的平臺今艺。包括但不限于性能測試韵丑、功能回歸測試、上線準(zhǔn)入測試等虚缎。測試種類不限于RPC埂息、HTTP、自定義Java接口等等遥巴。

三千康、小米分布式測試平臺介紹

測試平臺采用了業(yè)界比較成熟的三層架構(gòu)方案。如下:

Pecker架構(gòu)
  • 最上層為控制臺铲掐,用戶在此層操作拾弃。例如創(chuàng)建相關(guān)測試任務(wù)、查看執(zhí)行歷史摆霉、報(bào)表等數(shù)據(jù)豪椿。

  • 中間層為調(diào)度層,對測試任務(wù)進(jìn)行調(diào)度携栋。

  • 最底層為容器云搭盾,即任務(wù)執(zhí)行層。每個(gè)測試任務(wù)最終都是在Pod中執(zhí)行并完成婉支。

1鸯隅、性能測試種類

目前我們實(shí)現(xiàn)了三種壓測種類,分為RPCHTTP自定義Java接口壓測蝌以。

壓測類型

其中針對HTTP服務(wù)炕舵,我們引入了變量替換模式。

一個(gè)生動的栗子:假設(shè)現(xiàn)有一個(gè)HTTP GET請求為:http://www.mi.com/test?item=a跟畅,其返回值為:{"res": "a"}咽筋。針對這樣的接口,我們不可能一直構(gòu)造一個(gè)不變的請求徊件,也不可能創(chuàng)建成千上百個(gè)類似的任務(wù)奸攻。

在測試平臺上創(chuàng)建該任務(wù)時(shí),可以定義為:http://www.mi.com/test?item=${item}虱痕,其返回值為:{"res": "${res}"}舞箍。用戶只需要上傳包括${item}${res}的CSV文件,平臺則會在請求前自動進(jìn)行替換皆疹。

而且疏橄,對于HTTP的結(jié)果集驗(yàn)證,我們提供了三種校驗(yàn)略就。分別為:請求過程驗(yàn)證捎迫、HTTP狀態(tài)碼驗(yàn)證和用戶自定義斷言驗(yàn)證,下圖為用戶自定義響應(yīng)斷言:

檢查點(diǎn)

平臺提供的功能過于通用表牢,用戶想測試SQL操作窄绒,怎么辦?

對于這種情形崔兴,我們在架構(gòu)上完成了解耦的工作彰导,將測試模塊與測試客戶端進(jìn)行解耦,將測試模塊與統(tǒng)計(jì)數(shù)據(jù)模塊進(jìn)行解耦敲茄。用戶完全可以通過實(shí)現(xiàn)我們的接口完成測試位谋。

public interface TestClient {
    default void setUp();
    SampleResult runTest();
    default void tearDown();
}

2、性能測試方式

性能測試平臺目前提供了兩種測試模式:用戶增長模式和QPS增長模式堰燎。

測試方案

用戶增長模式:每個(gè)測試階段內(nèi)用戶數(shù)量固定掏父,隨著階段的增加定量增加用戶數(shù)。

例如:我們總共需要壓測10個(gè)階段秆剪,每階段持續(xù)10分鐘赊淑。初始階段用戶為1W,每個(gè)階段遞增1W仅讽。此模式現(xiàn)支持分布式測試模式陶缺。

QPS增長模式:每個(gè)測試階段內(nèi)固定QPS發(fā)送請求,隨著階段的增加定量增加QPS洁灵。

例如:我們總共需要壓測10個(gè)階段饱岸,每階段持續(xù)10分鐘。初始階段期望QPS=1W,每個(gè)階段期望QPS遞增1W伶贰。此模式暫不支持分布式測試模式蛛砰。

其底層實(shí)現(xiàn)方式為:動態(tài)計(jì)算響應(yīng)時(shí)間罐栈、線程數(shù)和Delay方程式黍衙。

3、報(bào)表數(shù)據(jù)展示

報(bào)表數(shù)據(jù)我們提供了基礎(chǔ)數(shù)據(jù)數(shù)據(jù)以及錯(cuò)誤數(shù)據(jù)展示荠诬,如下:

數(shù)據(jù)報(bào)表

為了展示數(shù)據(jù)更加直觀琅翻,我們同樣提供了圖數(shù)據(jù):

測試數(shù)據(jù)

4、其他功能

因?yàn)樾阅軠y試多數(shù)為自動執(zhí)行任務(wù)柑贞,使用者并不想每次都去控制臺上手動操作方椎。針對這種情況,我們開放了一些接口便于用戶進(jìn)行腳本運(yùn)行或者Jenkins調(diào)度钧嘶。

測試平臺實(shí)際上模擬Client端操作棠众,但用戶想實(shí)時(shí)獲取被壓測服務(wù)的運(yùn)行狀態(tài)。針對這種情況有决,我們的統(tǒng)計(jì)模塊可以動態(tài)展示打開JMX服務(wù)的CPU闸拿、內(nèi)存以及GC相關(guān)數(shù)據(jù)。

JVM相關(guān)信息

5书幕、與主流測試工具對比

與Jmeter和Gatling對比

性能 功能 數(shù)據(jù)展示
測試平臺性能優(yōu)于Gatling新荤,與Jmeter相近 測試平臺作為自研平臺,其功能完備性要差于其他兩個(gè)工具 測試平臺在數(shù)據(jù)展示上要優(yōu)于其他兩個(gè)工具

四台汇、未來規(guī)劃

1苛骨、基準(zhǔn)測試完善

測試平臺目前處于高速開發(fā)階段,為了不影響其性能苟呐,需要完善其基準(zhǔn)測試痒芝,提供更多的測試場景以及基準(zhǔn)數(shù)據(jù)。

2牵素、接口平臺

可以看到吼野,極大多數(shù)性能壓測都是對某些接口進(jìn)行發(fā)起。后期我們提供更完備的接口平臺两波。接口管理更方便瞳步,性能/功能測試一目了然。

3腰奋、功能測試平臺

目前測試平臺主要實(shí)現(xiàn)了性能測試功能单起,現(xiàn)正在開發(fā)功能測試平臺。支持上傳測試用例并發(fā)起功能測試劣坊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘀倒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌测蘑,老刑警劉巖灌危,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碳胳,居然都是意外死亡勇蝙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門挨约,熙熙樓的掌柜王于貴愁眉苦臉地迎上來味混,“玉大人,你說我怎么就攤上這事诫惭∥涛” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵夕土,是天一觀的道長馆衔。 經(jīng)常有香客問我,道長怨绣,這世上最難降的妖魔是什么角溃? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮梨熙,結(jié)果婚禮上开镣,老公的妹妹穿的比我還像新娘。我一直安慰自己咽扇,他們只是感情好邪财,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著质欲,像睡著了一般树埠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘶伟,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天怎憋,我揣著相機(jī)與錄音,去河邊找鬼九昧。 笑死绊袋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铸鹰。 我是一名探鬼主播癌别,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹋笼!你這毒婦竟也來了展姐?” 一聲冷哼從身側(cè)響起躁垛,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎圾笨,沒想到半個(gè)月后教馆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擂达,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年土铺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谍婉。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舒憾,死狀恐怖镀钓,靈堂內(nèi)的尸體忽然破棺而出穗熬,到底是詐尸還是另有隱情,我是刑警寧澤丁溅,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布唤蔗,位于F島的核電站,受9級特大地震影響窟赏,放射性物質(zhì)發(fā)生泄漏妓柜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一涯穷、第九天 我趴在偏房一處隱蔽的房頂上張望棍掐。 院中可真熱鬧,春花似錦拷况、人聲如沸作煌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粟誓。三九已至,卻和暖如春起意,著一層夾襖步出監(jiān)牢的瞬間鹰服,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工揽咕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悲酷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓亲善,卻偏偏與公主長得像设易,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子逗爹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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