Bug分析為bug預(yù)防奠定基礎(chǔ)五_第1頁(yè)
Bug分析為bug預(yù)防奠定基礎(chǔ)五_第2頁(yè)
Bug分析為bug預(yù)防奠定基礎(chǔ)五_第3頁(yè)
Bug分析為bug預(yù)防奠定基礎(chǔ)五_第4頁(yè)
Bug分析為bug預(yù)防奠定基礎(chǔ)五_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Bug分析為bug預(yù)防奠定基礎(chǔ)五 Bug分析:為bug預(yù)防奠定基礎(chǔ)Bug分析:為bug預(yù)防奠定基礎(chǔ)1引言:生產(chǎn)軟件的企業(yè)安排很多人來(lái)測(cè)試它們的軟件產(chǎn)品。測(cè)試的目的就是發(fā)現(xiàn)bug(缺陷defect)以便修正它們。正常情況是盡快處理可能的bug從而減少修正bug的成本。因?yàn)楸娝苤猙ug越早被發(fā)現(xiàn)并修正所消耗的資源越少。問(wèn)題是在很多情況下由于修正已發(fā)現(xiàn)的bug測(cè)試過(guò)程不得不停頓下來(lái)。那么以目前正忙于軟件產(chǎn)品測(cè)試的同樣資源來(lái)促進(jìn)組織長(zhǎng)期的質(zhì)量目標(biāo)不是更好?為了做到這一點(diǎn)我們應(yīng)該盡快地提前發(fā)現(xiàn)可能的bug。就像克勞士比(hili Crosby)幾年前所說(shuō)的那樣我們應(yīng)該努力預(yù)防bug而不僅僅是修正它們。

2、這就是真正的質(zhì)量。2目標(biāo):預(yù)防bug預(yù)防的重要性正如我們所知bug應(yīng)該盡早地在開(kāi)發(fā)過(guò)程中被發(fā)現(xiàn)。修正處于開(kāi)發(fā)階段的產(chǎn)品的bug的成本遠(yuǎn)遠(yuǎn)低于修正處于QC(Quality Control質(zhì)量控制)階段的產(chǎn)品的bug而相對(duì)與修正已經(jīng)發(fā)布給客戶的產(chǎn)品的bug的成本更是可以忽略不計(jì)。原因就是當(dāng)你修正一個(gè)bug的時(shí)候相當(dāng)于把你之前做的事情重做一次。因此越晚修正bug你所重做的事情就越多。如果bug修正是在產(chǎn)品測(cè)試之前那么重做的工作只有代碼實(shí)現(xiàn)。如果bug修是在測(cè)試階段那么重做的工作就包括代碼實(shí)現(xiàn)和測(cè)試。另一個(gè)導(dǎo)致成本增加的因素是依賴的組件和流程(rocess)隨著項(xiàng)目的進(jìn)行產(chǎn)品依賴的組件和流程也會(huì)隨之增

3、加。接下來(lái)從另一個(gè)層面來(lái)討論這個(gè)問(wèn)題。如果bug發(fā)現(xiàn)和修正越早開(kāi)發(fā)成本越少那么在第一時(shí)間就避免bug引入是不是成本消耗得更少?如果bug可以被完全預(yù)防那么在開(kāi)發(fā)過(guò)程中就不會(huì)出現(xiàn)重復(fù)工作的情況。這個(gè)被克勞士比極力推薦的觀點(diǎn)非常有意義而且在很多情況下已得到嚴(yán)密的證實(shí)。然而并不是所有的生產(chǎn)軟件產(chǎn)品的組織都試著去避免bug。它們花費(fèi)了大部分的精力在產(chǎn)品發(fā)布給客戶之前發(fā)現(xiàn)和修正其中的bug。在某些情況下軟件企業(yè)并不試著去達(dá)到這樣的目標(biāo)。在產(chǎn)品發(fā)布之后企業(yè)通過(guò)迅速修正產(chǎn)品中的bug來(lái)處理客戶的抱怨。這是因?yàn)檫@樣的企業(yè)始終處于“問(wèn)題解決模式”它們并不試圖發(fā)現(xiàn)問(wèn)題的根本原因而只是把局部的大火撲滅。這種模式并不

