<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 代碼覆蓋率教程:分支,語句,決策,FSM > 原文: [https://www.guru99.com/code-coverage.html](https://www.guru99.com/code-coverage.html) ## 什么是代碼覆蓋率? 代碼覆蓋率是一種度量,它描述了對程序源代碼進行測試的程度。 這是白盒測試的一種形式,它可以找到一組測試用例無法執行的程序區域。 它還創建一些測試用例以增加覆蓋范圍并確定代碼覆蓋范圍的定量度量。 在大多數情況下,代碼覆蓋系統會收集有關正在運行的程序的信息。 它還將其與源代碼信息相結合,以生成有關測試套件的代碼覆蓋率的報告。 在本教程中,您將學習- * [什么是代碼覆蓋率?](#1) * [為什么使用代碼覆蓋率?](#2) * [代碼覆蓋率方法](#3) * [聲明涵蓋范圍](#4) * [決策范圍](#5) * [分支機構覆蓋范圍](#6) * [條件覆蓋范圍](#7) * [有限狀態機覆蓋率](#8) * [選擇哪種類型的代碼覆蓋率](#9) * [代碼覆蓋率與功能覆蓋率](#10) * [代碼覆蓋率工具](#11) * [使用代碼覆蓋率的優缺點](#12) ## 為什么使用代碼覆蓋率? 以下是使用代碼覆蓋率的一些主要原因: * 它可以幫助您評估測試實施的效率 * 它提供定量測量。 * 它定義了對源代碼進行測試的程度。 ## 代碼覆蓋率方法 以下是主要的代碼覆蓋方法 * 聲明范圍 * 決策范圍 * 分行覆蓋 * 切換覆蓋 * FSM 覆蓋 ## 聲明覆蓋率 什么是對帳單覆蓋? 語句覆蓋是一種白盒測試設計技術,涉及到至少一次執行源代碼中的所有可執行語句。 它用于計算和測量源代碼中可以根據要求執行的語句數。 語句覆蓋率用于根據測試代碼的結構派生方案。 ![](https://img.kancloud.cn/e9/4b/e94b02f470c553981234125142bb16fb_720x67.png) 在[白盒測試](/white-box-testing.html)中,測試人員專注于軟件的工作方式。 換句話說,測試人員將專注于與控制流程圖或流程圖有關的源代碼的內部工作。 通常,在任何軟件中,如果我們查看源代碼,都會有各種各樣的元素,例如運算符,函數,循環,異常處理程序等。根據程序的輸入,某些代碼語句可能不會執行 。 覆蓋 Statement 的目標是覆蓋代碼中所有可能的路徑,行和語句。 讓我們通過一個示例來了解這一點,該示例如何計算語句覆蓋率。 計算給定源代碼的語句覆蓋率的方案。 在這里,我們采用兩種不同的方案來檢查每種方案的語句覆蓋率。 **源代碼:** ``` Prints (int a, int b) { ------------ Printsum is a function int result = a+ b; If (result> 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code ``` **方案 1:** 如果 A = 3,B = 9 ![](https://img.kancloud.cn/70/50/70501634b83a42e8ccfe1720c2c8becb_360x168.png) 黃色標記的語句是根據業務情景執行的語句 執行語句數= 5,語句總數= 7 聲明覆蓋率:5/7 = 71% ![](https://img.kancloud.cn/c2/73/c273139fd3e9a39a780c74ce98145c2c_400x66.png) 同樣,我們將看到場景 2, **方案 2:** 如果 A = -3,B = -9 ![](https://img.kancloud.cn/ba/b1/bab17cf35fa008216bee9f89a1231db1_360x168.png) 黃色標記的語句是根據方案執行的語句。 執行語句數= 6 語句總數= 7 ![](https://img.kancloud.cn/ac/fa/acfa96a14bde8879fc4e9155c6a6f509_531x64.png) 聲明覆蓋率:6/7 = 85% ![](https://img.kancloud.cn/13/b2/13b225a8c68ad2790b1652cb5799d6ed_400x53.png) 但是總的來說,如果您看到的話,所有的陳述都將被考慮在 2 <sup>和</sup>場景中。 因此,我們可以得出結論,整個報表覆蓋率為 100%。 ![](https://img.kancloud.cn/70/5d/705dc4760eda89fa88aa1d275534e858_400x61.png) **聲明涵蓋范圍是什么?** 1. 未使用的陳述 2. 死碼 3. 未使用的分支 4. 遺失陳述 ## 決策范圍 決策覆蓋率報告每個布爾表達式的正確或錯誤結果。 在這種情況下,表達式有時會變得復雜。 因此,很難實現 100%的覆蓋率。 這就是為什么有許多不同的方法來報告此指標的原因。 所有這些方法都專注于涵蓋最重要的組合。 它與決策覆蓋率非常相似,但是對控制流的敏感性更高。 ![](https://img.kancloud.cn/38/60/3860247a17df4595dd1943bb716d06df_559x61.png) ### 決策范圍示例 考慮以下代碼- ``` Demo(int a) { If (a> 5) a=a*3 Print (a) } ``` **Scenario 1:** a 的值為 2 ![](https://img.kancloud.cn/15/97/1597bac4849e0e0bf06e20b46d69151b_266x144.png) 以黃色突出顯示的代碼將被執行。 在此,檢查判定 If(> 5)的“否”結果。 決策覆蓋率= 50% **Scenario 2:** a 的值為 6 ![](https://img.kancloud.cn/fd/15/fd15efcce9a502c97de0fe3a3ab3c859_245x144.png) 以黃色突出顯示的代碼將被執行。 在此,檢查判定 If(“ > 5”)的“是”結果。 Decision Coverage = 50% | 測試用例 | A 值 | 輸出量 | 決策范圍 | | 1 | 2 | 2 | 50% | | 2 | 6 | 18 | 50% | ## 分支機構覆蓋率 在分支機構范圍內,將測試代碼模塊的所有結果。 例如,如果結果是二進制的,則需要同時測試 True 和 False 結果。 它可以幫助您確保至少一次執行每個決策條件的每個可能分支。 通過使用分支覆蓋率方法,您還可以測量獨立代碼段的分數。 它還可以幫助您找出哪些代碼段沒有分支。 計算分支覆蓋率的公式: ![](https://img.kancloud.cn/a2/b3/a2b3a21ac9c8a3a9fd8bf9ab3e469bf4_466x70.png) ### 分支機構覆蓋示例 要了解分支機構的覆蓋范圍,讓我們考慮先前使用的相同示例 考慮以下代碼 ``` Demo(int a) { If (a> 5) a=a*3 Print (a) } ``` ![](https://img.kancloud.cn/fb/35/fb35ec374d6895c3a04e544ce7a51e94_385x187.png) 分支機構覆蓋范圍也將考慮無條件分支 | Test Case | Value of A | Output | Decision Coverage | 分行覆蓋 | | 1 | 2 | 2 | 50% | **33%** | | 2 | 6 | 18 | 50% | **67%** | **分支機構覆蓋范圍的優勢:** 分支機構覆蓋測試具有以下優點: * 允許您驗證-代碼中的所有分支 * 幫助您確保沒有分支導致程序運行的任何異常 * 分支覆蓋方法可消除由于語句覆蓋測試而發生的問題 * Allows you to find those areas which are not tested by other testing methods * 它使您可以找到量化的代碼覆蓋率度量 * 分支覆蓋范圍會忽略布爾表達式內部的分支 ## 條件覆蓋 條件覆蓋率或表達式覆蓋率將揭示如何評估條件語句中的變量或子表達式。 在這種情況下,僅考慮具有邏輯操作數的表達式。 例如,如果表達式具有布爾運算(例如 AND,OR,XOR),則表示存在全部可能性。 與決策范圍相比,條件范圍對控制流的敏感性更高。 條件覆蓋并不能保證完整的決策覆蓋范圍 計算條件覆蓋率的公式: ![](https://img.kancloud.cn/7f/29/7f294cdb89ae399194fca248bce105b2_490x70.png) 例: ![](https://img.kancloud.cn/28/48/284887d063d2f424a2a9f094c3a9b293_416x41.png) 對于上面的表達式,我們有 4 種可能的組合 * TT * FF * TF * 金融時報 考慮以下輸入 | X = 3Y = 4 | (x < y) | 真正 | 條件覆蓋率為?= 25% | | A = 3B = 4 | (a > b) | 假 | ## 有限狀態機覆蓋率 有限狀態機的覆蓋率無疑是最復雜的代碼覆蓋方法。 這是因為它可以處理設計的行為。 在這種覆蓋方法中,您需要查找已訪問,轉換的特定時間狀態的數量。 它還檢查有限狀態機中包含多少個序列。 ## 選擇哪種類型的代碼覆蓋率 這無疑是最難給出的答案。 為了選擇一種覆蓋方法,測試人員需要檢查 * 被測代碼具有單個或多個未發現的缺陷 * 潛在罰款的成本 * 喪失聲譽的代價 * 銷售損失成本等 缺陷導致高成本生產故障的可能性越高,則需要選擇的覆蓋級別越嚴格。 ## 代碼覆蓋率與功能覆蓋率 | **代碼覆蓋率** | **功能范圍** | | 代碼覆蓋率告訴您測試平臺對源代碼的執行情況。 | 功能覆蓋范圍衡量測試平臺對設計功能的覆蓋程度。 | | 切勿使用設計規范 | 使用設計規范 | | 由開發人員完成 | 由測試人員完成 | ## 代碼覆蓋率工具 以下是重要的代碼覆蓋率工具列表: | **工具名稱** | **說明** | | **[可可](https://bit.ly/2FLrNAS)** | 它是針對 C,C ++,SystemC,C#,Tcl 和 QML 代碼的跨平臺和跨編譯器的代碼覆蓋率分析。 自動測量語句,分支和條件的測試覆蓋率。 無需更改應用程序。了解有關 [coco](https://bit.ly/2FLrNAS) 的更多信息 | | **覆蓋范圍** | 它是一個開源代碼覆蓋工具。 它通過檢測代碼庫來度量測試覆蓋率,并分析測試套件運行時正在執行的代碼行和未執行的代碼行。 | | **三葉草** | Clover 還通過僅運行覆蓋自上次構建以來已修改的應用程序代碼的測試來減少測試時間。 | | **DevPartner** | DevPartner 使開發人員能夠分析 Java 代碼的代碼質量和復雜性。 | | **艾瑪** | EMMA 支持類,方法,行和基本塊覆蓋范圍,聚合的源文件,類和方法級別。 | | **Kalistick** | Kalistick 是第三方應用程序,它以不同的角度分析代碼。 | | **CoView 和 CoAnt** | 編碼軟件是用于度量標準,模擬對象創建,代碼可測試性,路徑&分支覆蓋率等的代碼覆蓋率工具。 | | **適用于 C ++的 Bullseye** | BulseyeCoverage 是 C ++和 C 的代碼覆蓋工具。 | | **聲納** | Sonar 是一個開放的代碼覆蓋率工具,可以幫助您管理代碼質量。 | ## 使用代碼覆蓋率的優勢 * 有助于評估量化的代碼覆蓋率 * 它允許您創建額外的測試用例以增加覆蓋范圍 * 它使您能夠找到程序集中未使用的測試用例的區域 ## 使用代碼覆蓋率的缺點 * 即使在設計中未實現任何特定功能,代碼覆蓋率仍然報告為 100%覆蓋率。 * 無法確定是否在代碼覆蓋率的幫助下測試了功能的所有可能值 * 代碼覆蓋率也沒有告訴您覆蓋邏輯的程度和程度 * 如果指定的功能尚未實現或未包含在規范中,則基于結構的技術將找不到該問題。 ## 摘要 * 代碼覆蓋率是一種度量,它描述了對程序源代碼進行了測試的程度 * 它可以幫助您評估測試實施的效率 * 五種代碼覆蓋率方法是 1.)語句覆蓋率 2.)條件覆蓋率 3)分支覆蓋率 4)切換覆蓋率 5)FSM 覆蓋率 * 語句覆蓋涉及至少一次執行源代碼中的所有可執行語句 * 決策覆蓋率報告每個布爾表達式的正確或錯誤結果 * 在分支機構中,將測試代碼模塊的所有結果 * 條件語句將揭示如何評估條件語句中的變量或子表達式 * 有限狀態機覆蓋率無疑是最復雜的代碼覆蓋率類型 * 為了選擇一種覆蓋方法,測試人員需要檢查潛在罰款的成本,聲譽損失,銷售損失等。 * 代碼覆蓋率告訴您測試平臺對源代碼的執行情況,而功能覆蓋率則衡量設計功能被覆蓋的程度 * Cobertura,JTest,Clover,Emma 和 Kalistick 是一些重要的代碼覆蓋工具 * 代碼覆蓋率使您可以創建額外的測試用例以增加覆蓋率 * 代碼覆蓋率無法幫助您確定我們是否測試了功能的所有可能值
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看