qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          軟件性能的生命周期

            影響軟件性能的要素有很多,在需求階段就應(yīng)該對(duì)軟件性能進(jìn)行分析,在設(shè)計(jì)階段要充分考慮軟件架構(gòu)設(shè)計(jì)對(duì)性能的影響,在測(cè)試階段要充分驗(yàn)證軟件的性能表現(xiàn)是否滿足需求。

            一、需求階段的性能分析

            從業(yè)務(wù)角度分析,如果一個(gè)系統(tǒng)上線后使用人數(shù)比較多,而且后期數(shù)據(jù)量比較大(如電信、金融證券等對(duì)外開(kāi)放的系統(tǒng)),就有必要做好性能測(cè)試,因?yàn)檫@些系統(tǒng)對(duì)于實(shí)時(shí)性交互要求比較高,對(duì)系統(tǒng)的響應(yīng)時(shí)間、并發(fā)用戶數(shù)等要求都比較高,并且從數(shù)據(jù)角度分析,系統(tǒng)上線幾年后存量數(shù)據(jù)一般都是千萬(wàn)級(jí)數(shù)據(jù)量,因此前期性能設(shè)計(jì)與驗(yàn)證對(duì)業(yè)務(wù)系統(tǒng)的后期正常運(yùn)行維護(hù)至關(guān)重要。

            在軟件開(kāi)發(fā)前期的需求分析階段,需求分析師與客戶業(yè)務(wù)人員溝通時(shí),要明確提出各項(xiàng)性能指標(biāo),包括系統(tǒng)業(yè)務(wù)交易的使用頻度、系統(tǒng)并發(fā)用戶量、業(yè)務(wù)數(shù)據(jù)量評(píng)估等各項(xiàng)指標(biāo)。然后對(duì)系統(tǒng)的響應(yīng)時(shí)間、用戶數(shù)和資源使用進(jìn)行分析。

            1、響應(yīng)時(shí)間分析

            響應(yīng)時(shí)間的需求調(diào)研分析,例如查詢類的交易需要在多少秒之內(nèi)響應(yīng),對(duì)于URL連接或者刷新整個(gè)網(wǎng)頁(yè)的時(shí)間,它是一個(gè)非常重要的度量值,因?yàn)樗侵苯芋w現(xiàn)用戶體驗(yàn)的一個(gè)指數(shù)。

            它同時(shí)也是最不容易測(cè)量的度量值,因?yàn)樗绕渌亩攘恐蹈菀装l(fā)生變化。我們需要了解響應(yīng)時(shí)間的區(qū)域分布。例如:一般月底是發(fā)工資的時(shí)候,查詢當(dāng)前賬戶額度是用戶這段時(shí)間最常用的功能,這段時(shí)間的系統(tǒng)響應(yīng)時(shí)間估計(jì)比平常響應(yīng)時(shí)間慢些,而對(duì)于電信之類的報(bào)表查詢,省內(nèi)公司查詢當(dāng)月本省各個(gè)分公司、分點(diǎn)的銷售額情況,總公司查詢?nèi)珖?guó)各省的總銷售額情況,這時(shí)數(shù)量級(jí)別相差甚大,查詢時(shí)響應(yīng)時(shí)間也相對(duì)比較慢。這些情況對(duì)于指導(dǎo)服務(wù)器分布、負(fù)載均衡、數(shù)據(jù)庫(kù)的設(shè)計(jì)都非常重要。

            2、用戶數(shù)分析

            用戶數(shù)分析,主要分析評(píng)估系統(tǒng)上線后的總用戶數(shù)、平均每天在線用戶數(shù)等情況,具體可分析:哪些交易每天都有用戶在執(zhí)行業(yè)務(wù)交易,這些用戶一般占系統(tǒng)總?cè)藬?shù)的比例是多少;哪些交易會(huì)在月底、季末或者年底高頻率并發(fā)使用;哪些交易用戶使用得比較少,但卻是相關(guān)重要人物(如上級(jí)領(lǐng)導(dǎo))重點(diǎn)關(guān)注的交易。這些用戶數(shù)分析結(jié)果,可為后續(xù)的性能測(cè)試設(shè)計(jì)中,針對(duì)混合場(chǎng)景的用戶數(shù)配比設(shè)計(jì)提供有力的參考依據(jù)。

            3、資源使用分析

            資源使用分析用于衡量系統(tǒng)資源使用率的情況,反映系統(tǒng)的最底層性能情況,對(duì)于容量規(guī)劃比較有指導(dǎo)作用,同時(shí)它也是比較容易理解的性能度量值。

            二、設(shè)計(jì)開(kāi)發(fā)階段的性能分析與驗(yàn)證

            大部分項(xiàng)目的性能問(wèn)題是設(shè)計(jì)出來(lái)的,而不是開(kāi)發(fā)和測(cè)試出來(lái)的。要獲得性能良好的軟件系統(tǒng),需要根據(jù)需求分析及設(shè)計(jì)規(guī)劃,進(jìn)行系統(tǒng)的規(guī)模分析和完整的性能分析,預(yù)估性能瓶頸點(diǎn),提出解決方案,最后通過(guò)架構(gòu)師、程序設(shè)計(jì)人員等角色進(jìn)行評(píng)審驗(yàn)證并確認(rèn),保障性能目標(biāo)的達(dá)成。

            在代碼開(kāi)發(fā)階段,需要根據(jù)設(shè)計(jì)方案,在開(kāi)發(fā)過(guò)程中關(guān)注性能瓶頸點(diǎn),進(jìn)行相應(yīng)的白盒測(cè)試,通過(guò)代碼分析和評(píng)審等手段,確認(rèn)性能瓶頸并解決。需要不斷地分析和總結(jié)性能問(wèn)題和解決方案,形成性能方面的代碼編寫規(guī)范,從而在研發(fā)階段的早期就能確保把軟件系統(tǒng)在性能方面的風(fēng)險(xiǎn)降到最低。

            系統(tǒng)設(shè)計(jì)與代碼實(shí)現(xiàn)的很多細(xì)節(jié)都會(huì)對(duì)軟件系統(tǒng)性能起到關(guān)鍵的作用。例如,在數(shù)據(jù)查詢界面設(shè)計(jì)時(shí),需要考慮查詢方式是模糊查詢還是精確查詢、如何設(shè)計(jì)查詢分頁(yè)展現(xiàn)、對(duì)象的創(chuàng)建以及釋放問(wèn)題等。

            在采用具體實(shí)現(xiàn)技術(shù)時(shí),也需要注意性能細(xì)節(jié),例如 Hibernate 中對(duì)大數(shù)據(jù)量查詢時(shí),需慎用 list() 或者 iterator() 遍歷返回查詢結(jié)果。

            在采用Java等托管語(yǔ)言開(kāi)發(fā)軟件系統(tǒng)時(shí),需要注意對(duì)象的生成和對(duì)象大小問(wèn)題,否則容易導(dǎo)致產(chǎn)生大量對(duì)象實(shí)例,系統(tǒng)不僅要花時(shí)間生成對(duì)象,還可能要花時(shí)間對(duì)這些對(duì)象進(jìn)行垃圾回收和處理,生成過(guò)多的對(duì)象將會(huì)對(duì)程序的性能帶來(lái)很大的影響。

            在數(shù)據(jù)庫(kù)設(shè)計(jì)上也有很多細(xì)節(jié)會(huì)對(duì)后期系統(tǒng)性能表現(xiàn)有決定性的影響,例如:對(duì)歷史查詢是否分區(qū)、如何分區(qū)性能更好;如何設(shè)計(jì)批量數(shù)據(jù)抽取轉(zhuǎn)換的方式,以保證減少或消除等待;如何設(shè)計(jì)索引,減少全表掃描、提高SQL查詢效率;編寫良好的SQL語(yǔ)句以便提高重用率、減少數(shù)據(jù)庫(kù)解析。

            三、統(tǒng)測(cè)試階段的性能驗(yàn)證與優(yōu)化

            性能問(wèn)題越早發(fā)現(xiàn)、修改,越能保證系統(tǒng)上線后的穩(wěn)定性,因此應(yīng)該在軟件生命周期的不同階段進(jìn)行軟件性能測(cè)試。

            性能測(cè)試大致可以分為單元性能測(cè)試、集成性能測(cè)試、系統(tǒng)性能測(cè)試、多套系統(tǒng)互聯(lián)接口性能測(cè)試等。其中,對(duì)一套系統(tǒng)進(jìn)行的系統(tǒng)性能測(cè)試,也就是在特定的環(huán)境下、一定量的數(shù)據(jù)情況下,進(jìn)行的系統(tǒng)級(jí)的性能測(cè)試,是最常用的,也是最為測(cè)試人員所熟悉的一種性能測(cè)試。

            系統(tǒng)性能測(cè)試階段的一般測(cè)試過(guò)程如下:在系統(tǒng)功能被確認(rèn)后,模擬真實(shí)生產(chǎn)環(huán)境進(jìn)行軟件系統(tǒng)的部署(包括硬件設(shè)備、操作系統(tǒng)、網(wǎng)絡(luò)搭建、負(fù)載均衡部署、中間件部署、數(shù)據(jù)庫(kù)部署等),然后再根據(jù)前期的性能測(cè)試需求分析結(jié)果及測(cè)試策略定義的方法,模擬一定量的虛擬并發(fā)用戶數(shù),進(jìn)行壓力測(cè)試,同時(shí)監(jiān)控分析系統(tǒng)是否滿足預(yù)期的性能指標(biāo),識(shí)別性能可能出現(xiàn)的瓶頸點(diǎn)(應(yīng)用代碼、網(wǎng)絡(luò)設(shè)備、硬件設(shè)備、操作系統(tǒng)、中間件配置、數(shù)據(jù)庫(kù)等),并進(jìn)行性能優(yōu)化處理,調(diào)優(yōu)后再進(jìn)行復(fù)測(cè),確保軟件系統(tǒng)最終達(dá)到性能要求。

          posted on 2012-06-26 09:49 順其自然EVO 閱讀(322) 評(píng)論(0)  編輯  收藏 所屬分類: 性能測(cè)試

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 象州县| 封开县| 广东省| 山西省| 漳州市| 天镇县| 岳池县| 依兰县| 雅安市| 灵台县| 集贤县| 广饶县| 西盟| 和龙市| 斗六市| 阿拉善左旗| 临洮县| 苍南县| 东山县| 闻喜县| 河津市| 河北省| 泰顺县| 安吉县| 哈密市| 通道| 皋兰县| 崇文区| 台湾省| 淅川县| 唐山市| 水城县| 荔波县| 无棣县| 清河县| 南平市| 绥德县| 夏河县| 土默特左旗| 贞丰县| 来安县|