上篇回顧:聽說軟件測試猛拴,錢多活少離家近
軟件測試火的一塌糊涂的時候,大家心里估計在顫抖霞捡。不就是點點系統(tǒng)嘛坐漏,能有什么大出息,軟件測試做幾年以后大家水平都差不多碧信,如何才能不被快速取代赊琳,去做性能測試呀。
測試做久了就會知道砰碴,性能測試是測試人員的終極夢想躏筏,這是為什么呢?工資高呀呈枉。我有朋友做了3年功能測試趁尼,感覺太機械,然后報培訓(xùn)班學(xué)習(xí)性能測試猖辫,目前從事性能測試工作酥泞。
萬事開頭難,我從想做性能測試到現(xiàn)在5個年頭過去了啃憎,現(xiàn)在把做性能測試過程中的迷茫芝囤、堅持、到后來的被認可寫下來荧飞,紀念下那年的加班歲月凡人。
我一直認為自己很幸運,在校期間就找了份實習(xí)工作叹阔,做金融方面的測試挠轴。銀行系統(tǒng)涉及到錢,所以從公司到銀行很重視測試耳幢。當(dāng)然了現(xiàn)在互聯(lián)網(wǎng)時代岸晦,性能測試就更重要了。
大三暑期實習(xí)時做了軟件測試睛藻,培訓(xùn)老師說軟件測試分為功能測試和性能測試启上,最牛逼的是做性能測試,那簡直是受萬人敬仰店印。
剛好學(xué)校開始選畢設(shè)課題冈在,看到了loadrunner性能測試題目,帶著想成為行業(yè)的大拿按摘,受到膜拜的幻想包券,于是乎選擇了這個課題纫谅,仿佛看到了未來做性能測試的樣子。
由于在學(xué)校老師沒教過這個溅固,所以得自學(xué)付秕,就連loadrunner工具也得自己在網(wǎng)上下載,loadrunner是大型商業(yè)軟件侍郭,小公司用的大都是開源工具询吴,公司做銀行系統(tǒng),所以性能測試是重中之重亮元,正好有此軟件猛计。
第一次聽培訓(xùn)老師講性能,特別認真的帶著本和筆坐第一排聽苹粟。培訓(xùn)老師在公司待10多年了有滑,講的很好跃闹∏断鳎“80%的交易是20%的時間完成的、tps望艺、tps拐點苛秕、腳本、并發(fā)用戶數(shù)找默、最大并發(fā)用戶數(shù)艇劫、單交易場景、混合交易場景等”聽的云里霧里惩激。
實習(xí)時在公司培訓(xùn)班待了一周店煞,做了個小型銀行系統(tǒng),大概只有賬戶查詢风钻、開戶顷蟀、存款貸款等小模塊。系統(tǒng)用于是乎我就在電腦里安裝了這個系統(tǒng)做性能測試骡技。
公司有配置庫鸣个,文檔包括各種類型,恰好有性能測試文檔布朦。由于公司有2人做性能測試囤萤,常年在客戶現(xiàn)場出差,所以一切都得自學(xué)是趴,帶我畢設(shè)的老師也是沒做過這方面的工作涛舍。
度娘里找答案,清一色全是loadrunner的工具使用唆途,如何設(shè)置參數(shù)富雅、如何錄制腳本缤削、腳本參數(shù)化等。到了這步就木有下文了吹榴,寶寶心里苦亭敢。
我最想看到的是錄制腳本后腳本運行成功(數(shù)據(jù)庫里有條成功數(shù)據(jù))、如何設(shè)置場景图筹、如何獲取有用的數(shù)據(jù)帅刀、以及如何測出瓶頸、以及如何解決瓶頸远剩、最后出份漂亮的性能測試報告扣溺。心理想著等我哪天做完性能測試一定和大家分享有用的知識。
現(xiàn)在回想起來瓜晤,當(dāng)初真是太可憐了锥余,錄制腳本后,回放錄制的視頻痢掠,界面一直顯示登錄超時驱犹,登陸腳本都無法登錄系統(tǒng),更別提之后的測試腳本了足画。
大四畢設(shè)做的很不好雄驹,沒人指導(dǎo),自己在瞎琢磨淹辞,沒有寫過測試腳本医舆,畢設(shè)答辯內(nèi)容很空洞,勉強通過象缀。
由于一直有做性能測試的心思蔬将,離開了第一家公司。之后找工作時拒絕了二包公司央星、拒絕了單純的界面測試霞怀,找了家功能測試、性能測試都涉及的等曼。然后就一直待這家公司里烦。
我主要做理財項目,涉及功能測試禁谦、接口測試胁黑、壓力測試、穩(wěn)定性測試州泊。
2014年銀行理財忽然賣的很火丧蘸,某城商行,系統(tǒng)承受不了壓力,然后要做壓力測試力喷。我作為項目組唯一的測試員刽漂,這項工作落在我頭上。真是又緊張又興奮弟孟,開心的是可以親手做性能測試了贝咙,緊張的是之前只有點基礎(chǔ)。
就像如開發(fā)人員初次學(xué)習(xí)寫代碼拂募,運行helloworld一樣庭猩,我首先得錄制登錄腳本,只要這個調(diào)通其他的也就迎刃而解陈症。
web系統(tǒng)蔼水,基于web(HTTP/HTML)腳本很快錄好了,可是運行顯示登錄超時录肯,百思不得其解趴腋,領(lǐng)導(dǎo)下命令今晚必須出結(jié)果,怎么辦论咏,打電話求助公司的性能測試部門优炬,他讓我在腳本里做了個關(guān)聯(lián)就可以了。
腳本調(diào)通后潘靖,運行腳本穿剖,查看日志顯示交易成功蚤蔓。保險期間我寫了個select語句查詢流水表卦溢,金額、賬戶都正確秀又,就是剛執(zhí)行腳本后插入的那條數(shù)據(jù)单寂。
終于成功了一把,最終熬到凌晨2點吐辙,設(shè)置了系統(tǒng)運行8小時宣决,回家睡覺去了。第二天查詢數(shù)據(jù)庫昏苏,成功了10萬多條沒有報錯尊沸,簡直好驚喜。
由于知識有限贤惯,第二天買了本性能測試書洼专,那段時間,只要閑下來就會錄制其他交易的腳本孵构,學(xué)習(xí)到了腳本參數(shù)化屁商、關(guān)聯(lián)等。那年別的項目也做性能颈墅,所以我學(xué)習(xí)了web蜡镶、socket雾袱、xml協(xié)議的腳本。
測試腳本
做性能測試第一步就是寫測試腳本官还,一個完美的腳本是成功的一半芹橡。
腳本分為2種模式:錄制、手動編寫望伦。
由于系統(tǒng)是web類型的僻族,所以直接用工具錄制,關(guān)鍵是當(dāng)初也不會寫啊屡谐。
腳本參數(shù)化:
添加事務(wù)
loadrunner11以上版本不添加事務(wù)述么,場景執(zhí)行后tps無值。
關(guān)聯(lián)
關(guān)聯(lián)分為自動關(guān)聯(lián)愕掏、手動關(guān)聯(lián)度秘,適合復(fù)核交易,通過流水號查詢交易饵撑,適用于http協(xié)議剑梳。
測試數(shù)據(jù)參數(shù)化
測試腳本中為了保證流水號的唯一性,添加時間數(shù)字+時間毫秒設(shè)置滑潘。
日志設(shè)置
f4設(shè)置log垢乙,選擇參數(shù)等。
腳本運行后语卤,日志框會顯示交易狀態(tài)追逮,遇到有參數(shù)時寫print語句,日志里可以看到參數(shù)取值是否正確粹舵。
socket腳本模版
xml腳本钮孵,保證發(fā)起報文和接收報文都是明文,接收端如果是密文眼滤,測試時先解密再測試巴席。
發(fā)送報文,報文長度必須正確诅需,接收報文內(nèi)容可以為空漾唉,長度數(shù)字寫大點,確保大于實際的報文長度堰塌。
公司針對測試接口有模擬工具所以可以直接錄制赵刑,也可以寫腳本。首先明白接口用的是什么報文然后再寫腳本蔫仙。
現(xiàn)在給大家一份性能測試報告
1料睛、測試背景
首先確保功能測試覆蓋率達到100%,缺陷通過率大于95%,其次做性能測試恤煞。銀行理財產(chǎn)品有銀行兜底屎勘,所以賣的很火,銀行發(fā)產(chǎn)品后客戶集中在一段時間搶購居扒,導(dǎo)致系統(tǒng)壓力概漱,出現(xiàn)大量失敗的交易,所以為了保證系統(tǒng)長期運行的穩(wěn)定性喜喂,針對典型交易做性能測試瓤摧。
2、測試目標
獲取系統(tǒng)的處理性能指標玉吁,滿足當(dāng)前生產(chǎn)系統(tǒng)及未來3年的業(yè)務(wù)發(fā)展需要照弥。
發(fā)現(xiàn)性能瓶頸,協(xié)助開發(fā)人員進行性能調(diào)優(yōu)进副。
3这揣、測試指標
平均事物響應(yīng)時間ART:
響應(yīng)時間遵循2、5影斑、8s原則给赞,本次測試響應(yīng)時間小于等于8s;
并發(fā)用戶數(shù):
現(xiàn)在高峰日操作人數(shù)500人矫户,20%的并發(fā)量計算片迅,高峰日并發(fā)用戶數(shù)大于等于100
規(guī)劃未來2年高峰操作達到600人,20%的并發(fā)量皆辽,并發(fā)用戶數(shù)大于等于120
規(guī)劃未來三年操作人數(shù)達到700人柑蛇,20%的并發(fā)量,用戶數(shù)大于等于140膳汪。
資源使用指標:
cpu使用率小于等于80%
內(nèi)存使用率小于等于80%
磁盤交換率小于等于80%
tps值:
每秒處理的業(yè)務(wù)筆數(shù)唯蝶,80%的交易在20%的時間完成,每天交易量10萬筆遗嗽,一天8小時
tps=80%*100000/(8*3600*20%)=13.89
并發(fā)交易成功率:大于等于95%
4、選取典型交易
性能測試主要針對交易量大的交易鼓蜒,如購買痹换、贖回、份額查詢都弹。
5娇豫、測試工具
loadrunner8.1
nmon監(jiān)測資源使用率,磁盤畅厢、cpu冯痢、內(nèi)存等。
6、測試類型
基準測試
單交易單用戶測試浦楣,典型交易在無壓力情況下獲取單筆交易處理的耗時袖肥,為之后的并發(fā)測試提供一個數(shù)據(jù)參考,一個用戶跑5分鐘振劳。
驗證測試腳本及測試參數(shù)的正確性椎组。
獲取單筆交易的性能數(shù)據(jù),主要是單筆交易平均響應(yīng)時間历恐、TPS寸癌。
并發(fā)測試
主要分為:單交易多用戶測試和混合交易多用戶測試,由于最后要跑穩(wěn)定性弱贼,本次只做單交易多用戶測試蒸苇。
每個典型交易通過單交易多用戶迭代執(zhí)行,獲取性能指標吮旅,比如TPS填渠、ART、系統(tǒng)資源使用情況鸟辅,根據(jù)需要進行性能調(diào)優(yōu)氛什。
tps出現(xiàn)拐點時,繼續(xù)測2組數(shù)據(jù)匪凉,如果這2組數(shù)據(jù)tps明顯下降枪眉,此時就測出了最大并發(fā)用戶數(shù)。
備注:交易數(shù)據(jù)庫有當(dāng)前流水表和歷史流水表再层,所以每次跑場景前刪除當(dāng)前流水表的數(shù)據(jù)贸铜。
穩(wěn)定性測試
多交易多用戶的并發(fā)混合模式,對被測系統(tǒng)進行長時間的穩(wěn)定測試聂受,獲取持續(xù)加壓下的性能指標蒿秦。考察是否會出現(xiàn)宕機蛋济、響應(yīng)時間變長棍鳖、交易成功率下降、資源使用率達99%的情況碗旅。
選取單交易并發(fā)時的最大用戶并發(fā)數(shù)取中間值跑穩(wěn)定性渡处。
7、測試總結(jié)
目前我遇到的瓶頸和解決方式
1祟辟、磁盤交換率達到99%医瘫;
2、內(nèi)存使用率5%左右旧困;加大系統(tǒng)進程數(shù)并增加并發(fā)用戶數(shù)醇份。
3稼锅、內(nèi)存使用率高達99%;經(jīng)查看系統(tǒng)實時刷日志僚纷,原因是某個可有可無的參數(shù)沒配置矩距。
4、單交易sql執(zhí)行時間2s畔濒;增加索引剩晴。
5、單交易執(zhí)行時間過長侵状;每次sum金額時赞弥,交易太多,執(zhí)行時間過長趣兄,增加一張表每做一條交易sum一次绽左,分擔(dān)了壓力。
6艇潭、tps值明顯在某個時間點降低拼窥,經(jīng)查詢當(dāng)前流水表數(shù)據(jù)大于100萬條;這個目前無解得對數(shù)據(jù)庫進行調(diào)優(yōu)蹋凝。
實踐出真知鲁纠,知識有限,就分享這么多了鳍寂,寫這篇文章已經(jīng)用盡了我的荒洪之力改含。