1. 程式人生 > >C++語言的fault/error/failure(軟體測試)

C++語言的fault/error/failure(軟體測試)

定義

  • fault:故障
  • error:錯誤
  • failure:失敗

導言

在軟體測試,從上三個英文單詞的意思,我們可以看出這故障越來越大!如果你沒有看出來,你聽我給你捋一捋!
我們寫軟體,可能其中存在故障,軟體有故障,怎麼辦呢?我們需要在上線時測試軟體,在測試軟體時,即使執行到故障這串程式碼,並不一定會出錯!額- -:,這是為什麼呢?因為在某些特定的輸入值的情況下,它的輸出值與正確的結果一致,這就能解釋故障比錯誤低一級了,然後又是錯誤與失敗的關係,其實錯誤與失敗很好理清,因為一個程式結果錯誤了,但是程式並不會失敗,只能說這個程式真實的意義改變了!

正文

聽了我這麼多廢話(謬論),下面我們進入正題,今天我們要的程式實現的是:

  1. 不觸發fault
  2. 觸發fault,不觸發error
  3. 觸發error,不觸發failure

    C++語言程式

    
    #include<iostream>
    
    using namespace std;
    int main() {
    //-1是指沒有b等於a陣列中的值,否則輸出陣列的地址
    int a[] = {2};
    int b = 2;
    int pos = 0;
    int size = sizeof(a)/sizeof(int);
    if(size <= 1) {
        if(b == a[0]) {
            pos = 1;
        } else {
            pos = -1
    ; } } else { pos = -1; for(int i=1;i<size;++i) { if(b==a[i]) { pos = i+1; break; } } } cout<<"陣列是:"; for(int i=0;i<size;++i) { cout<<a[i]<<" "; } cout<<endl; cout<<"a陣列第一個與b相等的值的位置是"<<pos<<endl; return
    0; }

    注意:我有2年沒碰C/C++了,今天寫了這個,我感覺是對的,如果發現有錯,只能說聲抱歉了,但是理論知識講到就行了,程式嗎…………,你懂得!

我們先說下錯誤的地方在
這裡寫圖片描述
這兒的for迴圈應該從0開始,但是它從的1開始,所以這是故障的地方

  • 不觸發fault:
    輸入:
    a{2},b=2
    輸出
    位置是1(正確,並且沒有觸發fault)
  • 觸發fault,但是不觸發error
    輸入:
    a{2,4,5,8,7,9},b=7
    輸出:
    位置是5(正確,觸發fault,但結果正確)
  • 觸發error,但是不觸發failure
    輸入:
    a{4,5,7,4,6,8},b=4
    輸出:
    位置是4(錯誤,這兒應該是1,但程式未失敗。)