<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í)踐

            發(fā)表于:2014-11-12來(lái)源:uml.org.cn作者:鄧 俊寧點(diǎn)擊數: 標簽:回歸測試
            本文介紹一個(gè)有效的解決方案,可以提高回歸測試的效率與質(zhì)量。它解決了回歸測試中的兩個(gè)主要問(wèn)題:如何優(yōu)化回歸測試用例以及分析覆蓋率。

              本文介紹一個(gè)有效的解決方案,可以提高回歸測試的效率與質(zhì)量。它解決了回歸測試中的兩個(gè)主要問(wèn)題:如何優(yōu)化回歸測試用例以及分析覆蓋率。

              回歸測試對保證軟件質(zhì)量具有重要意義。要實(shí)現有效的回歸測試,必須解決回歸測試中的兩個(gè)主要問(wèn)題:(1)測試用例的優(yōu)化選擇;(2)覆蓋率分析。前者決定了回歸測試的效率,好的測試用例的選擇可以用少量的測試用例準確地覆蓋新版本中盡可能多的改動(dòng)。后者是度量測試的重要指標,通過(guò)達到良好的測試覆蓋率,保證了回歸測試的質(zhì)量。

              本文正是通過(guò)討論如何優(yōu)化選擇測試用例,用最小的代價(jià)達到最大的覆蓋率,從而找到回歸測試的有效解決方案。

              存在的問(wèn)題

              測試用例的優(yōu)化選擇

              對測試用例的選擇,測試人員通常有兩種作法。一種是,把相關(guān)的或是所有的模塊的測試用例都選出來(lái)執行一遍;另一種是,僅針對被 Fixed 的 APAR/Defect 進(jìn)行檢驗,測試用例很少或是開(kāi)發(fā)新的針對這個(gè) Fixed 的測試用例。這兩種方法都存在不足。第一種方法在測試時(shí)間有限的情況下,去執行所有的測試用例,會(huì )測試到很多無(wú)需再測試的測試用例,從而導致測試資源的浪費;第二種是很難確保 APAR/Defect 改動(dòng)后,被測系統沒(méi)有受到關(guān)聯(lián)影響,很難保證測試質(zhì)量。

              由于 Bug Fix 或者功能更新后,在新版本發(fā)布之前,我們要確保所作改動(dòng)不會(huì )對已有的功能模塊產(chǎn)生負面的影響。用所有的測試用例作回歸測試, 存在著(zhù)人力與時(shí)間成本過(guò)高的問(wèn)題;依靠人的經(jīng)驗去挑選回歸測試用例,存在著(zhù)挑選不準確或對程序改動(dòng)測試覆蓋不全的問(wèn)題。

              圖 1. 測試用例優(yōu)化選擇問(wèn)題

            圖 1. 測試用例優(yōu)化選擇問(wèn)題

              回歸測試覆蓋率分析

              測試用例優(yōu)化選擇可以有效地解決現有測試用例的覆蓋問(wèn)題,但在實(shí)際測試過(guò)程中,我們仍然發(fā)現存在著(zhù)覆蓋不全的問(wèn)題。即新版本中的某些實(shí)現并不能被現有的測試用例所覆蓋。這樣,測試人員需要開(kāi)發(fā)新的測試用例對新的功能進(jìn)行測試覆蓋。然后對于測試人員來(lái)說(shuō)這并不實(shí)際,他們很難依靠測試經(jīng)驗將代碼中沒(méi)有被測試的地方找出來(lái)。那么如何更好的得到測試過(guò)程中的測試覆蓋率,及測試結束后整個(gè)軟件的測試覆蓋率呢,從而使得測試人員可以針對未被測試到的地方設計新的測試用例。這里我們特別針對在版本更新過(guò)程中,那些發(fā)生了更新卻沒(méi)有被覆蓋到的地方。

              解決問(wèn)題

              原理

              圖 2. 測試用例優(yōu)化選擇原理

            圖 2. 測試用例優(yōu)化選擇原理

              圖 3. 測試用例優(yōu)化選擇舉例

            圖 3. 測試用例優(yōu)化選擇舉例

              如上圖所示,所有的測試用例都會(huì )有一個(gè)函數調用的路徑。我們把這些調用路徑一一記下來(lái)。對于新版本所作的改動(dòng),所有與之相關(guān)的上層調用的測試用例都能夠準確地選出來(lái),這樣我們就能用這些準確的測試用例來(lái)覆蓋這次改動(dòng)所產(chǎn)生的影響。毫不相關(guān)的測試用例則不會(huì )被選出來(lái)。從而用較小的成本完成這次改動(dòng)所需要的回歸測試,既省時(shí)省力又保證較高的測試質(zhì)量。

              圖 4. 覆蓋率分析舉例

            圖 4. 覆蓋率分析舉例

              如上圖所示,在版本更新過(guò)程中受到影響的測試用例為 Test Case1, Test Case2, Test Case3 覆蓋了 12 個(gè) Node,在版本更新過(guò)程中的更新點(diǎn)是 4,其中被覆蓋到的為 3,還有 1 個(gè)更新點(diǎn)沒(méi)有被覆蓋到,現有測試用例集合的更新覆蓋能力為 75% 。這樣,我們知道上一個(gè)版本的測試用例設計不夠充分尚有程序模塊沒(méi)有被任何已有的測試用例所覆蓋。由于代碼的更新最有可能引起程序的缺陷甚至系統崩潰,所以需要添加新的測試用例以保證對更新的覆蓋,以降低程序運行的風(fēng)險。

              對于軟件的節點(diǎn)覆蓋率,我們細化到函數粒度。我們是通過(guò)軟件部署的 Binary 代碼分析得知的函數情況。不需要借助源代碼,因此對于軟件進(jìn)行測試覆蓋率分析來(lái)說(shuō)要求低,用較小的成本完成此次的測試用例覆蓋反饋與分析。既省時(shí)省力又保證較高的測試質(zhì)量。

            原文轉自:http://www.uml.org.cn/Test/200903313.asp

            老湿亚洲永久精品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>