结对编程——关于Fault、Error、Failure程序设计

摘要:
错误是可能导致系统故障的系统内部状态。

一、问题描述:

        构造程序,分别是:
        •不能触发Fault
        •触发Fault,但是不能触发Error
        •触发Error,但是不能产生Failure
二、Fault、Error、Failure区别
  Fault:可能导致系统或功能失效的异常条件,可译为“故障”。
  Error:计算、观察或测量值或条件,与真实、规定或理论上正确的值或条件之间的差异,译为“错误”。Error是能够导致系统出现Failure的系统内部状态。
  Failure:当一个系统不能执行所要求的功能时,即为Failure,可译为“失效”。

二、结对对象:韩思明

     博客地址:http://www.cnblogs.com/a294098789/

     双方贡献:1:1

  队友优点:认真负责、细心细致、有很好的代码编写水平、注重代码的规范和格式。好队友!

     结对编程照片:

  结对编程——关于Fault、Error、Failure程序设计第1张

三、采用语言:java(代码实现如下):

 1 package com.sicnu.findnumber;
 2 
 3 public class FindLastNumber {
 4     
 5     public static void main(String[] args) {
 6         //找出目标值aim在数组最后出现的位置,若在数组中不存在则表示-1
 7         int array[] = {2};
 8         int aim = 2;
 9         int pos = -1;
10         
11         if(array.length <= 1){
12             if(aim == array[0]){
13                 pos = 1;
14             }else{
15                 pos = -1;
16             }
17             
18         }else{
19             pos = findLast(aim,array);
20             
21         }
22         
23         for(int i = 0; i < array.length; i++){
24             System.out.print(array[i] + "  ");
25         }
26         System.out.println();
27         System.out.println("find :"+ aim +" The last position:"+pos);
28         
29         
30     }
31     
32     
33     /**
34      * @param aim
35      * @param array
36      * @return
37      */
38     public static int findLast(int aim, int array[]){
39         int position = -1;
40         for(int i = 1; i < array.length ;i++){//wrong!
41             if(array[i] == aim){
42                 position = i;
43             }            
44         }
45                 
46         return position + 1;
47 
48     }
49 
50 }

四、结果代码分析:

结对编程——关于Fault、Error、Failure程序设计第2张

错误分析:此题所要找的是,目标值在数组中出现的最后一个位置,应该是从数组从后往前找,而题中代码是,从前往后找,并且是从数组的第二个往后找的,所以是出错代码!

•不能触发Fault

 

结对编程——关于Fault、Error、Failure程序设计第3张

测试用例输出:

结对编程——关于Fault、Error、Failure程序设计第4张

数组为单个元素,当数组元素只有一个时,如题上代码,直接比较的是数组的值与目标值,并没有调用findLast()方法,所以并没有触发Fault。

  •触发Fault,但是不能触发Error

测试用例输出:

 

结对编程——关于Fault、Error、Failure程序设计第5张

调用了findLast()方法,也就是触发了Fault,但是程序结果仍然是正确,因为8在数组中只有一个且正好处于最中间的位置,此时最后一个出现和第一个出现位置是相同的,所以并未触发Error。

  •触发Error,但是不能产生Failure

结对编程——关于Fault、Error、Failure程序设计第6张

在查找目标值5时,本来程序查找的先后顺序出错,找的是第一个出现的值,但是由于程序又出错在是从第二个找起的,本来第一出现的5被略过,就找到了位于第5个位置的5,因此最后程序运行的结果阴差阳错是正确的。

五、心得体会:

  在软件测试课程学习中,通过编写此程序,我对软件中 fault,error,failure 有了深刻的理解,同时,更让我明白,软件测试的测试用例应该在同一等价划分上尽量多种,毕竟测试用例的巧合不能是测试的瓶颈。这些,也让我对软件测试有了不一样的理解。

免责声明:文章转载自《结对编程——关于Fault、Error、Failure程序设计》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇初探jquery之强大丰富的选择器dos进去mysql导入数据库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Scala学习——模式匹配

scala模式匹配 1.基础match case(类似java里switch case,但功能强大些) object MatchApp { def main(args: Array[String]): Unit = { val is = Array("a","b","c","d") val i = is(Random.nextInt...

php实现MySQL两库对比升级版

define('DATABASE1', 'db1'); $dbi1 = new DbMysql; $dbi1->dbh = 'mysql://root:password@127.0.0.1/'.DATABASE1; define('DATABASE2', 'db2'); $dbi2 = new DbMysql; $dbi2->dbh = 'm...

for循环删除数组中的元素crash问题

转载请注明出处!!! 如以下代码: NSMutableArray *array = [NSMutableArray arrayWithObjects:@"2",@"3",@"4",@"9",@"4",@"12",@"22",@"4",@"4",@"5",@"6",@"1", nil]; for (NSString *str in array)...

Qt中gb2312/GBK的URL编解码函数

编码函数: QByteArray encodeURI(QString str) { QByteArray array; QTextCodec *codec=QTextCodec::codecForName("GBK"); QByteArray tmpArray; tmpArray = codec->fromUnicod...

Java 实例 – 数组添加元素

[ Java 实例 - 数组添加元素 Java 实例 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 insertElement () 方法向数组插入元素, 这边我们定义了 printArray() 方法来打印数组: MainClass.java 文件 import java.util.Arrays; public c...

AR的一些常见的操作

一、查询数据集合 1、$admin=Admin::model()->findAll($condition,$params); 该方法是根据一个条件查询一个集合,如:   findAll("username=:name",array(":name"=>$username));      2、$admin=Admin::model()->...