结对编程之Fault、Error、Failure

1.结对说明

结对对象:刘世麟  博客地址:http://www.cnblogs.com/liushilin/

2.题目要求

 构造程序,分别是:
        •不能触发Fault。
        •触发Fault,但是不能触发Error。
        •触发Error,但是不能产生Failure。

3.题目概述

提示用户输入两个值,两个值必须在[0,100],若不满足条件各自有自己的提示,若两个值都小于5,则输出all input less than 5,程序退出。否则根据输入的值判断使用加法还是减法,若输入的第一个数小于第二个数,则使用减法计算,结果小于0,不然就使用加法,结果一定大于0。

4.结对照片

5.源码

复制代码
 1 package com.nanchen.jieduibiancheng;
 2 
 3 import java.util.Scanner;
 4 
 5 public class ErrorFault {
 6     private static Scanner in = new Scanner(System.in);
 7     private static final int RANGE_LOW = 0;// 允许用户输入的最小值
 8     private static final int RANGE_HIGH = 100;// 允许用户输入的最大值
 9     private static final int LIMIT = 5;
10     private static int result;// 返回结果
11 
12     /**
13      * 获得用户输入,输入值必须是0到100的整数
14      * 
15      * @return
16      */
17     public static int getUserInput() {
18         int number = -1;
19         System.out.println("please input a integer number,range in [0,100] !");
20         while (true) {
21             if (in.hasNextInt()) {
22                 number = in.nextInt();
23                 if (number > RANGE_HIGH || number < RANGE_LOW) {
24                     System.out.println("The input integer number not in [0,100],please input again!");
25                 } else {
26                     break;
27                 }
28             } else {
29                 in.nextLine();// 刷新输入流
30                 System.out.println("illegal input!!!the input must be a integer!please input again!");
31             }
32         }
33         return number;
34     }
35 
36     /**
37      * 获得返回结果
38      * 
39      * @param num1
40      * @param num2
41      * @return
42      */
43     public static int getResult(int num1, int num2) {
44         if (num1 < num2) {
45             return num1 + num2;// 此处存在fault,应该是减法
46         }
47         return num1 + num2;
48     }
49     // 如上,无论如何输入都会执行加法而不会执行减法。
50 
51     public static void main(String[] args) {
52         int op1 = getUserInput();
53         int op2 = getUserInput();
54         System.out.println("******************************************************");
55         System.out.println("The user input num1 is " + op1 + "      the num2 is " + op2);
56         if (op1 < LIMIT && op2 < LIMIT) {
57             System.out.println("All input less than 5!!!");
58             return;
59         }
60         result = getResult(op1, op2);
61         if (result > 0) {
62             if (result > 100) {
63                 System.out.println("Illegal!");
64             } else {
65                 System.out.println("The system uses the addition,and the result is " + result);
66             }
67         } else {
68             if (result < -50) {
69                 System.out.println("Illegal!");
70             } else {
71                 System.out.println("The system uses subtraction,and the result is " + result);
72             }
73         }
74     }
75 
76 }
复制代码

 

 6.存在fault的代码说明

复制代码
/**
     * 获得返回结果
     * @param num1
     * @param num2
     * @return
     */
    public static int getResult(int num1,int num2) {
        if(num1 < num2){
            return num1 + num2;//此处存在fault,应该是减法
        }
        return num1 + num2;
    }
    //如上,无论如何输入都会执行加法而不会执行减法。
复制代码

如上,无论用户输入的第一个数和第二个数的大小,都会触发加法计算,而不会进行减法的运算

7.测试用例

1)存在fault但不能触发fault。

由于本程序存在分支,所以只要不进入fault分支,就不能触发fault!

 

 2)触发fault,但不能触发error。

如上,由于用户输入的第一个值大于第二个值,会触发正确的得到加法运算,所以触发了fault,但是并没有触发error。

3)触发Error,但是不能触发Failure。

 如上,实际上opA < opB,应该执行减法,且所得结果小于-50,应该得到一个Illegal的输出。但是使用getResult方法得到的结果是101,触发fault,并且产生了error,但是由于得到的结果大于100,所以输出的结果也是正确的。如上,测试用例满足了触发error,但是没有触发failure

8.总结

      现在已经进入软件测试方面的学习,通过该程序,对软件中fault,error,failure 有了很直观的认识和理解,也让我们明白了,测试有一定的局限性,如何高效的测试,如何科学的测试,如何能得到较高的测试回报率,这也是本门课程中最重要的核心学习的内容。这是本门课程的开头,也让我们认识到软件测试有有趣性,对软件测试领域有了不一样的认识。

 

posted on 2016-04-17 11:25  if-初见  阅读(368)  评论(0编辑  收藏  举报