4、僅僅導(dǎo)致重復(fù)工作直接帶來(lái)成本的增加而且會(huì)帶來(lái)一個(gè)長(zhǎng)期效應(yīng)而這將影響企業(yè)的業(yè)務(wù)。首先發(fā)布帶有bug的產(chǎn)品將給企業(yè)的聲譽(yù)造成影響并可能造成對(duì)潛在客戶的影響他們?cè)谑欠窠⒑献麝P(guān)系上拿不定主意。另外由于企業(yè)需要資源來(lái)不斷解決現(xiàn)有產(chǎn)品中的問(wèn)題那么開(kāi)發(fā)新產(chǎn)品的資源勢(shì)必減少。對(duì)很多人來(lái)說(shuō)零缺陷的 軟件產(chǎn)品似乎是不切實(shí)際的。我們總是聽(tīng)到軟件開(kāi)發(fā)者說(shuō):“軟件永遠(yuǎn)有bug”。產(chǎn)品進(jìn)入QC階段時(shí)含有bug并不奇怪因?yàn)槲覀儭捌谕遍_(kāi)發(fā)人員制造bug。不幸的是發(fā)布一個(gè)包含很多bug的產(chǎn)品給客戶仍然不令人感到驚訝。甚至連客戶本身也不再感到驚訝。事實(shí)上每個(gè)軟件企業(yè)都可以通過(guò)一些簡(jiǎn)單的方法在不增加任何額外資源的情況下預(yù)防bu

5、g。bug預(yù)防在于一個(gè)簡(jiǎn)單的道理:最好的方法是適當(dāng)借鑒我們自己的經(jīng)驗(yàn)。今天的發(fā)現(xiàn)就是明天的預(yù)防為了能夠預(yù)防bug我們必須首先了解bug的。軟件bug可以分為幾個(gè)類(lèi)別(可能相互之間有所重疊)。第一類(lèi)bug可能是隨機(jī)的它們通常是因?yàn)橐粫r(shí)的疏忽造成的。盡管這些bug可能由于其隨機(jī)性很難預(yù)防但是適當(dāng)?shù)姆治鰧⒂兄诒苊膺@些bug。另一類(lèi)的bug來(lái)自于需求的誤解、開(kāi)發(fā)環(huán)境的錯(cuò)誤或者純粹由于缺乏解決問(wèn)題的相關(guān)技術(shù)。這類(lèi)bug共同的特點(diǎn)是都來(lái)自于開(kāi)發(fā)人員。除非被發(fā)現(xiàn)否則這些bug將一直存在。例如一個(gè)還不完全理解需求的開(kāi)發(fā)工程師在單測(cè)試階段可能無(wú)法發(fā)現(xiàn)這些問(wèn)題只有當(dāng)產(chǎn)品被其他組織(如QC組)測(cè)試時(shí)才會(huì)發(fā)現(xiàn)產(chǎn)品實(shí)

6、現(xiàn)與需求不一致。這使得在前期避免類(lèi)似問(wèn)題的出現(xiàn)更加重要。一個(gè)好消息是軟件中的bug往往傾向于重復(fù)出現(xiàn)即使是一個(gè)隨機(jī)出現(xiàn)的bug。軟件bug的不斷出現(xiàn)不僅表現(xiàn)在同一個(gè)開(kāi)發(fā)人員的工作上而且表現(xiàn)在一個(gè)項(xiàng)目甚至是企業(yè)的層面上。這當(dāng)然不是說(shuō)公司中的每一個(gè)開(kāi)發(fā)人員都會(huì)犯同樣的錯(cuò)誤。但是至少其中一些的錯(cuò)誤足以成為經(jīng)常性出現(xiàn)的問(wèn)題。所以為什么我們認(rèn)為重復(fù)的錯(cuò)誤是一個(gè)好消息?因?yàn)榭梢灶A(yù)見(jiàn)的bug更容易預(yù)防。事實(shí)是我們可以找到一些常見(jiàn)的問(wèn)題并采取相應(yīng)的措施去預(yù)防它(或至少減少類(lèi)似錯(cuò)誤出現(xiàn)的次數(shù))。人為bug的子集?那么這些bug被預(yù)防的可能性更大。域bug?域bug和產(chǎn)品的問(wèn)題域或解決方案域緊密相關(guān)。這樣的bug

