作為一名出色的測試員可以帶來更多的商業價值,起到關鍵性作用,本文提出了一些成為優秀測試員的實踐建議,這些建議源于我對許多掌握專業技術備受尊敬的測試員的觀察,這些建議可以幫助你提高效力和效率。你可以選擇一些目前可以實施的實踐方法來成為優秀的測試員,你在這裡可以學到:
一 .針對不同背景的測試
二 .使用啟發式模型關注重要的測試特征而不會遺漏核心元素
三 .掌握你所需要的技術和技能來提高你的專業水準
四 .知道有時候一個好問題比正确的答案更重要
測試新手和專家之間的差別在哪裡?你的工作中有什麼可以為公司帶來價值,加快生産速度?本文講述了如何成為優秀的測試員,企業需要怎樣的測試人才。
1.更好的測試基于背景驅動(Context-Driven)
想要把測試做得更好需要思考,你必須考慮怎樣才是基于目前情況下最好的測試,而不是簡單重複以前的測試或是盲目模仿一些最佳實踐,某種情況下最好的測試方法放在其它情況下也許是最糟糕的方法。
2.更好的測試基于模型(Model-Based)
模型可以激發你的靈感來確定對基本元素的最大限度測試覆寫,測試專家都有很好的模型來引導他們很快開始有效的測試,你的測試專業技術很大程度上依賴于你所掌握的測試模型執行能力。
3.更好的測試需要精通測試技術
如果你所擁有的唯一工具是錘子,那麼所有的東西看起來都像是釘子。如果選擇正确的工具那麼工作就會變得容易很多,學習最好的實踐就是去精通測試技術。
4.更好的測試需要實踐來提高技能
我們的孩子去到球場提高他們的運動技能,沒有持續的鍛煉他們不能掌握娴熟的技能來提高競争能力,測試也是如此。沒有不斷的實踐我們不能提高自己的技能,實踐是提高技能的有效方法。
5.好的問題有時候比正确的答案更重要
測試中的一個危險就在于我們浪費了太多時間去回答錯誤的問題,如果有人問你“可以像上次那樣測試嗎?”,回答“可以”很容易,但是,更好的問題是“我可以比上次做得更好嗎?”學會對任何事情提問,至少在你的腦子裡這麼做。
6.更好的測試不僅僅需要技術和技能
知道了怎樣測試還不夠,我們是與人群組織一起工作。要想在團隊中起到重要作用我們必須提高自己的交流能力和上司才能,學會如何與别人共事可以讓你想做的事情辦起來更容易。
7.更好的測試結果源于對客戶更好的了解
我們如果對客戶和行業領域了解得越多,我們就可以更好地確定傳遞的軟體适合他們使用。
8.更好的測試基于背景驅動(Context-Driven)
想要把測試做得更好需要思考,你必須考慮怎樣才是基于目前情況下最好的測試,而不是簡單重複以前的測試或是盲目模仿一些最佳實踐,某種情況下最好的測試方法放在其它情況下也許是最糟糕的方法。如果你要突破普通測試員的境界而成為優秀的測試員,那麼背景驅動方法是必須的。你需要考慮資源、技術、時間、目标和人員。如果你的每次測試都用“一成不變”(注:原文是 one-size-fits-all)的方法隻會對項目造成損害,大多數“一成不變”的方法都不适合個别化的項目,考慮一下以下内容:
哪個更好?
A.回歸測試針對兩個不同版本之間的改動
B.最低限度的回歸測試獲得最少數量的測試用例覆寫
C.回歸測試隻針對改動部分
哪個更好?
A.自動化測試或者
B.手工的探索測試
哪個更好?
A.正常操作測試(軟體可靠性工程)
B.攻擊測試
哪個更好?
A.測試完成标準是沒有嚴重缺陷并且所有的低級别缺陷都有相應解決方法,所有的測試用例都執行過并且80%以上成功
B.測試完成标準由團隊基于ODC資料,缺陷資料和其它相關資訊共同來做出最後決定
每個問題的答案都需要知道基于什麼情況,哪種方式的回歸測試最好需要了解以下情況:
a).有多少時間來執行測試?
b).都有哪些測試用例?
c).代碼改動所涉及的範圍和複雜程度是什麼?
d).下一次測試什麼時候執行?
e).誰會用到測試後的代碼?
f).這些代碼修改的曆史記錄是什麼?重要性如何?可能會在哪裡用到?
沒有相關背景很難判斷技術、實踐和過程的價值。正如 James Bach所說,評定測試活動是好是壞以及成為一名優秀的測試員的關鍵就是提出背景設定問題,下面是一些背景設定問題的簡單樣列,這些都是測試中需要考慮的。
a).限制條件有哪些?(人員、預算、資源、技術、進度、過程等)
b).目标、目的和期望是什麼?
c).“成功”的含義是什麼?
d).“品質”的含義是什麼?
e).項目環境是什麼?(産品,工具,配置,技術程度、态度、團隊等)
f).什麼人做這項工作?我要怎樣合理利用他們?
g).什麼人參與進來?他們的重要性怎樣?
h).什麼測試過程和技術用起來會最好?
i).有什麼可以使用?
j).有什麼可以選擇?
如果你仔細觀察,你可能會對此感到驚訝,我們常常沒有經過足夠的背景思考就開始測試,同樣地,你可能還會産生同樣的驚訝,在初期少量的背景設定問題就可以帶來更為有效的測試方法。
同時優秀的測試人員還需要具備以下這些品質
軟體測試員的目标是找出軟體缺陷,盡可能早一些。
軟體測試員的一個基本素質是:打破沙鍋問到底。
大多數軟體測試員應具備的素質:
1.探索精神:軟體測試員不會害怕進入陌生環境。 有較強的學習能力,可以用最快的速度成為一個新的行業的專家。
2.故障排除能手:軟體測試員善于發現問題的症結,喜歡猜謎。可以迅速的通過事物的表面現象發現事物的本質,能夠從瑣碎的現象中發現内部的聯系和規律。
3.不懈努力:軟體測試員總是不停嘗試。他們可能會碰到轉瞬即逝或者難以重建的軟體缺陷;他們不會心存僥幸,而是盡一切可能去尋找。 隻要出現過的缺陷,就說明一定是存在的,找不到隻能說明沒有能夠真的重新當時的環境和全部的操作細節。測試人員要能夠敏感的察覺到細微的變化,并立即開始在大腦中努力重制之前的整個場景。把殘存的瞬間記憶整理在紙上,通過分析,把這些碎片整理起來,最終找到缺陷重制的場景和規律。牢記:在做這樣的事情之前給自己制定一個規則,例如隻花費N多時間來努力重制這個缺陷,如果超過這個時限還沒有找到,那麼就把目前的工作整理成一份文檔保留下來,然後去按計劃繼續進行下面的工作,直到再次“偶遇”這個缺陷。
4.創造性:測試顯而易見的事實,那不是軟體測試員;他們的工作是想出富有創意甚至超常的手段來尋找軟體缺陷。 雖然創造性是必需的,但是還是更建議把大多數時間放在熟悉真實使用者的工作上,測試的基礎是現實中已經存在的場景,在冥思苦想新的場景的時候,先同使用者溝通一下,試圖發現一些新的場景效率會更高一些。有很多事實并不是那麼顯而易見。
5.追求完美:他們力求完美,但是知道某些無法企及時,不去苛求,而是盡力接近目标。 做任何事情都應當有一個政策,配置設定給每項任務一個名額或者一部分資源(也就是說如果這件事情成功,那麼它帶來的收益值得我們付出的最大成本),當這部分資源耗盡時,就停止這項任務。
6.判斷準确:軟體測試員要決定測試内容、測試時間,以及看到的問題是否算作真正的缺陷。 要不斷的提高自己的專業素養,除了行業知識、測試專業知識以外,還要盡可能的去學習一些軟體行業的基礎知識,例如作業系統、資料庫、程式設計開發、計算機網絡等。
7.老練穩重:軟體測試員不害怕壞消息。 其實做任何工作、任何事情都一樣,人生就是一個不斷的發現問題和解決問題的過程,沒什麼好怕的。
8.說服力:軟體測試員要善于表達觀點,表明軟體缺陷為何必須修複,并通過實際示範力陳觀點。 測試工作開展的好壞,很大程度上就靠溝通能力和展示自己工作的能力了。
9.在程式設計方面受過教育。一個有過開發經曆的測試人員,對系統的領悟能力和學習速度同沒有開發經曆的測試人員是截然不同的。