qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          我怎么做性能測試

           今天和同事交流關于性能測試的東西,以前也做過性能測試,突然想寫點自己關于如何做性能測試的認識。
            基于B/S架構的系統,利用loadrunner做性能測試,利用nmon監控系統資源(用linux自帶的top,vmstat等命令也可以,寫一些簡單的shell腳本就行了)。
            那么到底該怎么去做性能測試呢?
            1、首先要了解被測系統的結構和有關知識的儲備。
            了解了被測系統,在后期性能出現異常的時候,定位就相對容易一些;而且知道在測試的過程中需要監控什么。
            一個簡單B\S系統結構圖:
            該系統有一下及部分組成:
            APP:一臺nginx,兼做web和應用服務器
            Memcached:負責做數據緩存
            lucene:負責做搜索
            RabbitMQ:負責某些業務的隊列處理
            mysql:數據庫服務器,一個主庫,一個從庫
            從以上系統結構來看,要搭建和維護性能測試環境,需要的一些必要的知識。
            對于APP:需要了解nginx的相關知識,怎么修改配置,在哪里看日志
            對于Memcached:怎么搭建Memcached,怎么查看命中率,Memcached的作用是什么
            lucene:這個lucene是干什么用的,要怎么配置
            RabbitMQ:MQ要如何配置,都那些業務用到了MQ。
            Mysql:如何配置主從,為什么要配置主從,主從如何同步等等
            在搭建環境的過程中肯定會遇到這樣或那樣的問題,要自己找資料,或者相關的開發人員一起解決,并注意做筆記,防止以后同樣的問題再出現。
            2、了解了系統結構,開始搭建測試環境,并準備數據。
            測試環境盡量要和生產環境的結構保持一致,還有配置文件等也要保持一致,這樣能保證性能測試的結果更加真實和接近生產環境。
            數據準備一定要充足,而且數據量要大于等于生產環境,這樣能更真實的模擬生產環境。比如對一個select語句而言,10W的數據,和1000W的數據,查詢時間肯定有差別。如果數據量太小就不能反映真實情況下性能了。(可以把線上的數據導入到測試環境,但是要注意把用戶比較隱私的數據都替換掉)
            如果有可能的話,測試環境的數據要比生產環境多出20%,做一些性能上邊的冗余,防止發生突然的性能尖峰。

           3、了解需求,找出測試點
            和產品、技術溝通需要做性能測試的業務;并了解相應的業務的性能指標,如頁面的響應時間,TPS(事物處理)或者系統期望能承受多少并發等。
            4、設計性能能測試用例
            根據業務編寫相應的性能測試用例。
            功能
            在線用戶達到高峰時,用戶可以正常發帖,保證200個以內用戶可以同時發表帖子。
            目的
            測試系統200個以內的用戶同時在線發帖。
            方法
            采用LoadRunner的錄制工具錄制一個郵件發送過程,然后對腳本進行優化,加上事物點,檢查點等。過程中監視B端的響應,還有網絡傳輸,web服務和數據庫服務器的性能,并觀察服務器相應服務的日志,檢查MQ的狀態,memcached服務器的狀態和性能
            預期結果
            符合業務的預期,日志木有異常等(不詳細列舉)
            5、編寫并優化腳本
            根據測試用例錄制發帖的腳本,加入事物點、檢查點、參數化,并回放,確保腳本沒有問題,可以正常運行。
            6、設計性能測試場景
            設置一個漸進的場景10-30-60-100-150-200,這么做的目的防止一下子上去就是200個并發,出了問題,不知道系統最佳的并發是多少。
            (上邊的漸進場景不一定合理,只做示意)
            7、啟動監控,并開始跑性能測試場景
            設置場景完畢后,開始在服務器端啟動監控,然后開始啟動場景。
            8、監控場景執行,監控服務器的資源
            loadrunner可以搜集一些性能測試數據,事物的pass數,fail數,error數,都要做統計。
            監控服務器的資源,可以利用nmon,也可以是用linux自帶的命令top,vmstat等。
            也要監控服務器的日志輸出,看是否有異常出現。例如:查看mysql的慢日志,nginx的日志等。
            9、搜集結果數據,分析探討
            最后對性能測試搜集的數據進行分析,找出性能測試的拐點。
            10、對系統進行優化,并重復7-9步,直至測試結束
            PS:性能測試不是一個人的事情,中間設計了,開發,產品,運維,QA,DBA,要大家共同協作,才能做好性能測試。
            限于水平有限,用疏漏之處,多多包涵。

          posted on 2014-06-25 11:25 順其自然EVO 閱讀(218) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 二连浩特市| 忻州市| 西安市| 木兰县| 舟山市| 余庆县| 原平市| 册亨县| 玉树县| 静乐县| 寿宁县| 诏安县| 阳新县| 嘉祥县| 河南省| 宁波市| 将乐县| 吕梁市| 策勒县| 左贡县| 清远市| 青州市| 新疆| 合阳县| 新化县| 巴林左旗| 深州市| 合江县| 大同市| 禹州市| 崇信县| 静安区| 嘉黎县| 霍林郭勒市| 宽城| 桦甸市| 南昌县| 临清市| 靖边县| 临泽县| 西乌|