<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)有公告

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

            如何使用lcov生成diff代碼覆蓋率報告

            發(fā)布: 2011-2-09 10:22 | 作者: 網(wǎng)絡(luò )轉載 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 116次 | 進(jìn)入軟件測試論壇討論

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

              lcov是建立在gcov之上的一個(gè)可以生成html代碼覆蓋率報告的工具,最近公司開(kāi)始嘗試引入代碼覆蓋來(lái)提高產(chǎn)品質(zhì)量,lcov很好地滿(mǎn)足了我們的需求,雖然lcov本身支持生成代碼覆蓋率的diff報告,但是跟我們的需求不太符合。

              首先說(shuō)一下我們的情況,我們有一套自動(dòng)化回歸測試集,可以看做是我們測試的全集,F在已經(jīng)完成了基于這個(gè)回歸測試集的代碼覆蓋率報告,這其中肯定有某些行沒(méi)有被覆蓋到的,如何評估這些沒(méi)有被測試過(guò)的行的風(fēng)險呢?最開(kāi)始是DEV跟QA一起review,由開(kāi)發(fā)來(lái)評估這些沒(méi)有被測試過(guò)的代碼。最近提出了一個(gè)新的思路,就是用Production的代碼覆蓋和本地回歸測試的代碼覆蓋做一個(gè)diff,著(zhù)重看一下那些在Production里面實(shí)際被執行過(guò)的代碼中,有哪些是我們本地回歸測試所沒(méi)有覆蓋的,因為這些“裸奔”的代碼才是最危險的代碼。

              查一下文檔,lcov在生成html報告的時(shí)候可以做這個(gè)事情,在genhtml的時(shí)候使用參數“–baseline-file baseline-file”,指定了這個(gè)參數以后就會(huì )在用輸入的tracefile里面的counter來(lái)減去baseline-file里面的counter,完成這個(gè)減法計算以后再生成報告?梢杂肔ocal測試的數據作為basefile,兩者一減,在報告里面那些cover的行,就是Production上跑到的代碼而回歸測試集沒(méi)有能覆蓋的部分。但是如果直接用的話(huà),結果可能不是我們想要的,因為我用了genhtml這樣的一個(gè)特性:“Note that when a count for a particular line in baseline-file is greater than the count in the tracefile, the result is zero.”。

              舉個(gè)例子,如果我們的代碼被執行了若干次:

            Code A B C D
            Local 0 40 50 60
            Production 50 50 50 50
            Actual result 50 (local uncover) 10 (local uncover) 0 (covered) 0 (covered)
            Expected local uncover covered covered covered

              主要看第三列,B這行代碼。如果在Local測試中某行代碼被執行了40次,而同一行代碼在Production被執行了50次,那么diff出來(lái)的結果是這行代碼沒(méi)有被覆蓋,而實(shí)際的結果是回歸測試已經(jīng)覆蓋到了。解決思路很簡(jiǎn)單,我們可以讓Local的counter增加N倍,這個(gè)N要足夠大,就能避免這種情況的發(fā)生了。當我們按照正常操作生成一個(gè)tracefile的時(shí)候,接下來(lái)就用“–add-tracefile tracefile” 來(lái)把這個(gè)tracefile的counter加上去,

              lcov -a mytest.info -a mytest.info -o mytest_2x.info

              lcov -a mytest_2x.info -a mytest_2x.info -o mytest_4x.info

              寫(xiě)個(gè)shell腳本幫你干這個(gè)事情,不到半小時(shí)就能把counter增加2的N次方倍。最后以這個(gè)放大了counter的tracefile作為基線(xiàn),生成的diff report

              genhtml -o diffresult –num-spaces 4 –legend -b mytest_1024x.info prod.info

              最終結果:

            Code A B C D
            Local 0 40960 51200 61440
            Production 50 50 50 50
            Actual result 50 (local uncover) 0 (covered) 0 (covered) 0 (covered)
            Expected local uncover covered covered covered

              什么樣的代碼最危險?沒(méi)有被測試過(guò)的代碼是最危險的。Production和regression test的代碼覆蓋率diff報告可以給我們提供一些有針對性的信息。

            延伸閱讀

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

            TAG: 覆蓋率


            關(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備10010545號-5
            技術(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>