[SIR数据集实验][1]apache-xml-security实验方法

SIR是目前软件研究领域非常著名的数据集,大量研究在使用SIR中的标准数据集。例如:

P. A. Nainar and B. Liblit, "Adaptive bug isolation," in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, Cape Town, South Africa, 2010, pp. 255-264.

R. Santelices and M. J. Harrold, "Exploiting program dependencies for scalable multiple-path symbolic execution," in Proceedings of the 19th international symposium on Software testing and analysis, Trento, Italy, 2010, pp. 195-206.

这两篇论文。这篇博客里就想总结一下怎么样使用SIR中的Java类数据进行实验。

首先,到SIR的官方网站:http://sir.unl.edu/portal/index.php ,需要指出的是,该网站只实行申请注册,并且只对研究人员开放,申请者在申请时需要说明自己的学校、科研项目及后续主要研究计划等。但是申请还是比较简单的,只要稍微认真填写申请表就可以。

申请成功之后在左边导航栏选择:“Download Objects”——在右侧页面选择Java——点击“Display”,在刷新后的页面中可以看到xml-security,点击“all platforms”就可以进行下载。下载后进行解压,可以得到一个非常复杂的文件夹,如下图所示:

这个文件夹常常让人不知所措,不就是一个xml-security吗?怎么会出来这么多文件夹。但是为了伟大的科学研究事业,我们还得耐心慢慢分析。需要指出的是,虽然SIR中提到Java数据集可以适用于任何安装合适版本JVM的系统,但实际上他们提供了很多仅适用于Linux类系统的bash脚本。所以必须在Linux类系统中才能进行实验。

 

下面我们来具体学习一下怎么在这么多文件夹中怎么进行实验,按照Java Object Directory Specification中的介绍,scripts这个文件夹是“The directory from which experiments are run.” 所以我们就从这个文件夹开始学习。进入到scripts文件夹后,可以看到如图所示的几个文件和文件夹。

其中的README文件详细列出了怎么安装(实际上就是Build)xml-security,以及怎么样驱动实验。我这里简单翻译和总结一下(本文在ubuntu系统上测试,并且已经有JDK,关于怎么在ubuntu系统上安装JDK,可以参考我之前的一篇博文):

 

一、首先,需要进行环境变量的设置。首先要设置一个experiment_root环境变量,指向“apache-xml-security”所在的目录。设置环境变量的方法很多,文档中说如果使用的是“bash”(我用的操作系统ubuntu),可以使用export命令,以我用的机子为例,“apache-xml-security”所在的目录为“/home/quyu/Projects”那么可以输入:

export experiment_root=/home/quyu/Projects

但是经检验,export设置环境变量,在终端退出后将失效。为了方便起见,可以更改/etc/environment文件更改环境变量。可以终端输入:

sudo gedit /etc/environment

打开environment后,按照该README中提示的内容,加入几个环境变量,例如我增加的是:

experiment_root="/home/quyu/Projects"
CLASSPATH=".:/home/quyu/jdk1.6.0_24/lib:${experiment_root}/apache-xml-security/source:${experiment_root}/apache-xml-security/source/xml-security:${experiment_root}/apache-xml-security/source/xml-security/build/classes"
JAVA_HOME="/home/quyu/jdk1.6.0_24"

增加环境变量很简单,但是一定要注意不要把之前的CLASSPATH之类的值删掉了,而应该用冒号隔开。

二、安装相应版本。xml-security的原版和注入缺陷后的版本安装过程都差不多,但是我在这里缺遇到了很多问题,这里简要记录一下。按照README文档中介绍,要安装版本,只需要运行“install.sh orig version_number”(运行原版)和“install_seeded.sh version_number”(运行注入缺陷版本),其中的version_number就是1、2、3之类的版本号。但是实际运行中,如果输入:

bash install.sh orig 0

就会报错:“无法删除……权限不够”

如果输入:

sudo bash install.sh orig 0

则权限符合,但是这种情况下不能正常解析“experiment_root”这个环境变量,依然不能正常运行。这里需要以root身份运行,网上介绍了一种root用户的登录方法,这里转载过来:

--------------------------------------------------------

Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许“su”到 root。
有人说这是个不好的实践,特别是对于服务器来说。我觉得对于桌面用户来说,这样安全性更高一些,是应该的;但对于服务器可以设置成“允许su 到root,但不允许root用户直接登录”。而我为了开发时的方便,则在桌面和服务器上都采用这种方式。

允许 su 到 root

非常简单,下面是设置的方法:
quyu@ubuntu:~$ sudo passwd
Password: <--- 输入安装时那个用户的密码
Enter new UNIX password: <--- 新的Root用户密码
Retype new UNIX password: <--- 重复新的Root用户密码
passwd:已成功更新密码

--------------------------------------------------------
然后再输入su,再运行bash install.sh orig 0,就可以正常安装原版的第0个版本了。再运行build命令,当时build命令只能接受version_number是1、2、3的情况,我还没有搞清楚两者的对应关系。

bash build.sh 1

就基本上安装成功了。简单分析了一下install.sh和build.sh文件的主要功能,前者就是把图1中versions.alt中的对应本版拷贝到source文件夹中,后者就是执行source文件夹中的build.sh文件,build生成的.class文件在source/xml-security/build/classes文件夹中。

 

三、运行TestCase。在scripts/TestScripts文件夹下的主要文件如下图所示。


我对.cls文件不是很了解,但是经过尝试,发现运行这种文件要比.sh文件简单,直接双击运行即可。打开看了一下,其实这个文件的作用就是运行testplans.alt/testscripts 目录下的测试用例,例如点击scriptR1.cls,可以发现跳出一个terminal并显示运行情况,如下图所示:

测试用例运行完成之后,将在output文件夹中生成运行15个测试用例的结果。但是目前看来,即便是原版的xml-security,也会有一些测试用例运行通过不了。不知道这是正常情况,还是之前的设置有问题(即便是之前设置有问题,但基本的测试路径已经走通了)。我会在后面的博文中搞清楚这个问题。

【未完待续】

 


 

 

posted on 2011-09-29 16:45  qysh123  阅读(1827)  评论(0编辑  收藏  举报

导航