根據(jù)形式、覆蓋率和有效性來評估測試用例的質(zhì)量 《轉(zhuǎn)載》
蔡:如何評估測試用例的質(zhì)量?
鄭:測試用例質(zhì)量的評估,我主要考慮下面三個方面。
1、根據(jù)測試用例的形式評估其質(zhì)量,主要包括:
(1)測試用例與需求規(guī)格說明中需求條目的可追溯性。例如,每個需求條目至少有1個測試用例與之對應(yīng)。
(2)測試用例有無明確的期望結(jié)果。
(3)是否滿足公司內(nèi)部定義的測試用例模板。
2、根據(jù)測試用例覆蓋率評估其質(zhì)量,主要包括:
(1)需求的覆蓋率。例如,我們主要負(fù)責(zé)系統(tǒng)測試級別,因此測試用例的需求覆蓋率要求必須達(dá)到100%。
(2)質(zhì)量特性的覆蓋率。例如,我們在測試用例模板中采用測試類型的概念,要求每個功能的測試用例必須100%覆蓋所有的測試類型。
(3)測試平臺的覆蓋率。例如,針對我們目前的通信產(chǎn)品,每個功能都需要在不同平臺上運行;再如,不同的網(wǎng)元類型、接口類型、業(yè)務(wù)類型等。測試用例對這些平臺的覆蓋率也要求達(dá)到100%。
3、根據(jù)測試用例的有效性評估其質(zhì)量,主要包括:
(1)測試用例的缺陷發(fā)現(xiàn)率。我們采用的計算方法是,系統(tǒng)測試發(fā)現(xiàn)的缺陷數(shù)目除以執(zhí)行的測試用例數(shù)目(百分比)。
(2)腳本化測試的缺陷發(fā)現(xiàn)率。我們采用的計算方法是,根據(jù)測試用例步驟發(fā)現(xiàn)的缺陷數(shù)目除以總發(fā)現(xiàn)的缺陷數(shù)目(百分比)。如果這個百分比很低,則說明設(shè)計的測試用例的有效性方面比較差,不少bug是通過探索性測試發(fā)現(xiàn)的。
(3)遺漏到用戶現(xiàn)場的缺陷率。我們采用的計算方法是,6個月內(nèi)用戶現(xiàn)場反饋的缺陷數(shù)目,除以系統(tǒng)測試級別發(fā)現(xiàn)的缺陷數(shù)目與6個月內(nèi)用戶現(xiàn)場反饋的缺陷數(shù)目之和(百分比)。
每個公司和測試團(tuán)隊在評估測試用例質(zhì)量方面都會存在不同的度量指標(biāo),我們的要求是這些度量指標(biāo)要簡單容易收集,并且有利于改進(jìn)測試過程和測試團(tuán)隊的測試能力,但切記不會做針對測試人員個人的能力與績效的評估。
旁觀者說:從不同的側(cè)面去做度量,是一個更好的辦法。這種辦法可以在工作的很多方面得到應(yīng)用。
成為測試牛人的三個步驟
蔡:有網(wǎng)友提到一個問題,如何成為測試牛人?
鄭:不管是測試管理方向還是測試技術(shù)方向,都是可以成為測試牛人的。要成為測試牛人,你要有成為測試牛人的強烈要求。根據(jù)我的經(jīng)驗,下面的步驟有助于你成為某個領(lǐng)域內(nèi)的專家。
第一步,制訂目標(biāo):你希望成為哪個領(lǐng)域的測試牛人?例如,測試技術(shù)方面的牛人、測試自動化方面的牛人。
第二步,技能要求:要達(dá)到所制訂的目標(biāo),你需要具備哪些方面的技能?以我自己為例,希望自己成為測試技術(shù)專家,我主要從下面幾個方面不斷積累經(jīng)驗與技能。
(1)深入了解測試對象的背景知識與業(yè)務(wù)功能。例如,我是做寬帶接入產(chǎn)品的,除了測試對象的功能之外,我利用空閑的時間學(xué)習(xí)了VPN、MPLS、IPv6、IP路由交換協(xié)議等。
(2)深入了解我公司所采用的開發(fā)模型與測試流程,即需要清楚地知道在測試生命周期中,什么階段需要做什么事情,有哪些輸入與輸出。
(3)測試人員要深入了解各種軟件測試技術(shù)與方法。例如,我們采用敏捷開發(fā),在面向業(yè)務(wù)的測試過程中,探索性測試與測試人員的結(jié)對測試是我們經(jīng)常采用的測試方式,不僅可以有效發(fā)揮測試團(tuán)隊的主觀能動性與及時分析反饋能力,而且可以更好地分配資源與加強測試團(tuán)隊內(nèi)部的技能共享。
(4)培養(yǎng)測試人員的各種軟技能,例如,溝通與合作。對我而言,在業(yè)余時間喜歡看各種類型的書籍,例如,溝通、管理、心理學(xué)、演講、理解與記憶、經(jīng)濟(jì)學(xué)、思維等。廣泛涉獵各種知識,可以幫助我更好地提高軟技能。
第三步,立即行動。
“千里之行,始于足下”,堅實走出每一步,堅持走出每一步,成功就在前面等你。
旁觀者說:沒有行動,再好的目標(biāo)也僅僅是紙上的目標(biāo)。
面試中的考量
蔡:你的測試經(jīng)驗很豐富,肯定參加和主持過不少的測試職位的面試。你在面試中看重什么?
鄭:在面試過程中,我主要會從下面幾個方面進(jìn)行考量。
第一,會詳細(xì)了解職位候選人在測試對象的產(chǎn)品背景知識與業(yè)務(wù)知識方面是否滿足職位的要求。
第二,考察應(yīng)聘者在測試流程、測試技術(shù)與方法等方面是否有所了解,結(jié)合測試項目和產(chǎn)品的特點,判斷他所掌握的這些技能是否有助于測試團(tuán)隊的測試能力改進(jìn)。例如,我們一直做的是系統(tǒng)測試工作,時間與資源經(jīng)常非常緊張,除了基本功能的驗證之外,測試中很多的精力放在用戶業(yè)務(wù)的考察上,因此應(yīng)聘者了解基于場景的測試、基于風(fēng)險的測試等技能是受歡迎的。
第三,考察候選人在性格特征、為人處世等方面是否符合企業(yè)文化和團(tuán)隊氛圍。
同時,員工的上進(jìn)心與學(xué)習(xí)能力也很重要。例如,兩個候選人,一個有一年工作經(jīng)驗,另一個有三年工作經(jīng)驗。只要有上進(jìn)心,有一年工作經(jīng)驗的那位候選人在半年后就能做與有三年工作經(jīng)驗的那位朋友一樣的事情,甚至做得更好。
旁觀者說:這里也揭示了一個殘酷的事實:如果沒有高人一等的技能,年資有的時候會在找工作的時候幫倒忙(暫且稱為年資拐點)。我們要盡可能延遲年資拐點的出現(xiàn)。
當(dāng)然,面試中獲取每個候選人真實的信息并不是一件容易的事情,我自己會從候選人的日常時間安排、個人興趣愛好和業(yè)余時間計劃等方面收集與分析信息。
基于我面試的經(jīng)驗,下面是我給測試職位應(yīng)聘者的兩條建議。
1、面試前做好充足的準(zhǔn)備工作。
2、面試過程中,應(yīng)聘者誠實很重要。面試過程中有些問題不會,可以直接回答不懂或者沒有經(jīng)驗,切記不要不懂裝懂。沒有一個人是完人,面試官可以接受存在不足的候選人,但不會接受明顯撒謊的人。
旁觀者說:對,坦誠其實是面試中最好的態(tài)度。
軟件測試行業(yè)的發(fā)展前景
蔡:對軟件測試行業(yè)的發(fā)展前景,你怎么看?
鄭:我是2001年開始從事軟件測試工作的,從我個人的整個從業(yè)經(jīng)歷來說,軟件測試行業(yè)一直在往專業(yè)化、系統(tǒng)化、正規(guī)化方向發(fā)展,因此軟件測試應(yīng)該是一直在往上走的趨勢。針對軟件測試行業(yè)的發(fā)展,可以從行業(yè)本身與測試從業(yè)人員兩個方面進(jìn)行分析
軟件測試行業(yè)前景樂觀
首先,我國的軟件測試行業(yè)相對歐美國家,現(xiàn)在還是處于很年輕的階段。借鑒美國等軟件測試的歷史發(fā)展經(jīng)驗,測試行業(yè)發(fā)展的前景還是樂觀的。在歐美國家,軟件測試行業(yè)中經(jīng)常可以看到有30年甚至40年測試經(jīng)驗的從業(yè)人員;而在國內(nèi),像我這樣有11年軟件測試經(jīng)驗的人都算是“很老的”測試人了。因此,歐美國家中30/40年的軟件測試經(jīng)驗,可以說明這個行業(yè)能夠提供機(jī)會,讓他們一直做下去,而且做得不錯。我相信這個現(xiàn)象同樣適用于我國的軟件測試行業(yè)。
旁觀者說:有的朋友說,咱們國家的IT公司不養(yǎng)年紀(jì)大的人,你看身邊哪有年紀(jì)大的?對于這一點不必悲觀。之所以現(xiàn)在IT公司里沒有年紀(jì)大的員工,主要是因為我們的IT行業(yè)太年輕。只要IT行業(yè)持續(xù)發(fā)展,公司規(guī)模增大,慢慢就會出現(xiàn)白發(fā)斑斑的IT工程師。
其次,客戶對軟件產(chǎn)品的質(zhì)量要求越來越高。盡管說軟件產(chǎn)品的質(zhì)量是構(gòu)建進(jìn)去的,而不是測試出來的,但是軟件測試對提高產(chǎn)品質(zhì)量是建設(shè)性的,因此測試在研發(fā)中的不可或缺性將會不斷得到提升。這對軟件測試行業(yè)而言是利好消息。
旁觀者說:社會對軟件的依賴和對軟件質(zhì)量要求的提高,是軟件測試行業(yè)發(fā)展的基礎(chǔ)。從這個方面來說,測試從業(yè)人員可以去培育和引導(dǎo)社會對軟件質(zhì)量的要求。
第三,2012年的軟件測試很熱鬧,除了在上海成功舉行了中國第一屆軟件測試大會之外,在北京、上海等地輪番上陣了ISTQB測試沙龍、測試專題討論、軟件測試俱樂部沙龍等民間測試活動,并且參與的測試從業(yè)人員都是幾百人的量級。這樣的現(xiàn)象在前幾年是不可想象的,這從另一個側(cè)面反映了測試行業(yè)的蓬勃發(fā)展。
測試人員要提升自己的技能水平和價值
蔡:測試工程師將來會遇到哪些挑戰(zhàn)呢?
鄭:測試行業(yè)前景看好并不代表每個測試從業(yè)人員都有好的前景,這依賴于測試人員如何提升自己的測試技能與提供的測試價值。今后一段時間測試業(yè)界內(nèi)的熱點是:
1、自動化測試與手工測試之爭。隨著軟件測試成熟度的提高,加強自動化測試將是一個合理的趨勢,這對于測試從業(yè)人員而言是一個發(fā)展方向。但是自動化測試并不能代替手工測試,因為自動化測試的基礎(chǔ)來自于測試人員的思維與設(shè)計,測試從業(yè)人員應(yīng)該將自動化測試作為一個提高測試效率的手段,而不應(yīng)該是最終的目標(biāo)。自動化測試工具并不能保證項目的成功,但是可以幫助優(yōu)秀的測試人員更加出色地工作。
2、探索性測試與腳本化測試之爭。測試從腳本化測試的關(guān)注過程,到探索性測試更關(guān)注測試人員的思維與主觀能動性,并不能說明兩者之間誰好誰壞,或者誰替代誰的問題。測試人員需要做的是如何平衡兩者之間的關(guān)系,如何更好地發(fā)揮兩者各自的優(yōu)勢,彌補各自的不足。
3、敏捷開發(fā)模式下的敏捷測試。敏捷測試更強調(diào)整體團(tuán)隊運作,強調(diào)將質(zhì)量構(gòu)建進(jìn)產(chǎn)品而不是在生產(chǎn)出來之后再進(jìn)行測試,強調(diào)自動化測試,以及同時強調(diào)面向技術(shù)的測試與面向業(yè)務(wù)的測試。敏捷測試要求測試人員掌握熟悉范圍之外的新技能,例如,測試驅(qū)動開發(fā)、持續(xù)集成。
軟件測試行業(yè)將持續(xù)往前發(fā)展,而測試從業(yè)人員能否在這個平臺中同步前進(jìn),這依賴于測試人員自己的不斷積累、不斷實踐與不斷交流。要發(fā)展,測試人員同樣需要走出去,了解當(dāng)前的測試熱點、測試發(fā)展趨勢、測試?yán)砟钆c思想的趨勢等。
旁觀者說:博取各家所長,兼容并蓄。
書籍推薦
1、《軟件測試藝術(shù)》:軟件測試的經(jīng)典著作,展示了測試大師Glenford Myers多年的軟件測試思想和技術(shù)。書中探討了代碼檢查、走查與審查、測試用例的設(shè)計、單元測試、系統(tǒng)測試、極限測試等主題,是測試人員入門的一本優(yōu)秀教材。
2、《軟件測試經(jīng)驗與教訓(xùn)》:本書分享了3位作者多年的測試經(jīng)驗,知道成功的測試需要什么。書中匯總了293條測試經(jīng)驗建議,闡述了如何做好測試工作,如何管理測試,以及如何澄清有關(guān)軟件測試的常見誤解。讀者可以將這些經(jīng)驗用于自己的測試工作中,避免一些容易犯的錯誤,提高測試效率與有效性。
3、《A Practitioners Guide to Software Test Design》:關(guān)注測試用例設(shè)計的一本著作,其中包括了白盒測試技術(shù)、黑盒測試技術(shù)與基于經(jīng)驗的測試技術(shù)。每個測試技術(shù)本身都結(jié)合了技術(shù)原理、案例分析和優(yōu)缺點分析,是每個測試人員了解和應(yīng)用測試用例設(shè)計的一本好書。
4、《贏在測試:軟件測試先行者之道》:蔡為東寫的這本書,匯集了多名測試行業(yè)的測試精英,其中描述了他們是如何認(rèn)識測試,發(fā)展測試,規(guī)劃測試,以及如何在測試行業(yè)中取得成功的,為測試從業(yè)人員的職業(yè)發(fā)展提供了參考方向。這本書為處于迷茫階段的測試人員規(guī)劃自己的測試職業(yè)發(fā)展,提供了許多現(xiàn)實可行的方向。
5、《思維導(dǎo)圖:大腦使用說明書》:要想在測試領(lǐng)域有所建樹,測試人員持續(xù)不斷地學(xué)習(xí)與積累是非常重要的,而如何有效地閱讀與學(xué)習(xí)將是決定成敗的一個關(guān)鍵。思維導(dǎo)圖是一個簡單易學(xué)的革命性思維工具,它可以幫助你提高記憶力和理解力,激發(fā)想象力,更好地制訂生活和工作計劃。
小結(jié)
在這次采訪中,鄭文強和大家分享了很多寶貴的經(jīng)驗,摘要如下:
1、勤奮學(xué)習(xí)能夠彌補基礎(chǔ)的不足。
2、在決定發(fā)展方向的時候,不要生活在別人的期望中,而是要知道自己想做什么,擅長做什么。
3、去做自己喜歡的,還是去做人家喜歡的?最終我選擇了前者。從目前的結(jié)果看,感覺到自己在公司內(nèi)部可以做的事情更多了,參與的活動也在增加。不管對公司還是對個人,體現(xiàn)的價值都是在不斷增加的。
4、把好的測試?yán)碚摗y試思想與工作實踐結(jié)合起來。
5、堅持去做自己喜歡的工作,不斷積累、總結(jié)和分享。
6、認(rèn)清楚自己,明確自己的優(yōu)點和不足。
7、讓跳槽符合自己的發(fā)展方向。
8、分享并不會導(dǎo)致“教會了徒弟,餓死了師傅”,因為學(xué)習(xí)是一個過程。另一方面,同事會因為你的分享而感謝和尊重你。
9、作為測試的負(fù)責(zé)人,不要期望自己在所有的方面都比其他人強,你的定位應(yīng)該是為整個測試團(tuán)隊服務(wù)的角色。如果你能在團(tuán)隊內(nèi)帶頭分享你的知識與經(jīng)驗,也一定能帶動其他人的分享,更好地做好測試團(tuán)隊的知識與技能的儲備,有利于測試經(jīng)理更好地分配測試工作,并做好備份工作。
10、與腳本化測試相比,探索性測試更強調(diào)測試人員的思維自由度與主觀能動性。然而,探索性的自由,并不代表它是不做準(zhǔn)備的,它也不是隨機(jī)的。好的探索性測試依賴于測試人員綜合應(yīng)用測試策略、測試技術(shù)與方法的能力,例如,獲取測試數(shù)據(jù),掌握測試設(shè)計技術(shù),建立失效模式,創(chuàng)建測試模型等。口號式的探索性測試并不能幫助測試人員成功。
11、我?guī)缀趺刻於紩词∽约寒?dāng)天的工作,有了哪些收獲,有了什么總結(jié),多少時間又被浪費了等。通過這樣的形式,不斷提升自己的信心,提高學(xué)習(xí)的效率和有效性。
12、軟件發(fā)布與否應(yīng)當(dāng)綜合多個方面的因素來考慮,而不僅僅是測試的意見。
13、要想獲得成功,勤奮是不可或缺的。
14、多實踐,不要怕失敗。不管是測試領(lǐng)域的知識,還是測試技能,或者是測試思想和方法,測試新人都需要勇敢地去實踐,許多的經(jīng)驗、思想和收獲來自于失敗的經(jīng)驗教訓(xùn)。
15、面對職業(yè)發(fā)展迷茫的時候問自己喜歡做什么,目標(biāo)是什么,當(dāng)前的工作和活動是否能幫助自己達(dá)成這個目標(biāo)。
16、從形式、覆蓋率和有效性方面來評估測試用例的質(zhì)量。
17、成為測試牛人的三個步驟:制訂目標(biāo),明確技能目標(biāo),立即行動。
18、在參見面試前做好準(zhǔn)備,并在面試過程中保持坦誠。
19、軟件測試行業(yè)的發(fā)展前景樂觀,同時測試工程師會面對不少的挑戰(zhàn)。測試人員要提高自己的技能水平和價值。
20、軟件測試行業(yè)將持續(xù)往前發(fā)展,而測試從業(yè)人員能否在這個平臺中同步前進(jìn),這依賴于測試人員自己的不斷積累、不斷實踐與不斷交流。要發(fā)展,測試人員同樣需要走出去,了解當(dāng)前的測試熱點、測試發(fā)展趨勢、測試?yán)砟钆c思想的趨勢等。
天貓 軟件自動化測試開發(fā)