您的位置:首页 > 移动开发 > Objective-C

Software-artifact Infrastructure Repository 学习笔记 2:C Object Handbooky

2015-06-02 20:08 639 查看

1. Overview

本文探讨较新的C object 的组织方式,('siemens' 程序以及 space 参见附录)。

一种使用 SIR 引导实验的方法是:

1. 下载或拷贝一份新的 object

2. 设置系统环境变量 "
experiment_root
"
为 object 的绝对路径。

3. 确定你要使用的 artifact, 例如 specifications,versions, seeded faults, and inputs.

4. 创建脚本可以利用object 的公共组织架构。

5. 最终创建一个顶层的脚本,能够对 object 的所有版本都执行实验。

其中第2条是一定要做的。

2. Object Selection

3. Object Organization

4. General Object Setup

每个程序都已经集成到一个源码文件里了,这是为了适应我们用来收集 coverage 信息和 trace 文件的一个特殊工具集。当然也可能支持多文件,不过就要提供合适的Makefile, 只需要每个 Makefile 执行单次的运行。
单个 .c 文件是用 cat 命令组合起来的,但是头文件保持分离。所以 version K 的 vK 目录下包含0个或多个头文件还有一个 .c 文件。每个版本的 makefile 至少有3个目标,默认的是正常 build,不做任何修改,‘build-st’ 对程序插桩用于收集 statement trace, "built-bt" 用于插桩收集 branch trace。

请注意对于一些 object,某些库是不会被合并进来的,因为库代码一般不会被测试。另外不支持配置。

一些 object 为了保证输出的确定性而被修改了,并且输出全部是 stdout。

4.1 Generalized Object Test Execution

为了复现 SIR 的测试结果,你的脚本必须要执行如下的一连串任务。

1. 复制最初版本的 object 到 source 目录。最初版本的 object 在可能在不同的目录下,有些在versions.alt/versions.orig或 versions.alt/orig,其他的 siemens (tcas, printokens 等)在 source.alt/source.orig目录下

2. 使用合适的编译工具链编译最初版本。

3. 执行该 object 的测试集。 基本 object 都会提供一个基本的测试集脚本执行所有的测试。 提供多种测试集组合的object通常在 testplans.alt目录下提供对应为 tsl.universe的测试脚本。

4. 保存最初版本的测试输出到指定的目录,例如 outputs.alt,用于与之后的测试比较。

5. 把一个植入错误的 artifact 拷贝进 source 目录。artifact 在 versions.alt 目录下,simems 的目录不同,它在 source.alt 下也有最初版本,而植入错误的在 versions.alt,所以要注意到底把什么拷贝进 source。

6. 如果植入错误的 artifact 使用了 FaultSeeds.h 用来插入错误, 你需要去掉想要的错误的注释,例如:把

/* #define FAULT_AK_1 */

改为

#define FAULT_AK_1

这会告诉预处理程序这个错代码需要被编译进来。 C 的 object 使用这个方法来启用错误。

7. 应用错误之后,编译 object

8. 对错误程序执行测试

9. 与最初程序对比输出

10. 对每个合适的错误重复最后4步。

11. 最终对object 提供的每个版本重复上述所有步骤,并且列表这些结果对分析测试有所帮助。

5. Test Creation

C程序的测试是在两种构造方法中二选一。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: