• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

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

    軟件開發中回歸測試最佳實踐

    發布: 2009-9-08 11:19 | 作者: 網絡轉載 | 來源: 領測軟件測試網 | 查看: 121次 | 進入軟件測試論壇討論

    領測軟件測試網

      解決方案

      基于對問題 1) 和問題 2) 的原理分析,我們設計并實施了回歸測試的解決方案,如下圖所示。它包含了 3 個主要步驟。一是測試用例的錄入;二是對新舊兩個版本的變更分析;三、通過測試用例優化選擇和覆蓋率分析,得到相應的測試用例優化選擇報告,和覆蓋率分析報告。

      圖 5. 回歸測試解決方案

    回歸測試最佳實踐

      步驟一, Trace Test Case 負責錄制測試用例,并將捕獲到的測試用例的 Runtime Trace 存放到數據庫中;

      測試用例在后臺運行中的 Runtime Trace 是動態分析 (Dynamic Analysis) 中的重要信息。這些實際的運行信息為測試用例的優化選擇和覆蓋率分析創造了條件。下面是測試用例跟蹤的框架圖:

      圖 6. 測試用例跟蹤的框架圖

    回歸測試最佳實踐

      從上圖我們可以看出,測試人員觸發 Trigger 之后,會啟動 Agent Controller 。 Agent Controller 一直對 JVM 中的 JVMTI 進行監聽,以獲取部署在 JVM 上的被測應用程序。這些 Agent Controller 還負責將收集到的數據傳輸給 Data Collector 。又 Data Collector 將這些 Runtime Trace 寫入如下表所示的數據庫表中。

    回歸測試最佳實踐

      注意:函數的 Signature 信息作為函數的參數標識也需要記錄下來。以區別同名不同參數的函數。

      步驟二, Change Analysis 用于將新舊兩個版本作比較,得到 Change Report,即程序變更報告,可以精確到 Method 粒度。一般來說代碼變更有 4 種級別,分別為包級別 (Package),類級別 (Class),函數級別 (Method) 及語句級別 (Statement) 。

      對于包級別和類級別來說,比較的力度過粗,會影響到回歸測試優化的質量。而函數級別和語句級別都能起到很好的回歸測試的作用。其中語句級別因為粒度最細,等到的分析結果也最精確,回歸測試質量最高。但與函數級別的變更分析相比,回歸測試的質量相差很有限,但造成了過多的執行時間代價,影響了回歸分析的效率。因此我們采用函數級別的變更分析作為回歸測試的變更粒度。

      確定比較粒度之后,可以選擇分析比較的方法。最簡單的常用比較方法就是文本比較。包括源代碼和可執行文件 (binary code) 的文本比較。根據 Java 語言面向對象的特點,還可以采用基于面向對象分析的比較方法。后者得到的分析粒度更細,但是所花的代價也越高。

      步驟三, 在通過測試用例錄制得到測試用例具體的 Runtime Trace 信息,以及通過 Change 分析得到新舊兩個版本的變更信息之后,我們可以對測試用例優化問題及覆蓋率分析問題進行求解。

      Test Case Prioritization 中,通過測試用例與運行的 Runtime Trace 進行匹配得到相關的測試用例。并利用測試用例優化排序算法對相關的測試用例進行排序,得到優化結果,F在的優化排序算法有多種,這里不對優化排序算法進行討論。

      Coverage Analysis 中,通過對已被相關測試用例覆蓋的 Method 數量,及未被測試用例覆蓋到的 Method 數量的分析,可以得到基于代碼更新的覆蓋率報告。測試人員得到這份報告之后,可以找到未被覆蓋到的 Method,并對其進行針對性的開發新的測試用例。以完成對新功能的覆蓋。

      我們可以看到步驟一,二共同服務于測試用例優化選擇和覆蓋率分析兩個模塊。有了測試用例的 Runtime Trace 和 Change Report. 我們可以將 Change 結果與 Runtime Trace 進行匹配,找出能覆蓋程序更改的測試用例。同樣,對于沒有被測試用例覆蓋到的 Change 部分。由于沒有相關測試用例被找出,我們現有的測試用例是不足的,需要針對未被覆蓋到的 Change 部分開發新的測試用例。

      而覆蓋率作為軟件測試的一項重要指標,可以根據已經得到覆蓋和未被覆蓋的 method 進行求解,即已得到覆蓋的 change method 數與總的 change method 之比。

    內容導航

      結果

      基于以上的回歸測試解決方案,我們對一個有著 30 個測試用例的程序進行回歸測試,得到如下測試用例優化選擇分析報表:

      Change Analysis Report

      總函數 變更函數 覆蓋數 未覆蓋 覆蓋率 108 12 10 2 83.3%

      表 1 優化選擇測試用例: 3 (of Total 30)

    回歸測試最佳實踐

      分析報告顯示這次代碼變更共有 12 個函數發生了更改。在 30 個測試用例中有 3 個測試用例與這些更改相關,它們覆蓋了這次代碼更改 12 個中的 10 個。而其它 27 的測試用例則與這 12 個代碼改動毫不相關。

      表 2 回歸測試結果分析

    回歸測試最佳實踐

      從表中我們可以看到,經過測試用例優化選擇之后,我們選出了 3 個和函數變更相關的測試用例,達到了 83.3% 的覆蓋率。同時由于 27 個與函數變更無關的測試用例不需要重測,使得 90% 的回歸測試資源得到了節省。

      圖 7. 覆蓋率分析

    回歸測試最佳實踐

      從上圖,我們可以清楚地看到基于每個函數改動的相關測試用例的數目,以及測試覆蓋率。比如 ManageCommodityAction 這個 Class 里面,存在了 2 個 Change Method, 只有 1 個 changed method 被現有的 1 個 Test Case 所覆蓋,測試覆蓋率為 50% 。

      上面分析報告中總共有 12 個函數發生改動,基中還有 2 個沒有被任何測試用例覆蓋到。那么未被覆蓋的 Change Method 就需要測試人員對之進行分析并且添加新的測試用例以提高我們的測試覆蓋率 , 保證測試質量。

      總結

      回歸測試用例的優化選擇,以最少的測試用例,準確地覆蓋所作改動,極大地提高了我們回歸測試的測試效率與測試質量。

      自動測試過程中的覆蓋率反饋分析,以最小的測試代價,最精確的分析,來獲得當前的測試完成情況,為測試人員提高了良好的分析報告,以便測試人員改進和新增新的測試用例。大大提高了回歸測試的測試效率與質量。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    22/2<12

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

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>