中國軟件測試專家訪談錄(2)
把握軟件的質(zhì)量
蔡:如何把握軟件產(chǎn)品的質(zhì)量?
鄭:不管軟件產(chǎn)品規(guī)模是大還是小,結(jié)構(gòu)是簡單還是復(fù)雜,對它們質(zhì)量的評估都不是一件容易的事情。盡管很難,但是產(chǎn)品質(zhì)量的評估仍然是必需的,因為它也涉及軟件版本是否能夠發(fā)布。
軟件發(fā)布之前做評估
根據(jù)我和公司內(nèi)的實踐經(jīng)驗,可以從下面兩個方面進(jìn)行評估。
第一,軟件產(chǎn)品發(fā)布之前的質(zhì)量評估,具體的度量指標(biāo)包括:
缺陷,包括發(fā)現(xiàn)的總的缺陷分布趨勢、缺陷在不同功能模塊中的分布等。例如,總的缺陷分布趨勢圖。
測試通過率,主要包括計劃的測試用例執(zhí)行進(jìn)度、通過的測試用例數(shù)目、失敗的測試用例數(shù)目、被阻塞的測試用例數(shù)目等。我們項目中定義的測試通過率是95%。
測試覆蓋率,包括測試對系統(tǒng)需求的覆蓋率、對測試類型的覆蓋率。例如,我們項目中定義的需求覆蓋率必須達(dá)到100%,測試類型覆蓋率也必須達(dá)到100%。
信心,負(fù)責(zé)這個模塊的測試人員對質(zhì)量的主觀感受。可能有的人覺得很奇怪,怎么主觀感受也可以作為產(chǎn)品質(zhì)量的評估?因為負(fù)責(zé)功能模塊測試的工程師是最了解他們的測試對象的。
旁觀者說:可以設(shè)計一個信心指數(shù),例如1~10,然后通過各種數(shù)據(jù)來支持這個指數(shù)。
軟件發(fā)布之后做評估
第二,軟件產(chǎn)品發(fā)布之后的質(zhì)量評估。我們目前采用的度量指標(biāo)是缺陷檢測百分比DDP(Defect Detected Percentage),其計算公式如下:
客戶現(xiàn)場發(fā)現(xiàn)的缺陷數(shù) /(發(fā)布前測試團隊發(fā)現(xiàn)的缺陷數(shù) + 客戶現(xiàn)場發(fā)現(xiàn)的缺陷數(shù))* 100%
我們一般統(tǒng)計產(chǎn)品發(fā)布之后6個月內(nèi)在客戶現(xiàn)場發(fā)現(xiàn)的缺陷數(shù)。不同的公司與項目,采用的統(tǒng)計時間范圍會有所不同。
旁觀者說:統(tǒng)計客戶發(fā)現(xiàn)的bug是有意義的,一是可以據(jù)此對客戶做一些分析,例如,經(jīng)常使用的功能、滿意度等;二是可以用于反思之前的測試活動,以求改進(jìn)。
測試團隊為軟件發(fā)布提供質(zhì)量信息
還有一個問題是測試團隊非常關(guān)心的:誰來決定軟件產(chǎn)品的發(fā)布?從我的角度而言,我認(rèn)為由測試團隊決定軟件產(chǎn)品是否發(fā)布是不合適的。
軟件產(chǎn)品是否可以發(fā)布,需要有不同角色的成員參與進(jìn)來,根據(jù)公司定義的判定準(zhǔn)則進(jìn)行評估,同時平衡產(chǎn)品質(zhì)量、市場機會、產(chǎn)品戰(zhàn)略以及成本等多個因素。測試團隊在這個過程中主要的作用是盡量多地提供軟件產(chǎn)品的質(zhì)量信息、風(fēng)險信息等,以幫助管理層做出是否發(fā)布的決定。任何一個單方面做決定都可能是不全面的。例如,測試人員覺得質(zhì)量還不夠好,發(fā)布有風(fēng)險;但是市場機會要求我們發(fā)布,如果再等一段時間就會減弱市場機會,甚至喪失機會,這個時候就需要考慮哪個因素有更高的優(yōu)先級。
旁觀者說:贊同。軟件發(fā)布與否應(yīng)當(dāng)綜合各種因素來考慮,而不僅僅是某個角色說了算。
新人如何學(xué)習(xí)軟件測試
蔡:對于軟件測試的新手,包括剛進(jìn)入這個行業(yè)的,也包括正在學(xué)習(xí)、準(zhǔn)備進(jìn)入的,你有什么建議和經(jīng)驗分享?
鄭:對于軟件測試的新手,假如希望在測試行業(yè)有所發(fā)展,根據(jù)我的經(jīng)驗可以從下面幾個方面入手。
1、了解你的測試對象。你首先要知道軟件產(chǎn)品是干什么的,其實現(xiàn)的主要功能是什么,其工作的基本原理和流程等。比如,我一直從事通信產(chǎn)品,除了產(chǎn)品本身的需求資料外,還花了大量的時間學(xué)習(xí)和鉆研各種通信產(chǎn)品相關(guān)的國際標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn),例如路由協(xié)議、IPv6等。
2、多向有經(jīng)驗的人學(xué)習(xí)。在剛剛?cè)腴T測試行業(yè)的時候,我們應(yīng)該抱著向各位前輩學(xué)習(xí)的態(tài)度,通過各種形式向有經(jīng)驗的人員學(xué)習(xí),例如,參加培訓(xùn)、個人交流等。根據(jù)測試的特點,學(xué)習(xí)主要從兩個方面入手。
(1)我們應(yīng)該積極參加項目團隊中的領(lǐng)域知識培訓(xùn)和交流,也可以直接向系統(tǒng)人員和開發(fā)人員詢問產(chǎn)品是如何工作的,具體如何實現(xiàn)等問題,以更快地熟悉和掌握產(chǎn)品知識。
(2)測試人員向測試團隊中的前輩學(xué)習(xí),包括他們在產(chǎn)品知識、測試過程、測試技術(shù)與方法等方面的經(jīng)驗。他們是測試新人學(xué)習(xí)的最直接的對象,看看他們是如何掌握產(chǎn)品知識的,如何快速有效地找到bug的。
3、多實踐,不要怕失敗。不管是測試領(lǐng)域的知識,還是測試技能,或者是測試思想和方法,測試新人都需要勇敢地去實踐,許多經(jīng)驗、思想和收獲來自于失敗的經(jīng)驗教訓(xùn)。
旁觀者說:如果真是要丟臉的話,越早越好,越晚越被動。
4、勤奮。在我的經(jīng)驗中,勤奮總是占有非常重要的地位。只要你設(shè)定的方向是正確的,想要達(dá)到目標(biāo),勤奮將是不可或缺的基礎(chǔ)。特別是覺得自己在某方面基礎(chǔ)不好,勤奮可以彌補這方面的不足,我當(dāng)時入門軟件測試就是這么走過來的。你看到有的人很牛,測試經(jīng)驗豐富,各方面都懂,那是表象,其實他(她)在背后花了很多時間,你在玩游戲、看電視的時候,他(她)在看書、總結(jié)、寫文章。如果我們能夠堅持,每天堅持,這樣一段時間后你就會發(fā)現(xiàn)自己與以前大不相同了。
旁觀者說:我很相信一句話:天道酬勤。
如何面對職業(yè)發(fā)展的迷茫
蔡:你對在軟件測試行業(yè)工作了三五年的朋友有什么建議嗎?有的朋友對我說,他覺得有些迷茫。
問自己三個問題
鄭:在軟件測試行業(yè)工作幾年之后,免不了會產(chǎn)生各種不同的迷茫:軟件測試有前途嗎?軟件測試有技術(shù)含量嗎?將來是做技術(shù)還是做管理?我自己在2005年準(zhǔn)備換工作的時候,就對是做技術(shù)呢,還是去找測試管理的職位有過迷茫。盡管現(xiàn)在已經(jīng)選擇技術(shù)方向很多年了,有時候還是會迷茫:測試技術(shù)真的能順利走下去嗎?
在面對這些迷茫的時候,我就會問自己:
(1)你喜歡做技術(shù)還是做管理?我喜歡做技術(shù)。
(2)你的目標(biāo)是什么?我希望將來成為測試專家。
(3)目前的工作和活動能幫助你達(dá)成這個目標(biāo)嗎?是的。
旁觀者說:簡單直接的三個問題,就像程咬金的三板斧,蠻有威力的,你可以試試。
基于這些問題的內(nèi)心回答,我會不斷給自己加油,并鼓勵自己繼續(xù)往前走。我?guī)缀趺刻於紩词∽约寒?dāng)天的工作,有了哪些收獲,有了什么總結(jié),多少時間又被浪費了等。通過這樣的形式,不斷提升自己的信心,提高學(xué)習(xí)的效率和有效性。
旁觀者說:能夠做到每天反省和總結(jié),不簡單,值得學(xué)習(xí)。孔子說,吾三省吾身。或許可以這樣說,無論做什么事情,比如鍛煉、減肥、寫日記、練字、學(xué)習(xí)等,如果能夠堅持每天做,都了不起。
分享周圍幾個朋友在職業(yè)發(fā)展方面的例子
我與大家分享一下我對下面幾個迷茫問題的建議。
1、到底是做技術(shù)還是做管理工作?希望讀者可以從我前面的工作經(jīng)歷中得到一些啟發(fā):做自己喜歡做的事情,勤奮加堅持,你會發(fā)現(xiàn)你可以逐步走向成功,不管是做技術(shù)還是做管理。
2、軟件測試有前途嗎?這個問題應(yīng)該是每個測試從業(yè)人員所關(guān)心的話題。假如大家因為這個問題而覺得迷茫,我和大家分享我周圍幾個朋友的例子,測試同樣可以成就你的未來。
(1)以前公司的某個測試部門經(jīng)理,現(xiàn)在是某公司重慶研究所的所長。測試的職業(yè)發(fā)展也可以是有高度的,而不是說測試經(jīng)理就是測試人員的終極目標(biāo)。
(2)以前公司的某位測試工程師,在2005年換工作的時候,找到的職位是產(chǎn)品經(jīng)理。測試人員的優(yōu)勢是對軟件產(chǎn)品的工作原理、工作環(huán)境與客戶最關(guān)注什么等有充分的了解,因此產(chǎn)品經(jīng)理是你可以努力的一個方向。
(3)以前公司的某位測試工程師,首先從事測試工作,在換工作的時候應(yīng)聘了軟件開發(fā)的工作,在第二次跳槽的時候選擇了項目經(jīng)理的職位。由于有明確的職業(yè)規(guī)劃,在對測試與開發(fā)有了深入了解之后,再加上項目管理的知識、技能與經(jīng)驗,測試人員成為項目經(jīng)理是可以的。
(4)另外,在我們周圍有不少獨立的測試專家、咨詢師等,他們不斷出書、寫文章,參加各種大會做報告,受邀為公司開展企業(yè)咨詢工作等,這同樣是你可以選擇的一條路。
旁觀者說:他山之石,可以攻玉。上面幾個例子雖然簡單,但是仍有可借鑒的地方。
要懂得如何思考和分析
3、軟件測試有技術(shù)含量嗎?很多人都認(rèn)為軟件開發(fā)有技術(shù)含量,而軟件測試就是點點鼠標(biāo),按照需求檢查工作產(chǎn)品,所以沒有什么技術(shù)含量。實際情況是這樣嗎?這讓我想起了一個故事:某公司的發(fā)電機出現(xiàn)了故障,請了一位經(jīng)驗豐富的工程師進(jìn)行維修,他在機器上東敲敲、西敲敲,在某個地方畫了一個圈,將其中的一個線圈換掉后發(fā)電機就正常工作了。收取了1000美元的費用。公司老總覺得費用太貴,不就是換了一個線圈嗎?維修工程師回答說:“換個線圈只要1美元,找到哪里的線圈更換需要999美元。”很多人只是看到了表象,測試人員坐在那里點點鼠標(biāo),提交了一個缺陷。但是技術(shù)含量不是測試人員點點鼠標(biāo),而是測試人員為什么點鼠標(biāo),鼠標(biāo)點在哪里,要點幾次,即測試人員是如何思考的、如何分析的。這才是人與人之間的最大不同,也是測試人員真正的價值所在。優(yōu)秀的測試人員與平庸的測試人員之間的最大區(qū)別在于前者更懂得如何思考和分析。
旁觀者說:努力成為專家型的人才,符合個人利益,也符合公司利益,雙贏。
如何做好測試用例的設(shè)計
蔡:如何做好測試用例的設(shè)計呢?
鄭:測試用例設(shè)計是每個測試從業(yè)人員最主要的測試活動之一。為了做好測試用例的設(shè)計,我們必須考慮下面幾個因素。
明確參考輸入
第一,做好測試用例設(shè)計,需要首先明確它有哪些參考輸入。以我為例,我是做系統(tǒng)測試的,因此測試對象的需求規(guī)格說明是最主要的測試設(shè)計參考。但是實際面臨的問題是需求常常不完善,因此純粹依賴于需求規(guī)格說明肯定是不全面的。根據(jù)我的經(jīng)驗,下面的這些輸入也應(yīng)該經(jīng)常考慮:用戶需求、開發(fā)文檔、標(biāo)準(zhǔn)與規(guī)范、測試經(jīng)驗知識庫等。
測試經(jīng)驗知識庫是測試人員以前做類似項目的測試經(jīng)驗、收集與分析的缺陷類型分類等,都是開展測試用例設(shè)計的基礎(chǔ)。例如,我們的測試用例模板中的測試類型定義,除了參考ISO 9126質(zhì)量模型 ,其中的重要輸入就是以前項目的測試經(jīng)驗和缺陷分類分析。
旁觀者說:有多少公司收集和存儲了項目的歷史數(shù)據(jù)?又是否做了分析和利用?
關(guān)注功能之間的交互
第二,做好測試用例設(shè)計,除了考慮被測對象功能之外,也需要關(guān)注被測功能與其他功能模塊之間的交互。由于每個測試人員負(fù)責(zé)各自的功能模塊,往往會導(dǎo)致整個測試對象不同功能模塊之間的接口、相互作用和耦合等分析不夠充分,而這些是影響測試對象質(zhì)量的重要因素。例如,在我們當(dāng)前的項目中,通用的交互測試點有主備倒換、內(nèi)存使用、內(nèi)存泄漏、CPU使用、數(shù)據(jù)備份/恢復(fù)、版本升級、系統(tǒng)重啟等。
旁觀者說:相對于開發(fā)人員來說,功能交互是測試人員的優(yōu)勢,我們要在這方面好好發(fā)揮。
采用合適的設(shè)計技術(shù)與方法
第三,有了測試用例設(shè)計的輸入與交互分析之后,采用合適的測試用例設(shè)計技術(shù)與方法,有助于做好測試用例的分析。根據(jù)《軟件測試設(shè)計》中提出的“問題驅(qū)動的軟件測試設(shè)計”觀點,可以從下面四個方面考慮進(jìn)行測試設(shè)計,以解決測試設(shè)計中面臨的問題。
1、挑戰(zhàn)1:被測對象的邏輯組合和輸入數(shù)據(jù)的組合是非常龐大的,而窮盡測試是不可能的。經(jīng)典測試設(shè)計中的一些技術(shù)與方法,在保證測試覆蓋率與質(zhì)量的情況下,對減少測試用例的數(shù)目是非常有效的。例如,在項目測試中引入了“組合測試”技術(shù)。
2、挑戰(zhàn)2:軟件產(chǎn)品的不同利益相關(guān)者對產(chǎn)品的質(zhì)量要求是不一樣的,如何滿足他們各自的質(zhì)量要求?基于質(zhì)量特性的測試設(shè)計有助于我們選擇合適的質(zhì)量特性。測試設(shè)計中要求100%的測試類型覆蓋率,可以更好地滿足不同利益相關(guān)者對質(zhì)量的不同要求。
3、挑戰(zhàn)3:測試時間與資源總是非常有限的,如何平衡測試時間、成本與質(zhì)量之間的關(guān)系是每個測試人員都需要考慮的。基于風(fēng)險的測試設(shè)計可以幫助我們有效地解決這個問題。例如,先給模塊確定測試優(yōu)先級,然后分析每個模塊存在的主要風(fēng)險,并按照不同風(fēng)險級別開展測試設(shè)計活動,以盡快盡早發(fā)現(xiàn)嚴(yán)重程度高的缺陷。
4、挑戰(zhàn)4:測試人員面對的需求經(jīng)常是不完善的、經(jīng)常變更的。除了前面提到的完善測試用例設(shè)計的參考輸入之外,基于經(jīng)驗的測試設(shè)計也可以幫助測試人員在這種情況下做得更好。例如,根據(jù)以前發(fā)現(xiàn)的缺陷和用戶現(xiàn)場反饋的缺陷,進(jìn)行缺陷分類分析和評估。另一個策略是更多地采用探索性測試,更好地發(fā)揮測試人員的主觀能動性與分析能力。
做好評審
第四,在測試用例設(shè)計過程中,發(fā)揮團隊的力量分析和評審測試點,其得到的效率和有效性會更好。例如,通過在測試分析與設(shè)計過程中應(yīng)用思維導(dǎo)圖 工具,幫助我們拓寬測試思路,增加測試條目。測試團隊的放射性思維可以很好地幫助我們提升測試用例設(shè)計的效率和有效性。
測試用例的顆粒度沒有嚴(yán)格的標(biāo)準(zhǔn),我的觀點是只要它們滿足測試目的,符合產(chǎn)品特點、開發(fā)特點和測試過程等要求,有助于我們更好地發(fā)現(xiàn)缺陷和開展測試活動,測試用例的顆粒度就是合適的。
如何做好測試用例的評審
蔡:測試用例的評審一直是個問題。如何做好評審呢?
鄭:測試用例是測試人員最重要的輸出之一,也是后續(xù)開展測試執(zhí)行與評估的基礎(chǔ)。評審應(yīng)該是開發(fā)過程中比較有爭議的關(guān)鍵域,現(xiàn)實中存在矛盾:不做評審,這又是一個強制活動;開展評審吧,效果很一般,甚至得不到有用的評審建議,浪費時間。
結(jié)合我自己在評審方面的經(jīng)驗教訓(xùn),做好測試用例的評審,下面是我的幾個建議。
合適的評審團人選
第一,選擇合適的人參與測試用例評審。例如,我們在做測試用例評審的時候,強制參與的評審人員有該功能的系統(tǒng)人員(他定義具體的需求)、開發(fā)人員以及測試架構(gòu)師等。每個人參與測試用例評審的關(guān)注點是不一樣的,例如,測試架構(gòu)師關(guān)注測試類型的覆蓋率方面,而開發(fā)人員和系統(tǒng)人員關(guān)注測試用例是否覆蓋業(yè)務(wù)場景與不同功能模塊之間的交互等。另外,語法、拼寫、排版等方面的問題應(yīng)該關(guān)注,但不應(yīng)該是評審的重點。
管理層的支持
第二,管理層的支持。有效的評審是需要時間與資源的。例如,在我們公司的火車開發(fā)模型下,針對測試用例的評審是強制的,而且定義了評審的入口準(zhǔn)則與出口準(zhǔn)則;而且在做項目計劃的時候,測試用例評審作為一個重要的活動,也相應(yīng)地進(jìn)行了工作量的估算和時間進(jìn)度安排,這些都需要管理層的支持。
做好準(zhǔn)備
第三,評審人員的準(zhǔn)備,這是有效評審的關(guān)鍵所在。例如,我們針對測試用例的評審,定義了評審檢查表,包括:測試類型覆蓋、系統(tǒng)需求覆蓋、測試用例模板符合程度檢查等,這有助于有效開展測試用例的評審,也可以集中評審的重點。
旁觀者說:即使我們要求不了別人,至少可以要求自己,評審前做些準(zhǔn)備。
宣傳評審的價值
第四,讓更多的人明白測試盡早介入(評審)的意義。很多時候,大家不愿意積極參與評審,除了時間和資源方面的原因,主要是大家對評審的優(yōu)點沒有直觀的感覺和定量的數(shù)據(jù)。例如,提高質(zhì)量、降低成本、加快進(jìn)度與過程改進(jìn)等。只有認(rèn)可了這些優(yōu)點,大家參與評審才能更加自覺、有效。
我舉一個寫作的例子。我與馬均飛在寫作《軟件測試管理》與《軟件測試設(shè)計》過程中,對書稿進(jìn)行交叉評審。評審過程中的討論與交流,不僅使得我們對寫作內(nèi)容有更多的理解并達(dá)成一致,而且可以使內(nèi)容更加全面、完善。評審取得成功的主要因素包括:選擇合適的評審人員、每個人準(zhǔn)備充分、時間與資源有保證,特別是認(rèn)識到評審對作品(產(chǎn)品)的重要意義!
(未完待續(xù))
posted on 2013-07-08 14:17 順其自然EVO 閱讀(224) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