• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 性能測試從零開始:LoadRunner入門(5)

    發表于:2014-10-11來源:uml.org.cn作者:柳勝點擊數: 標簽:性能測試
    (2)網絡響應時間,這是網絡硬件傳輸交易請求和交易結果所耗費的時間。 (3)客戶端響應時間,這是客戶端在構建請求和展現交易結果時所耗費的時間,對

      (2)網絡響應時間,這是網絡硬件傳輸交易請求和交易結果所耗費的時間。

      (3)客戶端響應時間,這是客戶端在構建請求和展現交易結果時所耗費的時間,對于普通的瘦客戶端Web應用來說,這個時間很短,通??梢院雎圆挥?但是對于胖客戶端Web應用來說,比如Java applet、AJAX,由于客戶端內嵌了大量的邏輯處理,耗費的時間有可能很長,從而成為系統的瓶頸,這是要注意的一個地方。

      那么客戶感受的響應時間其實是等于客戶端響應時間+服務器端響應時間+網絡響應時間。細分的目的是為了方便定位性能瓶頸出現在哪個節點上(何為性能瓶頸,下一節中介紹)。

      2.吞吐量(Throughput)

      吞吐量是我們常見的一個軟件性能指標,對于軟件系統來說,“吞”進去的是請求,“吐”出來的是結果,而吞吐量反映的就是軟件系統的“飯量”,也就是系統的處理能力,具體說來,就是指軟件系統在每單位時間內能處理多少個事務/請求/單位數據等。但它的定義比較靈活,在不同的場景下有不同的詮釋,比如數據庫的吞吐量指的是單位時間內,不同SQL語句的執行數量;而網絡的吞吐量指的是單位時間內在網絡上傳輸的數據流量。吞吐量的大小由負載(如用戶的數量)或行為方式來決定。舉個例子,下載文件比瀏覽網頁需要更高的網絡吞吐量。

      3.資源使用率(Resource utilization)

      常見的資源有:CPU占用率、內存使用率、磁盤I/O、網絡I/O。

      我們將在Analysis結果分析一章中詳細介紹如何理解和分析這些指標。

      4.點擊數(Hits per second)

      點擊數是衡量Web Server處理能力的一個很有用的指標。需要明確的是:點擊數不是我們通常理解的用戶鼠標點擊次數,而是按照客戶端向Web Server發起了多少次http請求計算的,一次鼠標可能觸發多個http請求,這需要結合具體的Web系統實現來計算。

      5.并發用戶數(Concurrent users)

      并發用戶數用來度量服務器并發容量和同步協調能力。在客戶端指一批用戶同時執行一個操作。并發數反映了軟件系統的并發處理能力,和吞吐量不同的是,它大多是占用套接字、句柄等操作系統資源。

      另外,度量軟件系統的性能指標還有系統恢復時間等,其實凡是用戶有關資源和時間的要求都可以被視作性能指標,都可以作為軟件系統的度量,而性能測試就是為了驗證這些性能指標是否被滿足。

      1.1.5 軟件人員眼里的軟件性能

      用戶恨不能讓軟件有無限的性能,但作為軟件技術人員,我們需清楚地認識到,那種理想化的要求是不可能的。在軟件性能方案中,沒有什么萬能鑰匙,軟件性能方案充滿了辯證的各種矛盾。每種方案和方法幾乎都有利有弊。只有把握設計系統的具體環境,明確設計目標,具體問題具體分析,合理平衡各種矛盾,牢牢抓住主要矛盾,才能產生出優化的軟件系統性能方案。

      在上面的分析中,我們得知軟件性能是軟件運行空間和時間綜合考慮的解決方案。那么其實滿足用戶的性能需求,只有以下幾種方案:

      1.消除軟件對空間和時間不必要的浪費

      一個最明顯的例子就是內存泄漏問題,它被開發人員看做是大忌。

      嚴格地說,內存泄漏應該屬于軟件程序設計的一種缺陷,該缺陷直接導致了程序在運行過程中無法釋放不再需要的內存空間,從而造成內存資源浪費,嚴重的會造成無可用內存,導致系統崩潰。具體來說,當用戶程序在運行過程中需要動態獲得內存時,操作系統總是從堆(heap)上分配相應的空間給應用,分配的結果是將該堆內存的起始地址通過指針返回給應用。正常情況下,使用完這塊內存后,應通過系統調用主動通知操作系統回收這些堆內存以便重用。但是,如果由于設計缺陷導致在某些情況下程序沒有主動地通知到操作系統,而后應用又失去了對這塊內存的引用時,則該堆內存塊將成為既不受程序控制,又不能被系統回收重用的“孤兒”內存,這便是我們所指的內存泄漏。

    案例1

      void foo( )

      {

      char *str;

      str = (char*)malloc(32*sizeof(char));

      strcpy(str, "hello world");

      return;

      /* str所指向的32個字節的內存沒有被釋放,當foo()返回時造成內存泄漏 */

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>