符号执行技术在测试用例生成中的应用
2017-03-29曾嘉彦
现代计算机 2017年4期
关键词:程序
曾嘉彦
(四川大学计算机学院,成都 610225)
符号执行技术在测试用例生成中的应用
曾嘉彦
(四川大学计算机学院,成都 610225)
符号执行技术提出近四十年,随着计算机科学与技术的发展,在软件工程领域得到广泛的应用,成为一种流行的自动测试技术。对符号执行技术在测试用例生成中的应用展开综述,全方位地叙述符号执行技术的基本原理、面临的问题和挑战以及相应的改进策略、相关的典型案例,并介绍和比较现有的工具,对学术界和工业界提供相应的参考。
符号执行;Concolic测试;自动化测试;测试用例生成
1 符号执行技术基本原理
符号执行技术(Symbolic Execution)[1]由JC.King在1976年提出,将软件的测试问题转化为了符号表达式求解的数学问题。
很多家长担心孩子乱花钱,会“剥夺”孩子们掌控钱的机会。比如要买什么东西,统统向父母伸手要,孩子们得到了压岁钱,家长们也会说:“压岁钱由父母来帮你保管”,全数地将压岁钱收回去。这样做的弊端是,孩子们会因此养成要花钱就伸手,一有钱就赶快花光的习惯,而缺乏对消费的规划意识。
符号执行的核心思想是:采用抽象化符号代替程序中具体的输入,依次解析程序的语句和指令,在程序控制流图的基础上生成符号执行树,并为每一条路径建立一系列的以输入符号为变量的路径表达式,即路径条件。对路径表达式进行求解,得到符号变量的解的集合,即获得了对应程序路径的具体输入值。
使用具体的数值简化路径中的符号约束的方法被称为动态符号执行(Dynamic Symbolic Execution,DSE),也被称为Concolic测试(Concolic Testing)。……
登录APP查看全文
