一、问题描述:
构造程序,分别是:
•不能触发Fault。
•触发Fault,但是不能触发Error。
•触发Error,但是不能产生Failure。
二、结对说明:
结对对象:叶银芳 博客地址:http://home.cnblogs.com/u/linuoxin/
双方贡献:1:1
编程照片:
三、源代码:
采用语言:java
1 package com.yyf; 2 3 import java.util.Scanner; 4 5 public class Software { 6 public static final int COUNT = 3; 7 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 11 12 double result = 0, sum = 0; 13 int num; 14 15 Scanner in = new Scanner(System.in); 16 17 System.out.print("请问要求几个平均数:num="); 18 num = in.nextInt(); 19 double array[] = null; 20 array = new double[num]; 21 /* 22 * 输入数值 23 */ 24 System.out.println("请输入具体数值:"); 25 for (int i = 0; i < num; i++) { 26 System.out.print("array[" + i + "]="); 27 array[i] = in.nextDouble(); 28 29 } 30 if (array.length <= COUNT) {// 不触发fault 31 System.out.print("计算过程:sum=" ); 32 for (int i = 0; i < array.length; i++) { 33 sum += array[i]; 34 System.out.print(array[i]+"+"); 35 } 36 result = sum / array.length; 37 38 } else {// 有fault 39 System.out.print("计算过程:sum=" ); 40 for (int i = 1; i < array.length; i++) { 41 42 sum += array[i]; 43 System.out.print(array[i]+"+"); 44 } 45 if(array[0]!=0){ 46 result=sum/(num-1); 47 }else{ 48 result = sum / array.length; 49 } 50 } 51 System.out.println("所求平均值为:" + result); 52 in.close(); 53 } 54 55 }
四、存在Fault代码:
1 System.out.print("计算过程:sum=" ); 2 for (int i = 1; i < array.length; i++) {//说明:如果是用数组存储输入的数据,并求其平均值,应该是从说组下标0开始计算 3 4 sum += array[i]; 5 System.out.print(array[i]+"+"); 6 } 7 if(array[0]!=0){ 8 result=sum/(num-1); 9 }else{ 10 result = sum / array.length; 11 }
五、测试用例:
•1. 存在fault,但是不能触发Fault。
if (array.length <= COUNT) {// 不触发fault System.out.print("计算过程:sum=" ); for (int i = 0; i < array.length; i++) { sum += array[i]; System.out.print(array[i]+"+"); } result = sum / array.length;
•2.触发Fault,但是不能触发Error。
System.out.print("计算过程:sum=" ); for (int i = 1; i < array.length; i++) { sum += array[i]; System.out.print(array[i]+"+"); }
•3.触发Error,但是不能产生Failure。
六、总结:
这次结对项目是构造程序,通过程序的编写完成对error,fault,failure的认识,在写程序之初,我们对这几个概念进行了学习,然后设计了求平均数的题目,编写了以上程序,有了之前结对编程的经验,虽然这次换了一个结对对象,但进入状态还是要快一些,我的队友是一个很有耐心,思维活跃的人,在结对过程中,我们也有不同的看法,但很快在我们的分析讨论中也迎刃而解了。其实,我们这次的程序写得不是很完善,可能是因为我们对上面三个概念的理解也不是很深刻,了解很片面,在最后的结果分析中我们也认识到了这点,所以我们会在以后的编程练习中进一步学习这些知识。
学习进度条:
点滴成就 |
学习时间 |
新编写代码行数 |
博客量(篇) |
学到的知识点 |
第一周 |
2h |
0 |
0 |
了解认识软件工程 |
第二周 |
2h |
0 |
1 |
了解软件工程思想 |
第三周 |
2h |
0 |
1 |
制作并进行问卷调查 |
第四周 |
4h |
100 |
1 |
需求分析与结对编程 |
第五周 |
4h |
240 |
0 |
Java的学习 |
第六周 |
3h |
0 |
0 |
初步学习“软件测试” |
第七周 |
4h |
178 |
1 |
软件系统设计、结对编程 |
第八周 |
6h |
55 |
1 |
软件测试、结对编程对fault、error、failure的认识 |