'測試啟發法速查表 (建議收藏)'

軟件 操作系統 收藏 SQL JavaScript 通信 防火牆 用飄柔的程序猿 2019-08-29
"
"
測試啟發法速查表 (建議收藏)

本文是測試大師Elisabeth Hendrickson的測試啟發法速查表。

一、通用啟發法

這些啟發法絕對適用於任何種類的接口和任何種類的系統。

抽象

剔除模型中的細節。忽略低層級的細枝末節,以此進行簡化,讓模型可以更少地關注具體細節,而更多地聚焦與概念層面。

例如,對於交互圖來說,無需詳盡地描述一組通信,你也可以只畫一條線,再取個名字來描述這些通信的核心交互即可。如果是在測試郵件客戶端,那麼在發送郵件時客戶端可能要經歷如下步驟:連接到服務器、鑑權、傳輸數據。與其在模型中記錄所有步驟,你可以直接把客戶端服務器端之間的這個完整交互過程標記為“發送郵件”,以此剔除細節、提升抽象層級。

絕不和始終

就是軟件應該始終都要做(例如確保賬目平衡)或絕不會做(例如毀壞用戶數據)的那些事情。多找領域專家和業務干係人聊聊天,可以摸清系統有哪些“絕不”和“始終”。

開始、中間、結束

改變元素所處位置。你可以改變某個特定序列中的元素,或者也可以針對某個特定位置的元素採取行動。如一下做法都是對此啟發法的運用:

刪除列表開始、中間或結束位置的條目。

將文本粘貼至某一行的開頭、中間或結尾位置。

在某個值的開始、中間或結束位置放一個特定字符。

針對某個序列的開始、中間或結束位置執行操作。

注意觀察那些因位置改變而導致的跡象。同樣也要留意不良行為,例如,附於結束位置的數據被刪減,插於開始或中間位置的數據導致其他內容被刪減。

集中一切

如果事物被散落至、細分為或編組成一個一個的獨立塊,那就把他們都放到同一個地方。例如:

以文件夾結構來整理條目的軟件:選中大量的非空文件夾,全部移入某個單一文件夾或者是某個嵌套很深的文件夾。

可以在賬戶間轉移條目所有權的軟件:把大量不同賬戶持有物的所有權全部轉移到某個單一賬戶名下。

改變模型

以一種不同的呈現形式來描繪你所測系統的模型。

狀態圖通常以圓圈和箭頭來呈現其狀態及轉換,把它改成表格的形式,例如,狀態用列來表示、事件用行來表示,然後用單元格數據來表示其結果狀態。

把線性綱要改為思維導圖,或是把思維導圖改為線性綱要。

CRUD(增刪改查)

創建(C)、讀取(R)、更新(U)、刪除(D)。這些都是你可以針對系統內任何數據元素所執行的基本操作。連同其他啟發法一起使用CRUD啟發法。例如:

結合“開始、中間、結束”:在列表的開始位置、中間或結尾創建元素。

結合“金髮女孩”:更新某數據元素的值,改成太小、太大或剛剛好的值。

結合“零、單、多”:刪除沒有子記錄、只有子記錄或是有很多條子記錄的條目。

分散一切

如果東西全部都在一個地方,那就把它們進行拆散、細分或是編組做成獨立塊。同樣,也要跨越分佈式系統建立連接。例如

以文件夾結構來整理條目的軟件:創建大量文件夾,各自放入少量數目。

可以在分佈式環境下配置使用的軟件:配置該系統,讓每個部分都可以存在於各自獨立的機器上,用子網或防火牆於其他部分隔開。

跟隨數據

執行一系列數據相關的操作,每執行一步都要檢查數據的完整性。此方法適合於用戶可以對數據執行輸入、搜索、報告、導入、導出、更新和查看等操作的任何系統。在結合其他數據相關啟發法使用的時候,跟隨數據啟發法的效果尤佳。例如

使用含有特殊字符的數據,包括SQL或JavaScript注入攻擊,導入它,搜索它,查看它,運行包含它的報告,導出它。

創建違反領域特定規則的數據,再將之導入。有的時候,批量導入功能裡會漏掉可以阻止破壞數據進入的功能邏輯。

結合“零、單、多”:針對擁有零條、一條或多條子記錄的實體執行以數據為核心的操作,例如運行報告或導出數據。

金髮女孩

太小、太大或是剛剛好。這適用於有固定大小範圍的任何事物,例如日期範圍、數字值,字串或文本長度,文件大小,等等。需要留意其行為表現,包括如下一些:

刪減大量數據卻不做通告。

保存數據失敗卻不做通告。

干擾

