The notes of How We Test Software At Microsoft(6)

Chapter 11Non-Functioanl Testing非功能測試

定義非功能的測試領域包括了性能,負載,安全,可靠性和其他很多方面。非功能測試有時也被稱作行爲測試或質量測試。非功能測試的衆多屬性的一個普遍特徵是一般不能直接測量。這些屬性是被間接地測量,例如用失敗率來衡量可靠性或圈複雜度,用設計審查指標來評估可測性。

國際化標準組織(ISO)在ISO9216ISO250002005中定義了幾個非功能屬性。這些屬性包括:

·         Reliability可靠性:軟件使用者期望軟件能夠正常運行。可靠性是度量軟件如何在主流情形和非預期情形下維持它的功能,有時也包括軟件出錯時的自恢復能力。

·         Usability可用性:如果用戶不明白應該如何使用,那麼,既是零差錯的軟件也會毫無用處。可用性測量的是用戶學習和控制軟件以達到用戶需求的難易程度。進行可用性研究,重視顧客反饋意見和對錯誤信息和交互內容的檢查都能提高可用性。

·         Maintainability可維護性:可維護性描述了修改軟件而不引入信錯誤所需的工作量。

·         Portability可移植性:

Performance Testing

性能測試的目標是發現重大的系統瓶頸。

How do you Measure Performance

在設計階段發現潛在性能問題的技巧:

·         Ask questions:找出潛在性能問題的地方。對網絡交通的擁塞狀況,內存管理的效率,數據庫設計的合理性,或其他任何有關的地方提出疑問。即使你並沒有性能設計的解決方案,通過讓其他團隊成員考慮性能問題,測試工程師也一樣能夠產生很大的影響力。

·         Think about the big picture考慮全局:不是片面地考慮局部優化,而是考慮全面的用戶場景。

·         Set clear, unambiguous goals明確目標:應SMARTSpecific Measureable Achievable Relevant Time-bound)標準來設計目標。

有益的性能測試的技巧:

·         Establish a baseline建立基線。早定義,早測量的一個重要方面是建立基線。

·         Run tests often經常運行測試。一旦建立了基線,就儘量經常的測量。

·         Measure responsiveness測量相應效率。性能測試必須着重於測量用戶響應時間,而不管該操作的後臺計算需要消費多少時長。

·         Measure performance要專注測量的是性能。

·         Take advantage of performance tests充分利用性能測試。

·         Anticipate bottlenecks預估瓶頸。針對延遲會發生的地方做性能測試,比如文件和打印I/o,內存程序,網絡操作,或其他任何不響應行爲可能發生的地方。

·         Use tools使用工具。

·         Remember that resource utilization is important合理使用資源很重要。響應時間和延遲兩者都是性能的關鍵標識,但不要在性能測試中忘記檢查CUP的負荷,磁盤或網絡I/OCPU使用率。

·         Use “clean machines” and don’t用還是不用“乾淨”機器上。讓一部分性能測試在乾淨機器上運行,其餘部分在基於顧客配置的機器上運行。乾淨機器對於產生一致的數據很有用,但如果性能會被其他應用軟件,外接程序或其他擴展嚴重影響,這些數據就會起誤導作用。在乾淨的機器上運行性能測試可以產生最好的數據,但是在一臺裝滿了軟件的機器上產生的數據會更加接近用戶的體會。

·         Avoid change避免改變。剋制住你對性能測試小修(或大修)的衝動。長遠來看,測試本身改動得越少,得到的數據越精確。

http://msdn.microsoft.com/en-us/library/bb924375.aspx,這裏可以獲得更多信息。

Stress Testing壓力測試

壓力測試包括負載測試,平均無故障時間(mean time between failure, MTBF)測試,低資源測試,容量測試或重複性測試。

·         Stress testing壓力測試,一般來說,壓力測試的目的是要通過模擬比預期大的工作負載讓只在峯值條件下出現的缺陷曝光。壓力測試是要發現軟件的弱點所在。內存泄漏,競態條件,數據庫中的線程或數據行之間的死鎖條件和其他同步問題等,都是壓力測試能發掘出來的常見缺陷。

·         Load Testing負載測試是要探討在高峯或高於正常水平的負載下系統或應用程序會發生什麼情況。

·         Mean time between failureMTBFtesting平均無故障時間(MTBF)測試是測量系統或應用程序在出錯或宕機前的平均運行時間。

·         Low-resource Testing低資源測試,確定當前系統在重要資源(內存,硬盤空間或其他系統定義的資源)降低或完全沒有的情況下的狀況。

·         Capacity testing容量測試,於負載測試非常類似,一般用來執行服務器或服務測試,其目的是要確定一臺或多臺計算機能支持的最多用戶數。容量模型通常建立在容量廁所數據基礎上,有了這些數據,英語團隊能計劃什麼時候增加系統容量,要麼增加單擊資源。

·         Repetition Testing重複性測試,是爲了確定重複某一個程序或場景的效果而採取的一項簡單而“粗暴”的技術。這個技術的精髓是循環運行測試直到達到一個具體界限或臨界值。

Compatibility Testing兼容性測試

應用程序的兼容性測試是爲了保證所測試程序和所有文件格式及組件之間的互用性能夠繼續正常工作。

工程師測試應用程序兼容性的一個關鍵工具是Application Verifier 它用來在運行時積極檢測用戶模式下的本機用戶模式應用程序,以找出由於常見的編程錯誤產生的潛在的金融性問題。http://msdn.microsoft.com/en-us/library/ms807121.aspx,這個page可以找到更多的信息。

Accessibility Testing可達性測試

可達性時指爲每個人提供接觸信息和工具的相等的機會,這些信息和工具時他們完成每天工作所必需的。

可達性是由幾層特定的特殊定義定,其中每一個都是程序可達性的重要部分。任何應用程序都必須測試的特性包括:

·         Operating System Settings操作系統的設置。這些設置包括大字體,高DPI,高反差界面風格,光標閃爍速度,粘滯鍵,過濾鍵,鼠標設置子鍵,串行鍵設置子鍵,切關鍵設置子鍵,屏幕分辨率,自定義鼠標設置即從屏幕鍵盤的輸入。

·         “Built-in”  accessibility features內置可達性,這些特性和功能包括tab鍵順序,熱鍵和快捷鍵。

·         Programmatic access編程訪問:MSAA

·         Accessible technology tools可達性技術工具,包括閱讀器,放大鏡,語音識別或者其他輸入程序。

Usability Testing可用性測試

可用性和可達性很相似,但是兩者之間有一個很大區別,可達性是指任何一個人都能夠使用用戶界面,而可用性是指用戶能不能很容易地理解和與用戶界面互動。可達性特性能夠帶來更高程度地可用性,但可用性包含更多。有用的文檔,工具提示,容易找到的功能,還有很多其他的標準都對提高軟件的可用性有幫助。

Security Testing安全測試

Threat Modeling威脅建模審查應用程序的結構以找到潛在的安全威脅和弱點,是一個有組織的集體工作。

Fuzz Testing模糊測試,是一種用來決定程序對無效輸入數據會怎樣的反映技術。

發佈了268 篇原創文章 · 獲贊 5 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章