一.基本定义和抽象理解
1.1定义:
fault:意即故障、缺陷,是软件中静态的缺陷, 我们可以把它看做软件不能正常运行的根本原因,当然,为了更好的理解,这就是软件“生病”的病根,是导致其出现错误或异常的根本原因,这就说明我们设计软件过程中出现了错误。
failure:意即失败,关于某个软件,我们有预期行为的描述和要求,但是我们使用时却可能出现我们可见的,也就是外部的不正确的反应和行为。还是为了方便,我们可以把它看做软件“生病”的一系列症状和表现,通常是异常结果直接可见可知的。
error:意即错误,通常我们编译某部分代码是都会出现warnings和errors,出现这个情况时,就表明我们的病根fault导致了错误的内部状态,而error就是其表现,当然这个和失败是要区分的,当软件“生病”时,错误是内部的异常情况,它不像失败那样直接导致软件不能正常运行。
二.通过例子具体理解
2.1教材示例
2.2 error的自我经历体验
在过去的编程项目和作业中,作为软件菜鸟的我显然出现了很多错误,有大有小,有自己印象深刻的也有自己一拍大腿惊叫一声改正后就忘记了的。此处印象深刻的也是一个小错误,当然自从那次之后就基本避免了这个问题。
1 输入20名学生一门课的考试成绩,统计各分数段的人数。
2 #include <iostream>
3 using namespace std;
4 int main()
5 { int num=20;
6 int n;
7 int a1=0,a2=0,a3=0,a4=0,a5=0;
8 printf("请输入成绩1~20:\n");
9 scanf("%d",&n);
10 while(num)
11 {
12 if(1<=n&&n<60)
13 {
14 a1+=1;
15 }
16 else if(60<=n&&n<70)
17 {
18 a2+=1;
19 }
20 else if(70<=n&&n<80)
21 {
22 a3+=1;
23 }
24 else if(80<=n&&n<90)
25 {
26 a4+=1;
27 }
28 else
29 {
30 a5=+1;
31 }
32 scanf("%d",&n);
33 num--;
34 }
35 printf("1~59分数段的人数为:%d\n",a1);
36 printf("60~69分数段的人数为:%d\n",a2);
37 printf("70~79分数段的人数为:%d\n",a3);
38 printf("80~89分数段的人数为:%d\n",a4);
39 printf("90~100分数段的人数为:%d\n",a5);
40 return 0;
41 }
这是我之后正确的一段代码,之前的代码就是前面4个if,最后一个else,单纯地认为前面都没匹配的话最后只需一个else就可以了(偷懒不用再用if判断),结果导致了计算结果的严重错误,使得90~100这一分数段的人数特别多,具体数据已经不记得了。之所以印象深刻,就在于自认为已经理解了if...else的用法却一做题就出现严重错误,当然也和自己偷懒的心理有关,这些毛病在软工学生身上是万万不能存留的。当然这个错误的发现就是通过结果的不正确再进行一步一步代码和逻辑的推导达到的,也在于其本身结构的简单。此处错误就在于对if和else结构理解后还未能根据逻辑正确使用,导致了逻辑错误,使得最后一个if和else配对,其中一个对应的语句一定执行。当然,fault肯定就是没有if...else if结构啦,而failure就是计算结果和正确结果不一致。自此之后,凡是涉及到很多条件判断的语句和逻辑结构,自己都会特别小心。
三.个人总结
软件测试是软工学生必须掌握的基础技能,当然测试也是本身很耗时和耗钱的。软件的错误几乎难以避免,尤其是大型软件或者服务,更需要我们在整个软工过程中谨慎科学合理,在测试时用各种方法技巧和工具实现do right thing 和do thing right的结合。这也是本人的第一篇博客,希望每天都能不断学习进步,同时不断总结并给大家分享,共同提高。