[软件测试、定位、修复领域基准数据集] Defects4J 和 SIR benchmark

文章目录

    • 前言
    • 1 Defects4J
    • 1.0 基本信息
    • 1.1 版本更新
    • 1.2 v1.4.0版本和v1.1.0版本的区别
    • 2 SIR(Software-artifact Infrastructure Repository)
    • 2.0 基本信息
    • 2.1 如何下载
    • 2.2 Alternative(代替下载方法)
    • 参考

前言

Defects4J是一个很热门的Java自动程序修复、缺陷定位领域基准数据集。
SIR(全称 Software-artifact Infrastructure Repository)也是早期用作软件分析,测试等很常用的一个数据集。
在此介绍二者。

1 Defects4J

1.0 基本信息

提出defects4j的文章:[ISSTA 2014]

Just R, Jalali D, Ernst M D. Defects4J: A database of existing faults to enable controlled testing studies for Java programs[C]//Proceedings of the 2014 International Symposium on Software Testing and Analysis. ACM, 2014: 437-440.

开源数据集位于:https://github.com/rjust/defects4j
2014年至今,被引用量达267次。

1.1 版本更新

见:https://github.com/rjust/defects4j/releases
[软件测试、定位、修复领域基准数据集] Defects4J 和 SIR benchmark_第1张图片

感觉整个社区维护的很好。

1.2 v1.4.0版本和v1.1.0版本的区别

只说一下init.sh脚本的区别吧。

v1.4.0比v1.1.0多出来一个gradle的配置,如下:
[软件测试、定位、修复领域基准数据集] Defects4J 和 SIR benchmark_第2张图片
如果提示gradle没有配置好,那么需要到对应路径下面去看看gradle的两个zip是否解压了。

2 SIR(Software-artifact Infrastructure Repository)

2.0 基本信息

SIR在2005年的EMSE期刊上被提出:

Do H, Elbaum S, Rothermel G. Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact[J]. Empirical Software Engineering, 2005, 10(4): 405-435.

SIR全称:Software-artifact Infrastructure Repository,即软件工件基础设施仓库。

其中这个artifact很有意思,中文翻译过来是工件的意思,可以进一步理解为人为造的一个东西 [1],再结合SIR中都是seeded bugs这个情况,就不难理解了。

此外,百度翻译解释artifact为:a man-made object taken as a whole。

且在其官网上(https://sir.csc.ncsu.edu/portal/index.php ),有如下说明:

The repository contains many Java, PHP, C# and C, C++ software systems, in multiple versions, together with supporting artifacts such as test suites, fault data, and scripts.

2.1 如何下载

工具主页: https://sir.csc.ncsu.edu/portal/index.php

需要先注册,登录后方可下载。

2.2 Alternative(代替下载方法)

但是如果想马上使用SIR benchmark的话,可以去使用了SIR benchmark的自动工具修复文章中找,因为这些修复文章一般都会有修复工具,且一般都会开源,如果开源的话,那么肯定会有SIR的相关信息及配置的。

我认为该方法之好处有二:
1)方便了解 SIR benchmark的安装和配置;
2)方便了解SIR benchmark的使用和运行。
因为修复工具肯定是包含对应脚本的。

我找到了SemFix,见 ICSE 2013文章

Nguyen H D T, Qi D, Roychoudhury A, et al. Semfix: Program repair via semantic analysis[C]//2013 35th International Conference on Software Engineering (ICSE). IEEE, 2013: 772-781.

其工具主页:http://angelix.io/#experiments
SemFix实验复现地址:http://www.comp.nus.edu.sg/~release/angelix/semfix-experiments.tar.gz
下载之后,如下:
[软件测试、定位、修复领域基准数据集] Defects4J 和 SIR benchmark_第3张图片
根据作者文章(https://www.comp.nus.edu.sg/~abhik/pdf/ICSE13-SEMFIX.pdf )描述:
作者使用的是TARANTULA(tarantula)这一种SBFL缺陷定位技术。

所以只需要跑通该程序即可。

注:跑通该程序,应该还会用到angelix工具(https://github.com/mechtaev/angelix )。

参考

[1] 软件工件(software artifact)怎么理解? https://bbs.csdn.net/topics/270084658

你可能感兴趣的:([软件测试、定位、修复领域基准数据集] Defects4J 和 SIR benchmark)