不漏掉一個(gè)Bug,你需要怎樣做?
原創(chuàng)【51CTO獨(dú)家特稿】軟件測(cè)試人員的工作之一就是查找Bug,找出軟件中的Bug,除了需要“火眼金睛”般的能力外,也需要對(duì)Bug了如指掌,對(duì)此,51CTO專(zhuān)訪了中國(guó)軟件評(píng)測(cè)中心軍工測(cè)試部副總經(jīng)理李亞偉老師,來(lái)聽(tīng)一聽(tīng)他對(duì)Bug的理解。
51CTO:Bug大都出現(xiàn)在程序員的編碼過(guò)程中。測(cè)試人員工作之一就是找出Bug,面對(duì)那些難以被人發(fā)現(xiàn)的Bug,測(cè)試人員通常會(huì)采取哪些手段?以您的經(jīng)驗(yàn),對(duì)廣大測(cè)試人員有什么好的建議?對(duì)于開(kāi)發(fā)人員,您有什么建議讓他們減少Bug的產(chǎn)生?
李亞偉老師:是否能充分發(fā)現(xiàn)軟件的Bug,首先軟件測(cè)試管理過(guò)程很重要,其次是測(cè)試人員的技術(shù)基礎(chǔ)和經(jīng)驗(yàn)等。
手段之一是嚴(yán)謹(jǐn)?shù)倪^(guò)程管理。比如你必須遵行規(guī)范的測(cè)試管理過(guò)程,首先進(jìn)行測(cè)試需求分析,充分了解測(cè)試范圍和測(cè)試內(nèi)容,然后經(jīng)過(guò)評(píng)審,這一個(gè)過(guò)程會(huì)避免測(cè)試人員對(duì)測(cè)試需求的理解錯(cuò)誤,遺漏測(cè)試內(nèi)容。其次進(jìn)行軟件測(cè)試用例的設(shè)計(jì),明確對(duì)每一項(xiàng)測(cè)試怎樣進(jìn)行測(cè)試,包括選擇什么樣的測(cè)試工具,操作流程和輸入數(shù)據(jù)等,同樣經(jīng)過(guò)評(píng)審。
這一過(guò)程可以避免測(cè)試人員選擇工具錯(cuò)誤,操作或輸入數(shù)據(jù)錯(cuò)誤,遺漏測(cè)試內(nèi)容等。第三個(gè)階段是執(zhí)行測(cè)試,測(cè)試最好紀(jì)錄詳細(xì)測(cè)試結(jié)果,在什么樣的輸入情況下產(chǎn)生什么結(jié)果,仔細(xì)比對(duì)軟件開(kāi)發(fā)需求,確定軟件是否發(fā)現(xiàn)問(wèn)題。測(cè)試執(zhí)行完畢后,也需要進(jìn)行評(píng)審,主要檢測(cè)測(cè)試是否進(jìn)行充分,記錄是否準(zhǔn)確,軟件問(wèn)題提出正確的。
手段之二就是技術(shù)保障。技術(shù)關(guān)鍵就是怎么樣設(shè)計(jì)一個(gè)更好更全面的測(cè)試用例,從而保證測(cè)試的充分性和正確性。設(shè)計(jì)好的測(cè)試用例要保證兩個(gè)方面,一是你的技術(shù)基礎(chǔ),二是業(yè)務(wù)也就是軟件需求。你只有在非常了解軟件開(kāi)發(fā)需求的情況下,進(jìn)一步了解軟件的設(shè)計(jì),基于這些,結(jié)合你的技術(shù)基礎(chǔ)和經(jīng)驗(yàn),采用合適的測(cè)試工具、設(shè)計(jì)合理的輸入數(shù)據(jù)和操作流程,才能保證測(cè)試的充分性。
測(cè)試過(guò)程中我們也常常憑借測(cè)試工具來(lái)發(fā)現(xiàn)更多的問(wèn)題,比如說(shuō)代碼規(guī)則檢查、代碼邏輯測(cè)試、代碼質(zhì)量度量、性能測(cè)試、安全性測(cè)試、強(qiáng)度測(cè)試等等。使用工具前提是你得知道在什么樣的情況下選擇什么樣的工具,其次會(huì)使用測(cè)試工具,憑借你的技術(shù)基礎(chǔ)和經(jīng)驗(yàn)制造測(cè)試場(chǎng)景和測(cè)試數(shù)據(jù),同時(shí)會(huì)分析測(cè)試結(jié)果,從測(cè)試結(jié)果中尋找蛛絲馬跡。有時(shí)候商業(yè)或者通用的測(cè)試工具不適用的情況下,也可針對(duì)測(cè)試需求開(kāi)發(fā)相應(yīng)的測(cè)試工具。
對(duì)于開(kāi)發(fā)人員,減少Bug的產(chǎn)生,同樣需要從管理和技術(shù)方面來(lái)要求。眾所周知,開(kāi)發(fā)過(guò)程越規(guī)范,軟件出現(xiàn)問(wèn)題的可能性更少;其次技術(shù)越好,經(jīng)驗(yàn)越豐富,出現(xiàn)問(wèn)題的可能性也更少。這些是大道理,但是得承認(rèn)它是正確的。不管怎么樣,我認(rèn)為以下幾個(gè)方面對(duì)開(kāi)發(fā)人員提高軟件質(zhì)量,減少Bug的產(chǎn)生很重要:
1.盡可能了解用戶(hù)需求,從而轉(zhuǎn)化為軟件需求,組織用戶(hù)進(jìn)行需求評(píng)審。重點(diǎn)強(qiáng)調(diào)的是軟件開(kāi)發(fā)需求,不僅僅是描述用戶(hù)需要完成什么功能指標(biāo)和性能指標(biāo),而是要轉(zhuǎn)化為軟件開(kāi)發(fā)必須界面要求、數(shù)據(jù)元素要求、業(yè)務(wù)操作流程要求等。因需求不明確、業(yè)務(wù)流程不清晰、軟件需求規(guī)格說(shuō)明不細(xì)致等導(dǎo)致軟件問(wèn)題太常見(jiàn)了。
2.進(jìn)行充分的設(shè)計(jì),并經(jīng)過(guò)評(píng)審,集合項(xiàng)目組的經(jīng)驗(yàn)和智慧,對(duì)軟件的架構(gòu)、數(shù)據(jù)結(jié)構(gòu)、邏輯處理流程等進(jìn)行充分論證。個(gè)人的經(jīng)驗(yàn)和智慧是有限的,經(jīng)過(guò)評(píng)審或者小組討論,往往使你思路更清晰,少走錯(cuò)誤路線或者彎路。
3.編碼遵循一定的編碼規(guī)范,養(yǎng)成良好的編碼習(xí)慣,提高代碼的可讀性。開(kāi)發(fā)通常是一個(gè)長(zhǎng)期的過(guò)程,依靠標(biāo)準(zhǔn)的規(guī)則和注釋而不是考驗(yàn)?zāi)愕挠洃浟Α?/p>
4.做好自測(cè)工作。開(kāi)發(fā)過(guò)程中,不斷的進(jìn)行單元測(cè)試或者集成測(cè)試。借助于測(cè)試工具或者自己寫(xiě)代碼測(cè)試的方式,首先保證每一個(gè)小模塊、函數(shù)或者算法的正確性和合理性。測(cè)試時(shí)不僅僅是驗(yàn)證功能是否實(shí)現(xiàn),還必須包括對(duì)各種異常輸入的處理是否正確,往往軟件的Bug出現(xiàn)在軟件的異常處理不正確或者不充分。
5.做好配置管理。借助于一些成熟的版本管理工具管理好自己的代碼,避免因版本錯(cuò)誤導(dǎo)致新的問(wèn)題或者舊問(wèn)題重復(fù)出現(xiàn)。
6.開(kāi)發(fā)是一個(gè)技術(shù)和經(jīng)驗(yàn)不斷積累的過(guò)程,需要不斷地學(xué)習(xí)各種基礎(chǔ)知識(shí),規(guī)范管理開(kāi)發(fā)過(guò)程,總結(jié)教訓(xùn)、通過(guò)各種方式和平臺(tái)交流經(jīng)驗(yàn)。沒(méi)有人開(kāi)發(fā)出的軟件沒(méi)有問(wèn)題,只是多和少的問(wèn)題,只有不斷地學(xué)習(xí)、交流和總結(jié),才能開(kāi)發(fā)出更好的軟件。
51CTO:Bug除了出現(xiàn)在程序員編碼階段外,在測(cè)試過(guò)程中,會(huì)不會(huì)因?yàn)闇y(cè)試人員的操作失誤,亦或是其他原因,導(dǎo)致軟件出現(xiàn)Bug呢?
李亞偉老師:完全有可能在測(cè)試過(guò)程中導(dǎo)致軟件出現(xiàn)Bug,但不是一定的。比如在進(jìn)行代碼單元測(cè)試時(shí),我們通常需要在代碼中進(jìn)行插樁,有可能就插入錯(cuò)誤,或者在測(cè)試執(zhí)行完畢后,未刪除插樁代碼,導(dǎo)致軟件出現(xiàn)Bug。
需要明確的是,如果是因?yàn)闇y(cè)試人員改變軟件代碼導(dǎo)致軟件出現(xiàn)Bug那時(shí)測(cè)試人員操作問(wèn)題,除此之外,測(cè)試過(guò)程中的比如軟件操作流程不正確、配置錯(cuò)誤、數(shù)據(jù)輸入錯(cuò)誤等等導(dǎo)致軟件出錯(cuò)均是軟件自身的問(wèn)題,因?yàn)檐浖陨響?yīng)該對(duì)任何輸入(包括外部數(shù)據(jù)輸入和操作)都是有預(yù)期的,也就是不過(guò)什么輸入,均有預(yù)判的正確的響應(yīng)結(jié)果。
此外,因?yàn)楣芾砩系脑蛞部赡軐?dǎo)致軟件出現(xiàn)Bug,比如配置管理混亂導(dǎo)致軟件部分部件版本錯(cuò)落,軟件出現(xiàn)問(wèn)題。
51CTO:對(duì)于測(cè)試人員來(lái)講,除了借助于一些測(cè)試工具外,還應(yīng)具備什么樣的個(gè)人能力?是否需要具備自己動(dòng)手處理Bug能力?再則您認(rèn)為軟件開(kāi)發(fā)人員是否需要具備自我測(cè)試的能力?
李亞偉老師:測(cè)試工具不是最重要的,測(cè)試工具只是一個(gè)提高工作效率的輔助工具,不是測(cè)試人員必須掌握的,這個(gè)隨時(shí)可以學(xué)習(xí)使用,使用測(cè)試工具只是一個(gè)熟練程度的問(wèn)題,關(guān)鍵還是你的綜合技術(shù)基礎(chǔ),測(cè)試經(jīng)驗(yàn)。
通常認(rèn)為軟件測(cè)試人員具備的基本素質(zhì)按重要等級(jí)依次是:技術(shù)、溝通能力、自信心、責(zé)任心、耐心和細(xì)心等。
技術(shù)是基礎(chǔ),作為測(cè)試人員,你應(yīng)該具備一定的軟件開(kāi)發(fā)基礎(chǔ),了解軟件的運(yùn)行環(huán)境、生產(chǎn)過(guò)程、常見(jiàn)的軟件開(kāi)發(fā)問(wèn)題等,同時(shí)你需要知道在軟件的開(kāi)發(fā)過(guò)程中各個(gè)階段需要進(jìn)行什么測(cè)試,選擇什么樣的測(cè)試工具,怎樣分析測(cè)試工具進(jìn)行測(cè)試的結(jié)果等。
其次是你的溝通能力,因?yàn)樵跍y(cè)試過(guò)程中,你需要不斷地跟開(kāi)發(fā)人員、項(xiàng)目管理人員等溝通協(xié)調(diào),溝通能力是你測(cè)試工作順利進(jìn)行的重要保障。測(cè)試人員發(fā)現(xiàn)問(wèn)題最重要,在技術(shù)基礎(chǔ)的保障下,你得知道什么是軟件問(wèn)題,什么情況下出現(xiàn)問(wèn)題,出現(xiàn)在什么地方,最好知道因?yàn)槭裁丛虺霈F(xiàn)問(wèn)題,最最好知道怎么去修改這個(gè)問(wèn)題,這樣的話你跟開(kāi)發(fā)人員更好溝通,你的測(cè)試工作就會(huì)進(jìn)行得更順利。
再次,作為測(cè)試人員,你得有自信,首先測(cè)試工作是一項(xiàng)技術(shù)要求很高的工作,測(cè)試并不比開(kāi)發(fā)地位低。在技術(shù)基礎(chǔ)的保障情況下,你應(yīng)該非常自信地進(jìn)行自己的工作,理直氣壯地向開(kāi)發(fā)人員提出軟件問(wèn)題,并堅(jiān)持自己的觀點(diǎn),明確各方責(zé)任。
最后,測(cè)試工作非常重要,你擔(dān)負(fù)著軟件質(zhì)量驗(yàn)收責(zé)任,你必須有責(zé)任心,耐心和細(xì)心地工作,爭(zhēng)取不放過(guò)任何一絲一毫的軟件錯(cuò)誤和缺陷。
測(cè)試和開(kāi)發(fā)工作是獨(dú)立的,你可以具備動(dòng)手處理Bug的能力,或者可以協(xié)助開(kāi)發(fā)人員定位問(wèn)題,提出修改建議,但是絕對(duì)不可自己去修改Bug。自己動(dòng)手處理Bug的能力能具備更好,但不是必須的。
開(kāi)發(fā)人員必須具備自我檢測(cè)的能力,我們說(shuō)調(diào)試也是一種測(cè)試,但不是系統(tǒng)的或者正規(guī)的測(cè)試工作。通常開(kāi)發(fā)人員需要進(jìn)行編碼規(guī)則自查、單元測(cè)試工作等,同時(shí)開(kāi)發(fā)人員在提交測(cè)試之前一般也需要先進(jìn)行自我檢測(cè),誰(shuí)也不愿意把更多的問(wèn)題讓測(cè)試人員發(fā)現(xiàn)。另一個(gè)方面,開(kāi)發(fā)人員只有自己具備自我檢測(cè)的能力,才會(huì)知道在開(kāi)發(fā)過(guò)程中注意避免產(chǎn)生問(wèn)題,減少軟件Bug產(chǎn)生隱患。
#p#
51CTO:我們經(jīng)常看到一款軟件在正式發(fā)布后,仍存在很多Bug。在產(chǎn)品發(fā)布后,是否還需要人員去進(jìn)行測(cè)試Bug?對(duì)一款產(chǎn)品的測(cè)試工作,Bug率達(dá)到一個(gè)怎樣的狀態(tài)才算作合格產(chǎn)品?
李亞偉老師:軟件測(cè)試是一個(gè)有計(jì)劃的活動(dòng),產(chǎn)品發(fā)布意味著當(dāng)前版本軟件開(kāi)發(fā)和測(cè)試工作完畢,所以嚴(yán)格上來(lái)講,有計(jì)劃的測(cè)試活動(dòng)已經(jīng)結(jié)束。然后眾所周知有限的測(cè)試不可能發(fā)現(xiàn)軟件所有的Bug,我們也經(jīng)??吹?,幾乎所有的軟件產(chǎn)品都會(huì)有后續(xù)的升級(jí)版本,升級(jí)的原因:一是因?yàn)樾略龉δ?,其二就是修改舊版本的Bug,這也說(shuō)明在行業(yè)實(shí)際運(yùn)營(yíng)過(guò)程中,測(cè)試在產(chǎn)品發(fā)布后仍然延續(xù)。
軟件測(cè)試是一個(gè)有計(jì)劃的活動(dòng),測(cè)試活動(dòng)再次進(jìn)行前必須是軟件代碼在上一次測(cè)試活動(dòng)結(jié)束后進(jìn)行過(guò)修訂。軟件測(cè)試需要投入人力和物力,產(chǎn)品發(fā)布之后是否需要繼續(xù)進(jìn)行測(cè)試,可根據(jù)人員情況和軟件產(chǎn)品自身的情況決定,人員充足,自身認(rèn)為產(chǎn)品質(zhì)量需要繼續(xù)提高,便可繼續(xù)進(jìn)行測(cè)試。
Bug率評(píng)價(jià)產(chǎn)品是否合格我認(rèn)為是不正確的,一個(gè)產(chǎn)品也許只有一個(gè)Bug,但是這個(gè)Bug是致命的,那這個(gè)軟件規(guī)模再大,它的Bug率非常小,其產(chǎn)品也是不合格的。另外,這個(gè)軟件在應(yīng)用上基本滿(mǎn)足用戶(hù)要求,但也存在一些易用方面的小問(wèn)題,其Bug率較大,但其質(zhì)量我認(rèn)為比存在一個(gè)致命Bug的產(chǎn)品質(zhì)量要好。
51CTO:您認(rèn)為測(cè)試人員有沒(méi)有必要與開(kāi)發(fā)人員在同一個(gè)項(xiàng)目組工作,能將Bug扼殺在萌芽狀態(tài)嗎?如果采用這樣的工作方法,責(zé)任應(yīng)該如何界定,避免互相推諉?
李亞偉老師:測(cè)試人員有沒(méi)必要與開(kāi)發(fā)人員在同一個(gè)項(xiàng)目組工作,跟公司的管理制度、項(xiàng)目規(guī)模和人員素質(zhì)等有關(guān)系。必須明確一點(diǎn)的事,測(cè)試工作和開(kāi)發(fā)工作必須獨(dú)立,測(cè)試人員與開(kāi)發(fā)人員獨(dú)立。
測(cè)試人員與開(kāi)發(fā)人員在同一個(gè)項(xiàng)目組工作,而且人員與工作獨(dú)立,理論上講,如果測(cè)試人員素質(zhì)沒(méi)有問(wèn)題,項(xiàng)目管理正常,在軟件開(kāi)發(fā)的需求分析、設(shè)計(jì)以及編碼階段、集成階段等均進(jìn)行了必要的測(cè)試工作的話,在前期很大程度上能減少Bug的發(fā)生,也能提高軟件質(zhì)量。但是測(cè)試工作是有限的,并不能將所有的Bug都發(fā)現(xiàn)或者預(yù)防其產(chǎn)生。
如果測(cè)試人員與開(kāi)發(fā)人員同在一個(gè)項(xiàng)目組,首先工作應(yīng)該獨(dú)立。工作分工非常明確,項(xiàng)目組通常稱(chēng)包括開(kāi)發(fā)人員和測(cè)試人員,嚴(yán)格上來(lái)講,項(xiàng)目組包括項(xiàng)目經(jīng)理、需求分析人員、軟件設(shè)計(jì)人員、編碼人員和質(zhì)量管理人員、測(cè)試人員等,一般來(lái)說(shuō),開(kāi)發(fā)人員兼任需求分析、設(shè)計(jì)、編碼工作,質(zhì)量管理人員兼任測(cè)試和質(zhì)量管理工作。我們必須清楚一個(gè)事實(shí):“設(shè)計(jì)而不是測(cè)試決定軟件的質(zhì)量”,軟件測(cè)試是一個(gè)驗(yàn)證的活動(dòng),其依據(jù)是軟件需求規(guī)格說(shuō)明和軟件設(shè)計(jì)說(shuō)明。軟件測(cè)試的質(zhì)量跟測(cè)試過(guò)程管理、測(cè)試人員素質(zhì)有很大關(guān)系。
軟件產(chǎn)品發(fā)布后軟件出現(xiàn)質(zhì)量問(wèn)題,軟件問(wèn)題類(lèi)型多樣,有設(shè)計(jì)問(wèn)題、程序問(wèn)題、文檔問(wèn)題等,其責(zé)任要具體定論,一般來(lái)說(shuō),如果管理沒(méi)有問(wèn)題,而且測(cè)試依據(jù)明確,軟件出現(xiàn)不應(yīng)該出現(xiàn)的問(wèn)題,軟件測(cè)試人員有一定的責(zé)任,但主要責(zé)任應(yīng)該是開(kāi)發(fā)人員的,首先沒(méi)有按照需求或者設(shè)計(jì)完成開(kāi)發(fā)人員。
專(zhuān)家簡(jiǎn)介:

李亞偉老師
李亞偉,男,31歲,計(jì)算機(jī)專(zhuān)業(yè)碩士研究生畢業(yè),中國(guó)軟件評(píng)測(cè)中心軍工測(cè)試部副總經(jīng)理,軟件開(kāi)發(fā)工作三年,軟件測(cè)試工作五年,目前從事軍用武器裝備軟件測(cè)試項(xiàng)目管理和測(cè)試工作,有多年信息系統(tǒng)測(cè)試和代碼測(cè)試經(jīng)驗(yàn)。
【51CTO獨(dú)家特稿,轉(zhuǎn)載請(qǐng)表明出處及作者!】
【編輯推薦】



























