情景驅動的測試方法是Cem Kaner和James Bach提出來的,指出了軟件開發的復雜性以及不可預測性,因此在這情景下,測試人員需要積極發揮主觀能動性,而不是墨守成規的遵守一些通用的規定和流程??傊?,這是一種為以人為本的測試方法論,強調主觀能動性,而不是固定的流程和方法。
情景驅動測試(Context-Driven School)的7個基本原則(http://www.context-driven-testing.com/)
1)任何實踐的價值都依賴于情景(Context)
2)好的實踐只作用在特定的情景下,沒有通用的最佳實踐
3)在任何項目的環境下,共同協作的人是最重要的部分
4)項目的進展常常是不可預測的
5)軟件產品實際上是一個解決方案。如果問題沒有被解決,產品也不可能工作
6)好的軟件測試是一個非常挑戰性,需要智力的過程
7)只有經歷過項目整個過程,通過決策力和技能,我們才能在正確的時間做正確的事情來測試我們的產品
舉個例子,考慮2個項目
1)個飛行控制軟件,“正確行為”意味著高技術含量和數學科學。它必須服從FAA(聯邦航空局)的規定。做或者不做任何事情在20年內都可能成為法律訴訟的證據。開發人員共同營造著一種謹慎,精確,可重復性和反復檢查每個人工作的工作氛圍。
2)另外一個項目是開發一個用于互聯網上的字處理軟件,“正確的行為”是引導微軟Word的大量用戶使用這款軟件。沒有航空法規的約束,但需要考慮軟件發布時間:從現在起20個月,項目結束時,它可能成功,可能失敗。開發人員不可能依照第一個項目的工作風格,因為這種風格將不利于項目的開展。
情景驅動的測試人員總是盡力選擇自己的方式來測試不同軟件,而不是總是應用所謂的“最佳實踐”,不同的環境下,選擇的實踐活動總是不一樣的。
情景驅動的測試方法與敏捷測試(Agile Testing)對比:
1) 敏捷測試強調單元測試的重要性,情景驅動的測試方法卻強調在不同的環境下選擇不同測試方法,包括如果開發人員的單元測試用例很多或則很少情況下。
2) 敏捷開發強調迭代的軟件開發周期,情景驅動的測試方法卻適合不同類型的軟件開發周期,當然,它不是很適合瀑布型模式。
情景驅動的測試方法與探索式測試(Exploratory Testing)方法對比:
1)探索式測試來源于手工測試方法,主要強調測試人員學習軟件的過程。情景驅動的測試方法覆蓋更多的內容。
2) 探索式測試是和腳本化測試(Scripted Testing)相對的,適用于時間緊,少文檔的環境下。
我喜歡軟件測試,喜歡復雜的軟件測試,喜歡主動的進行測試,這正是情景驅動測試方法所適用的。