Java PathFinder 的安装与简单使用,测试除零错误

Java PathFinder 的安装与简单使用,测试除零错误

软件测试, 使用 Java PathFinder 来找出一段代码中的除零错误并显示出来.

1. 要求

Find and report the division by zero in the folling prgram with Java Pathfinder.

使用Java Pathfinder 找出下边程序代码中的除零错误并展示.

1.1 程序代码

public class Racer implements Runnable {
    int d = 42;
    public void run () {
    doSomething(1001);
    d = 0; // (1)
    }

    public static void main (String[] args){
          Racer racer = new Racer();
          Thread t = new Thread(racer);
          t.start();
          doSomething(1000);
          int c = 420 / racer.d; // (2)
          System.out.println(c);
    }

    static void doSomething (int n) {
        try { Thread.sleep(n); } catch (InterruptedException ix) {}
    }
}

1.2 参考

2. 前期准备

在进行实验之前,首先肯定是要安装配置环境了.

2.1 Java JDK

此处更改, 一开始我使用的是Ubuntu源可以安装的openJDK. 后来发现, 在最新版的 Java PathFinder 上会出现类似IO的错误.

所以,建议使用oracle JDK :

  • 下载oracle JDK, 官网地址, 也可以直接点此链接下载Linux x64版本Java1.8 .

  • 解压到随便一个目录中, 建议不要使用临时目录, 可以新建一个专门用来放类似软件的目录.

  • 修改全局环境变量
    执行命令:

    sudo vim /etc/profile 
    

    这是使用Vim编辑, 如果没有安装vim ,可以使用sudo apt install vim 安装, 也可以换用 Gedit编辑, 即: sudo gedit /etc/profile

    在文件末尾添加如下语句:

    export JAVA_HOME=/usr/lib/jdk/jdk1.8   //这里的/usr/lib/jdk/jdk1.8要换成你的jdk的路径
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=.:${JAVA_HOME}/bin:$PATH
    

2.2 Eclipse (或者其他JavaIDE)

同样在 Ubuntu 16.04 下,执行如下命令:

sudo apt install eclipse

即可安装Eclipse.

2.3 安装Java PathFinder

我使用的IDE是Eclipse 所以, 在这里我以安装配置Eclipse插件包的形式介绍.

此方法适用于 Eclipse 4.3.x 以及 Java 7 以上版本, 更老的版本是否可以不清楚.

更多的安装介绍, 参考官方WiKi

2.3.1 开始安装

在Eclipse中安装有三种方式, 分别是源码构建, 安装插件Jar包,从更新站点安装.

这里, 我使用的是比较简单的安装方法, 具体操作如下:

2.3.2 安装过程截图

  1. 点击 Help => Install New Software ,


    输入网址.png
  2. 点击 ADD,填入Name和location,也就是网址, Name可以随便填

    add.png

  3. 稍微等待之后, 就能在下方看到内容,然后我们选择要安装的包,其实在这里就是全选了.


    选择安装的包.png
  4. 然后Next,可能会出现如下图的提示,点击OK就行了, 没有提示的话更好.

    安装提示.png

  5. 接受协议


    接受协议.png
  6. 然后就可以看大安装成功了, 成功之后重启Eclipse即可.

    安装完成提示重启.png

2.3.3 clone JPF-core

由于JPF项目存放在Mercurial版本控制仓库中,而不是GIT中, 所以我们需要一个新的工具来进行 clone.

同样Ubuntu 16.04下, 执行以下命令:

sudo apt install mercurial

安装完成之后, 使用 hg 命令进行下载操作,也就是clone:

hg clone http://babelfish.arc.nasa.gov/hg/jpf/jpf-core

我们只需要clone jpf-core 即可.

记住下载保存的文件夹.

3. 测试是否存在除零错误

3.1 引入JPF-core项目

  1. 在Eclipse中选择作为一个已存在的项目进行引入.

  2. 引入之后,会自动进行编译,如果编译成功,则会出现:


    bianyichenggong.png

如果出现错误, 根据错误信息解决就好.

比如, 我一开始使用的是Ubuntu源上的openJDK, 结果一直编译不过去, 然后我下载配置了官方的JDK1.8, 则成功编译了.

  1. 新建一个带有主方法的类:


    newclass-1.png
  2. 将需要测试的代码写入到刚刚新建的类中:


    newclass-2.png

    然后会自动重新编译:


    newclass-3.png

    当然你也可以另外新建一个java项目. 例如:


    newproject.png
  3. 右键这个类文件,选择Run AS => Run Configuration...., 然后在左侧找到run-JPF,

    左侧runjpf.png

  4. 填写参数


    填写参数.png

注意:

+target=Racer # 指明类名
+classpath=/home/xiaofei/eclipseWorkspace/JPF/jpf-core/bin  # 是类文件的目录地址

然后点击 Run , 即可.

3.2 测试结果

result.png

完成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,971评论 25 707
  • 20 20岁。你大学还没毕业,假期回到家,就被安排去参加人生中第一次相亲。男孩...
    阑十三阅读 736评论 1 11
  • 介绍 组件化什么时候在软件工程领域提出已经无从考究了,这个概念很早就被提出,近年来随着前端开发的迅速发展和工程化转...
    文兴阅读 2,971评论 0 2
  • 2016年第一次组织党员服务队活动,联合了自己合作的修理厂做车辆业务咨询、保养等服务,很私心的说当时邀请保险公司是...
    武春丽阅读 495评论 0 2