【技术实现步骤摘要】
本专利技术涉及基于R演算的软件测试机械化的前期技术中,一种把C语言核心语句 转换到一阶公式的方法。
技术介绍
软件测试是软件开发不可缺少的重要环节,只有经过严格测试的软件才能被使 用。学术界和产业界研制了大量测试工具,包括对规格说明的测试、对代码的黑盒、白盒测 试等等。但到目前为止,测试样例的设计和对软件错误的定位和修改,仍需大量人力投入, 测试质量仍与测试人员的经验紧密相关,软件测试仍被视为一门“工艺”技术。为了提高软 件测试的效率,尤其是提高软件错误定位的准确性和效率,在国内外开展了大量的研究工 作。主要有程序语义理论、软件需求工程技术、基于模型检查的软件测试技术和工具、程序 切片技术以及R演算系统理论。R演算系统由李未院士于1994年在LNCS发表的论文中首次提出。其提出在软件 需求说明层次,即在一阶语言中,建立错误定位和需求说明修正的形式演算系统。之后,围 绕软件测试过程的形式化、测试样例的设计、软件错误的定位和修正的机械化等问题,展开 了深入的研究。对R演算系统进行了实质性改进,取得了原创性理论成果。理论上证明了 软件测试机械化的可能。R演算系统是一个关于一阶语言的形式演算系统,它所处理的都是一阶语言中由 逻辑连接词符号和量词符号组成的公式。所以要构建基于R演算的软件测试机械化系统, 首先必须将我们所针对的目标形式语言的语句转换为R演算所能处理的一阶语言的公式。 事情需要从最基本的做起,所以研究一种C语言核心语句转换到一阶公式的方法,对于软 件测试的机械化,有着重要的意义。
技术实现思路
本专利技术要解决的技术问题填补了现有技术的空白,提供一种C语 ...
【技术保护点】
一种C语言核心语句转换到一阶公式的方法,其特征在于步骤如下:(1)输入C语言程序,该程序仅由C语言核心语句构成,即只涉及赋值语句、条件语句、while语句和过程调用语句,各语句之间的连接使用顺序语句,同时判断条件只是单个条件,并且只跟零作比较;此外程序中的变元和常元都是定义在自然数集合上,并且涉及的运算只包括加、减和乘;使用现有的编译技术统计程序中使用的不同变元的个数k,给这些变元按字典排序法排序,记为v={v↓[1],…,v↓[k]},所述v={v↓[1],…,v↓[k]}为按字典排序法排序的程序中所使用的不同变元的有序集合;(2)全局变量count用来标记当前已经使用过的有序状态变元集合的个数,初始值为0;全局变量while_count用来标记当前已经处理过的while语句个数,初始值为0;变量CurFormula用来存储当前的一阶公式,初始值为空;变量NewFormula用来存储返回的新公式,初始值为空;(3)输入程序的第一条语句;(4)判断当前输入的语句的类型,根据判断结果调用相应的转换模块,包括赋值语句转换模块,条件语句转换模块,while语句转换模块,过程调用语句转换模块, ...
【技术特征摘要】
一种C语言核心语句转换到一阶公式的方法,其特征在于步骤如下(1)输入C语言程序,该程序仅由C语言核心语句构成,即只涉及赋值语句、条件语句、while语句和过程调用语句,各语句之间的连接使用顺序语句,同时判断条件只是单个条件,并且只跟零作比较;此外程序中的变元和常元都是定义在自然数集合上,并且涉及的运算只包括加、减和乘;使用现有的编译技术统计程序中使用的不同变元的个数k,给这些变元按字典排序法排序,记为v={v1,…,vk},所述v={v1,…,vk}为按字典排序法排序的程序中所使用的不同变元的有序集合;(2)全局变量count用来标记当前已经使用过的有序状态变元集合的个数,初始值为0;全局变量while_count用来标记当前已经处理过的while语句个数,初始值为0;变量CurFormula用来存储当前的一阶公式,初始值为空;变量NewFormula用来存储返回的新公式,初始值为空;(3)输入程序的第一条语句;(4)判断当前输入的语句的类型,根据判断结果调用相应的转换模块,包括赋值语句转换模块,条件语句转换模块,while语句转换模块,过程调用语句转换模块,各模块根据相应语句的语义解释进行转换,并返回生成的新公式NewFormula;(5)处理完当前输入的语句后,使用顺序语句规则,把当前返回的新公式NewFormula与当前的一阶公式CurFormula合并,结果存储在CurFormula中。判断程序是否结束,若没有,则输入程序的下一条语句,然后转到步骤(4),否则,返回当前的CurFormula。2.根据权利要求1的C语言核心语句转换到一阶公式的方法,其特征在于,步骤(2)中 的全局变量count将作为生成有序状态变元集合的函数GenSymbol ()的参数,以确保生成 的有序状态变元集合跟之前产生的有序状态变元集合都不同,以保证生成的公式中使用的 变元不会混淆;所述有序状态变元集合的不同指相应位置上的元素均不同。3.根据权利要求1的C语言核心语句转换到一阶公式的方法,其特征在于,所述的步骤 (2)中的全局变量while_COimt将作为生成有序变量集合的函数GenVarO的参数,以确保 生成的有序变量集合跟之前产生的有序变量集合都不同,以保证对于不同的while语句, 其对应的矩阵数m,循环次数1,中间存储状态标记j均不同。4.根据权利要求1的C语言核心语句转换到一阶公式的方法,其特征在于,所述的步骤 (4)进一步包括A.转换赋值语句的模块Assign^ ‘,x)Al. X作为赋值语句对应的一阶公式的初始有序状态变元集合;A2.对count的值加1,用来生成新的有序状态变元集合;A3.调用函数GenSymbol (count),产生赋值语句对应的一阶公式的终止有序状态变元 集合r’ = {Vi_,…A4.根据赋值语句的语义,如果赋值语句是Vi = e,那么对应于赋值语句的公式如下, 其中(v丄,=v;0',即此时的状态变元集合相应位置上的变元 ((n), ^(vO^A-AC^X. ^(V.O^A^),A((vw另外,表达式e在一阶语言中的表示(e)T归纳定义如下,其中S是后继函数,Sm0表示 0的m次后继. B.转...
【专利技术属性】
技术研发人员:李未,罗杰,李贺,刘祥龙,余韡,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。