經典案例
  • 金融大数据解決方案
  • 汽车大数据解決方案
  • 当局大数据解決方案
  • 铁路大数据解決方案
  • 电力大数据解決方案
  • 军工大数据解決方案
  • 解放军总装备部
  • 中国航天科工集团
  • 航天科技集团

怎样對軟件進行白盒測試?

發布于:2020-01-03 21:27來源:北京軟件開發公司 作者:北京大數據公司 點擊:
       


白盒测试时軟件測試中必不可少的环节,它是检测一家軟件開發公司团队气力的重要指标。
        白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是怎样运作的。 "白盒"法全面了解程序内部逻辑结构、对所有逻辑进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
  采用什么方法对软件进行测试呢?常用的軟件測試方法有两大类:静态測試方法和动态測試方法。其中软件的静态测试不请求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,重要的技术是路径和分支测试。下面要介绍的六种覆盖測試方法属于动态分析方法。
測試方法
  白盒测试的測試方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路徑測試法、域测试、符号测试、Z路径覆盖程序变异。
白盒測試法的覆蓋標准有邏輯覆蓋、循環覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。

  六種覆蓋標准:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋發現錯誤的能力呈由弱至強的變化。語句覆蓋每條語句最少執行一次。判定覆蓋每個判定的每個分支最少執行一次。條件覆蓋每個判定的每個條件應取到各種可能的值。判定/條件覆蓋同時滿足判定覆蓋條件覆蓋。條件組合覆蓋每個判定中各條件的每一種組合最少出現一次。路徑覆蓋使程序中每一條可能的路徑最少執行一次。
请求

  1.保证一个模块中的所有独立路径最少 被使用一次
  2.对所有逻辑值均需测试 true 和 false
  3.在上下邊界及可操作範圍內運行所有循環
  4.檢查內部數據結構以確保其有用性
目的

  通過檢查軟件內部的邏輯結構,對軟件中的邏輯進行覆蓋測試;在程序不同地方設立檢查點,檢查程序的狀態,以確定實際運行狀態與預期狀態是否一致。
特點

  依據說明書進行測試、對內部細節的嚴密檢驗、針對特定條件設計測試用例、對軟件的邏輯路徑進行覆蓋測試。
實施步驟
  1.測試計劃階段:根據需求說明書,订定測試進度。
  2.測試設計階段:依據程序設計說明書,按照一定規範化的方法進行軟件結構劃分和設計測試用例
  3.測試執行階段:輸入測試用例,得到測試結果。
  4.測試總結階段:對比測試的結果和的預期結果,分析錯誤原因,找到並解決錯誤。
優缺點

  1. 优点:迫使测试职员去仔细思考软件;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。
  2. 缺点:昂贵。没法检测代码中遗漏的路径和数据敏理性错误。不验证规格的正确性。
局限

  但即使每條路徑都測試了仍旧可能有錯誤。第一,窮舉路徑測試程序違反了設計規範,即程序本身是個錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。
怎样挑選工具

  白盒測試目前主要用在具有高可靠性请求的軟件領域,例如:軍工軟件、航天航空軟件、工業控制軟件等等。白盒測試工具在選購時應當主如果對開發語言的支持、覆蓋的深度、嵌入式軟件的測試、測試的可視化等。
代碼的覆蓋深度

  從覆蓋源程序語句的詳盡程度分析,邏輯覆蓋標准包括以下不同的覆蓋標准:語句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正判定條件覆蓋。
  1.语句覆盖 为了暴露程序中的错误,程序中的每条语句最少应该执行一次。因此语句覆盖(Statement Coverage)的含义是:选择充足多的测试数据,使被测程序中每条语句最少执行一次。语句覆盖是很弱的逻辑覆盖。
  2.判定覆盖语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。判定覆盖的含义是:设计充足的测试用例,使得程序中的每个判定最少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支最少经历一次,因此判定覆盖又称为分支覆盖
  3.条件覆盖 在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地完成逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值最少满足一次。
  4.多条件覆盖 多条件覆盖也称条件组合覆盖,它的含义是:设计充足的测试用例,使得每个判定中条件的各种可能组合都最少出现一次。明显满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。
  5.修正條件判定覆蓋修正條件判定覆蓋是由歐美的航空/航天建造廠商和使用單位聯合订定的“航空運輸和裝備系統認證標准”,目前在國外的國防、航空航天領域應用廣泛。這個覆蓋度量需要足夠的測試用例來確定各個條件能夠影響到包含的判定的結果。它请求滿足兩個條件:首先,每一個程序模塊的入口和出口點都要考慮最少要被調用一次,每個程序的判定到所有可能的結果值要最少轉換一次;其次,程序的判定被分解爲通過邏輯操作符(and、or)連接的布爾條件,每個條件對于判定的結果值是獨立的。
  不同的測試工具對于代碼的覆蓋能力也是不同的,通常能夠支持修正條件判定覆蓋的測試工具價格是極其昂貴的。
