有時復雜性可能是無法抗拒的。測試員的意志可能會被擊垮。因此,當要測試復雜和使人畏懼的功能集合時,可間歇進行。人的頭腦具有處理復雜問題的驚人能力,但是不要指望馬上就能理解復雜產品??稍囍妊芯繌碗s產品30分鐘或一個小時,然后停下來干點別的。這就是陷入與退出(P1unge in and quit)法。不要擔心在這段不長的時間內效率不高,如果覺得問題太多,則盡快退出。
這種方法的優點是,除了選擇產品的一部分并研究外,絕對不需要計劃。經過幾個輪次的陷入與退出,就會開始明白產品的模式和輪廓,很快就會在頭腦中更系統、更具體地測試和研究策略。這種方法很神奇。最終,會掌握足夠的知識以設計全面的測試計劃,如果認為這些計劃能夠完成自己的任務。
經驗38,運用試探法快速產生測試思路
試探法(hcuristic)是一種經驗規則,是一種基于經驗做出猜測的方法。這個詞源自希臘語,表示“開始發現”。試探法并不能保證得到正確的答案或最佳答案,但是很有用。最早運用試探法的著作是《如何解決它》(How to Solve it)(Polya l957)。
出于可能的測試用例數量是無限的,因此肯定要選出在所面臨的時間和預算約束條件下有效的少量測試用例。有經驗的測試員會收集并共享能夠改進其猜測質量的測試試探方法。一組好的試探方法有助于很快地生成測試。以下是采用試探法測試的一些例子:
·測試邊界。邊界更有可能暴露規格說明的模糊問題。
·測試所有錯誤消息。錯誤處理代碼與主流功能代碼相比,一般比較弱。
·測試與程序員的配置不同的配置。程序員已經偏信自己的配置沒有問題。
·運行比較難設置的測試。在其他條件相同的情況下,易于設置的測試更有可能已經被執行過。
·避免冗余測試。如果某個測試實際上是重復其他軟件測試,就不會產生新價值。
為了明智地運用試探法,請注意:試探法中并沒有智慧,智慧來自測試員。試探法所能夠做的,只不過就是為測試員的思考提出建議。盲目使用自己并不了解的試探法并不是好的測試實踐。在收集測試方法時,要了解每個方法背后的原理,以及更適用和不太適用的條件。
經驗39,測試員不能避免偏向,但是可以管理偏向
測試員是有偏向的,這使得測試員選擇一部分測試的可能性要比其他測試大。如果有一個很長的編輯字段,測試員也許更可能輸入諸如1111111111,而不是3287504619,因為輸入字符重復的字符串,要比從0到9隨機選擇數字更容易。也許這是一種很小的偏向,但仍是一種偏向。更糟的偏向是,大多數測試員傾向于測試最可視的功能,不管是不是最重要的功能。此外,大多數測試員還傾向于考慮認為與自己類似的用戶,傾向于使用非常簡單、非?;闹嚨妮斎?,而不是具有中等復雜度的現實輸入。
以下是一些常見偏向:
·同化偏向。更有可能把未來的測試結果解釋為總體上證實自己對產品的看法。
·證實偏向。更有可能關注確實會證實自己對產品看法的測試結果。
·可用性偏向。如果頭腦中已經想到一種用戶以某種方式操作的場景,則更 有可能認為這種操作更常出現。
·最初印象偏見。更信任所做的第一次觀察。
·最新印象偏見。更信任所做的最近一次觀察。
·框架效應。對錯誤報告的反應與措辭有很大關系,不管其真正含義如何。
·知名偏向。把碰巧認識的用戶意見放在更重要酌地位。
·表達偏向。期望較小的問題也許有較小的原因,而嚴重問題會有大原因。
測試員不能避免這些偏向,因為這些偏向在很大程度上已經固化在頭腦中。測試員能夠做的是管理偏向。例如,只需通過研究偏向并在實踐中注意,這樣在思考時就可以更好地進行補償。多樣化也可以抵御過強的偏向。如果測試員集體談論測試問題,可以將一個測試員的偏向降低到最低限度。
根據定義,試探法也是一種偏向。使用試探法,是因為其偏向可以以比較好的方式引導測試員。