性能測試基礎知識-性能的規劃與實現 軟件測試
性能的規劃與實現一個不能按意愿執行的程序是沒有用處的。每個程序都必須滿足某組用戶(有時會是一組很大且需求各不相同的用戶)的需求。如果程序的性能確實不能滿足那些用戶中很大一部分用戶的需求,則不會使用這個程序。一個不被使用的程序是不能實現預期功能的。
這種情況對經許可的軟件包和用戶編寫的應用程序是確實存在的,盡管大多數軟件包開發者意識到低性能的影響,并盡力提高程序的運行速度。不幸的是,他們不能預測程序要經歷的所有環境和用途。讓程序具有可接受性能的最終職責就落在了那些選擇或編寫、規劃以及安裝軟件包的人身上。
本章描述程序員或系統管理員可以確保新編寫或購買的程序具有可接受性能的步驟。(當程序員這個詞單獨出現時,它包含系統管理員和任何對程序的最終成功負責的人。)
為使程序達到可接受的性能,在工程開始時就要確定和量化可接受性,并且決不能忽視達到目標所需的方法和資源。盡管聽起來這是基本方法,但一些編程工程卻有意抵制它。他們采用一種清楚地描述為設計、編碼、調試、可能是編寫文檔,有時間的話再確定其性能的策略。
為使程序運行時不僅在邏輯上,而且在時間上都是可預知的,唯一辦法就是在軟件規劃和開發過程中對性能注意事項進行整體考慮。由于安裝者較之開發者有較少的自由,所以在現有軟件安裝時提前規劃也許就更關鍵了。
盡管對一個小程序來說,這個過程的細節可能看起來很繁重,但不要忘了我們還有第二個“記事本”。我們不僅必須保證新程序具有令人滿意的性能,還須確保該程序對現有系統的補充部分不會降低運行于該系統的其它程序的性能。
確定工作負載的組成部分無論程序是新編寫的還是購買的、大程序還是小程序,開發者、安裝者和預期用戶都對程序的使用有所假設,比如:
誰使用該程序程序在何種環境下運行這些環境出現的頻度,以及在某年某月某日某時會出現多少次在這些環境下是否還需使用其它現有程序程序運行于何種系統有多少數據將要從何處進行處理由程序或為程序創建的數據是否會在其它方面用到
除非這些想法是作為設計過程的一部分提出的,否則很可能模糊不清,并且程序員將幾乎無疑會有與預期用戶不同的假設。甚至在程序員同時也是用戶這樣明顯很普通的情況中,讓假設無關會使以任何嚴格方式進行設計與假設的比較成為不可能。更糟的是,在對正進行的工作沒有完全理解的情況下是不可能確定性能需求的。
編寫性能需求文檔在確定和量化性能需求時,確定某一特殊要求背后的推理是很重要的。這是規劃過程總能力的一部分。用戶可能會將其需求聲明基于與程序員的假設不匹配的程序邏輯的假設。性能需求集至少應記錄下面幾點:
各種特定類型的用戶 — 計算機交互作用在大部分時間會經歷的最佳響應時間,以及對大部分時間的定義。響應時間從用戶執行“運行”這個操作的時間直到用戶從計算機接收到足夠反饋以繼續執行任務來衡量。這是用戶的主觀等待時間。它不是從一個子例程的入口到第一個寫語句的時間。
如果用戶對響應時間不感興趣,而僅僅對結果感興趣,您可以詢問“當前獨立執行時間估計值的十倍”是否可以接受。如果回答“是”,您就可以繼續討論吞吐量。否則,您可以在用戶十分注意的情況下繼續討論響應時間。
最低程度可接受剩余時間的響應時間。較長的響應時間會使用戶認為系統當機。您還需要指定剩余時間,例如,一天的高峰時刻,百分之一的交互作用。在一天的某特定時間減少響應時間很難辦到,或者代價更高。
需要的典型吞吐量和將發生的次數。這并不是臨時注意事項。例如,對一個程序的需求可能是每天運行兩次:上午 10:00 和下午 3:15.如果這是一個運行 15 分鐘,并且計劃運行于多用戶系統的有 CPU 限制的程序,則需要某種協商以便依次運行。
最大吞吐量周期的大小和計時。
綜合預期請求及其如何隨時間變化。
多用戶應用程序中每臺機器的用戶數及總用戶數。此描述應包括這些用戶登錄和注銷的次數,以及假設的擊鍵速率、完成的請求和思考次數。您可能想弄清楚思考次數是否隨前后請求而系統地變化。
用戶所做的關于工作負載要在其上運行的機器的任何假設。如果用戶頭腦中存在一臺具體的機器,那么確保您早就了解它。同樣,如果用戶所采用的是特殊類型、大小、成本、位置、互聯或任何其它變量,而這些變量將限制您滿足前述需求的能力,那么假設也變為需求的一部分。滿意程度可能不會在程序開發、測試或首次安裝的系統上進行評估。
估計工作負載的資源需求除非您正在購買配有詳細資源需求文檔的軟件包,否則資源估計可能是性能規劃過程中最困難的任務。造成困難有如下幾個原因:
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/