接口测试的工具postman和jmeter


 

接口:什么是接口呢?接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。

系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。

现在我们最常用的两种接口就是webservice接口和http api接口

webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

接口测试的目的是测试接口,尤其是那些与系统相关联的外部接口,测试的重点是要检查数据的交换,传递和控制管理过程,还包括处理的次数。

接口测试是测试系统组件间接口的一种测试。

接口测试就和普通功能测试没什么区别,区别就是功能测试是在页面上点点点,在页面上输入值,提交数据看结果,而接口测试没有页面,通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果。

接口测试的必要性

一、可以发现很多在页面上操作发现不了的bug

二、检查系统的异常处理能力

三、检查系统的安全性、稳定性

四、前端随便变,接口测好了,后端不用变

接口测试流程

一、需求评审,熟悉业务和需求

二、开发提供接口文档

三、编写接口测试用例

四、用例评审

五、提测后开始测试

六、提交测试报告

接口测试的前提:测接口的话,必须得有接口文档,知道 url的请求方式 参数 以及参数的说明

接口文档至少包括:

1、接口说明 2、调用url 3、请求方法(get\post) 4、请求参数、参数类型、请求参数说明 5、返回参数说明

http://doc.nnzhp.cn/index.php?s=/5&page_id=7

为什么要做接口测试呢? 我们知道,其实接口也是app端或者说是web前端进行调用的,那我们直接在app或者web端直接测试不就好了,反正它都是调用的接口,app和web端功能测试通过了,那接口不就是好使的嘛。 真的是这样吗?说的好像很有道理,其实不然,要是真的是这样的话,那我还讲啥接口测试。 思考一个问题,假如现在在京东app上买东西,支付订单,订单金额是500元,支付的话,那肯定要调用支付接口,你在页面上操作的话,订单金额是修改不了的,那如果你想测试一下服务端有没有校验订单的金额,我想把订单金额改成5元,那在页面上点是测试不了的,这个时候我们就可以直接用接口来调用,修改一下订单金额的值,然后再发请求就可以了。 当然这只是我举个例子,接口测试当然不只是这一点原因,总的来说还是为了更好的提高我们产品的质量。

怎么来测接口-http接口

get请求:

接口请求报文拼接 1、url?param=value&param2=value 这种是最简单的一种,问号前面是请求url,后面是请求的参数名和参数值,多个参数用&来连接 https://api.douban.com/v2/book/search?q=邹伟伟

单个参数:http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑

多个参数用&符连接:

 

接口测试工具:Postman

 

 

简要描述:

 

  • 获取学生信息接口

 

请求URL:

 

  • http://api.nnzhp.cn/api/user/stu_info

 

请求方式:

 

  • get

 

参数:

参数名 必选 类型 说明
stu_name string 学生姓名

 

 

返回参数说明

参数名 类型 说明
error_code int 错误编码,0为操作成功
stu_info object 学生对象信息
id int 学生id
name string 学生姓名
sex string 学生性别
age int 年龄
addr string 家庭住址
phone string 手机号
grade string 班级
gold int 金币

 

 

 

 

 

 

 

 

post请求:

 还有一种post请求,入参是json串的

添加学生信息

添加学生信息

简要描述:

  • 添加学生信息,这个接口是用来讲入参是json类型的

请求URL:

  • http://api.nnzhp.cn/api/user/add_stu

请求方式:

  • post

  • 入参是json类型

参数:

参数名 必选 类型 说明
name string 学生姓名
grade string 班级
phone int 电话
sex string 性别,如果不传默认为男
age int 年龄,如果不传默认为18
addr string 地址,如果不传默认为北京市昌平区

 

 

 

 

 

 

返回参数说明

参数名 类型 说明
error_code int 错误编码,0为操作成功
msg string 提示信息

 

 

 

 

 

 

 

 

 

 

GET和POST请求: 如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送。 GET请求和POST请求的区别: 1、GET使用URL或Cookie传参。而POST将数据放在BODY中。

get:

 

 POST:

2、GET的URL会有长度上的限制,则POST的数据则可以非常大。

3、POST比GET安全,因为数据在地址栏上不可见。

4、一般get请求用来获取数据,post请求用来发送数据。

其实上面这几点,只有第一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。

HTTP状态码

 1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。

2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,

3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面

4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果

接口测试用例模板

1、项目 是哪个项目的

2、模块 这个接口是属于哪个功能模块的

3、用例id

4、接口名称

5、用例标题 用例是干嘛的

6、请求方式 GET/POST

7、请求url url地址

8、请求参数

9、前置条件 有依赖的时候,比如说要测登录失败3次的

10、结果验证 预期结果

11、请求报文

12、返回报文 1

3、测试结果 通过/失败 1

4、测试人员

Jmeter-http接口脚本

1、添加线程组

2、添加http请求

3、在http请求中写入接口url、路径、请求方式、参数

4、添加查看结果树 5、调用接口、查看返回值

Jmeter-http接口脚本添加header

 

Jmeter-http接口脚本添加header

 

Jmeter-webservice脚本

1、在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)

2、打开jmeter新建一个线程组

3、新建一个SOAP/XML-RPC Request

4、把url、soapaction和请求报文写到soaprequest中

5、调用接口、查看返回值

Jmeter-参数化

参数化是干嘛的呢,咱们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候咱们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了。

Jmeter参数化的方式有三种

1、用户定义的变量 这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的

在线程组中添加一个用户定义的变量,然后写key和value就可以了,key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${name}这样去取值,name就是你取的变量名称。

 

 

2、函数生成器 函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数

函数助手的话,可以按照规则生成一些参数,比如说随机数取当前时间,最常用的就是这两种。 随机数__Random,可以在你指定的一个范围内取随机值 取当前时间__time,如果在有一些需要传时间的情况下可以使用,日期格式是: yyyy-MM-dd HH:mm:ss 年-月-日-小时:分钟:秒 取唯一id,__UUID,这个就是每次会生成一个随机的uuid,都是唯一的

 

 

 

3、从文件中读取 文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码都是我们事先注册好的

 

从文件中读取的话,三个步骤 1、读取文件 2、取文件内容里面的参数,给它一个名字 3、使用值 从文件读取的话,需要在线程组里面添加一个CSV Data Set Config,它就是做前面两步的操作的

 

Jmeter断言

断言是什么呢,它是用来检查返回结果对不对的。 用来验证结果是否正确,如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通断言来检查返回结果,测试是否通过。

Jmeter关联

我们知道断言是从返回结果中检查有没有预期的值,现在有一个问题,有一个购买商品的接口,必须要先登录才能够购买商品, 那么你调用接口的时候怎么知道是否已经登录了,一般这样的都会在调用的时候传一个token的参数,服务端判断token是否过期或者token是否正确,如果正确的话,那就是登录成功了就可以买东西了。 那么这样的话,你就要先获取到token,token是从呢来的呢,肯定是从登录接口返回的,因为要先登录嘛,那这样就得先调用登录接口, 获取到token,然后把获取到的token传给购买商品的这个接口。 关联就是做这个事的,它就是获取到返回的值,然后保存起来,给别的请求使用,或者做一些其他的处理。

 

Jmeter操作mysql

1、导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql(网上下载mysql-connector-java-5.1.7-bin.jar)

 

 

2、创建数据库连接配置,mysql的url、端口号、账号、密码

Jmeter配置mysql连接

1、添加一个JDBC Connection Configuration

2、配置mysql连接池的名称,后面发sql请求的时候指定连接哪里

3、数据库的url:jdbc:mysql://118.24.3.40:3306/jxz?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

4、数据库驱动:这里就是指定连接什么类型的数据库,mysql、oracle、SqlServer等等

5、账号密码  :jxz  123456

 

 

3、写sql,执行sql 4、查看结果

 

 查询语句:

 

 insert语句

delete语句:

 

 update语句

 jmeter添加压力机

我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢,首先要在做压力机的机子上启动jmeter的代理,然后做为控制机的机子上添加上压力机的ip即可。 Jmeter的bin目录下有一个jmeter-server,启动它即可,windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server。 然后在作为控制机的jmeter配置文件里添加压力机ip即可,jmeter的配置文件在bin目录下jmeter.properties,添加压力机的时候,在配置文件里面找到remote_hosts添加ip,然后重启jmeter就可以看到远程压力机了

1、其它的电脑上也有安装jmeter,你的电脑就是master 其他的压力机就是slave

2、和其他的电脑能ping通

3、启动其他电脑上的jmeter-sever

4、在master上修改jmeter的配置文件,找到remote_hosts,在后面加上对于ip即可remote_hosts=192.168.1.109:1099,192.168.1.107:1088(添加完需要重启jmeter才能实现)

 在LINUX下面运行JMETER

1、首先在windows下面做好脚本

2、传到LINUX上面

3、操作步骤:

cd xxx/jmeter/bin

./jmeter-n -t ~Desktop/baidu.jmx -l ~/Desktop/baidu.jtl  (linux)

windows:/jmeter-n -t ~Desktop/baidu.jmx -l ~/Desktop/baidu.jtl 

如果windows想通过cmd进去哪个目标只需要在地址栏直接输入cmd

dir查看当前目前的内容

 

 /jmeter-n -t ~Desktop/baidu.jmx -l ~/Desktop/baidu.jtl 

 

 打开jmeter添加线程组然后通过聚合报告和查看结果树来看运行结果:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM