麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種代碼覆蓋率確定方法、裝置及電子設備與流程

文檔序號:41375194發布日期:2025-03-21 15:30閱讀:24來源:國知局
一種代碼覆蓋率確定方法、裝置及電子設備與流程

本技術涉及軟件工程和軟件測試的,具體而言,涉及一種代碼覆蓋率確定方法、裝置及電子設備。


背景技術:

1、目前,傳統的代碼覆蓋率統計方法通常是在單個版本中進行的,即在某個版本的代碼上運行測試用例,然后生成代碼覆蓋率報告。代碼覆蓋率是衡量測試代碼質量的一個重要指標,反映了測試用例覆蓋了多少代碼。因此,如果報告中的代碼覆蓋率高,則意味著更多的代碼被測試覆蓋,說明代碼的可靠性和質量也比較高。然而,在實踐的過程中發現,這種方法通常只能統計出單一版本的代碼覆蓋率統計,無法得到多版本代碼之間的代碼覆蓋率。


技術實現思路

1、本技術實施例的目的在于提供一種代碼覆蓋率確定方法、裝置及電子設備,用于改善無法得到多版本代碼之間的代碼覆蓋率的問題。

2、本技術實施例提供了一種代碼覆蓋率確定方法,包括:獲取應用程序的待發布版本代碼和參照版本代碼,待發布版本代碼的版本號與參照版本代碼的版本號不同;對待發布版本代碼與參照版本代碼進行對比處理,獲得改動函數列表;獲取改動函數列表對應的已執行函數列表,并根據已執行函數列表和改動函數列表確定應用程序的代碼覆蓋率。在上述方案的實現過程中,通過對應用程序的待發布版本代碼和參照版本代碼進行對比處理,獲得改動函數列表,并結合待發布版本代碼對應的已執行函數列表,能夠綜合兩者確定出應用程序在待發布版本與參照版本之間的代碼覆蓋率。

3、可選地,在本技術實施例中,對待發布版本代碼與參照版本代碼進行對比處理,包括:對待發布版本代碼與參照版本代碼進行對比,獲得待發布版本代碼中的全部文件中的改動行號;針對待發布版本代碼中的全部文件中的每個文件,獲取該文件中的偏移量范圍,并根據該文件中的偏移量范圍與該文件中的改動行號確定改動函數列表。在上述方案的實現過程中,通過獲取文件中的偏移量范圍,并結合改動行號,可以高效地提取出改動的函數,這種方式避免了全文件掃描,基于偏移量范圍的函數提取大大減少了計算資源的消耗,提高了處理速度和處理效率。通過行號級別的改動檢測和基于偏移量范圍的函數提取,可以獲得精準的改動函數列表,避免了因誤報或漏報導致的覆蓋率統計不準確,從而提高了增量代碼的覆蓋率統計的準確性。

4、可選地,在本技術實施例中,根據該文件中的偏移量范圍與該文件中的改動行號確定改動函數列表,包括:針對該文件中的多個函數中的每個函數,判斷該文件中的改動行號是否在該函數在該文件中的偏移量范圍之內;若是,則將該函數加入到改動函數列表中。在上述方案的實現過程中,通過獲取待發布版本代碼中的全部文件中的改動行號,可以精確地定位到代碼中的具體改動位置,這種細粒度的改動檢測有助于更準確地確定哪些函數被改動,傳統的改動檢測方法可能會因為文件的整體變化而誤報改動,而行號級別的檢測可以避免這種情況,從而有效地提高了確定改動函數的準確率。

5、可選地,在本技術實施例中,獲取改動函數列表對應的已執行函數列表,包括:針對待發布版本代碼的每個函數,若該函數在改動函數列表中,則在該函數中插入預設樁代碼,獲得插樁后的版本代碼;對插樁后的版本代碼進行編譯構建,獲得插樁后的應用程序,插樁后的應用程序用于被測試觸發樁代碼時,確定已執行函數列表中的已執行函數。在上述方案的實現過程中,通過在每個改動函數中插入樁代碼,可以精確地跟蹤每個函數的執行情況,這有助于更細粒度地監控代碼的執行路徑,確保每個改動函數都被正確執行,傳統的覆蓋率工具可能無法捕捉到所有執行路徑,而插入樁代碼的方法可以確保每個改動函數的執行情況都被記錄下來,從而提高了改動函數的執行路徑跟蹤的精確性。

6、可選地,在本技術實施例中,在獲得插樁后的應用程序之后,還包括:向測試終端設備發送插樁后的應用程序,以使插樁后的應用程序被測試終端設備測試并觸發樁代碼時,返回已執行函數的標識符;根據已執行函數的標識符,將該已執行函數加入到已執行函數列表中。在上述方案的實現過程中,通過測試終端設備返回已執行函數的標識符,可以實時監控每個函數的執行情況,提供即時反饋,可以根據實時反饋動態調整測試用例,確保所有改動的函數都被充分測試,從而提高了函數執行監控的實時性。上述的測試終端設備可以是多個不同的設備,支持分布式測試環境,有助于模擬真實用戶場景,提高測試的全面性和準確性,而且利用多臺測試終端設備,可以更高效地利用測試資源,加快測試速度和整個軟件的開發周期。

7、可選地,在本技術實施例中,根據已執行函數列表和改動函數列表確定應用程序的代碼覆蓋率,包括:對已執行函數列表和改動函數列表進行求交集,獲得交集函數列表;根據交集函數列表和改動函數列表確定應用程序的代碼覆蓋率。在上述方案的實現過程中,通過對已執行函數列表和改動函數列表進行求交集,可以精確地計算出哪些改動的函數已被執行,以及哪些改動的函數未被執行,傳統的覆蓋率工具可能會因為代碼的復雜性而誤報未覆蓋的函數,而通過交集計算的方法可以確保每個改動函數的執行情況都被準確記錄,上述的這種細粒度的計算確保了覆蓋率統計的準確性。

8、可選地,在本技術實施例中,根據交集函數列表和改動函數列表確定應用程序的代碼覆蓋率,包括:將交集函數列表的函數數量除以改動函數列表的函數數量,獲得代碼覆蓋率。在上述方案的實現過程中,通過計算交集函數列表的函數數量除以改動函數列表的函數數量,可以精確地計算出改動部分的覆蓋率,傳統的覆蓋率工具可能會因為代碼的復雜性而誤報未覆蓋的函數,而通過交集計算的方法可以確保每個改動函數的執行情況都被準確記錄,這種細粒度的計算確保了覆蓋率統計的準確性。

9、可選地,在本技術實施例中,根據交集函數列表和改動函數列表確定應用程序的代碼覆蓋率,包括:從改動函數列表中刪除掉交集函數列表的函數,獲得未執行的改動函數;判斷未執行的改動函數是否被包含在預設已執行版本代碼對應的已執行函數列表中,預設已執行版本代碼早于所述待發布版本代碼,且參照版本代碼早于所述預設已執行版本代碼;若是,則根據未執行的改動函數、交集函數列表和改動函數列表確定代碼覆蓋率。在上述方案的實現過程中,通過引入預設已執行版本代碼的已執行函數列表,可以綜合考慮多個版本的執行情況,即使在當前版本中未執行的改動函數,如果在預設已執行版本中已經執行過,也可以被計入覆蓋率,避免遺漏,從而增加了覆蓋率統計的全面性。進一步地,通過引入預設已執行版本的已執行函數列表,可以減少對已知已執行函數的重復測試,節省測試資源,以使得測試團隊可以集中精力測試那些在當前待發布版本和預設已執行版本中均未執行的改動函數,因此,通過綜合考慮多個版本的執行情況,可以實現增量測試,只關注真正未覆蓋的改動部分,減少對已知已執行部分的重復測試,這種方式能夠提高測試效率。

10、可選地,在本技術實施例中,根據未執行的改動函數、交集函數列表和改動函數列表確定代碼覆蓋率,包括:判斷未執行的改動函數在待發布版本代碼和預設已執行版本代碼中是否相同;若是,則將未執行的改動函數加入交集函數列表中,并將交集函數列表的函數數量除以改動函數列表的函數數量,獲得代碼覆蓋率。在上述方案的實現過程中,通過判斷未執行的改動函數在待發布版本代碼和預設已執行版本代碼中是否相同,并將相同的未執行函數加入交集函數列表,這種方式確保了即使在當前待發布版本中未執行的函數,如果在其他版本中已經執行過,也不會被誤認為未覆蓋,避免遺漏那些在其他版本中已經執行過的函數,確保覆蓋率統計的完整性,因此這種方式可以更準確地統計代碼覆蓋率。進一步地,通過比較未執行的改動函數在不同版本中的代碼,可以精確識別出哪些函數在其他版本中已經執行過,從而減少誤報未覆蓋的函數,最終提高了覆蓋率統計的可信度。

11、本技術實施例還提供了一種代碼覆蓋率確定裝置,包括:版本代碼獲取模塊,用于獲取應用程序的待發布版本代碼和參照版本代碼,待發布版本代碼的版本號與參照版本代碼的版本號不同;改動函數獲得模塊,用于對待發布版本代碼與參照版本代碼進行對比處理,獲得改動函數列表;代碼覆蓋率確定模塊,用于獲取改動函數列表對應的已執行函數列表,并根據已執行函數列表和改動函數列表確定應用程序的代碼覆蓋率。

12、可選地,在本技術實施例中,改動函數獲得模塊,包括:改動行號獲得子模塊,用于對待發布版本代碼與參照版本代碼進行對比,獲得待發布版本代碼中的全部文件中的改動行號;改動函數確定子模塊,用于針對待發布版本代碼中的全部文件中的每個文件,獲取該文件中的偏移量范圍,并根據該文件中的偏移量范圍與該文件中的改動行號確定改動函數列表。

13、可選地,在本技術實施例中,改動函數確定子模塊,包括:改動行號判斷單元,用于針對該文件中的多個函數中的每個函數,判斷該文件中的改動行號是否在該函數在該文件中的偏移量范圍之內;改動函數加入單元,用于若該文件中的改動行號在該函數對應文件中的偏移量范圍之內則將該函數加入到改動函數列表中。

14、可選地,在本技術實施例中,代碼覆蓋率確定模塊,包括:樁代碼插入子模塊,用于針對待發布版本代碼的每個函數,若該函數在改動函數列表中,則在該函數中插入預設樁代碼,獲得插樁后的版本代碼;代碼編譯構建子模塊,用于對插樁后的版本代碼進行編譯構建,獲得插樁后的應用程序,插樁后的應用程序用于被測試觸發樁代碼時,確定已執行函數列表中的已執行函數。

15、可選地,在本技術實施例中,代碼覆蓋率確定模塊,還包括:應用程序發送子模塊,用于向測試終端設備發送插樁后的應用程序,以使插樁后的應用程序被測試終端設備測試并觸發樁代碼時,返回已執行函數的標識符;執行函數加入子模塊,用于根據已執行函數的標識符,將該已執行函數加入到已執行函數列表中。

16、可選地,在本技術實施例中,代碼覆蓋率確定模塊,包括:函數列表求交子模塊,用于對已執行函數列表和改動函數列表進行求交集,獲得交集函數列表;代碼覆蓋確定子模塊,用于根據交集函數列表和改動函數列表確定應用程序的代碼覆蓋率。

17、可選地,在本技術實施例中,代碼覆蓋確定子模塊,包括:第一覆蓋率計算單元,用于將交集函數列表的函數數量除以改動函數列表的函數數量,獲得代碼覆蓋率。

18、可選地,在本技術實施例中,代碼覆蓋確定子模塊,包括:改動函數刪除單元,用于從改動函數列表中刪除掉交集函數列表的函數,獲得未執行的改動函數;改動函數判斷單元,用于判斷未執行的改動函數是否被包含在預設已執行版本代碼對應的已執行函數列表中,預設已執行版本代碼早于所述待發布版本代碼,且參照版本代碼早于所述預設已執行版本代碼;第二覆蓋率計算單元,用于若未執行的改動函數被包含在預設已執行版本代碼對應的已執行函數列表中,則根據未執行的改動函數、交集函數列表和改動函數列表確定代碼覆蓋率。

19、可選地,在本技術實施例中,第二覆蓋率計算單元,包括:代碼相同判斷子單元,用于判斷未執行的改動函數在待發布版本代碼和預設已執行版本代碼中是否相同;函數數量相除子單元,用于若未執行的改動函數在待發布版本代碼和預設已執行版本代碼中相同,則將未執行的改動函數加入交集函數列表中,并將交集函數列表的函數數量除以改動函數列表的函數數量,獲得代碼覆蓋率。

20、本技術實施例還提供了一種電子設備,包括:處理器和存儲器,存儲器存儲有處理器可執行的機器可讀指令,機器可讀指令被處理器運行時執行上面描述的方法。

21、本技術實施例還提供了一種計算機可讀存儲介質,該計算機可讀存儲介質上存儲有計算機程序,計算機程序被處理器運行時執行上面描述的方法。

22、本技術實施例還提供了一種計算機程序產品,包括:計算機程序或者計算機指令,計算機程序或者計算機指令被處理器運行時執行上面描述的方法。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 潢川县| 吉木乃县| 昌吉市| 靖远县| 临汾市| 宜兰市| 宣恩县| 河曲县| 大足县| 柳林县| 利辛县| 师宗县| 依安县| 西充县| 桃园市| 南投县| 漾濞| 兴国县| 定结县| 黔西| 建德市| 衡阳县| 拉孜县| 红原县| 奇台县| 班玛县| 临猗县| 和平区| 大丰市| 宁陵县| 内江市| 五华县| 广南县| 镇巴县| 乡城县| 博兴县| 雷州市| 万源市| 琼中| 隆尧县| 介休市|