Liam的软件测试学习历程(二):查找错误的两道例题

观察两段代码并回答下列问题:

(1) 发现错误代码;

(2) 试着编写测试用例,不执行fault部分;

(3) 执行fault部分,但不出现error情况;

(4) 出现error情况,但不发生failure。

代码一:

public int findLast (int[] x, int y) {
//Effects: If x==null throw
NullPointerException
// else return the index of the last element
// in x that equals y.
// If no such element exists, return -1
for (int i=x.length-1; i > 0; i--)
{
if (x[i] == y)
{
return i;
}
}
return -1;
}
// test: x=[2, 3, 5]; y = 2
// Expected = 0

(1) for循环的终止条件应该为i<=0;

(2) x=[],y=2;

这里由于x为空,所以不进入for循环,直接返回NullPointerException;

Excepted:NullPointerException,

Actual:NullPointerException;

(3) x=[1,2,3],y=2;

这里最后一个等于y的值不在x[0]处,而在x[1],所以for循环并没有执行到"i>=0"的条件出,所以不会出现error状态;

Excepted:1,

Actual:1;

(4) x=[3,4,5],y=2;

这里虽然执行到了error状况,但由于x中并没有与y相等的值,所以得到结果是正确的,所以没有出现failure;

Excepted:-1,

Actual:-1;

代码二:

public static int lastZero (int[] x) {
//Effects: if x==null throw
NullPointerException
// else return the index of the LAST 0 in x.
// Return -1 if 0 does not occur in x
for (int i = 0; i < x.length; i++)
{
if (x[i] == 0)
{
return i;
}
} return -1;
}
// test: x=[0, 1, 0]
// Expected = 2

(1)for循环执行的方向反了,不应该由i=0开始执行,而应该是从x.length-1开始递减;

(2)这里无论如何代码都会执行进入for循环,所以不存在这样的样例;(这里与上一题不同的地方在于,上一问中的fault是for循环的一个判断条件,当x为空时,for循环在执行第一步对i赋值是便会出现NullPointerException,进而不会执行到fault;而这一问中的fault是整个for循环,所以只要进入for循环就属于进入了fault中)

(3)x=[1];这里执行时会进入for循环,即进入了fault,但是由于x中只有一个元素,所以不存在循环执行的正反问题,所以没有error状态;

Excepted:-1,

Actual:-1;

(4)x=[1,0,2];这里代码执行时会发生error状态,但是由于x中只有一个0,所以无论是正着执行for循环还是倒着执行,都不会对结果产生影响,所以没有发生failure;

Excepted:1,

Actual:1。

时间: 2024-10-09 06:12:19

Liam的软件测试学习历程(二):查找错误的两道例题的相关文章

Liam的软件测试学习历程(三):JUint使用

今天的上机课上,我尝试了使用JUint和EclEmma对项目进行测试. 首先是这两个工具的安装,JUint比较容易,只需将需要的jar包引入到项目中即可,而EclEmma则需要在Eclipse中选择安装新软件来进行安装. 安装好后,是完成对待测项目的编程,这次的测试代码是一个检测三角形形状的方法.我的代码如下: package com.triangleProblem; import junit.framework.Test; public class Triangle { public Tria

Liam的软件测试学习历程(五):Selenium测试

今天的实验是使用Selenium进行Web的测试.首先需要在Firefox中安装相关插件Selenium.安装好后,在Firefox右上角会出现一个标志:.出现这个标志就代表安装好了. 接下来点击这个按钮,就会出现Selenium IDE的界面: 单击右侧红色的录制按钮开始录制.录制的步骤即为测试一个用例要进行的所有步骤,包括填入网址,输入学号密码等.最后选中结果界面中的邮箱,邮件选择assertText. 之后在Selenium IDE中输出相应的结果,注意在输出钱要在option中勾选Ena

Liam的C# 学习历程(七):WPF(Windows Presentation Foundation)、Windows Form Applications

在今天的课堂中,老师向我们讲述了关于一些WPF(Windows Presentation Foundation)和Windows Form Applications的内容,接下来就让我们一起来复习一下: (一).WPF(Windows Presentation Foundation): WPF是一个重要运用于desktop手机开发方面.它使用到了一种XML的变形语言——XAML的语言(eXtensible Application Markup Language). 使用XAML开发人员可以对WP

Liam的C# 学习历程(六):LINQ(Language-INtegrated Query)

在这一周的C#课程中,我们学习了一些在C#编程中需要用到的对数据库或XML文件进行处理的操作,这就是LINQ,它使得一种类似与我们在数据库中常用的SQL语言的查询语言成为了C#语言的一部分,方便了我们搜索数据库等方面的操作.下面我们就来一起复习一下. (一)创建LINQ(Creating the Query): 1.From字句(The from clause):指定范围变量和数据源 from customer in customers //customer:range variable fro

Liam的C# 学习历程(五):正则表达式(Regular Expressions)

在这周的C#课堂上,我们学习了一些关于正则表达式的知识,结合老师上课所讲的,我又在网上搜索了一些相关的知识,接下来就让我们来实验一下. 首先我们先来复习一些在Linux课堂上学习过的简单的正则表达式的符号: “ . ” :通配一个单个字符,例如“a."可以在“ab.ac.cd.a1.abc”中通配出:“ab.ac和a1”: “.. ” :  与上一个类似,通配两个任意的字符. “ * ”:通配前一个字符的多次出现,  例如“a*”可以通配出:空.a.aa.aaa等: “{}”:可以通配出前一个字

Liam的C# 学习历程(三):类与对象、继承与多态

在这一次的课程中,我们主要学习了C#中一些关于类的的具体应用和面向对象(OOP)的三大特点:封装(Encapsulation).多态(Polymorphism)和继承(Inheritance).接下来就让我们来实验一下学到的知识. (一)This 关键字 this关键字(又称this指针)是类中所有非静态方法的隐藏指针. 调用this的方法有很多种,首先是在收到与成员变量同名的参数时,使用this可以避免混淆,就像下面过程所演示的: 成员函数SomeMethod收到了一个与成员变量hour同名的

Liam的C# 学习历程(九):实验学习

在最近的几周里,我们结合老师在课堂上所讲的知识,以及课下在通过视频学习的内容,通过Win8.1 App.WP8.1 App以及WPF的三种形式,联系了C#的一些具体的编程方法.下面我们就来回顾一下在编程过程中所使用到的一些方法: (一).页面之间的跳转: 对于这一部分,在编写Windows App时和编写WPF是所使用的方法是不同的,下面就分别来介绍一下: 1.Windows App: Frame.Navigate(typeof(DetailPage), file1); //跳转至名为Detai

Liam的C# 学习历程(八):数据流(Streams)

在这节C#课上,老师为我们讲述了第22章数据流的相关内容.首先我们需要用到的类在System.IO的命名空间中.这些类包括了表示磁盘上某个文件的File类,以及表示目录的Directory类. 接下来我们就通过一些例子来体会一下: (一).二进制输入: using System; using System.IO; namespace ImplementingBinaryReadWriteToFile { class Tester { const int SizeBuff = 1024; publ

Liam的C# 学习历程(九):最终产品规格说明书

"What is Today's Memory"规格说明书 Course Registration Problem Statement Version 1.0 Revision History Date Issue Description Author 17/May/2015 1.0 Initial creation. Finished the basic usage of original design. Liu Chang Course Registration Problem S