本发明涉及软件测试,特别涉及一种符号执行系统的构建方法。
背景技术:
1、符号执行起初应用于基于源代码的安全检测中,它通过符号表达式来模拟程序的执行,将程序的输出表示成包含这些符号的逻辑或数学表达式,从而进行语义分析。当符号执行用于代码漏洞静态检测时,更多的是进行程序全局的分析且更侧重代码的安全性相关的检测。将符号执行与约束求解器结合使用来产生测试用例等应用。
2、现有技术的不足之处在于,目前符号执行存在多种测试变化,对于软件测试用例过程没有统一标准的符号执行系统。
技术实现思路
1、本发明的目的克服现有技术存在的不足,为实现以上目的,采用一种符号执行系统的构建方法,以解决上述背景技术中提出的问题。
2、一种符号执行系统的构建方法,具体步骤包括:
3、步骤s1、定义符号执行系统的符号集,所述符号集包括基本符号集、运算符号集,以及关键字集;
4、步骤s2、构建符号执行系统的路径语言的语法系统,以及建立源程序语句到路径语言的对应关系;
5、步骤s3、根据得到的符号执行系统的符号集和语法系统,建立符号翻译规则,得到最终的符号执行系统。
6、作为本发明的进一步的技术方案:所述步骤s1的具体步骤包括:
7、s11、将符号执行操作语义和中间语言使用过程中的非运算符号作为基本符号集,主要包括数字、字母、大写字母、小写字母、标识符、符号值、机器状态符号,以及其他符号;
8、s12、将符号执行操作语义和中间语言运算使用过程中的符号作为运算符号集,主要包括计算符、比较符、逻辑运算符,以及其他运算符号;
9、s13、将基本符号集中的符号定义符号执行操作语义和中间语言中有特别意义的标识符作为关键字。
10、作为本发明的进一步的技术方案:所述步骤s2的具体步骤包括:
11、通过定义路径语言程序program、语句statement与种类、用户定义函数标识语句enterstatement、条件分支标识语句truecond和falsecond、函数返回标识语句retstatement、函数定义形式参数列表语句paramlist、表达式expr、一元运算符◇u、二元运算符◇b,以及其描述,在符号集的基础上建立路径语言的语法系统。
12、作为本发明的进一步的技术方案:所述步骤s3的具体步骤包括:
13、根据路径语言中的每一条源程序语句在符号域下的计算,获取源程序语句执行前后程序状态如何变化情况;
14、再以操作语义形式定义符号翻译规则,建立程序变量、表达式的符号、程序语句,以及系统函数调用的符号翻译规则。
15、与现有技术相比,本发明存在以下技术效果:
16、采用上述的技术方案,通过设计符号执行系统构建方法构建一个符号执行系统,从而实现利用符号执行用于代码漏洞静态检测时,更多的进行程序全局的分析且更侧重代码的安全性相关的检测。解决现有符号执行存在多种测试变化,对于软件测试用例过程没有统一标准的符号执行系统的问题。
1.一种符号执行系统的构建方法,其特征在于,具体步骤包括:
2.根据权利要求1所述一种符号执行系统的构建方法,其特征在于,所述步骤s1的具体步骤包括:
3.根据权利要求1所述一种符号执行系统的构建方法,其特征在于,所述步骤s2的具体步骤包括:
4.根据权利要求1所述一种符号执行系统的构建方法,其特征在于,所述步骤s3的具体步骤包括: