[发明专利]一种Web服务测试用例自动生成方法有效
申请号: | 201410396502.0 | 申请日: | 2014-08-12 |
公开(公告)号: | CN104156313B | 公开(公告)日: | 2017-01-25 |
发明(设计)人: | 许蕾;周立波;陈林;李言辉;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京天翼专利代理有限责任公司32112 | 代理人: | 奚铭 |
地址: | 210023 江苏省南京市栖霞*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 web 服务 测试 自动 生成 方法 | ||
技术领域
本发明属于软件工程分析测试技术领域,使用文档解析及约束求解方法,用于自动化生成Web服务测试用例,为一种新的Web服务测试用例自动生成方法。
背景技术
网络技术的高速发展使得面向服务的体系结构(SOA)得到了学术界以及工业界的广泛认可。SOA是构造分布式计算应用程序的方法,它将应用程序功能作为服务发送给最终用户或者其他服务,从而实现分布式应用的低成本快速开发。Web服务通过使用开放的XML标准描述、发布、发现、协调和配置应用程序,建立一个可互操作的分布式应用程序平台,使得不同开发语言、部署平台等系统之间能够进行交互、组合,形成一个功能丰富的服务流程,以满足用户的需求。
为了保证Web服务的正确性和可靠性,需要测试人员设计测试用例对Web服务进行测试,从而保障软件质量。Web服务提供商通常对外只提供了服务接口的描述性文档,如Web服务器描述语言(WSDL)文档、业务流程执行语言(BPEL)文档等,测试人员无法获取各个Web服务的源代码,因此只能结合描述文档对Web服务进行黑盒测试。当前对Web服务进行测试的方法主要有:扩展WSDL文档,通过增加WSDL中变量的属性信息以增加运行时约束信息,但由于此种方法只对变量属性信息以及接口操作进行分析,并基于此产生相应的测试用例,在对Web服务组合进行测试时,未能结合程序执行流程中的种种约束条件,造成测试用例的冗余度较高,且覆盖率低;利用语义网挖掘Web服务中的语义信息,从而指导生成测试用例,但由于语义网尚未普及,在实际应用中收效甚微。
当前存在的Web服务测试工具有SoapUI、Selenium等。SoapUI基于对WSDL解析,并结合用户输入,生成测试用例,需要人工干预;Selenium使用用户操作行为的录制回放生成测试用例,缺乏灵活性。另外,这些测试工具无法保证测试的充分性,且生成的测试用例冗余度较高、测试效率低。
WSDL、BPEL等文档中通常包含大量Web服务中的约束条件,而这些约束条件当前主要用于服务匹配等方面,没有被充分应用于Web服务测试中。
发明内容
本发明要解决的问题是:1)如何对Web服务提供的文档进行解析;2)如何处理BPEL中定义的多种活动类型,并自动生成包含变量及业务执行流程等信息的约束条件;
3)如何利用Z3-str求解器自动生成测试用例。
本发明的技术方案为:一种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);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410396502.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据预取的方法以及装置
- 下一篇:一种应用程序测试方法及装置