<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    轉(zhuǎn)載自:http://blog.chinaunix.net/uid-20682147-id-76384.html

    性能測試是 Web 應(yīng)用系統(tǒng)的一項(xiàng)重要質(zhì)量保證措施。在現(xiàn)實(shí)中,很多 Web 性能測試項(xiàng)目由于性能測試需求定義不合理或不明確,導(dǎo)致性能測試項(xiàng)目不能達(dá)到預(yù)期目標(biāo)或進(jìn)度超期。本文針對(duì) Web 應(yīng)用系統(tǒng)的技術(shù)架構(gòu)和系統(tǒng)使用特點(diǎn),探討如何有效實(shí)施性能測試過程,并重點(diǎn)介紹如何分析獲得合理的性能測試需求,最終對(duì) Web 應(yīng)用系統(tǒng)性能進(jìn)行科學(xué)、準(zhǔn)確的評(píng)估。

    1 引言

    基于Web服務(wù)器的應(yīng)用系統(tǒng)由于提供瀏覽器界面而無須安裝,大大降低了系統(tǒng)部署和升級(jí)成本,得以普遍應(yīng)用。目前,很多企業(yè)的核心業(yè)務(wù)系統(tǒng)均是Web應(yīng)用,但當(dāng)Web應(yīng)用的數(shù)據(jù)量和訪問用戶量日益增加,系統(tǒng)不得不面臨性能和可靠性方面的挑戰(zhàn)。因此,無論是Web應(yīng)用系統(tǒng)的開發(fā)商或最終用戶,都要求在上線前對(duì)系統(tǒng)進(jìn)行性能,科學(xué)評(píng)價(jià)系統(tǒng)的性能,從而降低系統(tǒng)上線后的性能風(fēng)險(xiǎn)。

    在很多性能測試項(xiàng)目中,由于不能合理定義系統(tǒng)的性能測試需求,不能建立和真實(shí)環(huán)境相符的負(fù)載模型,不能科學(xué)分析性能測試結(jié)果,導(dǎo)致性能測試項(xiàng)目持續(xù)時(shí)間很長或不能真正評(píng)價(jià)系統(tǒng)性能并提出性能改進(jìn)措施。

    本文在總結(jié)許多Web應(yīng)用系統(tǒng)性能測試實(shí)踐經(jīng)驗(yàn)和教訓(xùn)的基礎(chǔ)上,從與性能測試工具無關(guān)的角度介紹Web應(yīng)用系統(tǒng)性能測試的方法和實(shí)施過程,以及如何定義合理的性能測試需求。

    1.1 術(shù)語定義

    性能測試:通過模擬大量瀏覽器客戶端同時(shí)訪問Web服務(wù)器,獲得系統(tǒng)的性能數(shù)據(jù)。

    虛擬用戶:模擬瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求并接收響應(yīng)的一個(gè)進(jìn)程或線程。

    響應(yīng)時(shí)間:瀏覽器向Web服務(wù)器提交一個(gè)請(qǐng)求到收到響應(yīng)之間的間隔時(shí)間。

    思考時(shí)間:瀏覽器在收到響應(yīng)后到提交下一個(gè)請(qǐng)求之間的間隔時(shí)間。

    請(qǐng)求成功率:Web服務(wù)器正確處理的請(qǐng)求數(shù)量和接收到的請(qǐng)求數(shù)量的比。

    吞吐量:單位時(shí)間內(nèi)Web服務(wù)器成功處理的HTTP頁面或HTTP請(qǐng)求數(shù)量。

    在線用戶:用戶通過瀏覽器訪問登錄Web應(yīng)用系統(tǒng)后,并不退出該應(yīng)用系統(tǒng)。通常一個(gè)Web應(yīng)用服務(wù)器的在線用戶對(duì)應(yīng)Web應(yīng)用服務(wù)器的一個(gè)Session。

    并發(fā)用戶數(shù):Web服務(wù)器在一段時(shí)間內(nèi)為處理瀏覽器請(qǐng)求而建立的HTTP連接數(shù)或生成的處理線程數(shù)。當(dāng)所有在線用戶發(fā)送HTTP請(qǐng)求的思考時(shí)間為零時(shí),Web服務(wù)器的并發(fā)用戶數(shù)等于在線用戶數(shù)。

    1.2 Web應(yīng)用系統(tǒng)技術(shù)架構(gòu)

    Web應(yīng)用系統(tǒng)的前端為瀏覽器,后臺(tái)為Web服務(wù)器(如Apache,Microsoft Internet Information Server),瀏覽器和Web服務(wù)器之間的交互基于HTTP協(xié)議。HTTP協(xié)議本身是無連接的,Web服務(wù)器通過Session機(jī)制來建立一個(gè)瀏覽器所發(fā)出的先后連接之間的關(guān)聯(lián)。通過實(shí)驗(yàn)證明,當(dāng)瀏覽器客戶端在首次訪問Web服務(wù)器后,如果該瀏覽器客戶端不發(fā)送后續(xù)請(qǐng)求,服務(wù)器維持該瀏覽器客戶端的Session變量所消耗的系統(tǒng)資源非常小。

    2 Web應(yīng)用系統(tǒng)性能測試過程

    標(biāo)準(zhǔn)的Web應(yīng)用系統(tǒng)性能測試過程包括確定性能測試需求,開發(fā)性能測試腳本,定義性能測試負(fù)載模型,執(zhí)行性能測試和形成性能測試報(bào)告。本章將分別介紹上述過程,并通過舉例說明如何完成每一環(huán)節(jié)。

    2.1 確定性能測試需求

    科學(xué)定義Web應(yīng)用系統(tǒng)性能測試需求對(duì)一個(gè)成功的性能測試非常重要。通常,Web應(yīng)用系統(tǒng)的性能測試需求有如下兩種描述方法。

    2.1.1 基于在線用戶的性能測試需求

    該需求描述方法主要基于Web應(yīng)用系統(tǒng)的在線用戶和響應(yīng)時(shí)間來度量系統(tǒng)性能。當(dāng)Web應(yīng)用系統(tǒng)在上線后所支持的在線用戶數(shù)以及操作習(xí)慣(包括操作和請(qǐng)求之間的延遲)很容易獲得,如企業(yè)的內(nèi)部應(yīng)用系統(tǒng), 通常采用基于在線用戶的方式來描述性能測試需求。以提供網(wǎng)上購物的Web應(yīng)用系統(tǒng)為例,基于在線用戶的性能測試需求可描述為:10個(gè)在線用戶按正常操作速度訪問網(wǎng)上購物系統(tǒng)的下定單功能,下定單交易的成功率是100%,而且90%的下定單請(qǐng)求響應(yīng)時(shí)間不大于8秒;當(dāng)90%的請(qǐng)求響應(yīng)時(shí)間不大于用戶的最大容忍時(shí)間20秒時(shí),系統(tǒng)能支持50個(gè)在線用戶

    2.1.2 基于吞吐量的性能測試需求

    該需求描述方法主要基于Web應(yīng)用系統(tǒng)的吞吐量和響應(yīng)時(shí)間來度量系統(tǒng)性能。當(dāng)Web應(yīng)用在上線后所支持的在線用戶無法確定,如基于Internet的網(wǎng)上購物系統(tǒng),可通過每天下定單的業(yè)務(wù)量直接計(jì)算其吞吐量,從而采取基于吞吐量的方式來描述性能測試需求。以網(wǎng)上購物系統(tǒng)為例,基于吞吐量的性能測試需求可描述為:網(wǎng)上購物系統(tǒng)在每分鐘內(nèi)需處理10筆下定單操作,交易成功率為100%,而且90%的請(qǐng)求響應(yīng)時(shí)間不大于8秒

    2.2 開發(fā)性能測試腳本

    在確定Web應(yīng)用系統(tǒng)性能測試需求后,就要根據(jù)性能測試需求中確定的功能開發(fā)性能測試腳本。比如,針對(duì)前面定義的網(wǎng)上購物系統(tǒng)的性能測試需求,將開發(fā)下定單功能的性能測試腳本。

    性能測試腳本是描述單個(gè)瀏覽器向Web服務(wù)器發(fā)送的HTTP請(qǐng)求序列。每個(gè)性能測試工具(如IBM Rational Performance Tester, LoadRunner)所提供的測試腳本語法是不同的。測試人員利用性能測試工具可從頭手工編寫測試腳本,也可以通過錄制瀏覽器和Web服務(wù)器之間的網(wǎng)絡(luò)通信數(shù)據(jù)而自動(dòng)形成測試腳本。

    任何性能測試工具都不能保證錄制形成的性能測試腳本的正確性,測試人員應(yīng)通過在單用戶下運(yùn)行性能測試腳本對(duì)其正確性進(jìn)行驗(yàn)證。測試腳本不正確的一個(gè)重要原因就是腳本的數(shù)據(jù)關(guān)聯(lián)不正確,也就是并沒完全建立一個(gè)測試請(qǐng)求和前面的響應(yīng)內(nèi)容之間的關(guān)聯(lián)。測試腳本HTTP請(qǐng)求和響應(yīng)之間的數(shù)據(jù)關(guān)聯(lián)是否正確的一個(gè)重要標(biāo)準(zhǔn)是單用戶運(yùn)行腳本,腳本能完成期望的功能。

    在完成性能測試腳本的數(shù)據(jù)關(guān)聯(lián)后,需要對(duì)腳本進(jìn)行參數(shù)化,也就是把腳本中的某些請(qǐng)求數(shù)據(jù)替換成變量,變量的值來于一個(gè)獨(dú)立的數(shù)據(jù)文件,從而保證在多虛擬用戶運(yùn)行腳本的情況下,每個(gè)虛擬用戶所提交的數(shù)據(jù)是不同的。

    此外,為了測試Web應(yīng)用的可靠性,還需要對(duì)請(qǐng)求所收到的響應(yīng)進(jìn)行驗(yàn)證(比如驗(yàn)證響應(yīng)的HTTP返回碼或驗(yàn)證響應(yīng)的內(nèi)容),便于性能測試完成后統(tǒng)計(jì)請(qǐng)求成功率。

    2.3 建立性能測試負(fù)載模型

    性能測試負(fù)載模型定義了測試工具如何向Web應(yīng)用系統(tǒng)提交請(qǐng)求,包括向Web應(yīng)用系統(tǒng)發(fā)送請(qǐng)求的虛擬用戶數(shù),每個(gè)虛擬用戶發(fā)送請(qǐng)求的速度和頻率。針對(duì)前面介紹的網(wǎng)上購物系統(tǒng)的性能測試需求,在性能測試工具中定義的性能測試負(fù)載模型應(yīng)包括如下信息:

    虛擬用戶數(shù):性能測試不僅僅是執(zhí)行一次,而且每次執(zhí)行時(shí)虛擬用戶數(shù)也不固定,因此在性能測試負(fù)載模型中定義的虛擬用戶數(shù)將在測試執(zhí)行時(shí)進(jìn)行設(shè)置。

    虛擬用戶發(fā)送請(qǐng)求的思考時(shí)間和迭代次數(shù):虛擬用戶發(fā)送請(qǐng)求的思考時(shí)間長短是決定Web應(yīng)用系統(tǒng)負(fù)載量的重要因素之一,而迭代次數(shù)將決定性能測試的執(zhí)行持續(xù)時(shí)間。對(duì)基于在線用戶的性能測試需求,將基于錄制腳本時(shí)記錄的思考時(shí)間,而且由于現(xiàn)實(shí)中不同用戶訪問系統(tǒng)的思考時(shí)間不同,可把思考時(shí)間設(shè)置為在一定范圍內(nèi)的隨機(jī)值。對(duì)于基于吞吐量的性能測試需求,將把思考時(shí)間設(shè)置為零,此時(shí)Web應(yīng)用系統(tǒng)的在線用戶數(shù)量將等于并發(fā)用戶數(shù)。同時(shí),為了避免性能測試壓力的隨機(jī)性,將增加請(qǐng)求的迭代次數(shù)來增加測試執(zhí)行持續(xù)時(shí)間,從而獲得系統(tǒng)在穩(wěn)定壓力下的性能數(shù)據(jù)。

    虛擬用戶啟動(dòng)模式:在現(xiàn)實(shí)中,Web應(yīng)用系統(tǒng)的用戶不太可能同時(shí)做相同的操作,因此為了讓W(xué)eb應(yīng)用系統(tǒng)所承擔(dān)的壓力隨時(shí)間均勻分布,建議虛擬用戶依次啟動(dòng),同時(shí)也避免大量用戶同時(shí)登錄造成系統(tǒng)阻塞。以10個(gè)虛擬用戶模擬下定單為例,可設(shè)置每個(gè)虛擬用戶間隔30秒啟動(dòng),這樣10個(gè)虛擬用戶可在5分鐘后完成啟動(dòng),并保證10個(gè)虛擬用戶不會(huì)在同一時(shí)刻下定單,從而更符合實(shí)際情況。

    2.4 執(zhí)行性能測試

    執(zhí)行性能測試是指通過多次運(yùn)行性能測試負(fù)載模型,獲得系統(tǒng)的性能數(shù)據(jù)。在執(zhí)行過程中,需利用測試工具、操作系統(tǒng)、系統(tǒng)軟件(如Web Server或DB Server)提供的資源監(jiān)控手段對(duì)資源進(jìn)行監(jiān)控和分析,幫助發(fā)現(xiàn)資源瓶頸,并在系統(tǒng)層面進(jìn)行優(yōu)化。同時(shí),還需對(duì)應(yīng)用進(jìn)行性能分析,幫助定位應(yīng)用代碼中的性能問題,切實(shí)解決系統(tǒng)的性能問題。

    2.5 形成性能測試報(bào)告

    性能測試項(xiàng)目的最后階段就是向相關(guān)人員提交性能測試報(bào)告,匯報(bào)性能測試結(jié)果。在向相關(guān)人員匯報(bào)性能測試結(jié)果時(shí),并不是性能測試報(bào)告越豐富、性能數(shù)據(jù)越多越好。好的性能測試報(bào)告是能準(zhǔn)確、簡單地傳遞性能測試結(jié)論,而不需太多的技術(shù)細(xì)節(jié)。

    針對(duì)基于在線用戶數(shù)的性能測試需求,可通過下圖總結(jié)性能測試結(jié)論。其中橫軸是在線用戶數(shù),縱軸是響應(yīng)時(shí)間,如40在線用戶訪問網(wǎng)上購物系統(tǒng)時(shí),90%的下定單請(qǐng)求響應(yīng)時(shí)間不超過10秒。


    圖一:在線用戶數(shù)和響應(yīng)時(shí)間時(shí)間的趨勢圖
     

    針對(duì)基于吞吐量的性能測試需求,可通過下圖的曲線來描述性能測試結(jié)果。以網(wǎng)上購物系統(tǒng)為例,下圖描述下定單的并發(fā)用戶、下定單響應(yīng)時(shí)間以及吞吐量(服務(wù)器每秒處理定單筆數(shù))之間的關(guān)系,從而快速判斷系統(tǒng)是否能滿足性能測試需求。從下圖中可看出,并發(fā)用戶增加,請(qǐng)求的響應(yīng)時(shí)間也增加。服務(wù)器的吞吐量是先隨并發(fā)用戶數(shù)增加而增加,當(dāng)吞吐量到達(dá)一定峰值后,再增加并發(fā)用戶數(shù),吞吐量會(huì)減少。原因在于當(dāng)并發(fā)用戶數(shù)少時(shí),向Web服務(wù)器提交的請(qǐng)求量不大,服務(wù)器處理能力還有富余,所以吞吐量逐步增大;但當(dāng)并發(fā)用戶數(shù)超過某一值時(shí),由于向服務(wù)器提交的請(qǐng)求太多,造成服務(wù)器阻塞,反而導(dǎo)致吞吐量減少。


    圖二:響應(yīng)時(shí)間、吞吐量和并發(fā)用戶數(shù)的趨勢圖
     

    3 如何獲取合理的性能測試需求

    前一章介紹了Web應(yīng)用系統(tǒng)的性能測試過程,確定性能測試需求是整個(gè)性能測試的起點(diǎn)和成功的重要因素。性能測試需求定義得過高,雖然確保系統(tǒng)上線后能滿足性能需求,但可能會(huì)造成硬件資源的浪費(fèi);性能測試需求定義得過低,系統(tǒng)上線后可能會(huì)出現(xiàn)性能問題。如何通過分析系統(tǒng)上線后可能的用戶訪問行為,來獲得合理的性能測試需求指標(biāo)呢?

    假設(shè)現(xiàn)有一個(gè)基于Web的辦公自動(dòng)化系統(tǒng)(簡稱OA系統(tǒng)),該系統(tǒng)提供公文收發(fā)和查詢功能。在部署該系統(tǒng)前,將對(duì)該系統(tǒng)進(jìn)行性能測試。下面將詳細(xì)介紹如何分析該OA系統(tǒng)的使用情況,定義合理的性能測試需求。

    3.1 如何獲得OA系統(tǒng)的在線用戶數(shù)量

    在線用戶數(shù)量是指在特定時(shí)間區(qū)間內(nèi),有多少用戶訪問Web應(yīng)用系統(tǒng)(對(duì)應(yīng)到Web服務(wù)器的Session數(shù)),根據(jù)系統(tǒng)可能訪問用戶數(shù)以及每個(gè)用戶訪問系統(tǒng)的時(shí)間長短來確定。

    對(duì)于將要部署的OA系統(tǒng),通過分析獲得該系統(tǒng)有8000個(gè)注冊(cè)用戶,基本上所有的用戶每天(8小時(shí)工作時(shí)間)都會(huì)訪問OA系統(tǒng),平均在線時(shí)間(從登錄OA系統(tǒng)到退出OA系統(tǒng)之間的時(shí)間間隔,也可以是多次在線時(shí)間的合計(jì))為12分鐘,那么該OA系統(tǒng)的平均在線數(shù)(也就是Web應(yīng)用Session變量數(shù))為200個(gè)(8000 * 0.2 / 8),假設(shè)峰值在線用戶數(shù)是平均在線用戶數(shù)的3倍(該倍數(shù)可根據(jù)實(shí)際情況調(diào)整),則性能測試需求的在線用戶數(shù)為600。

    3.2 如何確定OA系統(tǒng)的性能測試用例

    由于時(shí)間和資源限制,不可能對(duì)Web應(yīng)用系統(tǒng)的所有功能進(jìn)行性能測試,而是從業(yè)務(wù)的角度(如某一功能操作的用戶多)和技術(shù)的角度(如某一功能雖然訪問用戶不多,但內(nèi)部處理邏輯復(fù)雜或處理數(shù)據(jù)量大)來選擇Web應(yīng)用系統(tǒng)的特定功能作為性能測試用例。

    以O(shè)A系統(tǒng)為例,由于所有用戶都經(jīng)常公文查詢功能,因此確定的性能測試用例為公文查詢。

    3.3 如何確定OA系統(tǒng)的響應(yīng)時(shí)間

    響應(yīng)時(shí)間的快慢直接影響了系統(tǒng)使用用戶的滿意度,采用平均響應(yīng)時(shí)間來描述系統(tǒng)系統(tǒng)性能測試需求是不科學(xué)的,因?yàn)闊o法直接和客戶的滿意度掛鉤。而且,在做性能測試,如果某一請(qǐng)求的響應(yīng)時(shí)間過長或過短,將導(dǎo)致平均響應(yīng)時(shí)間和實(shí)際情況偏離。

    以O(shè)A系統(tǒng)為例,定義的響應(yīng)時(shí)間需求為:90%(該百分比和要求的系統(tǒng)用戶滿意度相關(guān))的查詢請(qǐng)求響應(yīng)時(shí)間不超過8秒(該時(shí)間可根據(jù)實(shí)際情況確定)。

    3.4 如何確定OA系統(tǒng)的交易吞吐量

    單位時(shí)間內(nèi)Web應(yīng)用系統(tǒng)需處理多少筆特定的交易可通過統(tǒng)計(jì)獲得。以O(shè)A系統(tǒng)為例,假設(shè)每個(gè)用戶每天(一天按8小時(shí)計(jì)算)平均會(huì)查詢公文4次,那OA應(yīng)用的Web服務(wù)器平均每分鐘要能處理8000 * 4 / ( 60 * 8 ) = 66.67筆查詢公文交易,考慮到峰值因素,要求每分鐘能處理66.7 * 3=200筆查詢公文交易。

    3.5 OA系統(tǒng)性能測試需求描述

    通過前面的分析,能明確定義合理的性能測試需求。OA系統(tǒng)性能測試需求定義如下:

    基于在線用戶數(shù)的性能測試需求:600個(gè)在線用戶按正常操作速度訪問OA系統(tǒng)的查詢公文功能,所有查詢請(qǐng)求的成功率是100%,而且90%的查詢請(qǐng)求響應(yīng)時(shí)間不大于8秒。

    基于吞吐量的性能測試需求:OA系統(tǒng)在每分鐘內(nèi)需處理200筆查詢公文操作,交易成功率為100%,而且90%的請(qǐng)求響應(yīng)時(shí)間不大于8秒。

    4 總結(jié)

    Web應(yīng)用性能測試項(xiàng)目成功的關(guān)鍵不在于性能測試工具,而在于有效的性能測試分析方法和實(shí)踐。只有切實(shí)掌握性能測試需求分析方法,性能測試實(shí)踐經(jīng)驗(yàn),才能保證一個(gè)Web應(yīng)用性能測試的成功。


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一级特黄大片无码毛片| 七次郎成人免费线路视频 | 中文字幕在线观看亚洲| 免费A级毛片无码A| 毛片免费观看的视频在线| 少妇无码一区二区三区免费| 全部在线播放免费毛片| 亚洲爆乳大丰满无码专区| 亚洲另类自拍丝袜第1页| 久久精品夜色国产亚洲av| 亚洲中文字幕成人在线| 免费在线观看亚洲| 日韩视频免费一区二区三区| 麻豆一区二区免费播放网站 | 久久久久亚洲AV成人无码网站 | 美女羞羞视频免费网站| 亚洲人成色在线观看| 亚洲一区二区三区免费在线观看| 一个人免费播放在线视频看片| 亚洲人成人网站18禁| 亚洲国产成人久久精品app| 久久久久亚洲av无码专区喷水| 亚洲欧洲成人精品香蕉网| 亚洲欧洲中文日韩久久AV乱码| 国产一级淫片a免费播放口之| 在线成人a毛片免费播放| 黄色成人网站免费无码av| 美女视频黄是免费的网址| 青娱乐免费视频在线观看| 18禁免费无码无遮挡不卡网站| 2021在线永久免费视频| 91嫩草免费国产永久入口| 久久国产乱子免费精品| 欧洲精品99毛片免费高清观看 | 亚洲黄色网址大全| 麻豆亚洲av熟女国产一区二| 亚洲精品国产情侣av在线| 亚洲免费在线视频观看| 中文字幕无码亚洲欧洲日韩| 亚洲欧美日韩一区二区三区| 国产亚洲精品精品精品|