jmeter怎么做接口测试、概念及常用方法小结

1.接口的概念从IT的角度出发,主要是子模块或者子系统间交互并相互作用的部分。从形式上来看各种应用程序的API(最著名的 Windows 系统的API),硬件的驱动程序,数据库系统的访问接口,再到后来的Webservice接口,http rest接口。虽然接口的形式各有不同,但是从 测试角度来说,需要测试的内容大致是相同的,功能,性能,安全。
  我们常说的api就是接口的意思,现在常用的 web项目,app项目的接口都是基于http请求的,有些系统内部之间调用的接口一般不需要我们测试,这些很多是基于jar包那种类型的接口,只了解到这就差不多了。
  接口类型常见的有get,post,put...类型。get类型的接口一般是指获取信息的接口,比如列表查询的功能,点击查询按钮就调用一个get接口,然后把信息返回出来。就是指把内容从服务器拉下来。
  post类型一般是提交表单的功能,比如注册、上传、发布帖子之类的就是post接口。就是指把内容推到服务器上去。
   接口测试的策略:接口测试属于 功能测试,也可以看做是需要了解部分代码的灰盒测试。测试流程是:1测试接口文档。2.根据接口文档编写 测试用例(用例编写方法完全可以按照 黑盒测试的用例编写规则来编写,如:边界值、正交表等等设计方法)。3.执行测试,查看接口返回的接口数据是否正确,主要检查返回的接口是否和接口文档中定义的一样,还有要检查返回的数据是否和 数据库中的保持一致。
   eg1.https://api.douban.com/v2/book/search?q='', 这是一个豆瓣的查询书籍信息的开放的api,是一个get型接口。q='',单引号里就是查询的参数,这里给参数为《百年孤独》,然后在 浏览器中访问下面地址:https://api.douban.com/v2/book/search?q='百年孤独', 返回的就是接口信息。返回信息如下:
jmeter怎么做接口测试、概念及常用方法小结_第1张图片
内容很多,是一个json字符串。可以把所有东西复制下来,用在线解析的站点:json.cn这个网站中解析出来就很好看了。如图:
jmeter怎么做接口测试、概念及常用方法小结_第2张图片
右边就是解析出来的格式,就是一个json字符串中嵌套了一个名叫books的数组。我们测试的时候就是根据接口文档,查看返回的这些数据是否是我们预期,判断这些数据是否是预期一般还需要了解项目的数据库,然后根据条件查询数据库,看接口返回的数据和数据库中查出来的是否一致。
   eg2.get型的接口可以直接通过浏览器访问,参数就带在地址的后面以‘?’连接。但是post的就不行了,要用专门的工具来测试,常用的推荐jmeter和soapUI。
jmeter怎么做接口测试、概念及常用方法小结_第3张图片





首先查看接口文档:
  根据接口文档可知,该接口实现一个更新用户昵称的功能,由此可以开始设计测试用例。userId和ickName均不为空,测试输入类型,测试更新成功后再数据库中是否同步更新。jemter中操作如下图:
jmeter怎么做接口测试、概念及常用方法小结_第4张图片


  图一
   jmeter怎么做接口测试、概念及常用方法小结_第5张图片
图二
  第一张图片的设置content-type为application/json是因为接口文档中要求如此。如果没要求,可以不用添加HTTP信息头管理器。因为要求的是json格式的传参,所以post的参数要在(图二)body Data中以json格式书写。
  eg3复杂格式的post接口:实际项目中,经常会遇到上传文件,发布图片等接口,测这种接口时上传的参数往往是一个文件或者图片,所以在jmeter中传参就要用另一种方式。如下图所示:
  jmeter怎么做接口测试、概念及常用方法小结_第6张图片

jmeter怎么做接口测试、概念及常用方法小结_第7张图片
图三
  由图三的接口文档查看需要请求的参数,在定义接口文档时开发人员会给出该接口的请求格式是什么,即content-type。此处为content-type:multipart/form-data。 这种格式的不用在HTTP信息头中单独定义content-type。直接把参数放在Parameters中,要上传的参数放在下面“通请求一起发送文件”里面浏览上传符合格式要求的文件。
   eg3.还有一些需要特殊处理得接口,比如一个增加积分的接口,由于业务需要,每次请求都要生成不同的签名作为请求参数。这种接口可以用beanshell来处理生成签名的逻辑,将生成的签名定义成一个变量,然后在http请求中调用这个变量,如下图,具体实现在《参数不断变化的接口做性能测试》一文会提到。

之前 工作中测性能时遇到一个接口,其参数之一是需要每次生成一个不重复的签名,最后是用jmeter+java实现的, 记录一下:
  前提:接口类型是post,实现功能是增加积分。由于功能的特殊性,肯定不能随意增加积分,所以后台制定了一套规则,每次增加积分都会要求生成一个不重复唯一的签名。在测这个功能的性能时就需要模仿大量不同的用户集中去增加积分,于是需要构造非常多的不重复的签名去发起请求。
  实现:利用后台提供的生成签名的jar包和算法,用 java代码实现生成签名,返回到一个变量中。所用到的jar包要放在jmeter的安装目录的/lib/ext中
   jmeter怎么做接口测试、概念及常用方法小结_第8张图片
图一
  jmeter怎么做接口测试、概念及常用方法小结_第9张图片 
图二
  jmeter怎么做接口测试、概念及常用方法小结_第10张图片 
图三
  如图3,在增加积分的这个http请求下添加前置处理器---》beanshellProprocessor。beanshell中写入java代码,将返回的字符串定义到变量json中,vars.put("json",jsonStr)。另外在beanshell中勾选中reset interpreter,表示在每次请求前重新运行beanshell中的代码; 在图一中定义好json变量,方便后面http请求中去找这个变量。图二中body data中引用这个变量就行了${json}。
  接下来就是常规的设计 测试场景,开始 性能测试




你可能感兴趣的:(性能测试)