[发明专利]一种Web服务测试用例自动生成方法有效
申请号: | 201410396502.0 | 申请日: | 2014-08-12 |
公开(公告)号: | CN104156313B | 公开(公告)日: | 2017-01-25 |
发明(设计)人: | 许蕾;周立波;陈林;李言辉;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京天翼专利代理有限责任公司32112 | 代理人: | 奚铭 |
地址: | 210023 江苏省南京市栖霞*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 web 服务 测试 自动 生成 方法 | ||
1.一种Web服务测试用例自动生成方法,其特征是基于文档解析及约束求解自动生成测试用例,包括Web服务文档解析、Web服务约束条件提取和Web服务测试用例自动化生成三部分:
1)Web服务文档解析过程,包括对WSDL文档和BPEL文档的解析,在对WSDL文档进行解析时,得到DOM树,遍历DOM树,得到WSDL文档中定义的所有变量的属性信息;在对BPEL文档进行解析时,得到DOM树,遍历DOM树的节点,分别得到BPEL文档中的变量的取值和属性信息以及活动节点的取值和属性信息;
2)根据BPEL文档中定义的命名空间对应关系,取得BPEL文档中的变量在对应的WSDL文档中的变量的属性信息,由WSDL文档的变量属性信息解析得到变量约束条件,所述变量约束条件包括变量的类型和取值范围;
3)根据解析BPEL文档得到业务执行流程信息,提取出业务执行流程中服务调用、变量赋值的关系,对业务执行流程进行化简,得到只包含活动类型、服务调用和变量赋值关系的业务执行流程中间文件,同时,根据业务执行流程开始和结束活动以及业务执行流程中调用其他服务时调用的变量名,即可得到该Web服务的输入、输出变量名;
4)利用静态单赋值形式对BPEL文档中的变量进行重命名,使得对每个变量的赋值操作最多进行一次;
5)利用模型检查方法,根据BPEL文档中不同的活动类型,将业务执行流程改写为使用语句if、assignment、assertions以及逻辑运算符表示,并使用规范化算法将改写后的业务执行流程中间文件规范化表示为条件范式;所述规范化算法如下:
P、P1、P2均为输入到算法中进行处理的程序片段
G、c均为if语句中条件判断语句,这里G=true
procedure NORMALISE(P,G)
if P是一个赋值语句或判断语句then
return if(G)P;
else if P=(if(c)P1;)then
return NORMALISE(P1,c&&G)
else if P=(if(c)P1;else P2)then
return NORMALISE(P1,c&&G);NORMALISE(P2,(!c)&&G);
else if P=(P1;P2)then
return NORMALISE(P1,G);NORMALISE(P2,G);
end if
end procedure
6)根据步骤2)-5)中提取的变量约束条件、条件范式以及Z3-str求解器对所输入文档的语法要求,生成符合Z3-str求解器输入文档格式要求的约束条件;
7)将步骤6)中生成的约束条件代入Z3-str求解器,得到可行解空间及变量取值,Z3-str求解器的输入文件是步骤6)得到的约束条件,输出内容为满足约束条件的可行解空间;如果对变量的所有取值,都不能满足约束条件,则输入“UNSAT”,表示约束条件无解;对于可行解空间,结合Web服务文档解析得到的Web服务输入、输出变量名,即可获得Web服务输入、输出变量的取值,即为测试用例中输入、输出变量的取值;根据输入和输出变量名及其取值,结合SOAP协议的定义,自动化生成SOAP消息表示的测试用例,即为Web服务的测试用例。
2.根据权利要求1所述的一种Web服务测试用例自动生成方法,其特征是步骤4)中,重命名的过程如下所述:设v为BPEL文档中变量,i为变量在BPEL文档中的位置,设α(v,i)为BPEL文档中i位置的v之前被赋值的次数,设e为BPEL文档,ρ(e)表示e中所有变量v被vα(v,i)替换后对应的BPEL文档形式,则对于一个赋值表达式:x=e,转变成SSA形式为:xα(x,i)+1=ρ(e),对于数组操作,若表达式为:a[e1]=e2,转变成SSA形式为:aα(x,i)+1[ρ(e1)]=ρ(e2)。
3.根据权利要求1所述的一种Web服务测试用例自动生成方法,其特征是步骤5)中,根据BPEL文档中不同的活动类型,对业务执行流程的改写规则为:
<receive>活动:直接使用赋值表达式将输入参数赋值给相应的变量;
<reply>活动:直接使用赋值表达式将输出变量的值赋值给输出参数;
<invoke>活动用于调用BPEL子节点<partnerLinks>中定义的其它Web服务,使用BPEL内置函数getVariableData()来获取调用Web服务后的参数值,并将得到的值赋值给相应的参数;
<assign>活动用于对BPEL活动调用的变量赋值,在获取赋值对象后,即可得到<assign>活动的赋值表达式;
<sequence>活动定义了BPEL中一个顺序执行的活动集合,活动集合的各个子活动之间是顺序执行的关系,直接使用规范化算法得到条件范式;
<if>活动:改写为两个活动之间的选择,然后使用规范化算法得到条件范式;
<while>活动:对于<while>活动,while(e){I}→if(e){I while(e){I}}成立,将<while>活动转变为等价的<if>语句进行表示,再行进规范化;
<repeatUntil>活动:对于一个<repeatUntil>活动,先将其等价转换为<while>活动,然后按照上述对<while>活动的处理方式进行规范化;
<pick>活动:<pick>活动通过逻辑表达式实现,对于<pick>活动中待选择的各个活动,使用规范化算法进行规范化;
<flow>活动:<flow>活动通过逻辑表达式实现,对于逻辑表达式中的各个活动,使用规范化算法将其规范化;
<scope>活动:将<scope>活动作为一个独立的BPEL进行解析,再根据解析后的活动进行规范化;
<forEach>活动:对于一个<forEach>活动,每次循环执行活动为{<NOT completionCondition>AND<scope>},循环之间顺序连接,执行N次,<forEach>活动对应的规范化表示为:{<NOT completionCondition>AND<scope>}{<NOT completionCondition>AND<scope>}…共循环N次;
通过上述改写处理后,得到的结果即为BPEL活动信息经过模型检查方法以及规范化算法处理后的条件范式,只包含逻辑运算符及if、assignment和assertions语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410396502.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据预取的方法以及装置
- 下一篇:一种应用程序测试方法及装置