原文引自:
http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/AppendATestCases.mspx
附錄 A – 測試用例
發布日期: 8/19/2004 | 更新日期: 8/19/2004
Microsoft Corporation
內容:討論 Offline Application Block 的測試方法。
本頁內容
附錄 A 說明了針對 Offline Application Block 運行以確保其正常工作的測試。在開發自己的應用程序時,我們可以將它們作為要考慮的測試類型的建議。
這些測試包括以下七個方面:
? |
功能測試,確保應用程序符合指定的要求 |
? |
白盒測試,測試小范圍特定區域的代碼 |
? |
安全性測試,測試應用程序及其數據是否受到保護、隱私是否受到保護,以及數據是否正確加密 |
? |
性能測試,測試應用程序在各種情況下的處理和響應時間 |
? |
集成測試,確保應用程序與其他系統和組件配合工作 |
? |
內容測試,驗證文檔的正確性 |
? |
安裝測試,驗證應用程序已正確安裝在客戶端計算機上 |
文檔的每個部分都與其中一個類別相對應。我們為每個類別提供了兩個表格。
第一個表格包括:
? |
范圍,是指該測試類別所覆蓋的領域 |
? |
時間,是指這些測試應在開發周期的何時開始 |
? |
用于執行這些測試的工具 |
? |
自動測試是否適用于這些類型的測試 |
第二個表格是屬于該類別的示例測試的清單。
功能測試
功能測試可確保應用程序符合指定的要求。
表 1:功能測試定義
范圍 |
這些測試覆蓋了智能客戶端應用程序的功能,以確保它符合指定的要求。它們可提供應用程序的有效性和使用性的反饋,以解決要求和實際應用程序之間的偏差。它們使用基于功能和基于案例的方法來測試圖形用戶界面 (GUI)。 |
開始時間 |
在確定要求后,就應盡早計劃測試并撰寫文檔。隨著越來越多的端到端功能投入使用,測試的數量將不斷增加。 |
要使用的工具 |
要使用的工具包括:
在 GUI 可用之前測試已公開功能的示例窗體。
GUI 記錄和播放工具。 |
自動角色 |
建議使用自動功能針對新的軟件內部版本啟用多個快速的版本驗證測試。 |
表 2:功能測試
|
應用程序具有脫機和聯機狀態的視覺顯示。 |
|
應用程序允許用戶通過 Internet 登錄。 |
|
應用程序允許用戶通過企業網絡登錄。 |
|
當用戶登錄時,應用程序提示用戶是進入脫機狀態還是聯機狀態(僅當用戶處于聯機狀態時適用)。 |
|
當用戶注銷時,應用程序提示用戶同步化工作隊列數據(僅當用戶在脫機狀態下對工作隊列進行了更改,才會發生這種情況)。 |
|
測試應用程序在聯機時顯示工作項目。 |
|
測試應用程序在脫機時顯示工作項目。 |
|
測試應用程序能夠更改要求應用程序聯機的工作項目。 |
|
測試應用程序能夠提示用戶為已更新的隊列數據同步化工作項目。 |
|
測試用戶可以手動強制系統脫機。 |
|
測試用戶可以手動將系統切換回聯機狀態。 |
|
測試應用程序具有自動連接狀態檢測策略。 |
|
測試應用程序具有用于下載工作項目的下載界面。 |
|
測試用戶可以下載工作項目、脫機、在脫機狀態下更新工作項目、聯機以及在聯機狀態下進行同步。 |
|
測試應用程序在編輯數據時將其標記為 dirty,并檢查陳舊數據和廢數據是否過期。只能從服務器覆蓋陳舊數據。 |
|
測試檢查 MSDE 緩存存儲提供程序是否用于緩存數據。 |
|
測試檢查獨立緩存存儲提供程序是否用于緩存數據。 |
|
測試檢查“消息隊列”隊列存儲提供程序是否用于排隊數據。 |
|
測試檢查 MSDE 隊列存儲提供程序是否用于排隊數據。 |
|
測試在脫機狀態下對客戶端數據進行的多個更新在聯機時進行同步。 |
|
測試可以為 ConnectionDetectionStrategy 配置多個提供程序。 |
|
測試支持使用 ReferenceDataCache 的不同緩存存儲區。 |
|
測試可以為 QueueProvider 配置多個提供程序。 |
|
測試 ConnectionDetectionStrategy 的輪詢間隔配置。 |
|
測試 Executor 操作的輪詢間隔配置。 |
|
測試 QueueProvider 的最大隊列消息配置。 |
|
測試緩存數據的過期配置。 |
|
測試用于連接到 MSDE 的連接字符串配置。 |
|
測試使用自定義提供程序的加密是通過 ICryptographicProvider 接口實現的。 |
|
測試下載頻率的配置屬性。 |
|
測試錯誤和邊界條件。 |
|
測試可以跨多個 Offline Application Block 的運行實例來存儲和檢索數據。 |
白盒測試
白盒測試主要用于小范圍特定區域的代碼。
表 3: 白盒測試定義
范圍 |
這些測試覆蓋小范圍的代碼單元,并使用代碼演練、代碼檢查以及使用測試框架的單元級別測試來執行。 |
開始時間 |
這些測試在開發周期的早期進行。應在代碼剛被開發出來、并且還是可隨時演練的小型獨立代碼單元時執行測試。 |
要使用的工具
代碼范圍的工具
內存分析工具 |
要使用的工具包括:
查看代碼是否符合開發準則的代碼檢查
單元測試框架工具(應該能夠自動執行) |
自動角色 |
單元測試自動化對于針對仍處于開發中的應用程序執行可重復的全面測試是至關重要的。 |
表 4:白盒測試
|
演練代碼并檢查它是否滿足質量要求,例如是否符合邏輯,是否符合開發標準和最佳做法,以及是否具有高可讀性的注釋。 |
|
使用代碼范圍的工具運行代碼,以確保所有可用的代碼都在進行測試。 |
|
執行代碼的內存分析,以確保正確釋放對象和收集垃圾。 |
|
使用單元測試框架工具來創建用于測試公共方法的單元測試。在代碼開發過程中擴展這些測試,并定期運行它們。單元測試可作為一種快速檢查,用于確保代碼在更改后不會被損壞。要使單元測試具有更強的邏輯性,請將它們映射到“功能測試”部分中說明的測試用例。 |
安全性測試
安全性測試用于測試應用程序及其數據是否受到保護,隱私是否受到保護,以及數據是否正確加密。
表 5:安全性測試定義
范圍 |
這些測試覆蓋的范圍包括:驗證隱私是否受到保護、數據是否加密、數據是否防篡改,以及應用程序是否能夠承受各種類型的惡意攻擊。安全性測試應主要用于獨立的系統單元和整個應用程序。 |
開始時間 |
在確定要求后,就應計劃這些測試。這些測試應在實現安全措施和方法時執行。 |
要使用的工具 |
要使用的工具包括:
DOS 攻擊模擬
網絡探測工具
此外,請參閱清單章節 |
自動化 |
不適用 |
表 6:安全性測試
|
測試應用程序能夠將參考數據安全地下載到本地計算機。 |
|
測試應用程序能夠將更新后的參考數據安全地上載到服務器。 |
|
測試應用程序能夠將對已下載數據的訪問權限制給經授權的用戶。 |
|
測試可以確保通過公司 Intranet 訪問服務的安全。 |
|
測試可以確保通過 Internet 訪問服務的安全。 |
|
測試可以安全存儲已下載的消息。 |
|
跟蹤查看已下載的參考數據是否被篡改。 |
|
測試檢查是否可以通過正確的登錄憑據限制對排隊數據的訪問。 |
|
測試檢查排隊數據是否已正確加密并簽名。 |
|
測試檢查是否可以通過正確的登錄憑據限制對緩存數據的訪問。 |
|
測試檢查緩存數據是否已正確加密并簽名。 |
|
測試檢查是否可以通過第三方證書(例如 Verisign)使用服務進行下載。 |
|
測試檢查程序集是否在部署服務器上進行加密和數字簽名,并在客戶端下載時進行驗證。 |
|
測試檢查為服務生成的代理是否具有有效的終結點,以防止欺騙。 |
|
測試檢查多個用戶的緩存數據和排隊數據共享一個客戶端是否安全。 |
|
驗證 DemandReflectPermission 在使用反射的代碼中正確實現。 |
性能測試
性能測試用于測試應用程序在各種情況下的處理和響應時間。
表 7:性能測試定義
范圍 |
這些測試覆蓋了在各種數據加載、內存壓力條件、網絡可用性以及不同的連接速度下,應用程序的處理和響應性能。 |
開始時間 |
在確定要求后,就應該計劃這些測試??梢酝ㄟ^使用內部測試存根和性能測試工具來對已完成的單元進行測試。隨著越來越多的端到端功能投入使用,測試的數量將不斷增加。 |
要使用的工具 |
要使用的工具包括:
性能測試工具或自定義測試工具(應自動化)
PerfMon
內存清理工具
磁盤空間清理工具
性能分析工具 |
自動化 |
建議使用自動功能針對較新的軟件內部版本啟用多個快速的性能測試。這將確保應用程序符合可接受的性能標準,同時還有助于比較研究。 |
表 8:性能測試
|
測試檢查在超出延遲時間段后是否會發生下載。 |
|
測試檢查在超出延遲時間段后是否會發生上載。 |
|
通過在一段時間內在某一行中數百次地下載項目來測試性能。 |
|
通過在一段時間內在某一行中數百次地上載項目來測試性能。 |
|
通過在一段時間內下載和上載不同大小的數據來測試性能。 |
|
通過使用不同的帶寬和延遲時間下載和上載數據來測試性能。 |
|
通過使用有限的內存和磁盤空間下載和上載數據來測試性能。 |
|
分析以下類型的數據:
線程數量
系統池資源
爭用
進程工作集
系統隊列
進程 CPU 上下文
內存和 IO
網絡
系統資源
進程可用性
異常
進程資源
事務處理時間。 |
集成測試
集成測試可確保應用程序與其他系統和組件配合工作。
表 9:集成測試定義
范圍 |
這些測試覆蓋了應用程序與外部組件和已存在系統的集成。測試應用程序與 Web 服務的交互就是一個示例。這些測試可驗證整個工作流,以及組成應用程序的各個組件之間的所有交互。 |
開始時間 |
在確定要求后,就應該計劃這些測試。隨著不同系統部件的集成,測試的數量將不斷增加。 |
要使用的工具 |
不適用。 |
自動化 |
不適用。 |
表 10:集成測試
|
測試客戶端應用程序代碼和 Web 服務之間的集成。 |
|
測試工作項目的下載和隨后的已修改工作項目的上載。 |
|
測試脫機狀態下工作項目的排隊,以及重新聯機后排隊消息的處理。 |
|
驗證不同隊列提供程序與不同緩存提供程序的配合工作。 |
|
在脫機狀態下將多個更新應用到工作項目,并在重新聯機時檢查同步。 |
|
測試在服務器端篩選參考數據的方法,以下載數據庫的適用部分。 |
|
測試應用程序可以根據服務器通知,為用戶顯示與其他用戶所作更改沖突的工作項目列表。 |
|
測試應用程序可以根據定義的時間段將日志與服務器日志進行同步。 |
|
測試在客戶端修改數據的同時、該數據正在服務器中進行更新所導致的沖突情況。 |
|
測試能否通過在服務器上添加新的數據(工作項目)來刷新客戶端。 |
|
測試添加到客戶端的新數據(工作項目)能否與服務器進行同步。 |
|
修改服務器中工作項目的架構并更新客戶端。 |
|
測試兩個或更多獨立聯機客戶端同時更新服務器上的數據的情況。 |
|
測試兩個或更多脫機客戶端修改數據并更新服務器的情況。 |
|
確保測試用例覆蓋了所支持平臺上應用程序工作流的驗證。 |
內容測試
內容測試用于驗證文檔的正確性。
表 11:內容測試定義
范圍 |
這些測試可驗證在安裝和操作過程中為用戶提供的說明內容。這些測試覆蓋了補充的用戶指南和幫助文件。這些測試可驗證內容的使用性、正確性和完整性。 |
要使用的工具 |
內容測試大多通過手動完成。熟悉應用程序的使用性和測試工程師能夠指出矛盾或缺少的信息,以及應用程序和文檔之間的差異。 |
要使用的工具 |
不適用。 |
自動化 |
不適用。 |
表 12:內容測試
|
測試內容在技術上的正確性。 |
|
測試有關操作、流程和時間安排的步驟的順序是否正確。 |
|
測試內容的相關性。 |
|
測試內容不是模棱兩可并且是易于遵循的。 |
|
測試內容的一致和統一。 |
|
測試內容為每個主題都提供了完整的信息。 |
|
測試需要進一步說明的主題帶有有助于更好理解的適當示例。 |
|
測試主題帶有對相應和相關主題的引用。 |
|
測試內容是否考慮到期望用戶的技術水平和熟悉的交流語言。 |
安裝測試
安裝測試用于驗證應用程序是否正確安裝在客戶端計算機上。
表 13:安裝測試定義
范圍 |
這些測試可驗證應用程序最后交付的功能和客戶端計算機上的安裝,并驗證所有適用文件的交付。 |
開始時間 |
這些測試通常在開發和測試周期的最后進行。 |
要使用的工具 |
要使用的工具包括 GUI 記錄和播放工具(應該能夠自動運行)。 |
自動角色 |
使用在功能測試過程中創建的版本驗證測試 (BVT) 自動腳本,以便在安裝后快速驗證應用程序的主要功能。這就提供了驗證安裝是否正確的快速方法。 |
自動工具 |
針對已安裝的應用程序執行 BVT 測試所使用的 GUI 記錄和播放工具。該工具提供了驗證安裝的快速方法。 |
表 14:安裝測試
|
測試應用程序安裝、運行腳本時未出現錯誤,以及所有主要功能都能通過測試。 |
|
測試安裝在客戶端計算機上的所有文件的版本(包括代碼和內容)都正確。 |
|
測試可以卸載應用程序并測試清理的驗證。 |
|
在安裝中驗證文件的命名標準。 |
|
驗證安裝程序在遇到錯誤情況(例如磁盤空間不足)時可以正常退出。 |
|
在安裝過程中驗證注冊表項,以及在卸載過程中驗證注冊表的清理。 |
|
執行全新的計算機安裝。這臺計算機帶有新安裝的操作系統和少量必需的已安裝組件。 |
|
測試具有不同軟件配置的計算機上的安裝。 |
|
測試安裝程序創建了正確的 Start 菜單項。 |
|
測試安裝程序將文件置于正確的文件夾中。 |
|
測試程序集是否在部署服務器上進行加密和數字簽名,并在客戶端下載時進行驗證。 |
轉到原英文頁面