7、有更大的機(jī)會(huì)重現(xiàn)因?yàn)殚_(kāi)發(fā)人員、項(xiàng)目組甚至企業(yè)不斷地在這個(gè)域上工作。現(xiàn)在的問(wèn)題是如何預(yù)防各種bug的產(chǎn)生。基于這次討論的目的我建議我們?cè)O(shè)定一個(gè)更加實(shí)際的目標(biāo)。讓我不要考慮完全預(yù)防某個(gè)bug而是將目標(biāo)設(shè)為預(yù)防我們已經(jīng)知道有一定可能性產(chǎn)生的Bug。這意味著我們可以通過(guò)我們各種發(fā)現(xiàn)bug的活動(dòng)來(lái)促進(jìn)將來(lái)的bug預(yù)防。當(dāng)某個(gè)bug被發(fā)現(xiàn)時(shí)我們就有了一個(gè)很好的機(jī)會(huì)來(lái)阻止類(lèi)似問(wèn)題的發(fā)生。前提:記錄bug前提條件是持續(xù)跟蹤發(fā)現(xiàn)的bug并正確地記錄它們離開(kāi)了這個(gè)前提條件將不能將bug發(fā)現(xiàn)作為一個(gè)工具來(lái)預(yù)防bug。不論你使用bug跟蹤系統(tǒng),還是只手寫(xiě)了一個(gè)報(bào)告總結(jié)測(cè)試的結(jié)果 重要的是保存這些數(shù)據(jù)以便用于后來(lái)的分析

8、。在分析bug時(shí)bug記錄的問(wèn)題值得注意。bug的定義越廣泛bug分析的數(shù)據(jù)越有用。報(bào)告bug的測(cè)試人員應(yīng)該明白這一點(diǎn)并不限于狹義上的bug。可能的話測(cè)試人員應(yīng)該運(yùn)用他們的經(jīng)驗(yàn)對(duì)bug產(chǎn)生的原因做最初的假設(shè)。我們將稍后在闡述分析過(guò)程時(shí)討論這個(gè)問(wèn)題。和記錄bug同樣重要的是bug分析的第一步。僅僅跟蹤過(guò)去的bug不能預(yù)防bug的發(fā)生因?yàn)樵S多不同的bug可能于同一個(gè)核心問(wèn)題。不同于信息收集適當(dāng)?shù)胤治鯾ug的原因?qū)ug預(yù)防非常有用。3缺陷分析目標(biāo)在上一節(jié)我們說(shuō)明了bug分析的理由。如上所述最終目標(biāo)是預(yù)防bug而不是修正它們。然而我們可以定義一個(gè)重要的子目標(biāo)這就使不斷提高整個(gè)開(kāi)發(fā)團(tuán)隊(duì)(包括QC組)的

9、技能和實(shí)踐經(jīng)驗(yàn)。當(dāng)然這兩個(gè)目標(biāo)是息息相關(guān)的。離開(kāi)了不斷的知識(shí)累積也不能實(shí)現(xiàn)bug預(yù)防。不過(guò)我覺(jué)得有必要提及這個(gè)子目標(biāo)以強(qiáng)調(diào)持續(xù)性的過(guò)程。bug預(yù)防并不是一個(gè)不切實(shí)際的目標(biāo)。但是你不能期望它在一夜之間發(fā)生。你應(yīng)該為開(kāi)發(fā)小組提教育和知識(shí)以使他們逐漸改善他們的工作。策略本次討論的焦點(diǎn)bug預(yù)防策略非常簡(jiǎn)單和容易實(shí)現(xiàn)。秘訣就是使用在大多數(shù)開(kāi)發(fā)環(huán)境中已經(jīng)存在的過(guò)程素。我們不會(huì)介紹任何新的花費(fèi)昂貴的活動(dòng)也不會(huì)引入一些新的角色到開(kāi)發(fā)過(guò)程中。我們的策略是發(fā)現(xiàn)bug找出bug的根源然后尋找一個(gè)方法來(lái)預(yù)防類(lèi)似的bug在將來(lái)出現(xiàn)。因?yàn)镼C過(guò)程已經(jīng)用于在目前的產(chǎn)品中發(fā)現(xiàn)bug因此該策略的大部分工作實(shí)際上已經(jīng)執(zhí)行大多數(shù)

10、開(kāi)發(fā)過(guò)程缺少的正是分析在QC過(guò)程中發(fā)現(xiàn)的bug。正如你將看到盡管策略的這一部分并不需要昂貴的花費(fèi)但是卻帶來(lái)了極大的額外價(jià)值。分析過(guò)程(1) Bug發(fā)現(xiàn)和初步分析如前所述bug分析的第一步是發(fā)現(xiàn)bug。然而發(fā)現(xiàn)bug的QC工程師(注:測(cè)試工程師)不應(yīng)該滿足于記錄bug的表面癥狀。QC工程師的一個(gè)重要職責(zé)就是試圖發(fā)現(xiàn)bug的根本原因。QC小組在檢驗(yàn)產(chǎn)品質(zhì)量時(shí)不應(yīng)該將產(chǎn)品看作一個(gè)黑盒而應(yīng)該像開(kāi)發(fā)人員那樣了解產(chǎn)品的內(nèi)在包括深入源代碼理解產(chǎn)品的設(shè)計(jì)和實(shí)現(xiàn)。這些能力都是QC小組開(kāi)始bug分析的基本要求。熟悉了產(chǎn)品的代碼QC工程師就可能推測(cè)出bug的根本原因。我要強(qiáng)調(diào)是下面這個(gè)短語(yǔ)的本質(zhì):bug的根本原因?

11、bug的根本原因并不是產(chǎn)生這bug的源代碼所在盡管這些信息可能和分析過(guò)程關(guān)系密切。但是發(fā)現(xiàn)bug的根本原因意味著找到造成這些錯(cuò)誤的原因。通過(guò)一些實(shí)例來(lái)說(shuō)明這個(gè)問(wèn)題可能更清楚一些。讓我們看一個(gè)普遍存在的關(guān)于線程同步的問(wèn)題。假設(shè)一個(gè)多線程的 應(yīng)用程序需要同步地訪問(wèn)某個(gè)數(shù)據(jù)結(jié)構(gòu)。被指派測(cè)試這個(gè)產(chǎn)品的QC工程師發(fā)現(xiàn)在某種情景下應(yīng)用程序盡管沒(méi)有Crash但是會(huì)停止響應(yīng)。正常的QC過(guò)程是這個(gè)bug被記錄在bug跟蹤系統(tǒng)中并描述了測(cè)試情景和停止響應(yīng)的實(shí)際結(jié)果。然而如果這個(gè)QA工程師熟悉源代碼就可以進(jìn)行bug產(chǎn)生原因的初步分析。例如這個(gè)QC工程師可能斷定這個(gè)bug產(chǎn)生的原因是之前的線程沒(méi)有釋放mutex從而造

12、成了沖突。這些分析可以記錄在bug的詳細(xì)說(shuō)明中作為bug分析的一個(gè)基礎(chǔ)。(2) Bug修訂和進(jìn)一步分析一如既往發(fā)現(xiàn)一個(gè)bug之后開(kāi)發(fā)人員應(yīng)該負(fù)責(zé)處理它。但是如果bug的發(fā)現(xiàn)過(guò)程包含了bug根本原因的初步分析那么關(guān)于如何解決這個(gè)bug開(kāi)發(fā)人員可能擁有了更多的信息。雖然這不是QC工程師bug初步分析的目的但是它可能為開(kāi)發(fā)人員提了更多的觀點(diǎn)。除了修正缺陷以及記錄實(shí)現(xiàn)的具體步驟開(kāi)發(fā)人員還應(yīng)該對(duì)bug進(jìn)行進(jìn)一步的分析。這次分析應(yīng)該著眼于導(dǎo)致bug產(chǎn)生的開(kāi)發(fā)情景。在線程同步的例子中開(kāi)發(fā)人員不應(yīng)該僅僅記錄增加了一個(gè)調(diào)用來(lái)釋放mutex(注:Mutal Exclusion = 互斥鎖保證了共享數(shù)據(jù)不會(huì)同時(shí)被多

13、個(gè)線程訪問(wèn)只向一個(gè)線程授予對(duì)共享資源的獨(dú)占訪問(wèn)權(quán))。反之開(kāi)發(fā)人員應(yīng)該找出沒(méi)有釋放mutex的原因。假設(shè)分析的原因是:因?yàn)樾枰降姆椒ǔ^(guò)一個(gè)的返回點(diǎn)因此開(kāi)發(fā)人員在某些控制徑上忘記清理代碼。這一類(lèi)簡(jiǎn)單的分析實(shí)際帶來(lái)了非常大的價(jià)值。不同于記錄具體問(wèn)題的具體解決辦法我們現(xiàn)在有了可以解決許多情況的經(jīng)驗(yàn)有些情況甚至并不涉及到線程同步和釋放mutex。但是分析過(guò)程并沒(méi)有結(jié)束我們需要進(jìn)一步的分析來(lái)將收集的所有數(shù)據(jù)轉(zhuǎn)換為實(shí)踐從而幫助在將來(lái)避免類(lèi)似bug的發(fā)生。(3) bug預(yù)防分析分析的最后一步就是尋找一個(gè)預(yù)防類(lèi)似錯(cuò)誤的方法。這一方法不僅涉及到開(kāi)發(fā)、QC工程師還涉及到不直接負(fù)責(zé)代碼編寫(xiě)的資深開(kāi)發(fā)人員。這一階

