好的軟件測試人員會向重視軟件價值的人提供有關于價值的關鍵信息,他的職責類似于書籍審稿人或電影評論家。
Great software testers make aesthetic judgments about the suitability of entire approaches to software development itself.
偉大的軟件測試人員對于全體軟件開發方法的適當性做出美學的判斷。
“審稿人”隱喻帶給軟件測試全新的視角:不僅發現錯誤,而且驅動軟件向更好的方向發展。審稿人也是“反饋信息”,她不會代替作者去寫作,但是她會對文章主題、篇章結構、論述邏輯、研究方法、實驗結果、引用文獻等提出深刻的、富有洞察力的問題。要回答或解決這些問題,作者必須通盤考慮整篇文章,從架構到細節都作出深思熟慮的改進或重組。一個好的審稿人能夠推動作品向更高層面發展。
作為曾經的學術論文審稿人,我在不同的會議審稿中三次讀到同一篇論文。這意味著該論文至少被拒稿過兩次。第一次投稿時,該稿件的質量已經不錯,但是被拒絕了。后來,作者作出了重大修改,再次投稿,無奈再次被拒稿。于是,他再次大幅度修改。第三稿可謂脫胎換骨,質量遠勝第一稿。我不禁感嘆:如果在第一稿的時候就讓它通過,那么就錯失了一篇更佳的稿件,作者就喪失了反復鍛煉并提升自我的機會,審稿人的把關和反饋何其重要!
軟件開發自然有其獨特的規律,不能反復地大幅度修改,但是將測試推向更高層面,全面且深刻的洞察軟件產品和開發過程,無疑是測試的發展方向之一。
此外,測試還有一個不容忽視的使命:幫助測試者和團隊成長。測試專家James A. Whittaker提出了一種測試實施方法:Bugs → Patterns → Test Automation。
Bugs:找到軟件缺陷(Bug)。
Patterns:分析出缺陷的根本原因(Root Cause),編寫出一個模式(Pattern),用它捕獲相似的缺陷。一個模式是一個結構化的攻擊手段,它包含如下內容。
何時實施該攻擊?
該攻擊會捕獲何種錯誤(Fault)?
利用該攻擊如何識別軟件失敗(Failures)?
如何指導攻擊?
樣例和分析。
Test Automation:識別出攻擊過程中重復的、費力的(Laborious)部分,編寫一個工具去自動化模式的使用。這里的測試自動化,不是常見的自動化執行測試用例,而是提供計算機輔助(Computer Assisted)工具,讓測試者可以充分地利用他的頭腦(Mind)。
按照James的方法實施軟件測試,測試者和測試團隊可以積累一批有效的軟件測試方法和測試輔助工具。這可以幫助他們更有效、更高效地測試現在和未來的項目。也就是說,有積累的測試能夠幫助測試者成長。如果他將經驗和工具分享給測試團隊,整個團隊可以得到提高。如果他秉持“不二過”的精神,將所獲得的典型錯誤總結之后分享給開發團隊(這里有一個技術案例),那么可以提高開發團隊的水平,讓他們在編程時就避免一些典型的錯誤。
可見,不斷反思與積累的測試過程有助于培養好的測試者和開發者,有助于打造一支更好的開發與測試團隊。而更好的團隊將有更大的可能去創造更佳的產品。
最后,我希望有更多的人去仔細閱讀和思考榮浩先生的《關于測試的八個問答》,那確實是一篇值得反復體會的佳作。在閱讀過程中,不妨大膽地與作者展開“討論”。這世界上并不存在“神”,在軟件實踐中也不存在刻在石板上的“箴言”。大師們尚在不停地反思、不停地否定過去的自己,我輩更應該努力求索。
原文轉自:http://www.anti-gravitydesign.com