文档详情

使用KLEE生成高代码覆盖率的测试用例.docx

发布:2017-01-22约2.69千字共8页下载文档
文本预览下载声明
使用KLEE生成高代码覆盖率的测试用例一、实验目的本实验可以帮助学生了解动态符号执行工具KLEE的基本功能,,为进一步研究符号执行技术的理论与应用提供基础。二、实验内容及环境本实验展示如何利用klee对一个被测目标函数进行符号执行,覆盖全部路径,并生成测试用例的具体操作流程。实验虚拟机为Ubuntu 16.04.1 LTS 64位操作系统。三、klee安装1.进入安装主页klee网站http://klee.github.io/中有相关的安装方法,点击Use KLEE Docker image进入。如图1。图1 安装主页2.安装docker(ubuntu)点击进入ubuntu版本的docker入口,如图2.图2 安装入口3.安装linux-image-extra-*包①更新包管理器sudo apt-get update②安装命令包sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual4.更新apt源①更新包信息一些准备工作,逐条输入指令即可,不再展开介绍。sudo apt-get update sudo apt-get install apt-transport-https ca-certificatessudo apt-key adv \ --keyserver hkp://:80 \ --recv-keys 58118E89F3A912897C070ADB52609D②更新apt源打开 /etc/apt/sources.list.d/docker.list 文件,没有就创建一个,里面加一句话,如下:gedit /etc/apt/sources.list.d/docker.list输入deb /repo ubuntu-xenial main并将文本保存。③更新软件源sudo apt-get update④确定APT连接的是正确的仓库apt-cache policy docker-engine5.安装最新版本docker①安装dockersudo apt-get install docker-engine②启动docker服务sudo service docker start③验证安装是否成功,若显示如图3所示,则安装成功。sudo docker run hello-world图3 docker安装成功6.下载KlEE镜像docker pull klee/klee7.运行KLEE镜像docker run --rm -ti --ulimit=stack=-1:-1 klee/klee进入到klee操作界面,如图4:图4 klee界面退出命令则是:exit四、实验步骤1.选取目标函数函数get_sign如图5所示:图5 目标函数2.对目标函数进行插装对上述目标函数进行插装,得到源代码程序get_sign.c打开/Home/klee/examples/get_sign中的get_sign.c,如图6所示:图6 源代码程序其中,klee_make_symbolic函数将某一个变量符号化。该函数需要三个参数:符号变量地址,符号变量占用内存字节,和它所采用的符号名称。由于klee相关可执行文件在klee目录下,所以将get_sign.c放到/Home/klee目录下。3.编译成LLVM中间语言KLEE在LLVM中间语言字节码上进行操作。我们要使用clang -I ../../include -emit-llvm -c -g get_sign.c将源码get_sign.c编译成LLVM中间语言,得到get_sign.bc文件。命令如下:clang -I ../../include -emit-llvm -c -g get_sign.c-I是为了让编译器可以找到klee/klee.h头文件-g是为了增到调试信息到bitcode?文件中。结果如图7:图7 生成LLVM中间语言4.klee进行符号执行用klee对编译后得到的中间语言进行符号执行,命令如下:klee get_sign.bcKLEE符号执行后的输出信息如图8所示:图8 klee符号执行我们选取的get_sign函数,有三条路径。程序分别在a为0,a大于0和a小于0时执行。KLEE将对所有三条路径进行探索,并且为每一条路径生成一个包含具体值而非符号值的测试用例。5.查看生成的测试用例信息每当命令klee执行一次(注:针对不同或相同的LLVM中间字节码执行),就会在当前目录下生成一个klee执行后的信息统计文件。并且有一个快捷方式klee-last,指向最新一次因klee执行而生成的目录klee-out-X。在klee-last指向的目录中的文件如图9所示:图9 klee-
显示全部
相似文档