14、段的成果是一些有用的實(shí)踐經(jīng)驗(yàn)開(kāi)發(fā)人員可以通過(guò)這些實(shí)踐預(yù)防bug而不是修正bug。這些實(shí)踐不應(yīng)該是某個(gè)具體問(wèn)題的解決方案。在我們線程同步的例子中可能得到這樣一個(gè)實(shí)踐:是否有審計(jì)范圍機(jī)制來(lái)獲取和釋放資源?這種實(shí)踐 (不一定適合所有編程語(yǔ)言)可以指導(dǎo)開(kāi)發(fā)人員用一個(gè)類(lèi)(class)封裝資源, 這樣構(gòu)造(constructor)函數(shù)容易分配和而與析構(gòu)(destructor) 函數(shù)釋放資源。如果遵守這樣的約定, 當(dāng)程序結(jié)束這方法時(shí)不管控制徑是怎樣的資源(上述例子中獲得的mutex)總能被釋放。Bug預(yù)防分析是整個(gè)bug分析過(guò)程的核心。這一階段總結(jié)出的實(shí)踐可以在更廣泛的范圍內(nèi)預(yù)防潛在 的缺陷。由于分析結(jié)果的

15、廣泛應(yīng)用性分析某個(gè)具體問(wèn)題的投入將很容易被收回。非常重要的是我們前面所舉的例子是一個(gè)隨機(jī)性的bug。開(kāi)發(fā)人員由于疏忽而忘記了釋放資源。在代碼實(shí)現(xiàn)時(shí)這樣的bug是隨機(jī)產(chǎn)生的但是類(lèi)似bug產(chǎn)生的幾率卻非常高。所以盡管這一類(lèi)bug是隨機(jī)的但仍然可以被預(yù)見(jiàn)并防止發(fā)生。(4) 發(fā)布經(jīng)驗(yàn)分析得出的實(shí)踐經(jīng)驗(yàn)應(yīng)該被記錄并發(fā)布這樣其他的開(kāi)發(fā)人員就可以通過(guò)學(xué)習(xí)這些經(jīng)驗(yàn)避免類(lèi)似的錯(cuò)誤。一個(gè)發(fā)布經(jīng)驗(yàn)最好的辦法就是知識(shí)庫(kù)。這將使得新的知識(shí)在組織內(nèi)流動(dòng)并被相關(guān)的開(kāi)發(fā)人員所學(xué)習(xí)。如果不將分析結(jié)果傳達(dá)給組織內(nèi)相關(guān)的其他人員那么分析的目的就沒(méi)有達(dá)到。避免下一個(gè)bug出現(xiàn)的唯一辦法就是讓開(kāi)發(fā)人員知道如何避免它并鼓勵(lì)他們這么做。B

16、ug分析實(shí)例讓我們研究另外一個(gè)例子以便更好地理解bug分析的益處。在這個(gè)事例中QC工程師進(jìn)行了如下的操作:當(dāng)輸入一個(gè)長(zhǎng)字符串到應(yīng)用程序時(shí)造成其崩潰(crash)。這一結(jié)論本身就需要一定程度的分析但這個(gè)QC工程師并不滿足于這樣的分析進(jìn)一步研究了相關(guān)的代碼發(fā)現(xiàn)crash的原因是輸入字符串時(shí)的處理有問(wèn)題。其中一個(gè)步驟是將輸入的字符緩存在一個(gè)固定大小的數(shù)組中而這個(gè)數(shù)組有時(shí)候顯得太小了。和線程同步的例子一樣QC工程師的初步分析帶來(lái)了很大的價(jià)值開(kāi)發(fā)可以更容易的發(fā)現(xiàn)和修正這個(gè)bug。此外記錄缺陷的真正原因而不是表象將幫助其他人避免類(lèi)似的bug。接著開(kāi)發(fā)人員開(kāi)始修正這個(gè)bug。當(dāng)修正的時(shí)候她不僅記錄了解決措施

