SOAPUI接口测试使用手册.doc
- 文档编号:2120096
- 上传时间:2023-05-02
- 格式:DOC
- 页数:65
- 大小:1.71MB
SOAPUI接口测试使用手册.doc
《SOAPUI接口测试使用手册.doc》由会员分享,可在线阅读,更多相关《SOAPUI接口测试使用手册.doc(65页珍藏版)》请在冰点文库上搜索。
SoapUI接口测试使用手册
SoapUI接口测试使用手册
(V1.0)
1.SoapUI的介绍
SoapUI是专门针对Webservice接口的测试工具,功能强大且界面易用。
它是直接利用WebService的WSDL文件测试Web服务的接口,利用SOAPUI测试不需要了解底层的接口、调用关系及详细协议,也不需要使用编程来实现测试用例,而是基于WSDL自动产生测试消息。
SOAPUI还支持接口的负载测试。
在对同一WebService接口进行测试时,SOAPUI比Loadrunner表现的性能会更加优越、真实,更接近反映接口的性能指标。
并且SoapUI支持多种语言,java、c++,且wcf这种形式的接口也可支持。
2.SoapUI的安装
SoapUI基于JAVA开发,支持多个平台,需要设置JAVA_HOME变量指向到相应的JRE目录,同时修改PATH变量,将JRE1.6的bin目录添加到PATH里面。
3.SoapUI接口测试
3.1创建/导入工程
启动SoapUI程序,双击目录bin下的soapui.bat,即可启动程序。
程序第一次打开后,在左侧导航面板上,自动有一个空的Projects工程。
鼠标右键点击Projects,选择第一项“NewSoapUIProject”,新建一个工程。
(如果本地有现成的工程,也可直接选择第二项导入工程“ImportProject”,选择本地的xml文件导入即可)如下图
页面弹出“NewSoapUIProject”框,输入ProjectName,“InitialWSDL/WADL”可填入URL地址或直接导入WSDL文件,(在这一步骤中,也可不导入WSDL文件,等到工程创建好后,右键点击工程名,选择“AddWSDL”也可导入)
如下图所示:
默认选上:
CreateRequests:
Createsamplerequestsforalloperations?
(为每个接口创建一个请求)
CreateTestSuite:
CreatesaTestSuitefortheimportedWSDLorWADL(为WSDL或WADL创建一个测试包)
点击OK按钮,弹出创建测试包的对话框“GenerateTestSuite”:
用来进行接口的性能测试,如果有需要可以勾选
此处显示的都是WSDL文件中的所有方法,只须选择要测试的方法即可
说明:
SingleTestCasewithoneRequestforeachOperation(为每个接口的请求都创建一个测试用例)
Createnewemptyrequests(创建一个空的请求)
GeneratesadefaultLoadTestforeachcreatedTestCase(为每个创建好的测试用例生成一个默认的负载测试)
点击OK按钮,在弹出框中填入测试包的名称,点击确定按钮后,工程便创建成功。
测试步骤TestStep
测试用例TestCase
测试包TestSuite
工程名Project
请求Request
由此图可以看到,SoapUI提供的测试用例管理的映射关系是这样的:
项目Project
测试包TestSuite
测试用例TestCase
测试步骤TestStep
3.2执行测试
上面步骤我们已经为WSDL文件的每个操作创建了请求和测试用例
以LoginTestCase为例,展开测试包下的“LoginTestCase”,双击“TestSteps”下的“Login”。
双击login后,在SoapUI的右侧会出现请求编辑器:
响应区域
请求区域
端口地址
工具栏
请求编辑器分为三部分:
_顶部的工具栏,包含一组请求相关的动作、操作
_左边是请求区域
_右边是响应区域
报文中“?
”是需要被替换的内容,输入请求的参数,点击运行按钮(绿色图标),soapui会将我们填写后的soap报文发送给服务接口进行调用,返回的结果报文会显示在右侧区域。
见下图:
根据响应的结果报文可查看接口是否被正确调用。
3.3测试用例
双击
多个测试用例就组成一个测试包(TestSuite),
双击测试包,弹出下图:
点击运行按钮时,可将此测试包中的所有测试用例按顺序从上到下执行测试,可以随意更改测试用例的顺利,只需右键点击某测试用例,选择“moveTestUP”或“MoveTestDown”即可。
运行按钮
点击运行按钮,可将这四条测试用例一次执行完,显示为绿色表示四条用例全部执行成功,如果其中有一条用例执行失败,则显示为红色。
见下图:
执行结果
如果想单独执行某条测试用例,可双击测试用例名称,直接点击运行按钮即可。
比如单独测试login,双击LoginTestCase
双击
弹出下图:
直接点击运行按钮,即可将Login测试用例完成测试。
日志部分
3.4测试步骤
3.4.1添加测试步骤
一条测试用例中可以包含多个测试步骤,测试步骤是按顺序执行的,也可以调用其它的测试用例。
n添加测试步骤时,可有3种方法:
(1)右键点击测试用例名称,在弹出菜单中选择“AddStep”;
(2)右键点击测试步骤名称,在弹出菜单中选择“InsertStep”;(3)下图为双击测试用例名称打开的测试用例信息框,红色方框内为各种测试步骤,点击相应图标可以进行测试步骤的添加。
点击测试步骤,左下方会显示该步骤的相关属性,可以在此进行属性的编辑,右击测试步骤,会弹出一些相关操作。
n添加测试请求注意点:
点击上图红色圆圈即可添加一个请求,
上图红色方框要勾选上,代表将请求中的option操作步骤元素也添加进来,否则添加的请求不完整。
3.4.2修改测试步骤
点击某测试请求,右键选择ChangeOperation,见下图
RecreateRequest:
重新创建一个新的Request.
CreateOptional:
重新创建Request时也同时会创建optional.
KeepExisting:
重新创建Request时会保存之前填写的Value值。
3.4.2属性Properteis
n测试用例里都会有一些主要的测试步骤来验证接口的功能,可以组合一条测试用例的所有步骤,通过属性的设置和传递在这些测试步骤间共享数据。
测试步骤主要有:
Properties:
允许你定义任意数量的属性值,可以用来参数化请求等。
PropertyTransfer:
属性传递,允许你在测试步骤间传递属性值,它可以将各个测试步骤联系起来。
可以将一个Properties的步骤将属性传给一个TestRequest的步骤,也可以是将属性从一个请求的出参传递给另一个请求的入参。
允许你定义任意数量的属性值,可以用来参数化请求等
n下面就建立一个属性(Properties)的操作。
按照上面添加测试步骤的方法,添加一个Properties,也可点击下图中第3个按钮完成属性的添加。
添加Properties
输入好属性名后,会弹出下图,点击工具栏第一个按钮,添加属性名称Name
双击Value一列的框,可以添加属性值。
这样包含2个属性username和password的测试步骤就添加完成了。
另外,Value值也可以写成函数的形式,比如username的Value值可以写成函数:
${=((int)(Math.random()*100))}或${=newRandom().nextInt(100)}-----返回0—100之间的随机整数。
nSoapUI也可以导入txt和Properties文件,达到批量参数化的设置,但文件中不能有中文显示。
下面以txt文件举例说明:
Txt中的数据可以Name和Values以空格隔开,也可以写成Name=Value的形式,见以下两图:
将此txt文件的数据批量导入到SoapUIProperties中的方法为:
点击属性弹出框中Loadfrom后的浏览图标,选择txt文件,即可成功导入。
弹出“CreatemissingProperties?
”提示框,选择“是”,就可以将txt文件中的数据批量导入到Properties中,见下图:
n点击属性弹出框中Saveto后的图标,可以进行数据的保存,默认保存为Properties格式,也可以自定义保存的格式(包括xls格式)。
3.4.3属性传递
3.4.2.1PropertyTransfer
SoapUI为我们提供了两种属性传递的方法,一种是PropertyTransfer,另一种是PropertyExpansion。
下面先介绍第一种方法PropertyTransfer。
属性传递给请求参数
n添加一个PropertyTransfer(属性传递),先要双击某测试步骤,然后点击TestSteps的第四个按钮,添加PropertyTransfer,如下图。
添加PropertyTransfer
输入好属性传递名后,会弹出下图,点击下图左侧第一个按钮,可添加一个传递的属性。
点击此按钮添加Properytransfer
添加的传递属性会在左侧显示出来,如下图,添加了1个属性传递“moveuser”
Xpath表达式
Source表示来源是你使用了哪个测试步骤,Target表示目标是传递给哪个测试步骤,比如上图中moveuser表示将右边栏上半部分Source中返回的值传递给Target中指定的元素。
即将属性(Properties)为username的值传递给login中的请求:
Request,并且下面的方框中明确了传递的元素username。
通过以上步骤就完成了属性传递的添加。
上图中传递给Login请求的元素username的Xpath表达式写法如下:
要传递的目标是Login,双击Login测试步骤(或请求),打开login的请求报文,为如下代码:
Envelopexmlns: soapenv="http: //schemas.xmlsoap.org/soap/envelope/"xmlns: sam="http: //www.example.org/sample/"> 固定模式,不做改动 declarenamespacesam="http: //www.example.org/sample/"; //sam: login/username Header/> Body> login> 传递的元素为username login> Body> Envelope> n双击LoginTestCase,执行包含3个测试步骤的测试用例,点击运行按钮。 双击Login请求,可看到属性为username的值Login被自动传递到代码中。 请求参数传递给请求参数 同上面同样步骤,只是Xpath表达式不同。 比如我们要将A接口的请求参数QueryType传递给B接口的请求参数QueryValue。 Xpath表达式填写规则如下: A接口的请求代码: B接口的请求代码: 按照上面两幅图中的红色框中方式输入传递的参数属性: 点击上方绿色箭头,可查看参数是否被成功传递。 如下图: 响应结果传递给请求 同上面同样步骤,只是Xpath表达式不同。 比如我们要将A接口的响应参数Result传递给B接口的请求参数QueryValue。 Xpath表达式填写规则如下: A接口的响应代码: B接口的请求代码: 按照上面两幅图中的红色框中方式输入传递的参数属性: 点击上方绿色箭头,可查看参数是否被成功传递。 如下图: 3.4.2.2PropertyExpansion 属性传递给请求参数 双击某个测试请求。 1.在需要填入的请求参数(标有? )中点击鼠标右键,选择GetDataà选择测试步骤的某个属性值。 如下图,为 2.完成上面操作后, 当然也可以将某个步骤响应结果中的某个参数值或请求的参数值进行传递。 请求参数传递给请求参数 比如: 我们要将A接口中的Request参数 利用PropertyExpansion方法操作步骤如下: 1.在B接口的请求参数 )中点击鼠标右键,选择GetDataà[A]接口àProperty[Request],如下图: 2.然后会弹出“SelectXpath”框,需要在框中输入传递参数的相应Xpath表 达式。 Xpath表达式的输入规则同上面介绍的PropertyTransfer方法相同。 比如此例: 我们要将A接口中的Request参数 A接口的请求代码为: 我们要传递的是A接口的QueryType值,同上面介绍的PropertyTransfer方法相同只要将对应的XPath路径输入“SelectXpath”弹出框即可: //bus: CustAuthenticateRequest/QueryType,如下图: 3.点击确定按钮后,在B接口的请求参数 这样就成功地利用PropertyExpansion方法将A接口的请求参数传递给了B接口。 同样的原理,也可以将A接口的响应参数传递给B接口的请求参数。 响应结果传递给请求 利用上面的例子: 将A接口中的Response参数 利用PropertyExpansion方法操作步骤如下: 1.在B接口的请求参数 )中点击鼠标右键,选择GetDataà[A]接口àProperty[Response],如下图: 2.同样会弹出“SelectXpath”框,需要在框中输入传递参数的相应Xpath表 达式。 原理和上面介绍的方法相同: A接口的响应代码为: 我们要传递的是A接口的Result值0,同上面介绍的PropertyTransfer方法相同只要将对应的XPath路径输入“SelectXpath”弹出框即可: //ns1: CustAuthenticateResponse/Result,如下图: 3.点击确定按钮后,在B接口的请求参数 这样就成功地利用PropertyExpansion方法将A接口的响应参数传递给了B接口。 3.4.4串联测试 n测试步骤中也可以创建多个测试请求,来串联进行测试。 比如在测试步骤中添加2个请求,一个为login,一个为buy,通过点击下图第一个按钮,添加Request,如下图: 此处选择需要添加的请求 点击OK按钮后,添加请求buy成功。 为login请求添加一个断言,双击Login,点击工具栏第2个按钮添加Contains断言,填入内容 测试步骤中请求的顺序默认是按从上往下执行的,如果第一个测试请求执行失败,则不能进入第二个请求进行测试,我们将请求buy的顺序放在login后面,点击运行按钮。 可以看到login请求测试失败,就不能测试buy请求,只能Login测试成功后,才会执行buy请求的测试。 如果想要从测试步骤中某一步开始执行测试,也可以右击测试步骤,选择“Runfromhere”。 nSoapUI测试步骤中还可以添加其它测试用例中的请求,以此来实现接口串联的测试。 n串联测试的结果,可以在下方Log处查看每个接口的请求/响应情况,见下图: 双击某个步骤,比如双击Step2,就进入此接口的详细执行情况,请求/响应参数都会详细的显示出来,方便我们查看数据,见下图: 3.5断言 SoapUI工具还提供了“断言”的功能。 为了在测试中不用人为地去判断接口的响应结果是否正确,可由程序自动对返回结果进行判断。 因此需要加入断言Assertions,SoapUI提供了大量验证响应报文的断言,主要有: Contains: 检查指定的文本内容是否存在响应报文中。 NotContains: 与Contains断言相反,检查指定的文本内容是否不包含在响应报文中。 ResponseSLA: 检查响应时间是否在指定的时间内,需要填入时间数字,单位是毫秒。 Schemacompliance: 根据WSDL所定义内容验证响应报文和包含的XML模式。 SOAPResponse: 验证响应报文是一个有效的SOAP响应。 SOAPFault: 检查响应报文包含SOAP异常。 NotSOAPFault: 检查响应报文没有包含SOAP异常。 XpathMatch: 比较通过Xpath表达式提取的结果是否与预期值相符合。 3.5.1Contains 检查指定的文本内容是否存在响应报文中,下面就创建一个Contains断言。 创建一个断言,可以先打开测试用例中的请求编辑器,如下图,点击左上角的第2个按钮,可增加一个断言: (只有测试用例中的请求才能添加断言,一般的接口请求不能添加) 点击添加断言按钮后,会弹出“SelectAssertion”对话框,通过下拉框选择“Contains”的断言,点击确定按钮后会弹出如下对话框,在Content中填入表示返回的结果报文里应该包含的字段,比如上方Login操作根据接口协议,当返回 注意最后不能有回车和空格 点击“OK”,插入断言完毕,程序会在运行用例时,自动帮我们校验是否响应结果含有“ 断言显示为绿色,表示接口响应成功,点击此处 刚刚设置的断言Contains,双击可以进行查看或编辑 如果设置的断言显示为红色,则表示接口响应失败,见下图: 3.5.2XpathMatch 比较通过Xpath表达式提取的结果是否与预期值相符合。 以登录(Login)为例,它返回的响应结果是一个变化的 下面是Login的响应报文: 实际上,我们只需要验证loginResponse中的结果sessionId这个元素的值即可。 点击添加断言的按钮,选择XpathMatch类型的断言。 点击确定按钮后,打开一个空白XpathMatch配置框,见下图: 点击“Declare”按钮,自动显示出namespace地址,对照响应结果将Xpath表达式填写为: declarenamespacesam="http: //www.example.org/sample/"; declarenamespacesoapenv='http: //schemas.xmlsoap.org/soap/envelope/'; 此行可去掉 //sam: loginResponse 然后点击预期结果的“Selectfromcurrent”,它可以按照Xpath表达式的指定位置把最后一次响应报文中的值自动取出来 这样,在执行测试时,此断言就会将Xpath表达式指定位置的值与预期结果处的值进行匹配,如果值不匹配,断言就会失败。 这个例子中,由于每次取得的sessionid值都会发生变化,按照上面的设置,断言必定会失败,所以需要勾选“AllowWildcard”允许通配符的模式进行设置,并将sessionid改为*号显示。 这样就可以匹配任何元素,只要设置的Xpath路径正确即可。 3.6接口变化 3.6.1接口地址变化 测试过程中有可能我们使用的接口地址会发送变化,如果没有较好的接口地址管理方法,就需要人工一个一个去改变接口URL,效率很低。 针对接口地址会发生变化,soapui也为我们提供了解决方案,具体方法如下: 1.点击某项目名称,soapui左下方会显示出两个属性: CustomProperties和ProjectProperties。 点击CustomProperties,切换到Custom标签下。 新建一个Name为Endpoint(名字自定义)的属性,用来存放服务器的地址(最好在开始编写用例时,就设置好地址),该地址Value输入要连接的接口服务器URL,比如: http: //172.20.205.190: 8080/soap/services如下图: 2.双击项目接口名称,切换到“ServiceEndpoints”标签页,使用propertyExpansion方式配置端口属性,如下图: 配置地址方法: 比如: 上图crm_custInfo项目连接服务器的接口地址为: http: //172.20.205.190: 8080/soap/services/crm_custInfo 按照步骤1中我们定义好的Custom属性Endpoint: http: //172.20.205.190: 8080/soap/services,利用propertyExpansion方式将地址配置为: ${#Project#Endpoint}/crm_custInfo 3.地址配置好后,点击Assign,弹出AssignEndpoint框,选择AllRequest一项,表示此项目下的所有接口请求都配置${#Project#Endpoint}/crm_custInfo地址。 4.这样,当接口地址发生变化,可以在步骤1中的Custom属性Endpoint中修改Value值,此处修改后,该工程下的接口地址都会随之改变。 也可打开Request,通过“editcurrent”进行接口地址的编辑,只要编辑一个地址,其它所有接口的地址都会发生变化。 3.6.2参数(入参)变化 1.右键点击接口名称,选择“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOAPUI 接口 测试 使用手册
![提示](https://static.bingdoc.com/images/bang_tan.gif)