<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            軟件測試管理中預防bug的重要性及bug分析

            發(fā)布: 2010-3-19 14:22 | 作者: 網(wǎng)絡(luò )轉載 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng) | 查看: 50次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

            軟件測試管理中預防bug的重要性及bug分析

            1.引言:

              生產(chǎn)軟件的企業(yè)安排很多人來(lái)測試它們的軟件產(chǎn)品。測試的目的就是發(fā)現bug(缺陷,defect)以便修正它們。正常情況是盡快處理可能的bug,從而減少修正bug的成本。因為,眾所周知,bug越早被發(fā)現并修正,所消耗的資源越少。問(wèn)題是在很多情況下,由于修正已發(fā)現的bug,測試過(guò)程不得不停頓下來(lái)。

              那么,以目前正忙于軟件產(chǎn)品測試的同樣資源來(lái)促進(jìn)組織長(cháng)期的質(zhì)量目標不是更好?為了做到這一點(diǎn),我們應該盡快地提前發(fā)現可能的bug。就像克勞士比(Philip Crosby)幾年前所說(shuō)的那樣,我們應該努力預防bug,而不僅僅是修正它們。這就是真正的質(zhì)量。

              2.目標:預防bug

              預防的重要性:

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

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

              這種模式并不僅僅導致重復工作直接帶來(lái)成本的增加,而且會(huì )帶來(lái)一個(gè)長(cháng)期效應,而這將影響企業(yè)的業(yè)務(wù)。首先,發(fā)布帶有bug的產(chǎn)品將給企業(yè)的聲譽(yù)造成影響,并可能造成對潛在客戶(hù)的影響——他們在是否建立合作關(guān)系上拿不定主意。另外,由于企業(yè)需要資源來(lái)不斷解決現有產(chǎn)品中的問(wèn)題,那么開(kāi)發(fā)新產(chǎn)品的資源勢必減少。

              對很多人來(lái)說(shuō),零缺陷的軟件產(chǎn)品似乎是不切實(shí)際的。我們總是聽(tīng)到軟件開(kāi)發(fā)者說(shuō):“軟件永遠有bug”。產(chǎn)品進(jìn)入QC階段時(shí)含有bug并不奇怪,因為我們“ 期望”開(kāi)發(fā)人員制造bug。不幸的是,發(fā)布一個(gè)包含很多bug的產(chǎn)品給客戶(hù)仍然不令人感到驚訝。甚至連客戶(hù)本身也不再感到驚訝。

              事實(shí)上,每個(gè)軟件企業(yè)都可以通過(guò)一些簡(jiǎn)單的方法,在不增加任何額外資源的情況下預防bug。bug預防在于一個(gè)簡(jiǎn)單的道理:最好的方法是適當借鑒我們自己的經(jīng)驗。

              今天的發(fā)現就是明天的預防

              為了能夠預防bug,我們必須首先了解bug的來(lái)源。軟件bug可以分為幾個(gè)類(lèi)別(可能相互之間有所重疊)。第一類(lèi)bug可能是隨機的,它們通常是因為一時(shí)的疏忽造成的。盡管這些bug可能由于其隨機性很難預防,但是,適當的分析將有助于避免這些bug。

              另一類(lèi)的bug來(lái)自于需求的誤解、開(kāi)發(fā)環(huán)境的錯誤或者純粹由于缺乏解決問(wèn)題的相關(guān)技術(shù)。這類(lèi)bug共同的特點(diǎn)是都來(lái)自于開(kāi)發(fā)人員。除非被發(fā)現,否則這些bug將一直存在。例如,一個(gè)還不完全理解需求的開(kāi)發(fā)工程師在單元測試階段可能無(wú)法發(fā)現這些問(wèn)題,只有當產(chǎn)品被其他組織(如QC組)測試時(shí)才會(huì )發(fā)現產(chǎn)品實(shí)現與需求不一致。這使得在前期避免類(lèi)似問(wèn)題的出現更加重要。

              一個(gè)好消息是,軟件中的bug往往傾向于重復出現,即使是一個(gè)隨機出現的bug。軟件bug的不斷出現不僅表現在同一個(gè)開(kāi)發(fā)人員的工作上,而且表現在一個(gè)項目甚至是企業(yè)的層面上。這當然不是說(shuō)公司中的每一個(gè)開(kāi)發(fā)人員都會(huì )犯同樣的錯誤。但是,至少其中一些的錯誤足以成為經(jīng)常性出現的問(wèn)題。所以,為什么我們認為重復的錯誤是一個(gè)好消息?因為可以預見(jiàn)的bug更容易預防。事實(shí)是我們可以找到一些常見(jiàn)的問(wèn)題,并采取相應的措施去預防它(或至少減少類(lèi)似錯誤出現的次數)。

              人為bug的子集?那么這些bug被預防的可能性更大。域bug?域bug和產(chǎn)品的問(wèn)題域或解決方案域緊密相關(guān)。這樣的bug有更大的機會(huì )重現,因為開(kāi)發(fā)人員、項目組甚至企業(yè)不斷地在這個(gè)域上工作。

              現在的問(wèn)題是如何預防各種bug的產(chǎn)生;谶@次討論的目的,我建議我們設定一個(gè)更加實(shí)際的目標。讓我不要考慮完全預防某個(gè)bug,而是將目標設為——預防我們已經(jīng)知道有一定可能性產(chǎn)生的Bug。這意味著(zhù)我們可以通過(guò)我們各種發(fā)現bug的活動(dòng)來(lái)促進(jìn)將來(lái)的bug預防。當某個(gè)bug被發(fā)現時(shí),我們就有了一個(gè)很好的機會(huì )來(lái)阻止類(lèi)似問(wèn)題的發(fā)生。

              前提:記錄bug

              前提條件是持續跟蹤發(fā)現的bug并正確地記錄它們,離開(kāi)了這個(gè)前提條件將不能將bug發(fā)現作為一個(gè)工具來(lái)預防bug。不論你使用bug跟蹤系統,還是只手寫(xiě)了一個(gè)報告總結測試的結果,重要的是保存這些數據以便用于后來(lái)的分析。

              在分析bug時(shí),bug記錄的問(wèn)題值得注意。bug的定義越廣泛,bug分析的數據越有用。報告bug的測試人員應該明白這一點(diǎn),并不限于狹義上的 bug?赡艿脑(huà),測試人員應該運用他們的經(jīng)驗對bug產(chǎn)生的原因做最初的假設。我們將稍后在闡述分析過(guò)程時(shí)討論這個(gè)問(wèn)題。

              和記錄bug同樣重要的是bug分析的第一步。僅僅跟蹤過(guò)去的bug不能預防bug的發(fā)生,因為許多不同的bug可能來(lái)源于同一個(gè)核心問(wèn)題。不同于信息收集,適當地分析bug的原因對bug預防非常有用。

              3.缺陷分析

              目標

              在上一節,我們說(shuō)明了bug分析的理由。如上所述,最終目標是預防bug而不是修正它們。然而,我們可以定義一個(gè)重要的子目標,這就使不斷提高整個(gè)開(kāi)發(fā)團隊(包括QC組)的技能和實(shí)踐經(jīng)驗。當然,這兩個(gè)目標是息息相關(guān)的。離開(kāi)了不斷的知識累積,也不能實(shí)現bug預防。不過(guò),我覺(jué)得有必要提及這個(gè)子目標以強調持續性的過(guò)程。bug預防并不是一個(gè)不切實(shí)際的目標。但是,你不能期望它在一夜之間發(fā)生。你應該為開(kāi)發(fā)小組提供教育和知識,以使他們逐漸改善他們的工作。

              策略

              本次討論的焦點(diǎn)——bug預防策略非常簡(jiǎn)單和容易實(shí)現。

              秘訣就是使用在大多數開(kāi)發(fā)環(huán)境中已經(jīng)存在的過(guò)程元素。我們不會(huì )介紹任何新的花費昂貴的活動(dòng),也不會(huì )引入一些新的角色到開(kāi)發(fā)過(guò)程中。

              我們的策略是發(fā)現bug,找出bug的根源,然后尋找一個(gè)方法來(lái)預防類(lèi)似的bug在將來(lái)出現。因為QC過(guò)程已經(jīng)用于在目前的產(chǎn)品中發(fā)現bug,因此該策略的大部分工作實(shí)際上已經(jīng)執行,大多數開(kāi)發(fā)過(guò)程缺少的正是分析在QC過(guò)程中發(fā)現的bug。正如你將看到,盡管策略的這一部分并不需要昂貴的花費,但是卻帶來(lái)了極大的額外價(jià)值。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: bug BUG Bug 管理 軟件測試 預防 重要性


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>