我已经在目前的职位上工作了一年多,而且我一直在寻找提高效率或尽可能自动化软件测试流程的方法。手头的问题是,我称之为分析阶段需要永远,我必须认为有一种方法可以更好地实现这一目标,甚至是自动化。
这就是我所拥有的:我们收到我们开发的WSDL / Schema文件。这些通常在基于写入的服务和基于读取的服务之间分开。分析基本上是构建我们最初的SoapUI NG Pro测试项目,并验证Write XML元素定义与Read定义这些元素之间没有模式缺陷。
例如,我遇到的一件事是基于写入的元素可能必须符合与正则表达式匹配的字符串“[A-Z0-9] {1,32}”,但读取服务可能将此元素定义为具有“[A-Z0-9] {2,10}”的正则表达式。这就是我所说的模式缺陷,因为Create服务中可以使用的内容与Read服务可以返回的内容之间存在不一致。
通常,我们一次一行地查看“创建”请求,并记下每个元素及其约束。我们保留一个列表,然后构建一个groovy脚本来生成要使用的样本/测试数据。我们在SoapUI中使用Virts来检查约束并确保一切都匹配。
到目前为止,这种方法一直很棒。问题是当我们有一个长达30,000行的Create请求时。以我们的传统方式对此进行分析是多长时间的天文数字。
我正在寻求帮助的方法是编写脚本和/或应用程序来解析Create方法的XML请求,并输出每个元素及其约束的列表。我在这里和我的google-fu看起来很高低,但还没找到任何适合我需要的东西。
有没有人有任何想法?
为了解释一下,假设我为Write服务设置了WSDL / XSD,我有一个添加请求。请求中的每个元素\子元素\ etc都将具有对其约束的某些定义。对于请求中的所有元素来自XSD的列表,本质上没有简单的方法。我正在寻找有关自动化方法的步骤/指导。
更多信息:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<writeID>
<key>00000000000000000000000000000000</key>
<date>20160101T00:00:00Z</date>
<firstName>TEST</firstName>
<qty>10</qty>
<enabled>true</enabled>
<status>PENDING</status>
</writeID>
</soap:Body>
</soap:Envelope>
有一个示例写入Soap请求,它使用KEY作为标识符将提供的数据写入数据库。每个元素都会对数据必须匹配的内容有一定的限制。带有正则表达式,日期时间,枚举列表等的字符串
Read版本将基于不同的元素进行查询,但可能会为某些字段提供不同的约束。我看到的常见模式缺陷是写服务可能将firstName定义为必须匹配此正则表达式“[A-Z0-9] {1,10}”的字符串,但读取服务可能要求在其响应中firstName必须是“[A-Z0-9] {2,10}”这会引入架构无效数据。如果返回该数据,那么可写入的内容(一个字符的firstName元素是完全可接受的)将失败模式合规性,因为最小长度为2。
因此,我所做的部分工作是逐行完成写请求并找出数据约束。我编写了一个groovy脚本来生成这些数据。对于像这样的小型请求,你要说几分钟。不错。我的一些服务是30,000个元素。这很快就会变得很麻烦。
我正在寻找能够快速解析方法定义以输出类似内容的东西:
键:字符串,[A-Z0-9] {1,32}
日期:日期时间
firstName:String,[A-Z0-9] {1,10}
数量:整数,最小值1,最大值999
启用:布尔值
状态:字符串,枚举列表[“PENDING”,“NEW”,“DISABLED”]
其中每个都是在XSD文件中定义/约束元素的方式。