想辦法干擾關鍵進程,比如退出登錄、關機、重啟、殺操作系統進程、斷網、強制休眠、致使會話超時、取消操作等。觀察不良行為,例如:

無效的錯誤信息,例如顯示堆棧蹤跡的異常,或是謎一般的錯誤代碼。

不能(再也不能)再次啟動進程。

無法恢復的數據丟失或損壞。

逆向

掉頭換個方向做事。撤銷一切。跳到結尾處,反向執行。例如:

支持撤銷操作的軟件愛呢:執行大量多種操作,然後在一步一步地全部撤銷。

既定工作流的軟件:一律接受所有默認值,直至工作流最後一步;然後使用“後退”按鈕逐個修改頁面上的值。

部分、全部、全無

某個組套可能包含了一部分條目在內,也可能一個條目也沒有,也可能包含了所有條目。跟“零、單、多”很像,但更適合成組套出現的條目或屬性,比如說權限、配置選項、標籤、多選字段和複選框等。需要留意的行為表現包括如下一些:

“全無”跟“全部”享受相同的待遇----例如,系統對沒有任何權限的普通用戶和享有全部權限的超級用戶一視同仁。

個數或百分比計算的問題,包括除零和差一錯誤。

顯示問題,特別是“全無”或“全部”的情況。

“全部”情況下的數據階段。

捱餓

讓程序捱餓,包括CPU、內存、網絡帶寬或磁盤空間在內的所需資源都不給它。注意觀察一下響應:

不可恢復的數據丟失或損壞。

無效的錯誤信息,例如顯示堆棧蹤跡的異常,或是謎一般的錯誤代碼。

意外的程序或會話終止。

過少

適用於可以統計數量的情況。製造出數量低於預期的狀況讓軟件處理,例如,植入列表的條目太少或發票排列項太少的情況。

過多

適用於可以統計數量的情況。製造出數量超額的狀況讓軟件處理,例如,活躍會話或連接過多的情況。

有效近似值

特別是在處理複雜領域的時候,幾乎不可能精確地判斷出某個特定試驗應該得到的結果。在那種情況下,你可以用一個近似值判斷其準確度。你可以用該結果跟可能值範圍進行比較,看看它是否在此範圍內。你也可以檢查結果所具備的特點,例如,計算值是增大了還是減小了。

違反數據格式規則

軟件期待其所獲數據是否符合規則的。年齡不應該是負數。IP地址應該由4個0到255之間的數值組成。電郵地址應該包含用戶名和域名,有‘@’符號隔開。自定義的文件結構具有特定的結構。嘗試違反這些規則,看看軟件如何從容(或者不從容)地處理格式上存在嚴重問題的數據。

Cem Kanner的零法則是,只要有0存在,就會有東西想要去除以它。通常意味著,如果軟件期待的是一個集合,那麼它往往都無法妥善地處理空集合(0元素)的情況。

零、單、多

零個事物、一個事物、多個事物。可計數物可能包括搜索返回的結果、字符串裡面的字符、數據流中的字節、層級結構中的子節點、一些文件、文件中的行、賬目、日誌裡的活動,或者是任何領域特定對象的屬性。注意觀察其行為,包括如下一些:

複數格問題,例如“0 record found”或“1 record found”。

個數或百分比計算的問題,包括除零和差一錯誤。

數量增加導致性能問題的跡象。

變焦

注重具體細節,必要時收窄視野。

例如,在狀態模型中,你可以先找出模型中的事件,然後再把軟件的狀態轉換拆分為詳細的步驟,以便從中發現子狀態。舉個具體的例子,針對允許用戶創建和更新條目的軟件,你可以選擇吧“保存”事件拆分為傳輸數據、驗證數據和響應等步驟。其中的每一步都由一個狀態和觸發其狀態轉換的事件所組成。

二、Web啟發法

這些啟發法特別適合針對基於web的應用程序使用。

後退、前進、歷史

用戶可以通過直接交互的形式使用web應用,也可以藉助於瀏覽器的歷史記錄功能,包括後退、前進按鈕以及歷史記錄。富web應用不是總能處理得當的。留意如下情況:

關於POST數據被重發給服務器的警告。

重複事務。

404錯誤。

只顯示部分數據的網頁。

各種錯誤,包括已損壞的圖像和已損壞的鏈接。

存為書籤

用戶會將各種類型的網頁保存為書籤,其中包括一些沒有被設計為可存為書籤的網頁。尤其要嘗試將那些在操作流程中間出現的頁面保存為書籤,例如購買流程中的結算頁面。需要注意觀察的問題跟“後退、前進、歷史”一樣。

"

相關推薦

推薦中...