1. 大概思路
①首先导入wsdl文档,进行分析,生成wsdl树或者什么表现形式,得到要输入数据的类型以及约束,然后针对类型约束进行相应的测试数据的生成(生成原则如下图1)。
模型生成步骤:
为输入数据建立模型主要有以下几步:
第一步:以一个复杂数据类型的名字作为初始节点(根节点)。
第二步:如果根节点的某个子元素仍然是复杂数据类型,那么生成一个该子复杂类型的节点,另外一条以该子复杂类型名为名字的一条边,用以指向该子复杂类型的节点。
第三步:如果根节点的某个子元素是一个基本类型(一种简单数据类型),那么生成一个该基本类型的节点,另外生成一条以该元素的元素名为名字的边,用以指向该基本类型的节点。
第四步:如果根节点的某个子元素是一个派生类型(一种简单数据类型),此时需生成4个组建包括两个节点和两条边,两个节点为一个该派生类型的基类型的节点和一个包含约束值的约束节点,两条边为一条以该派生类型名为名字的边,该边从根节点出发指向派生类型的基类型的节点,另一条边为一条以约束名称为名字的边,它从自定义类型基类型的节点出发指向约束节点。
第五步:为Input元素中的每一个子复杂数据元素通过重复第一步到第四步过程建立类型模型,最后得到Input元素的数据类型模型,即为WSDL数据类型模型,可以用于后续的测试数据生成。
在所生成的数据类型模型中,如果一个节点不再有指向其他节点的边时,该节点通常表示一个基本类型或者某个简单数据类型的约束。
②简单数据类型测试数据生成:
先提取加诸于简单数据类型上的约束,按照黑盒测试方法(等价类划分、边界值分析、错误分析法)生成。
③复杂数据类型就是简单数据类型+复杂元素数据结构关系(sequence、all、choice)。
sequence:所有子元素按照顺序出现且仅出现一次。按顺序笛卡尔积
all:所有子元素可出现可不出现,顺序任意。随机序列
choice:所有子元## 标题 ##素只出现其中一个。 随机选一个子元素
2. ## 框架
① GUI模块,有html+jquery实现,负责wsdl文件上传,及展示wsdl解析后的数据约束,并能够让测试员根绝 自身需要修改编辑约束。
②wsdl建模模块:使用wsdl4j对wsdl文件进行解析,形成对constraint、simpleType、complexType、type类的数据结构。
③测试数据生成模块:JAXB技术是可以根据XML Schema生成java类的技术。
④约束变异模块:
⑤数据筛选模块: