我經常會和一些測試人員做結對測試設計,他們之中有很多并沒有系統的學習我的那套MFQ&PPDCS方法
結對的過程,其實就是我不斷問他們問題的過程。通過問問題,我了解了粗略的需求,了解了被測對象的特征,以便決定用哪一種模型。
然后,我們一起畫model。畫model的過程就是測試分析的過程,很多需求的細節層層展現出來,這些細節有些是他們在前面介紹需求時忘記提及的、有些是他們此前從未考慮到的,而我只是通過不停的問問題,讓思維發散,提醒他們想到這些細節。
我們都知道,領域知識是做好測試的前提,沒有領域知識只有測試知識是做不好測試的;其實反之亦然,只有領域知識,缺乏測試知識,也做不好測試(我的意思是,你仍然可以做測試)。結對的人員,“獨自去做測試設計”,和“與我結對做測試設計”,造成結果差異的根本原因是什么呢?
是我懂因果圖、狀態圖這些測試設計技術而他們不懂嗎?也許有的時候確實有一點這方面的因素,但我想更重要的不在于此。一個例證,我此前培訓過多期MFQ&PPDCS方法,所有參與培訓的人他們現在的測試設計提高了嗎?這些方法他們使用得很好了嗎?我看到的是成功者不在多數。那么原因是什么呢?
通過結對過程我發現,除了測試技術,更重要的導致結果差異的一個原因在于– 思維 — 人的思考方式,人的大腦,英文叫mind。比如有一次結對,同樣是應用狀態圖,我會做的是:
- 測試目標應該鎖定在哪里、各個部分之間有什么關聯 (系統性的思考systematic thinking、識別真正的問題的能力);
- 除了結對人員描述的,還可能有哪些情況、分支、輸入輸出等(發散性思維defocused thinking、逆向思維reverse thinking);
- 對結對人員所描述的場景,我會不停的問為什么,問原因,問為什么是這樣原因導致的,問為什么不是別的原因,問導致這個現象還有什么原因等等(挑剔的思考critical thinking);
- 我們畫model的過程并不是一氣呵成,而是先畫一點,然后再討論,再畫一些,甚至重新畫,甚至重新選擇model,再討論(輪換的思考和實踐alternative thinking)
一個好消息是,這些測試人員都應具備的思維能力或者叫軟技能,都是可以通過訓練提升的。參加過本屆ChinaTest測試游戲坊的人應該有更多體會。面對同樣一個挑戰或難題,為什么有的人可以迅速找到答案,有的人卻感覺無從下手?測試的過程就是解決問題的過程、就是發現未知的過程、就是學習的過程,你的測試思維很大程度上決定了你的測試結果。
具備a testing mind是優秀測試人員的必備素質,對我們產品測試的成功意義重大。這使我想到了很多產品的一個策略:請很多外包人員做測試執行的工作,請有經驗的員工做測試設計的工作。前些日子,收到不少這些專職測試設計人員的求助,他們問我在這種情況下如何提升測試用例的有效性。其實在這種情況下,如果缺陷發現不理想,不完全是測試設計不充分,有很大一部分是測試執行不力導致的。想一想吧,你制定了很好的測試策略、你設計了很多優秀的測試用例(但不是詳細的測試用例),最后,你期待讓一些經驗不是那么豐富的外包人員依據你的用例去做測試執行?他們是否具備這些testing mind?如果不具備,又如何期望他們挖掘更多有價值的bug呢?
希望每個測試人員都能認識到測試思維的重要意義,并有意識的去訓練自己;希望每個測試管理者也能認識到這點,更有的放矢的開展測試人員能力提升的工作。
我在“認識你的測試思維”一門課中,最后有一頁膠片,拿出來共勉:
● 記住:你的思維的質量決定了你的測試的質量
● 開始把改進你的測試思維作為高優先級的事情來對待
● 要改進你的測試思維,先要認識你的測試思維
● 了解更多優秀測試人員的思維方式
● 可視化你的測試過程
● 通過測試過程回顧你的測試思維
● 分析你的測試深度和測試廣度
● 通過對比識別你的測試思維中的優點和待改進點
● 記住你的改進點,在測試實踐中,不斷有意識地改進你的測試思維