周玨
摘要:探索式測試是一種軟件測試風格,它強調(diào)獨立測試人員的個人自由和職責,為了持續(xù)優(yōu)化其工作價值,將測試學習、測試設計、測試執(zhí)行、測試結(jié)果分析作為相互支持的活動,在整個項目過程中并行地執(zhí)行。但如何將探索性測試落地到團隊、個人,達到團隊管理規(guī)范、個人行為規(guī)范,從而高效、閉環(huán)地實施探索性測試,本文從這角度提供了具體的實施方法。
關(guān)鍵詞:探索性測試;探索性測試實踐;探索性測試實施
中圖分類號:TP311? ? ?文獻標識碼:A
文章編號:1009-3044(2021)10-0272-03
說到探索性測試,大家都耳熟能詳,特別是在敏捷測試的條件下,探索性測試成為高頻詞。其中HTSM模型(啟發(fā)式測試策略模型Heuristic Test Strategy Model,簡稱HTSM)、SBTM模型(基于測程的測試管理Session-Based Test Management,簡稱SBTM),包括探索性測試如何結(jié)合到項目研發(fā)流程中等,也已被大家熟知。這次本文并不想探討上述這些話題,而是結(jié)合團隊的實踐經(jīng)歷,重新聚焦到探索性測試活動本身的實施和開展上,簡而言之就是如何更好地實施探索性測試?
為了保證邏輯上的完備性,首先還得談到探索性測試的定義和本質(zhì)。探索性測試的提出者CemKaner博士說探索性測試是一種自由的軟件測試風格和思考方法,強調(diào)獨立測試人員的個人自由和責任,為優(yōu)化工作價值,在項目過程中并行測試相關(guān)學習、測試設計、測試執(zhí)行和測試結(jié)果分析。細細研究這個定義,我們首先就發(fā)現(xiàn)了探索性測試的實施難點,它只是一種測試風格。這就和人的穿衣風格類似,有些人喜歡小清新韓范兒,有些人喜歡西裝革履職業(yè)范等等,這只是一種思想和個性的展現(xiàn),無關(guān)好壞優(yōu)劣。其實,CemKaner也明確提出:探索性測試不是測試技術(shù);這也就是說,探索性測試在理論上來說談不上“術(shù)”。但我們現(xiàn)在恰恰需要和大家來探討怎么穿衣搭配,能讓自己變得小清新。這個確實不太容易。第二,探索性測試要并行地進行測試學習、測試設計、測試執(zhí)行和測試結(jié)果分析;探索性測試希望通過不斷的同時進行學習和設計,并把想法及時注入被測系統(tǒng)中,快速獲得系統(tǒng)反饋,然后再來決定下一步的動作。這個定義是不是有點似曾相識?沒錯,這很符合敏捷思想,所以我們也應把探索性測試看作敏捷方式的測試過程。
1 探索性測試實踐概述
雖然談實施不太容易,但根據(jù)我們自己的實踐,還是把如何開展探索性測試簡單地用幾個詞串聯(lián)起來:匯信息、畫地圖、定范圍、做記錄、講思路、理報告。 每個詞很容易理解,但有很多細節(jié)需要詳細描述。通過這個過程,想傳遞的信息是,做好探索性測試,不僅僅需要從個人層面來努力,作為團隊組織層面,也非常有必要幫助個人來完成探索性測試,輔助個人進行測試分析、測試決策,提升個人的思維水平。
2 探索性測試實施
2.1 匯信息
搜集信息,KYM(Know Your Mission),這已深入人心。但是為什么要把它再拿出來談,是因為對于探索性測試來說,搜集信息格外重要。在測試三角形中,從塔底的UT(Unit Test),到塔尖的ST(System Test),最后再到尖尖一角的ET(Exploratory testing),可以說對于測試量最小的ET,一定要做到最高效。UT/FT/ST對ET來說都是重要的基礎信息輸入(當然這還遠遠不夠)。想想我們的特性移交過程,需求分析說明書、特性移交表、自動化用例等等,除了這些你還能收集到什么信息?你和特性團隊聊過了嗎?業(yè)務代碼你獲取了嗎?你和測試專家溝通了嗎?你了解BA(當前最接近需求的人)知道的所有外場應用的信息嗎?等等,這些都是你最容易忽略的地方,這些都需要你面對面去溝通,千萬別局限在業(yè)務實現(xiàn)文檔上,那樣你肯定做不好ET。做ET你需要的是靈感,需要重新思考你的測試維度和思路,特別是在特性團隊已經(jīng)完成FeatureDone的情況下,特別是在特性團隊是按照你原先的測試方案完成FeatureDone的情況下,新思路對后續(xù)的測試分外關(guān)鍵。而這些過往過程信息越詳細,你才有可能捕捉到某個被N多人忽略的方向,獲得你的新思路。
2.2 畫地圖
有了這些信息,接下來,需要做的是一個簡單設計。其實,這個過程,最重要的內(nèi)容是測試分析。測試分析和測試設計,嚴格意義來說是兩個不同的過程。實例化一下,當通過“匯信息”獲取了大量信息后,應該如何測試?有哪幾個方向可以進行探索測試?在哪個具體方向探索?這些都需要進行分析。隨著敏捷的逐步深入,我們的測試應該越來越多地注重測試分析。而對于測試執(zhí)行,特別是在一個技能相對成熟的團隊,關(guān)注度是不應該過高的。通過分析,我們可以對待測試特性的過往情況和風險有明確的了解,其中需要進行測試的部分,就進一步細化,進行測試設計,不需要測試的部分,就直接Pass。在測試分析的過程中,可以通過思維導圖等方式,來書面化我們的想法,形成測試地圖。為什么需要這個地圖,首先它能夠在后面ET執(zhí)行過程中,輔助我們進行ET深度和廣度的控制和收放(這一點非常重要,涉及ET執(zhí)行人員的過程自我管理,下文也會提到)。第二,在進行ET Debrief時,可以清晰地表達ET過程(這一點也會在下文詳述)。
2.3 定范圍
這包括兩個方面,一個是內(nèi)容,一個是時間。ET中的Session和Charter其實說的就是這個事。關(guān)于內(nèi)容的選取,可以選擇風險最高地方的入手,也可以抱著學習基本特性的目的入手,選擇的依據(jù)更多在于測試目的。在時間上,對于大型電信設備,一個Session可能需要2-3小時。這些內(nèi)容,可以參考ET基礎知識,本文不贅述。本文想說的是,通過實踐發(fā)現(xiàn),不受打擾的時間盒對于ET開展的效果有比較大的影響。時間盒,顧名思義,是一段不受打擾的時間,而在絕大多數(shù)情況下,這個時間盒在ET過程中很難保證,經(jīng)常會被ET以外的事情打擾,甚至完全打斷這次Session。其次,在ET的過程中,我們也可能會因為發(fā)現(xiàn)了一些疑點,而不斷進行深入測試,超出了時間盒等等。這些情況,其實涉及ET過程的自管理。這也是ET理論里面“Dynamic循環(huán)”提到的“自我管理循環(huán)”。包括時間管理和內(nèi)容管理。想要做好一個ET,一定要有比較好的自我管理能力。要把時間和內(nèi)容規(guī)劃好(請注意,重點是ET執(zhí)行人員的時間和內(nèi)容的自我規(guī)劃,而非組織安排),要在ET的執(zhí)行過程中,控制好自己的測試內(nèi)容。這時“畫地圖”的成果——測試地圖,就可以提醒我們進行合理的收放控制,是不斷深入,還是廣度為先。這種自我管理能力,才能保證ET的測試效果。所以“定范圍”更多的是自我管理。
2.4 做記錄
在ET的過程中,請一定要做好記錄,雖然在ET理論中沒有這種強制要求,但是記錄對ET真的非常重要。為什么要做記錄。在回答這個問題前,我們先來嘗試回答一下,為什么有些人會被稱作牛人?他到底牛在哪里?如果拋棄形而上的物質(zhì)事物,他的思維可能是他最超出常人的地方吧。而這也是決定ET效果的重要因素。做好記錄,實際上是在幫助我們梳理ET執(zhí)行過程中的思考路徑。同時這個記錄是做給自己看的,不是用來給別人看的。通過這個記錄,當做完一個Session后,測試人員應該仍然能夠清楚的回憶出走過的測試路徑。做記錄的時候,需要記什么?這個沒有固定的內(nèi)容,可以記測試點、時間、發(fā)現(xiàn)的Bug等等,但是有一點一定要注意,如果在測試的過程中,測試人員做了什么決策,請務必記錄下來。也就是說,在記錄中要能夠看出測試人員的決策點,這些決策點是后續(xù)Debrief的重要內(nèi)容。在記錄的形式上,有些人愛用魚骨圖,有些人愛用思維導圖,有些人愛用即時貼,有些人就隨手記在本子上,這些都行;總之,想怎么記都可以。做記錄聽起來很簡單,但在實踐過程中,測試人員一般都不太容易去嘗試記錄測試過程(注意是測試過程,而不是單純的測試點),因為記錄本身也需要花費一點時間,但是探索性測試一定要嘗試著去做,不一定太復雜,自己看懂就好。
2.5 講思路
ET中非常關(guān)鍵的一個活動——Debrief。Debrief的原意是審查,其實是由ET的執(zhí)行者和其他干系人,比如SM(Scrum Master)、TL(Technical leader)、DEV(Developer)等一起來溝通Session的測試情況,然后決定下一步的測試方向和計劃。其實,在Debrief的時候,有三點需要留心,首先,測試人員在剛開始做Debrief時,可能會按照下面這種說法來描述:這個Session,我測試了什么,發(fā)現(xiàn)了什么,接下來決定干啥…… 這樣其實挺好,達到了Debiref原本的要求。但這樣做遠遠不夠。我們知道,ET和個人能力有很大關(guān)系,那么我們的測試能力又如何提高呢?重要的話說三遍:牛人牛在他的思路。我們在Debrief時,邀請了那么多牛人,那我們?yōu)槭裁床豢纯此麄兊臏y試思路是什么呢?但是怎么看?你首先就要說出你這個Session的思路,和它走過的測試路徑,特別是你在測試過程中的那些決策點。這時“做記錄”的成果就能排上大用場了。它能夠幫助你清楚的復述出你的測試思路和測試決策。而大牛們重點要關(guān)心的,或者可以提出有價值建議的,就是告訴你,你這個決策可能還不完備,你的思路還有哪些缺漏,你應該怎么思考問題。而具體的某個測試點是不是要測,你自己完全可以做確定。所以,應該充分利用Debrief過程向大牛們?nèi)W習他們的精髓。我自己親身經(jīng)歷過一次成功的Debrief,當執(zhí)行者講述到我當時是這么想的……所以我決策這么干時,一位同學馬上跳出來說,我覺得你應該重點測試……原因是……你應該按照這個方向走。大家聽完,立馬一股清風撲面的感覺。第二,做Debrief時,不要包含過多的內(nèi)容。為了保證debrief的效果,應該加大Debrief的頻度,讓每次Debrief的內(nèi)容精簡、聚焦。我們在一個測試執(zhí)行工作量3天的特性中,嘗試做了5次Debrief。每一次,都會有一些新想法冒出來,然后就會立馬在下一個Session去嘗試。第三,建議不一定要等到測試執(zhí)行一段時間后,或者測試完成時,再進行Debrief,這樣做更類似于復盤。我們應該盡量讓Debrief做到承上啟下,做到提前為主、預防為主。我們現(xiàn)在的做法是,在完成“匯信息”“畫地圖”后,就做第一次Debrief,先整體聊聊這個特性的ET測試價值,決定我們第一步往哪里做。其實Debrief,是ET當中一個相對比較容易落地的小實踐,它體現(xiàn)了ET在實施過程中一個非常重要的方式——ET不是一個人在戰(zhàn)斗。作為團隊來說,有責任利用團隊優(yōu)勢,更好地幫助、指導、教練(注意是教練,不是管理)測試人員更好的實施ET。讓我們就從Debrief做起。
2.6 理報告
這一步驟,相對來說比較容易理解。但要注意兩點,首先,ET理論中推薦進行TBS分析,也就是整體分析我們在真正的測試工作、Bug發(fā)現(xiàn)與定位、準備工作上的時間分布,從而發(fā)現(xiàn)問題。這一部分,大家可以嘗試。第二,我們需要把整個ET過程中的所有信息進行匯總,注意是所有信息,包括沒有測試的地方、風險等等,信息越多越好。因為作為測試工作,我們的核心價值并不是判斷結(jié)果,而是提供信息。
2.7 其他
除了上面幾步,還有點細節(jié)需要補充說明。
首先說說ET在執(zhí)行中的一種形式——結(jié)對。結(jié)對是敏捷中一個比較經(jīng)典的實踐。在ET執(zhí)行過程中,也有應用。結(jié)對這種方式會更有助于ET的開展嗎?通過我們的實踐發(fā)現(xiàn),在ET中使用結(jié)對方式可能也會有一些問題,這可能也是ET本身的特點所決定的?;叵隕T給執(zhí)行者所創(chuàng)造出來的自由空間,它希望執(zhí)行者能夠在這個空間內(nèi)根據(jù)自己的想法、實踐去進行嘗試,而在這種自由空間下,很難說某種嘗試、某種路徑的是非好壞。而結(jié)對則希望在執(zhí)行的過程中,能夠通過交流、碰撞,來達到相對更好的一致。我們在結(jié)對ET的嘗試中發(fā)現(xiàn),在很多情況下,雙方的思路其實并不能很快達成一致,更沒有好壞之分,大家之間互相的研討反而導致個體的思路受到干擾,效率降低。其實我們更推薦,由多個人分別獨立的去做同一個特性的ET,這種方式大家在各自探索時能夠保證各自的獨立性和連貫性,而在Debrief時,又能夠看到雙方的思路差異,互相啟發(fā)。
其次,隨著個人不斷地進行ET,個人可以嘗試總結(jié)自己的HTSM模型。把自己曾經(jīng)的測試過程、Debrief、以及其他渠道獲得的啟發(fā)點進行歸類整理,形成自己的啟發(fā)式模型。這對于自己測試技能的提升非常有意義。
最后,一定要說一下對于ET質(zhì)量的評價和度量,因為這是一個非常引人關(guān)注的問題。ET的質(zhì)量到底應該如何評價?可能被問得最多的一個問題就是,通過ET發(fā)現(xiàn)了多少故障?其實當仔細去思考ET質(zhì)量這個問題時,你一定會發(fā)現(xiàn)對于ET的評價肯定不能這么簡單。舉個例子來說吧,還是上文提到的那個我們做了5次Debrief的特性,我們通過ET并沒有發(fā)現(xiàn)什么傳統(tǒng)意義上的Bug。但是當我們?nèi)ズ蛨?zhí)行人員、項目干系人溝通,詢問他們對這個特性的質(zhì)量感受和評價,他們都覺得測試很靠譜。是什么給了他們這種判斷?其實就是我們通過ET所匯總呈現(xiàn)出來的各種信息。對于ET,個人認為使用360度評估更加合理,如果所有的人都認為質(zhì)量可控,那么我們沒有理由說,不發(fā)現(xiàn)故障的ET就是效果不好的ET。如果我們把ET比作畫家的一幅作品,我們真的很難用KPI來說明這幅畫有多美,因為做ET的不是機器。
3 結(jié)語
雖然有了“匯信息、畫地圖、定范圍、做記錄、講思路、理報告”,但是在本文的最后,還是讓我們再次回歸ET的本質(zhì)。探索性測試,它是把測試學習、測試分析、測試設計、測試執(zhí)行充分同步結(jié)合的測試方式,它更關(guān)注學習與分析;它是想通過實際的反饋來幫助我們進行測試決策;它更關(guān)注縮短測試反饋環(huán)。它只是一種測試的風格。而這種風格其實不就是測試原本應該的樣子嗎?
參考文獻:
[1] (美)James,A.Whittaker..探索式軟件測試[M].方敏,張勝,等譯.北京:清華大學出版社,2010.
[2] 史亮.探索式測試實踐之路[M].北京:電子工業(yè)出版社,2012.
【通聯(lián)編輯:李雅琪】