日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件测试-白盒测试:逻辑覆盖

發布時間:2023/12/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件测试-白盒测试:逻辑覆盖 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

邏輯覆蓋

參考文獻:
軟件測試第4章白盒測試一
軟件測試——白盒測試
白盒測試-覆蓋測試(六種覆蓋方法)

幾種常用的邏輯覆蓋測試方法

目的:結構測試是依據被測程序的邏輯結構設計測試用例,驅動被測程序運行完成的測試。邏輯覆蓋能夠給出結構測試的覆蓋準則,即可以結束測試的條件。

  • 語句覆蓋
    首先設計若干個測試用例,使程序中的每個可執行語句至少執行一次。這里所謂“若干個”,自然是越少越好。
    Case1:A=2, B=0, X=3。便可以達到語句覆蓋,路徑為ace。
    為什么達到了?不是b和d沒走嗎?再想想,b和d上有語句嗎?(圖中有語句的線走一遍)
    如果第一個判斷的AND寫成OR,或者第二個的OR寫成AND,仍然使用第一個參數用例,仍然做到語句覆蓋,可是發現不了錯誤。
  • 判定覆蓋(分支)
    設計若干測試用例,使得程序中每個判斷的取真分支取假分支至少經歷一次,即判斷的真假值均曾被滿足。
    Case2:A=1, B=0, X=1,路徑為abd。Case1和Case2一起可以實現判定覆蓋。可是第二個判斷X>1錯寫成X<1,不能發現錯誤。
    什么是判斷?菱形中的語句if語句就是判斷語句。如本題中,就有2個判斷,當2個判斷都執行過T和F時(4種情況),就完成了判定覆蓋。
  • 條件覆蓋
    設計若干測試用例,使每個判斷中每個條件的可能取值至少滿足一次。
    Case3:A=2, B=1, X=1,路徑為abe。Case1、Case2和Case3一起可以實現條件覆蓋。
    什么是條件?通過邏輯運算符進行分割,每一個結果就是一個條件。如本題中,就有4個條件,當4個條件都執行過T和F時,就完成了條件覆蓋。
  • 判定-條件覆蓋
    設計足夠的測試用例,使得判斷中每個條件的所有可能至少出現一次,并且每個判斷本身的判定結果也至少出現一次。
    Case1、Case2和Case3一起可以實現判定-條件覆蓋。
    為什么符合?因為覆蓋了每條線,也覆蓋了所有條件。(此處和部分PPT不同,因為它們沒有考慮條件組合覆蓋)
  • 條件組合覆蓋
    設計足夠的測試用例,使得判斷中每個條件的所有可能至少出現一次,并且每個判斷本身的判定結果也至少出現一次。它與條件覆蓋的差別是它不是簡單的要求每個條件都出現“真”與“假”兩種結果,而是讓這些結果的所有可能組合都出現一次。

    條件組合只針對同一個判斷語句內存在多個條件的情況。讓這些添加的取值進行笛卡爾乘積組合。
  • 路徑覆蓋
    設計足夠的測試用例,要求覆蓋程序中所有可能的路徑。
    Case3:A=3, B=0, X=1,路徑為acd。Case1、Case2、Case3和Case4一起可以實現路徑覆蓋。

最少測試用例數計算

結構化程序是由順序型、選擇型、重復型3種基本控制結構組成。為了把問題化簡,避免出現測試用例極多的組合爆炸,把構成循環操作的重復型結構用選擇結構代替。

如何計算最少測試用例數呢?我們先看一道簡單的題。

至少提供4個測試用例才能做到邏輯覆蓋,這里的4是圖中第1個分支謂詞引出的兩個操作及第2個分支謂詞引出的兩個操作組合起來而得到的即2 × 2 = 4,并且,這里的2是由于兩個并列的操作1 + 1 = 2而得到的。
總結:并聯相加,串聯相乘。

計算公式:(5*3+1)*3=48
步驟:((5,4,3,2)(7,6),(1))(9,8)
核心:一層一層剝開。不斷劃分串聯和并聯,直到只有Y和N,然后開始逆向計算。

邏輯覆蓋的出發點是合理的、完善的。所謂“覆蓋,就是想要做到全面而無遺漏,但邏輯覆蓋并不能真正做到無遺漏。
if(x>3&&z<10) 若不小心寫成了if(x>=3&&z<10),按照前面設計的測試用例(x取2或4),邏輯覆蓋對這樣的問題是無能為力的,而原因就在于:錯誤區域僅僅在x=3這個點上,即僅當x的值取3時,測試才能發現錯誤。而這里就用到了測試覆蓋中需要遵循的兩條準則:ESTCA準則、LCSAJ準則。
FOSTER的ESTCA覆蓋準則:

  • 對于A rel B(rel可以是<、 = 和>)型的分支謂詞,應適當地選擇A與B的值,使得測試執行到該分支語句時,A<B、A = B和A>B的情況分別出現一次。
  • 對于A rel1 C(rel1可以是<或是>,A是變量,C是常量)型的分支謂詞,當rel1為<時,應適當地選擇A的值,使A = C ? M,當rel1為>時,應適當地選擇A,使A = C + M。(M是距C最小的機器容許正數,若A和C均為整型時,M = 1)
  • 對外部輸入變量賦值,使其在每一測試用例中均有不同的值與符號,并與同一組測試用例中其他變量的值與符號不一致。

LCSAJ是指一組順序執行的代碼,以控制流跳轉為結束點。它可產生以下4層覆蓋:

  • 第一層:語句覆蓋。
  • 第二層:分支覆蓋。
  • 第三層:LCSAJ覆蓋。
  • 第四層:兩層LCSAJ覆蓋,直到N個LCSAJ。

總結

以上是生活随笔為你收集整理的软件测试-白盒测试:逻辑覆盖的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。