简介
最近在使用KLEE工具进行软件缺陷检测时发现网上对于KLEE的介绍和使用的帖子很少,因此写此帖对KLEE的安装和使用方法做简单介绍,具体使用方法可以浏览官网http://klee.github.io/
阅读本文你可以了解到:
-
什么是KLEE
-
如何安装KLEE
-
如何使用KLEE
什么是KLEE
KLEE是一款开源的自动软件测试工具,基于LLVM编译底层基础,能够自动生成测试样例检测软件缺陷。
与junit不同的地方在于,KLEE能对c程序生成字节码.bc文件,并自动生成各类缺陷,不需要再自己编写。因而使用KLEE进行软件测试是比较轻松的方式。
如何安装KLEE
OS X:
因为帖主的系统环境是macOS 10.13.5,因而首先介绍macOS系统,mac上的安装十分简单,可以通过官方英文文档查看安装步骤,也可以遵循如下步骤:
-
在安装KLEE之前,需要先安装一个名叫Docker的软件,Docker能创建与系统其他部分隔绝的容器,可以理解为一个简单的虚拟机。利用Docker可以为KLEE开辟容器空间,在容器内可以进行自己所需的软件测试工作。
Docker安装官方文档:https://docs.docker.com/docker-for-mac/
下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac 下载前需要登录。
下载之后拖动图标安装,与其他mac程序安装一样,不再做介绍。
可以不使用Docker而直接从git上下载KLEE,请看文档。
-
利用Docker安装KLEE
$ docker pull klee/klee
安装完成,就这么简单。
Ubuntu:
安装与上述类似,但是要注意内核版本问题,如果无法安装则重启按住shift键选择较早版本的系统启动。
如何使用KLEE
首先介绍创建基本画像的方法,然后介绍官方给出的一个指导教程,最后给出程序测试实例。
创建基本画像
所谓画像就是创建一个库,可以将Docker理解为一个可以运送各种物品的大货船,装有不同的物品的货箱用不同颜色标明,KLEE是其中一种物品,假设它是装食物的、蓝色的箱子,每创建一个库,就相当于货船上增加了一个蓝色的箱子。
-
创建临时画像。
$ docker run --rm -ti --ulimit='stack=-1:-1' klee/klee
输入后进入临时画像,可以继续使用shell命令。
可以看出KLEE创建了一个叫3d开头的临时画像,画像提供了clang和LLVM工具,分别做编译c文件和将c文件转换字节码文件的工作,每个新建的画像中都有klee_build 和 klee_src两个文件夹,klee_src包含了构建KLEE的源码,klee_build是klee_src构建的工程。
我们能在klee_src中发现examples文件夹,其中包含了四个初始文件夹,分别是get_sign,islower,regexp,sort,每个文件夹里面包含一个同名c文件,是官方给出的测试代码例子,在指导教程中将会用到。
输入如下exit退出临时画像,画像自动删除。
klee@3d9471c49d85:~$ exit
-
创建永久画像。
$ docker run -ti --name=my_first_klee_container --ulimit='stack=-1:-1' klee/klee
创建了一个叫my_first_klee_container的永久画像,exit退出后可以
$ docker start -ai my_first_klee_container
回到画像。
如果要删除画像,输入:
$ docker rm