克莱检查如何验证测试通过或失败?

时间:2016-06-18 04:46:31

标签: llvm autotest klee

我已在Klee tutorial阅读了klee教程。这非常简单直接。但是,当我在KLEE generated files检查由测试生成的文件时,我没有找到任何文件告诉我测试是通过还是失败?可以有两种方法来验证测试结果。

  1. KLEE足够聪明,知道3个测试用例的预期回报值

  2. KLEE只是将返回值转储到文件中的某个位置,而人工开发人员需要自己检查它们。

  3. 是这样吗?

2 个答案:

答案 0 :(得分:2)

Klee不会为您在测试中运行的程序提供输出,因为它正在静态分析您的代码(大多数时候)。所以它实际上并没有运行你的程序,这就是它快速的原因。如果它想运行你的程序,那将花费更多的时间。您只需要自己运行它,看看输出是否符合您的预期。

Klee是一个测试输入生成工具,而不是测试用例生成工具。不同之处在于测试用例具有输入和预期输出。

答案 1 :(得分:0)

KLEE使用LLVM测试基础设施llvm-lit进行单元测试。命令和通过/失败检查写在注释中。

以test / Feature / DoubleFree.c为例。

// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc
// RUN: rm -rf %t.klee-out
// RUN: %klee --output-dir=%t.klee-out %t1.bc 2>&1 | FileCheck %s
// RUN: test -f %t.klee-out/test000001.ptr.err

int main() {
  int *x = malloc(4);
  free(x);
  // CHECK: memory error: invalid pointer: free
  free(x);
  return 0;
}