Jmeter做接口测试-面试题

一、请说明你用Jmeter做接口测试的整体过程

用Jmeter做接口测试,至少要经过以下几步:

1、根据开发提供的接口文档,编写接口测试用例

2、利用JMeter做接口测试,添加线程组和HTTP请求,在HTTP请求中,添加对应的ip地址,端口号,接口的具体url,请求参数等

3、添加响应断言(用以判断测试是否通过)

4、添加查看结果树(用以查看入参出参情况)

5、执行用例

6、查看结果,验证接口返回与预期是否一致

二、如果前后接口有依赖,你是如何处理的?

Jmeter实现接口关联,需要用到后置处理器里的提取器,一般我常用正则表达式提取器和json提取器。比如说一个后台管理系统的接口,除了注册登录等,基本所有接口都依赖于登录接口得到的token值,因此需要在登录接口获取到token的值并将其设为变量,后面的接口直接调用该变量即可。

三、断言是什么?Jmeter是如何设置断言的?

断言的作用是设定一个预期结果,然后执行测试后,如果实际结果与预期结果不一致,则测试不通过。

Jmeter的断言有好几种,我常用的是响应断言和Json断言。

响应断言是在线程组或http请求下鼠标右击--请求--断言--响应断言,在窗口里输入要检查对比的项,例如响应体里包含200,设置好断言后,执行用例,去查看结果树,如果实际结果与预期结果一致,则不报错,如果断言失败,就会有红色报错。

如果接口返回的数据是Json格式的,也可以添加Json断言,比如断言某个Json数据的值等于某数据。

PS:有时候查看结果树没有报错,不代表测试没有问题,比如说接口返回200,也许只是说明接口是通的,不代表功能没有问题,需要好好设置断言的方式。

四、Jmeter如何实现参数化?

接口里的参数有一些是不能提交重复的数据的,例如注册账号、手机号码等,想要Jmeter脚本不管执行多少次都不报错,需要实现脚本的参数化。

主要有4种方式:

1、CSV Data Set Config

在配置元件中添加,适合场景参数范围较大的场景,方便用户随时修改参数数据,使用较多的就是参数化用户名和密码的场景。

PS:注意,建CSV文件是新建xlsx文件里做好所有编辑后,另存为CSV文件,之后不要做任何编辑,不要拉动任何一列的列宽,否则可能会报错。

2、函数助手

是Jmeter自带的函数,适合生成随机数的场景,例如生成随机字符串,随机日期,随机数字等, 一般新建功能接口的用户名(或其他参数名)入参,格式写成:用户名字符串+随机数字/随机字符串,后面查询的时候就可以模糊查询用户字符串。例如:首先生成一个1至100的随机数字参数random:${ _Random(1,100,)},可以存放在用户自定义变量和用户参数里。

然后引用:myname_${random}

3、用户自定义变量

在配置元件中添加,适用于在测试计划中参数不经常变化的场景,例如设置host、端口号、url等。用户自定义变量在启动时获取一次值,后面不再动态取值,例如上面的随机函数,如果在做循环的时候需要每次随机数字都变化的话,就不适合放在这里,而是需要把随机函数存放在用户参数里。

4、用户参数

在前置处理器中添加,适用于参数取值范围很小的场景,一般会将登录的用户账号和密码作为用户参数。结合上面所言,在跑循环新增场景时,需要每次的随机数字都改变时,将随机函数放在用户参数里。比如myname_${random},第一次循环可能是myname_11,第二次可能是myname_99。

五、Jmeter测试元件的执行顺序是怎么样的?

测试计划(只能一个)-->线程组(至少一个)-->配置元件-->前置处理器-->定时器-->取样器(至少一个)-->后置处理器-->断言-->监听器(至少一个)。

六、Jmeter怎么连接数据库?在什么场景使用?

在做接口测试涉及到后端数据校验时,比如成功增添一条用户信息,单纯依赖接口返回值来做断言可能不够,同时还需要连接数据库将新增的数据找到并把各个字段对应的值提取出来和你插入的数据进行匹配断言,如果都pass那才能证明这个接口能够完成成功添加一条用户信息的功能。

连接方法:

1、添加MySQL驱动jar包

在测试计划面板点击"浏览..."按钮,将JDBC驱动添加进来,例如下载了mysql-connector-java-8.0.27.jar 包,将其复制到Jmeter/lib目录下。

2、添加JDBC Request

线程组-->取样器-->JDBC Request,注意Variable Name of Pool declared in JDBC Connection Configuration的值要写得有意义并且好记一点,后面的配置数据库连接信息需要填写一模一样的值。例如此处填写的是mySql_test。

然后在sql查询语句栏里按需求写脚本,得到的值给外部接口调用。

外部接口调用的参数名字写在 Variable names文本框里,例如loginName。

3、配置数据库连接信息

测试计划-->线程组-->JDBC Requset-->(右键添加)配置元件--》JDBC Connection Configuration

其中:

3.1 Variable Name for created pool 的值填写和JDBC Request的一致,即mySql_test。

3.2 Database URL(数据库地址):jdbc:mysql://ip:端口号/数据库名

3.3 选中JDBC驱动:com.mysql.jdbc.Driver

3.4 输入用户和密码(自己要连接的那个数据库的用户名密码,假设为root/123456)

猜你喜欢

转载自blog.csdn.net/shuirongwu/article/details/129473847