SOAPUI的使用之前了介绍第一种测试,这里介绍第二种测试。
就是对API编写是否正确严谨的验证,这里主要的流程是:
第一步,加入对应比较的resouce源,即响应response的URL。
第二步,比较相应的XML和对应数据库服务器的数据。
比较方法有两种:
第一种方法是将对应的数据库数据利用JAVA程序组成acutual的XML数据与相应的Response XML进行比较。可以使用相应的GROOVY的脚本进行XML的重组。
import groovy.sql.Sql
import groovy.xml.MarkupBuilder
def writer = new StringWriter();
def xml = new groovy.xml.MarkupBuilder(writer)
Sql sql = Sql.newInstance("jdbc:oracle:thin:XXXX","XXXX", "XXXX", "oracle.jdbc.driver.OracleDriver")
然后使用Diff进行比较:
def xmlDiff = new Diff(expectedResult,acutualResult)
def s = xmlDiff.toString();
第二种方法是用SOAPUI自带的groovy utils类进行XPATH的操作,以下有个简单的实例,您可以扩展:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder("XXXXX#Response" )
def parameter = holder.getNodeValue('YYYYY')
XXXXX:您对应的SOAP或者REST的test case步骤。
YYYYY:对应的Response的XPATH定位。
摘取相应的数据和数据库比较。
第一种方法比较全面但扩展性较差,第二种方法的扩展性不错,而且易于修改,但是其可能会遗漏一些边缘的BUG。
第三步,我们这里一样需要使用testrunner.bat -s XXXXX,XXXXX对应您相应的TestSuite名称,如果有多个suite,您可以使用组合命令自动化。
这样您就完成了第二步的对API编写是否正确严谨的验证测试。
这里并没有结束,这里需要您进行第四步测试,在对应的GUI测试中功能测试中出现的BUG需要在API中进行验证,防止API的严谨性差。与之前提到的例子主要集中在Negative和Boundary的test case验证,保证webservice API的正确及安全性。
附加:这里您也能对API的POST数据进行简单的SQL injection测试,大部分的API由于使用的工具或者简单代码编写致使出现类似的安全漏洞。