軟件測試人員的工作之一就是查找Bug,找出軟件中的Bug,除了需要“火眼金睛”般的能力外,也需要對Bug了如指掌,對此,51CTO專(zhuān)訪(fǎng)了中國軟件評測中心軍工測試部副總經(jīng)理李亞偉老師,來(lái)聽(tīng)一聽(tīng)他對Bug的理解。
Q:Bug大都出現在程序員的編碼過(guò)程中。測試人員工作之一就是找出Bug,面對那些難以被人發(fā)現的Bug,測試人員通常會(huì )采取哪些手段?以您的經(jīng)驗,對廣大測試人員有什么好的建議?對于開(kāi)發(fā)人員,您有什么建議讓他們減少Bug的產(chǎn)生?
李亞偉老師:是否能充分發(fā)現軟件的Bug,首先軟件測試管理過(guò)程很重要,其次是測試人員的技術(shù)基礎和經(jīng)驗等。
手段之一是嚴謹的過(guò)程管理。比如你必須遵行規范的測試管理過(guò)程,首先進(jìn)行測試需求分析,充分了解測試范圍和測試內容,然后經(jīng)過(guò)評審,這一個(gè)過(guò)程會(huì )避免測試人員對測試需求的理解錯誤,遺漏測試內容。其次進(jìn)行軟件測試用例的設計,明確對每一項測試怎樣進(jìn)行測試,包括選擇什么樣的測試工具,操作流程和輸入數據等,同樣經(jīng)過(guò)評審。
這一過(guò)程可以避免測試人員選擇工具錯誤,操作或輸入數據錯誤,遺漏測試內容等。第三個(gè)階段是執行測試,測試最好紀錄詳細測試結果,在什么樣的輸入情況下產(chǎn)生什么結果,仔細比對軟件開(kāi)發(fā)需求,確定軟件是否發(fā)現問(wèn)題。測試執行完畢后,也需要進(jìn)行評審,主要檢測測試是否進(jìn)行充分,記錄是否準確,軟件問(wèn)題提出正確的。
手段之二就是技術(shù)保障。技術(shù)關(guān)鍵就是怎么樣設計一個(gè)更好更全面的測試用例,從而保證測試的充分性和正確性。設計好的測試用例要保證兩個(gè)方面,一是你的技術(shù)基礎,二是業(yè)務(wù)也就是軟件需求。你只有在非常了解軟件開(kāi)發(fā)需求的情況下,進(jìn)一步了解軟件的設計,基于這些,結合你的技術(shù)基礎和經(jīng)驗,采用合適的測試工具、設計合理的輸入數據和操作流程,才能保證測試的充分性。
測試過(guò)程中我們也常常憑借測試工具來(lái)發(fā)現更多的問(wèn)題,比如說(shuō)代碼規則檢查、代碼邏輯測試、代碼質(zhì)量度量、性能測試、安全性測試、強度測試等等。使用工具前提是你得知道在什么樣的情況下選擇什么樣的工具,其次會(huì )使用測試工具,憑借你的技術(shù)基礎和經(jīng)驗制造測試場(chǎng)景和測試數據,同時(shí)會(huì )分析測試結果,從測試結果中尋找蛛絲馬跡。有時(shí)候商業(yè)或者通用的測試工具不適用的情況下,也可針對測試需求開(kāi)發(fā)相應的測試工具。
對于開(kāi)發(fā)人員,減少Bug的產(chǎn)生,同樣需要從管理和技術(shù)方面來(lái)要求。眾所周知,開(kāi)發(fā)過(guò)程越規范,軟件出現問(wèn)題的可能性更少;其次技術(shù)越好,經(jīng)驗越豐富,出現問(wèn)題的可能性也更少。這些是大道理,但是得承認它是正確的。不管怎么樣,我認為以下幾個(gè)方面對開(kāi)發(fā)人員提高軟件質(zhì)量,減少Bug的產(chǎn)生很重要:
1.盡可能了解用戶(hù)需求,從而轉化為軟件需求,組織用戶(hù)進(jìn)行需求評審。重點(diǎn)強調的是軟件開(kāi)發(fā)需求,不僅僅是描述用戶(hù)需要完成什么功能指標和性能指標,而是要轉化為軟件開(kāi)發(fā)必須界面要求、數據元素要求、業(yè)務(wù)操作流程要求等。因需求不明確、業(yè)務(wù)流程不清晰、軟件需求規格說(shuō)明不細致等導致軟件問(wèn)題太常見(jiàn)了。
2.進(jìn)行充分的設計,并經(jīng)過(guò)評審,集合項目組的經(jīng)驗和智慧,對軟件的架構、數據結構、邏輯處理流程等進(jìn)行充分論證。個(gè)人的經(jīng)驗和智慧是有限的,經(jīng)過(guò)評審或者小組討論,往往使你思路更清晰,少走錯誤路線(xiàn)或者彎路。
3.編碼遵循一定的編碼規范,養成良好的編碼習慣,提高代碼的可讀性。開(kāi)發(fā)通常是一個(gè)長(cháng)期的過(guò)程,依靠標準的規則和注釋而不是考驗你的記憶力。
4.做好自測工作。開(kāi)發(fā)過(guò)程中,不斷的進(jìn)行單元測試或者集成測試。借助于測試工具或者自己寫(xiě)代碼測試的方式,首先保證每一個(gè)小模塊、函數或者算法的正確性和合理性。測試時(shí)不僅僅是驗證功能是否實(shí)現,還必須包括對各種異常輸入的處理是否正確,往往軟件的Bug出現在軟件的異常處理不正確或者不充分。
5.做好配置管理。借助于一些成熟的版本管理工具管理好自己的代碼,避免因版本錯誤導致新的問(wèn)題或者舊問(wèn)題重復出現。
6.開(kāi)發(fā)是一個(gè)技術(shù)和經(jīng)驗不斷積累的過(guò)程,需要不斷地學(xué)習各種基礎知識,規范管理開(kāi)發(fā)過(guò)程,總結教訓、通過(guò)各種方式和平臺交流經(jīng)驗。沒(méi)有人開(kāi)發(fā)出的軟件沒(méi)有問(wèn)題,只是多和少的問(wèn)題,只有不斷地學(xué)習、交流和總結,才能開(kāi)發(fā)出更好的軟件。
Q:Bug除了出現在程序員編碼階段外,在測試過(guò)程中,會(huì )不會(huì )因為測試人員的操作失誤,亦或是其他原因,導致軟件出現Bug呢?
李亞偉老師:完全有可能在測試過(guò)程中導致軟件出現Bug,但不是一定的。比如在進(jìn)行代碼單元測試時(shí),我們通常需要在代碼中進(jìn)行插樁,有可能就插入錯誤,或者在測試執行完畢后,未刪除插樁代碼,導致軟件出現Bug。
需要明確的是,如果是因為測試人員改變軟件代碼導致軟件出現Bug那時(shí)測試人員操作問(wèn)題,除此之外,測試過(guò)程中的比如軟件操作流程不正確、配置錯誤、數據輸入錯誤等等導致軟件出錯均是軟件自身的問(wèn)題,因為軟件自身應該對任何輸入(包括外部數據輸入和操作)都是有預期的,也就是不過(guò)什么輸入,均有預判的正確的響應結果。
此外,因為管理上的原因也可能導致軟件出現Bug,比如配置管理混亂導致軟件部分部件版本錯落,軟件出現問(wèn)題。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/