jmeter进行的接口测试和压力测试

1.接口测试

接口测试的内容我们之前已经讲过,values-key形式和json串传参形式;

包括的协议有http,webservice(soap),jdbc数据库,java请求

2.参数化

  定义:把固定的一个值,变成动态、可变的数组,把数组的值进行值传递。数组大小可控制。

  1)使用函数助手的_random函数进行参数化设置;

  2)使用配置原件CSV Data Set Config进行参数设置;

   策略:

   Sharing mode:参数化取值策略

   All threads                                唯一+每次迭代

   Current thread group                  基于每个线程组下的唯一+迭代取值(不同线程组是顺序取值,一个线程组是唯一取值)

   Current thread                            顺序+每次迭代   如果多线程之间值是重复的,那么就是顺序,每个线程之间没有重复,就是唯一

3.为什么参数化

  1)数据库校验字段值的唯一性。(数据库修改字段的唯一性,可避免参数化)

  2)应用程序不允许用一个值反复操作。(开发调整不允许一个值反复操作,可避免参数化)

  3)避免数据库的查询缓存,保证测试结果的真实性。(数据库在执行一条SQL查询操作时,先进行语法检查、语义分析(写法是否正确、表是否存在、是否有权限),生成执行计划,按执行计划做查询操作,如果查询的数据在数据库内存,返回数据;如果不在内存,需要从硬盘里把数据放到硬盘,返回数据,同时会缓存这条SQL的执行计划和结果。如果同样的查询操作,就直接在查询缓存里返回)(数据库关掉缓存,可避免参数化)

3.关联

   定义:将服务器返回的、动态的、变化的值,把它保存为一个参数,以便后面需要使用这个参数的地方进行使用

  1)使用后置处理器正则表达式提取器

  2)json实现,在body Data中输入json入参

4.为什么关联

  1)服务器校验该值的合法性;

   例子:session、cookie、token、时间戳(formhash等)、验证码(图片验证码、短信验证码、邮箱验证码等)等等。验证码(①.自己写JS,解析图片,获取验证码;②.改成万能验证码)。请求成功不代表业务测试成功,要注意看回放页面是否有报错。

  2)数据库,后续需要对该值进行增删改查操作。(一定是int类型的数字)

       例子:insert操作            插入的值需要与其他表的数据建立关联关系/对应关系,需要进行关联。

               delete操作           看请求里非手动输入的ID有多少个即可确认是否需要做关联。

               update操作          where条件

               select操作            where条件

5.压力测试

  1)首先接口脚本需要调试成功(增加断言,查看结果树等);

  2)设置压力测试场景,可加远程负载机,设置并发,时间段;

  3)添加聚合报告,运行场景,观察TPS,RT,并发,根据研发需求而评定,也可以使用2/8原则

6.上传文件

使用filed upload上传文件即可。

 

posted on 2017-05-13 18:39  国元  阅读(313)  评论(0编辑  收藏  举报

导航