17、并說(shuō)明了導(dǎo)致缺陷產(chǎn)生的原因。在這個(gè)例子中造成bug的原因是在操作未經(jīng)處理的C/C+緩沖區(qū)時(shí)沒(méi)有經(jīng)常檢驗(yàn)緩沖區(qū)的大小是否不夠。然而這個(gè)結(jié)論甚至可以被進(jìn)一步總結(jié)為更廣泛應(yīng)用的經(jīng)驗(yàn)以便幫助開(kāi)發(fā)人員在以后避免類(lèi)似的缺陷發(fā)生。所以在分析的最后階段開(kāi)發(fā)人員在組內(nèi)更資深的開(kāi)發(fā)人員的幫助下得到了下面的實(shí)踐經(jīng)驗(yàn):避免使用未經(jīng)處理的C/C+緩沖區(qū)盡量使用安全的collections和strings如標(biāo)準(zhǔn)模版數(shù)據(jù)庫(kù)中提的可用collections和strings。這樣就完全可以避免前面發(fā)現(xiàn)的這個(gè)bug。益處Bug分析帶來(lái)了很多的好處。第一個(gè)好處就是幫助產(chǎn)生錯(cuò)誤的開(kāi)發(fā)人員總結(jié)經(jīng)驗(yàn)并使他在將來(lái)避免類(lèi)似的錯(cuò)誤。有時(shí)只修正

18、一個(gè)具體的bug而不去分析它產(chǎn)生的原因并不會(huì)幫助在日后得到提高。在這種情況下只有深入分析和資深開(kāi)發(fā)人員的指導(dǎo)才能使開(kāi)發(fā)人員成長(zhǎng)和提高能力。更廣泛的好處是使得其他開(kāi)發(fā)人員從同事的錯(cuò)誤中吸取教訓(xùn)。分析總結(jié)的實(shí)踐經(jīng)驗(yàn)可以預(yù)防bug的產(chǎn)生這樣的知識(shí) 在組織內(nèi)的成員間共享。某個(gè)開(kāi)發(fā)人員產(chǎn)生的bug可以幫助組織內(nèi)的其他人避免類(lèi)似的bug出現(xiàn)。從更一般的角度來(lái)看發(fā)布最佳實(shí)踐(如bug分析總結(jié)的實(shí)踐)促進(jìn)了組織內(nèi)成員的學(xué)習(xí)和自我提高。這樣看來(lái)Bug分析的價(jià)值還不僅僅是缺陷的預(yù)防。另一個(gè)好處是通過(guò)從更廣的角度上記錄bug組織內(nèi)的其他QC工程師將知道如何發(fā)現(xiàn)類(lèi)似的錯(cuò)誤。除了組織內(nèi)的測(cè)試知識(shí)和經(jīng)驗(yàn)bug分析過(guò)程可以促進(jìn)開(kāi)發(fā)更好的測(cè)試技術(shù)和工具從而幫助發(fā)現(xiàn)類(lèi)似的bug。所以就算缺陷沒(méi)有被完全預(yù)防也能更容易被發(fā)現(xiàn)。作為上面所有好處的結(jié)果QC在一輪測(cè)試中將有更多的時(shí)間來(lái)測(cè)試更復(fù)雜的情景并發(fā)現(xiàn)更“狡猾的”bug。如果類(lèi)似的bug都已經(jīng)被預(yù)防而不容易產(chǎn)生而且QC都有更好的技術(shù)來(lái)發(fā)現(xiàn)類(lèi)似的bug就有了更充裕的時(shí)間來(lái)進(jìn)行更高級(jí)的測(cè)試。當(dāng)然組織所生產(chǎn)的產(chǎn)品的質(zhì)量也將得到提高。最后我想強(qiáng)調(diào)的是bug分析不僅收集了執(zhí)行中的問(wèn)題而且從這些問(wèn)題中總結(jié)了實(shí)踐經(jīng)驗(yàn)。舉例來(lái)說(shuō)導(dǎo)致一個(gè)bug產(chǎn)生的原因可能是需求不夠清楚。這樣通過(guò)bug分析得到的經(jīng)驗(yàn)提了一種方法來(lái)預(yù)防需求不清楚。這個(gè)經(jīng)驗(yàn)可能不會(huì)對(duì)組織中的開(kāi)發(fā)人員產(chǎn)生效果。所以

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論