基本路徑測試法

  白盒测试的測試方法中运用最为广泛的是基本路徑測試法。
  基本法是在程序控制流圖的基礎上,通過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例。設計出的測試用例要保證在測試中程序的每個可執行語句最少執行一次。
在程序控制流圖的基礎上,通過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例。包括以下4個步驟和一個工具方法:

  1. 程序的控制流圖:描述程序控制流的一種圖示方法。
  2. 程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句最少执行一次所必须的测试用例数目的上界
  3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。
  4. 准备测试用例:确保基本路径集中的每一条路径的执行。
工具方法

  圖形矩陣:是在基本路徑測試軟件工具,利用它可以實現自動地確定一個基本路徑集。
  程序的控制流圖:描述程序控制流的一種圖示方法。
  圓圈稱爲控制流圖的一個結點,表示一個或多個無分支的語句或源程序語句
  流圖只有二種圖形符號:圖中的每一個圓稱爲流圖的結點,代表一條或多條語句。
  流圖中的箭頭稱爲邊或連接,代表控制流
  任何過程設計都要被翻譯成控制流圖。
  怎样根據程序流程圖畫出控制流程圖?
  在將程序流程圖簡化成控制流圖時,應注意:
  在選擇或多分支結構中,分支的彙聚處應有一個彙聚結點。
  邊和結點圈定的區域叫做區域,當對區域計數時,圖形外的區域也應記爲一個區域。
步驟

  基本路徑測試法的步驟:
  第一步:畫出控制流圖
  流程圖用來描述程序控制結構。可將流程圖映照到一個相應的流圖(假設流程圖的菱形決定框中不包含複合條件)。在流圖中,每一個圓,稱爲流圖的結點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映照爲一個結點,流圖中的箭頭,稱爲邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個結點,即使該結點並不代表任何語句(例如:if-else-then結構)。由邊和結點限定的範圍稱爲區域。計算區域時應包括圖外部的範圍。
  第二步:計算圈複雜度
圈複雜度是一種爲程序邏輯複雜性提供定量測度的,將該度量用于計算程序的基本的獨立路徑數目,爲確保所有語句最少執行一次的測試數量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。

  有以下三種方法計算圈複雜度:
  流圖中區域的數量對應于環型的複雜性;
  給定流圖G的圈複雜度V(G),定義爲V(G)=E-N+2,E是流圖中邊的數量,N是流圖中結點的數量;
  給定流圖G的圈複雜度V(G),定義爲V(G)=P+1,P是流圖G中判定結點的數量。
  第三步:導出
  根據上面的計算方法,可得出四個獨立的路徑。(一條獨立路徑是指,和其他的獨立路徑相比,最少引入一個新處理語句或一個新判斷的程序通路。V(G)值恰好等于該程序的獨立路徑的條數。)
  路徑1:4-14
  路徑2:4-6-7-14
  路徑3:4-6-8-10-13-4-14
  路徑4:4-6-8-11-13-4-14
  根據上面的獨立,去設計輸入數據,使程序分別執行到上面四條路徑。
三步法

  1. 根据代码的功能,人工设计测试用例进行基本功能测试
  2. 统计白盒覆盖率,为未覆盖的白盒单位设计测试用例,完成完整的白盒覆盖,比较理想的覆盖率是完成100%语句、条件、分支、路径覆盖
  3. 自動天生大批的測試用例,捕捉"程序員未處理某些特殊輸入"形成的錯誤。
  第1步的測試用例通常是現成的,因爲詳細設計文檔會規定程序的基本功能,沒有文檔的,程序員在編程時也要想清楚程序的功能,這些基本功能就是基本測試用例;
  第2步是在第1步的基礎上,檢查未覆蓋的白盒單位,由于未覆蓋的邏輯單位通常對應未測試的等價類,因此第2步可以找出第1步所遺漏的測試用例;
  第3步用自動彌補第2步的固有缺点
  “三步法”盡量避免重複工作,白盒方法和黑盒方法相結合,人工方法和自動方法相補充,如果第2步的覆蓋率比較理想,那麽基本上可以保證找出所有等價類。在開發過程允許的限度內,"三步法"已接近極限,當得起"徹底測試"四個字。
------分隔線----------------------------
------分隔線----------------------------
QQ客服热线