qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          我怎么做性能測試

          今天和同事交流關(guān)于性能測試的東西,以前也做過性能測試,突然想寫點自己關(guān)于如何做性能測試的認(rèn)識。
            基于B/S架構(gòu)的系統(tǒng),利用loadrunner做性能測試,利用nmon監(jiān)控系統(tǒng)資源(用linux自帶的top,vmstat等命令也可以,寫一些簡單的shell腳本就行了)。
            那么到底該怎么去做性能測試呢?
            1、首先要了解被測系統(tǒng)的結(jié)構(gòu)和有關(guān)知識的儲備。
            了解了被測系統(tǒng),在后期性能出現(xiàn)異常的時候,定位就相對容易一些;而且知道在測試的過程中需要監(jiān)控什么。
            一個簡單B\S系統(tǒng)結(jié)構(gòu)圖:
            該系統(tǒng)有一下及部分組成:
            APP:一臺nginx,兼做web和應(yīng)用服務(wù)器
            Memcached:負(fù)責(zé)做數(shù)據(jù)緩存
            lucene:負(fù)責(zé)做搜索
            RabbitMQ:負(fù)責(zé)某些業(yè)務(wù)的隊列處理
            mysql:數(shù)據(jù)庫服務(wù)器,一個主庫,一個從庫
            從以上系統(tǒng)結(jié)構(gòu)來看,要搭建和維護性能測試環(huán)境,需要的一些必要的知識。
            對于APP:需要了解nginx的相關(guān)知識,怎么修改配置,在哪里看日志
            對于Memcached:怎么搭建Memcached,怎么查看命中率,Memcached的作用是什么
            lucene:這個lucene是干什么用的,要怎么配置
            RabbitMQ:MQ要如何配置,都那些業(yè)務(wù)用到了MQ。
            Mysql:如何配置主從,為什么要配置主從,主從如何同步等等
            在搭建環(huán)境的過程中肯定會遇到這樣或那樣的問題,要自己找資料,或者相關(guān)的開發(fā)人員一起解決,并注意做筆記,防止以后同樣的問題再出現(xiàn)。
            2、了解了系統(tǒng)結(jié)構(gòu),開始搭建測試環(huán)境,并準(zhǔn)備數(shù)據(jù)。
            測試環(huán)境盡量要和生產(chǎn)環(huán)境的結(jié)構(gòu)保持一致,還有配置文件等也要保持一致,這樣能保證性能測試的結(jié)果更加真實和接近生產(chǎn)環(huán)境。
            數(shù)據(jù)準(zhǔn)備一定要充足,而且數(shù)據(jù)量要大于等于生產(chǎn)環(huán)境,這樣能更真實的模擬生產(chǎn)環(huán)境。比如對一個select語句而言,10W的數(shù)據(jù),和1000W的數(shù)據(jù),查詢時間肯定有差別。如果數(shù)據(jù)量太小就不能反映真實情況下性能了。(可以把線上的數(shù)據(jù)導(dǎo)入到測試環(huán)境,但是要注意把用戶比較隱私的數(shù)據(jù)都替換掉)
            如果有可能的話,測試環(huán)境的數(shù)據(jù)要比生產(chǎn)環(huán)境多出20%,做一些性能上邊的冗余,防止發(fā)生突然的性能尖峰
           3、了解需求,找出測試點
            和產(chǎn)品、技術(shù)溝通需要做性能測試的業(yè)務(wù);并了解相應(yīng)的業(yè)務(wù)的性能指標(biāo),如頁面的響應(yīng)時間,TPS(事物處理)或者系統(tǒng)期望能承受多少并發(fā)等。
            4、設(shè)計性能能測試用例
            根據(jù)業(yè)務(wù)編寫相應(yīng)的性能測試用例。
            功能
            在線用戶達到高峰時,用戶可以正常發(fā)帖,保證200個以內(nèi)用戶可以同時發(fā)表帖子。
            目的
            測試系統(tǒng)200個以內(nèi)的用戶同時在線發(fā)帖。
            方法
            采用LoadRunner的錄制工具錄制一個郵件發(fā)送過程,然后對腳本進行優(yōu)化,加上事物點,檢查點等。過程中監(jiān)視B端的響應(yīng),還有網(wǎng)絡(luò)傳輸,web服務(wù)和數(shù)據(jù)庫服務(wù)器的性能,并觀察服務(wù)器相應(yīng)服務(wù)的日志,檢查MQ的狀態(tài),memcached服務(wù)器的狀態(tài)和性能
            預(yù)期結(jié)果
            符合業(yè)務(wù)的預(yù)期,日志木有異常等(不詳細列舉)
            5、編寫并優(yōu)化腳本
            根據(jù)測試用例錄制發(fā)帖的腳本,加入事物點、檢查點、參數(shù)化,并回放,確保腳本沒有問題,可以正常運行。
            6、設(shè)計性能測試場景
            設(shè)置一個漸進的場景10-30-60-100-150-200,這么做的目的防止一下子上去就是200個并發(fā),出了問題,不知道系統(tǒng)最佳的并發(fā)是多少。
            (上邊的漸進場景不一定合理,只做示意)
            7、啟動監(jiān)控,并開始跑性能測試場景
            設(shè)置場景完畢后,開始在服務(wù)器端啟動監(jiān)控,然后開始啟動場景。
            8、監(jiān)控場景執(zhí)行,監(jiān)控服務(wù)器的資源
            loadrunner可以搜集一些性能測試數(shù)據(jù),事物的pass數(shù),fail數(shù),error數(shù),都要做統(tǒng)計。
            監(jiān)控服務(wù)器的資源,可以利用nmon,也可以是用linux自帶的命令top,vmstat等。
            也要監(jiān)控服務(wù)器的日志輸出,看是否有異常出現(xiàn)。例如:查看mysql的慢日志,nginx的日志等。
            9、搜集結(jié)果數(shù)據(jù),分析探討
            最后對性能測試搜集的數(shù)據(jù)進行分析,找出性能測試的拐點。
            10、對系統(tǒng)進行優(yōu)化,并重復(fù)7-9步,直至測試結(jié)束
            PS:性能測試不是一個人的事情,中間設(shè)計了,開發(fā),產(chǎn)品,運維,QA,DBA,要大家共同協(xié)作,才能做好性能測試。
            限于水平有限,用疏漏之處,多多包涵。

          posted on 2014-06-30 18:45 順其自然EVO 閱讀(781) 評論(0)  編輯  收藏 所屬分類: loadrunner

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鄂尔多斯市| 墨竹工卡县| 临城县| 道真| 诸暨市| 宁蒗| 色达县| 根河市| 德格县| 札达县| 交口县| 石首市| 茂名市| 元阳县| 玛沁县| 湟中县| 同德县| 肃北| 久治县| 房产| 乐都县| 周至县| 花垣县| 亳州市| 巴彦淖尔市| 台中县| 鄄城县| 农安县| 盐源县| 怀远县| 攀枝花市| 成都市| 东丽区| 文昌市| 时尚| 柏乡县| 丹阳市| 奉新县| 平塘县| 轮台县| 皮山县|