我眼中的性能測試工程師
想想來杭州有半年了,也對目前主站的性能評測團(tuán)隊工作模式有些許了解了,再加上以前在上家雇主也做過幾年自認(rèn)還算很有技術(shù)含量的性能測試工作,我想我還算有點資格說的吧:)
性能測試說的裝B點兒,其實沒啥,就是和Response Time(或者說latency)、throughput(也可以說capacity)以及scalability打交道。弄懂了這三個要素,應(yīng)該就算是一個合格的性能測試工程師了。
當(dāng)然,我不會裝B,只是一介武夫,所以我接下來只想從偏技術(shù)層面聊聊我心目中真正的主站性能測試工程師是啥樣的:
1、大局觀。性能測試工程師一定要有系統(tǒng)化的思維,要站在整個系統(tǒng)測試的 角度看問題。一個優(yōu)秀的性能工程師必須要有相當(dāng)?shù)闹R廣度。否則在測試期間,你必須依賴外界援助(比如DBA,Dev或OPS)來協(xié)助,效率不高,更關(guān)鍵 的是可能會被誤導(dǎo),漏掉很多性能BUG。我常常看到組里的童鞋們在壓測時一看到TPS降了,就死盯著應(yīng)用,就著急的去分析線程或做CPU Profiling。找不到原因后有時問到我時,我習(xí)慣的第一句總是 你看過DB么?確認(rèn)DB端正常么?看過壓測客戶端么?確認(rèn)壓測端正常么? 我個人意見:不要老憑經(jīng)驗,一有重復(fù)癥狀就思維定式;一定要堅持先從全局看問題,隔離到是應(yīng)用層面、DB層面抑或是壓測客戶端層面后再進(jìn)一步深入定位問 題。
2、技能深度。在性能測試工具方面有自己獨特的理解;同時也應(yīng)該在操作系統(tǒng)、數(shù)據(jù)庫、應(yīng)用程序等方向的配置管理與調(diào)優(yōu)方向上非常的熟悉。
3、敏感。這個一方面是天賦,一方面是經(jīng)驗積累吧, 很多隱蔽的性能問題確實是需要豐富的經(jīng)驗才能發(fā)現(xiàn),極容易漏掉:)
4、興趣。其實這條才是最重要的^-^
如果說具體些通俗些,我眼里主站真正的性能工程師是這樣的:
1、熟悉Java(包括JVM內(nèi)在機(jī)理)/c/c++。理由很簡單,主站大部分的外圍應(yīng)用和中間件都是JAVA寫的,底層核心系統(tǒng)是c/c++寫的。
2、精通linux管理和shell編程。理由更簡單,我一直覺得,shell熟練與否非常大程度決定了一個工程師的工作效率。
3、對數(shù)據(jù)庫管理和性能優(yōu)化有自己的實踐和心得(數(shù)據(jù)庫永遠(yuǎn)是個性能要點)
4、精通某一個性能測試工具。不止是使用,更包括原理,如何改造擴(kuò)展。
5、熟悉linux kernel的實現(xiàn)(比如內(nèi)存管理、文件系統(tǒng)、系統(tǒng)調(diào)用… )。這條感觸在最近兩個月特別深,可能是受到褚霸、子團(tuán)等大俠們的影響吧,如果不熟悉kernel,確實很難在底層系統(tǒng)的性能測試上有所真正建樹。其實這塊也算是整個質(zhì)量保證部的技術(shù)短板吧,現(xiàn)在淘寶的linux內(nèi)核組都是自測+他人review的形式,如果。。。^-^
6、了解常見硬件,特別是存儲相關(guān)。這塊主要是受國外Percona公司的Peter和Vadim影響,他們能成為世界公認(rèn)的mysql性能專家,他們熟悉mysql源碼當(dāng)然很重要,但也與他們那非常淵博的底層硬件知識是分不開的。
當(dāng)然以上都是我個人意見,從我自己的角度出發(fā)看的問題。其實性能測試還有很多領(lǐng)域,比如前端性能測試這塊,我是小白,就不發(fā)表任何相關(guān)意見了^-^ 但說到底,做性能這塊關(guān)鍵一是經(jīng)驗積累二是掌握相關(guān)底層技術(shù)
至今還記得百淘65期讓我最為難忘的細(xì)節(jié),達(dá)人青云在分享他的牛P經(jīng)歷時總結(jié)到的:
● 結(jié)合優(yōu)勢,做別人做不了的
● 發(fā)現(xiàn)問題,做別人沒做過的
● 主動出擊,做別人不愛做的
希望自己能一直銘記這三句話,有天能成為一個真正的性能工程師
posted on 2011-10-14 16:18 順其自然EVO 閱讀(157) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