zoukankan      html  css  js  c++  java
  • 结对编程之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 有了很直观的认识和理解,也让我们明白了,测试有一定的局限性,如何高效的测试,如何科学的测试,如何能得到较高的测试回报率,这也是本门课程中最重要的核心学习的内容。这是本门课程的开头,也让我们认识到软件测试有有趣性,对软件测试领域有了不一样的认识。

  • 相关阅读:
    第二周选答题-myod
    第六周实验-模块与系统调用
    2019-2020-11 20199313《Linux内核原理与分析》第十二周作业
    2019-2020-1 20199313《Linux内核原理与分析》第十一周作业
    2019-2020-1 20199313《Linux内核原理与分析》第九周作业
    2019-2020-1 20199313《Linux内核原理与分析》第八周作业
    20199322 2019-2020-2 《网络攻防实践》第4周作业
    20199322 2019-2020-2 《网络攻防实践》第三周作业
    20199322 2019-2020-2 《网络攻防实践》第2周作业
    20199322 2019-2020-2 《网络攻防实践》第一周作业
  • 原文地址:https://www.cnblogs.com/chunchuner/p/5400590.html
Copyright © 2011-2022 走看看