REST性能测试方案

1、REST简介

      REST(代表性状态传输,Representational State Transfer)是一种Web服务设计模型。REST定义了一组体系架构原则,可以根据这些原则设计以系统资源为中心的Web服务,包括使用不同语言编写的客户端如何通过HTTP处理和传输资源状态。 是基于SOAP和WSDL的Web服务的更为简单的替代方法。采用了相对更易于使用、面向资源的模型来公开其服务。 在REST样式的Web服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。这些方法都是标准方法,包括 HTTP GET、POST、PUT、DELETE,还可能包括HEADER和OPTIONS。
      基于REST的Web服务应该遵循的四个基本设计原则:

  1)显式地使用HTTP方法

  2)无状态

  3)公开目录结构式的URI

  4)传输XML、JavaScript Object Notation (JSON)或同时传输这两者

 


2、REST性能测试工具

      LR对基于SOAP协议的webservice已经有了较好的支持,但是对于REST风格的webservice目前还没有提供直接支持,可以利用LR中自定义http协议来模拟REST请求以实现对REST的支持。

  用于测试webservice的soapUI工具也支持对REST服务的测试,不过soapUI工具最大的不足是没有脚本的支持,对于一些特殊情况下可能存在问题,比如某些参数值依赖其他的服务的结果而需要关联时。

  开源性能测试工具Jemter 2.10版本中没有直接提供REST取样器,是否可以使用HTTP或XML-RPC取样器来实现REST的性能测试,以及是否存在对REST提供支持的扩展插件还有待学习验证。

  另外有一款小巧的专门针对REST的测试工具restclient可以对REST进行功能测试,可以做一些性能测试前的功能验证等测试工作,restclient提供了非常丰富的Content-type类型(上百种),如下图所示。

image                     image


3、使用soapUI测试REST服务

3.1  在soapUI中新建项目

      soapUI把REST服务、资源和操作组织成了一个层次结构,如下图所示:

     image

      项目定义:位于最上层,项目可以包含多个服务定义;
      服务定义:服务其实是对多个REST资源的分组,如上例的BookStoreService服务;
      资源定义:具体描述该资源的名称、URI、参数等属性;
      方法定义:针对每个资源的方法,包括GET、POST、PUT、DELETE等类型的方法;
      操作定义:每个方法可以建立一个或多个请求,比如XML格式或JSON格式的请求,这些请求才是真正被soapUI所调用执行的。每个请求可以设置丰富的消息,例如自定义请求头等。运行了该请求后,就能以各种方式查看运行结果了。

以下展示具体在soapUI中新建项目的操作步骤:
① 打开soapUI,创建工程;

    image

② 弹出创建工程窗口,输入新建项目的名称并勾选创建REST服务对话框,点击OK按钮;

    image

③ 弹出创建REST服务窗口,输入接口的域名地址,勾选创建REST资源对话框,点击OK按钮;

    image

④ 弹出New REST Resource窗口,输入名称和resource URL,点击OK按钮;

    image
 
    ⑤ 弹出 New REST Method窗口,输入方法名称,选择请求方法,点击OK按钮;

   image
 

⑥ 双击请求,在如下窗口中可以队请求进行设置,Accept设置接受的媒体类型,左下方可以设置请求的属性和参数,右下方设置认证、自定义头、附件等信息。

    image

     新建完成一个项目后点击右上方的三角按钮即可执行了,在界面展示了执行消息和结果。对于测试来说需要对运行结果进行验证,在soapUI中需要建立测试用例(Testcase)并加入断言来进行验证结果。

3.2  在soapUI中新建测试用例

    在soapUI中测试用例同样是一个层次结构,如下图所示:

  image

      TestSuite:测试套,也即是测试用例集,其中可以加入多个TestCase
      TestCase:测试用例,可以包含多个测试步骤
      TestStep:测试步骤,有多种类型,如REST请求、Groovy脚本等,TestStep还支持分支调转操作,根据特定的条件从一个step调转到其他step,而改变执行顺序。
在soapUI中新建测试用例的方式有两种,一种是自动创建,直接在操作名称上右键点击新建测试用例,输入相关信息来完成测试用例创建,如下图所示:

  image

另一种是手动创建,在项目名称上右键点击新建测试套,在弹出的窗口中输入相关信息来完成测试用例的创建,如下图所示:

  image

无论采用哪种方式创建测试用例,最终的测试用例如下图所示,与方法的操作界面类似,左下方可以设置和自定义属性,右下方可以设置认证、自定义头等信息。

  image

3.2.1 验证结果

     测试用例新建完后需要增加断言(Assertions)来验证结果,也就是相当于LR中的检查点。soapUI支持如下图所示的多种断言来对response进行判断。可以使用XPath Match和Script Assertions类型的断言对xml或json格式的response进行判断。要添加断言点击上图所示的Assertions按钮。

   image

完成以上测试用例和断言的创建后,点击三角按钮就可以运行测试用例了,可以在测试套、测试用例等不同层级上执行。

  image

3.2.2 性能测试

     性能测试在soapUI中称为Load Test,正对一个TestCase可以建立一个或多个Load Test,这些Load Test会自动把TestCase中的所有步骤添加到其中,在运行的时候,soapUI使用多线程来运行这些TestStep,同时监控它们的运行时间等指标。只需在Load Test上右键点击New LoadTest,输入名称即可创建一个性能测试,如下图所示,可以设置运行线程数、并发策略、迭代时间等,主界面实时显示运行时响应时间、TPS、错误数等监控数据,点击右上角的图像按钮可以显示监控图形。

   image

 

 参考资料

   使用soapUI测试rest服务:http://www.ibm.com/developerworks/cn/opensource/os-cn-soapui/
   最佳实践:更好的设计你的REST API:http://www.ibm.com/developerworks/cn/web/1103_chenyan_restapi/
   基于REST的web服务基础:http://www.ibm.com/developerworks/cn/webservices/ws-restful/

 

转载于:https://www.cnblogs.com/yezhaohui/p/3463452.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值