对一个程序单元测试
課上我們王老師給我們留了一個(gè)程序,讓我們分析一下這個(gè)程序的異常漏洞,為做以后完善的軟件做好鋪墊,軟件異常的處理非常重要,這關(guān)系到軟件的以后發(fā)展,甚至?xí)斐蓢?yán)重的后果。小小的錯(cuò)誤釀成嚴(yán)重的后果。單元測(cè)試是開(kāi)發(fā)者編寫的一小段代碼,用于檢驗(yàn)被測(cè)代碼的一個(gè)很小的、很明確的功能是否正確。下面我們來(lái)看一個(gè)程序。
查找list[]中的最大值:int Largest(int list[], int length);
首份實(shí)現(xiàn)代碼如下:
int Largest(int list[], int length)
{
????? ?int i,max;
????? ?for(i = 0; i < (length – 1); i ++ ) ??
??????? ?{ ??????
?????????????? ?if(list[i] > max) ?
???????????????? ?{ ??
????????????????? ????? max=list[i]; ??
?????????????? ??? } ?
?????????? } ????
???????? ?return max;
}
我們對(duì)上面的代碼進(jìn)行測(cè)試:編寫測(cè)試代碼如下
//?單元測(cè)試.cpp?:?Defines?the?entry?point?for?the?console?application.
//
?
#include?"stdafx.h"
?
#include<stdio.h>
?
int?largest(int?list[],int?length)
{
int?i,max;
for(i=0;i<(length-1);i++)
{
if(list[i]>max)
{
max=list[i];
}
}
return?max;
}
?
?
int?main(int?argc,?char*?argv[])
{
int?list[5],i,max;
//printf("%d\n",max);
printf("請(qǐng)輸出5個(gè)數(shù):\n");
????scanf("%d",&list[0]);
scanf("%d",&list[1]);
scanf("%d",&list[2]);
scanf("%d",&list[3]);
scanf("%d",&list[4]);
????
max=largest(list,0);
printf("list的最大值為:%d\n",max);
return?0;
}
?max沒(méi)有定義:其中的它的值為:-858993460
其測(cè)試數(shù)據(jù)結(jié)果如下所示:
第一種情況:
第二種情況:
第三種情況:
第四種情況:
當(dāng)輸入為空數(shù)組的時(shí)候:-858993460
我們進(jìn)行測(cè)試的時(shí)候,有的時(shí)候會(huì)出現(xiàn)錯(cuò)誤和異常,這是我們不允許的,客戶更不能允許,所以我們要考慮周全,當(dāng)寫一個(gè)模塊或者函數(shù)的時(shí)候,要進(jìn)行測(cè)試,保證代碼的正確性!
通常,我們會(huì)認(rèn)為這是一個(gè)錯(cuò)誤,將拋出一個(gè)異常,修改方法:
int Largest(int list[], int length)
{
??int i, max;
??if ( list == null || length == 0)
????? {
????? return 0;
??}
??……
}
以上是本人的觀點(diǎn),謝謝觀看,有什么錯(cuò)誤的地方,歡迎大家指正!
?
轉(zhuǎn)載于:https://www.cnblogs.com/lixiaochao/p/3583406.html
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
- 上一篇: 开平区教育局资源分布式存储解决方案
- 下一篇: iTween 动画类型