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