jmeter接口测试


一、接口测试目的

接口测试会更早的发现bug,而使得修改bug的成本更低,接口测试会减少功能测试的时间,应该接口测试会确保主要流程功能的正确性,能减少回归测试的次数。


接口测试类型: 模块接口测试web接口测试

模块接口测试一般为程序内部模块之间相互调用的内部测试,常被应用在单元测试中,俗称白盒测试(通常是开发完成的)

Web接口测试一般为程序外部测试,也就是黑盒测试,不需要关注内部实现,只需要关注输入输出是否符合预期结果。

API函数是一种接口,一般开放平台都会对外提供API函数,以供第三方程序调用


web接口测试:服务器接口测试外部接口测试

服务器接口测试:测试浏览器与服务器的接口

这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用html/css/javascript等技术。后端开发人用php/java/python/c#等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这就是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。

外部接口测试:

这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。


web接口测试有哪些测试要点:

1、请求是否正确,默认请求成功是200,如果请求错误也应当返回404、500等。

2、检查返回数据的正确性与格式,json是一种非常创建的格式。

3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。例如禁止SQL注入。

4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果都没返回,则说明接口代码需要优化。

二、接口测试流程

接口示例:

http://ams.wonderbuy.xyz/rs/product/getHomeList

http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=4&pn=1&ps=10

比如这个接口地址:

storeId=1表示商店为1的那个店;

pn=1即page number=1 意思为第一页;

ps=10即page sum =10 意思为每页展示10条记录;

怎么做接口测试:

1.首先获取开发的接口文档

2.熟悉每个接口是干什么的,每个参数的意义,以及多个参数组合的意义,以及组合参数应该返回什么样的数据是对的,以及分析错误状态码。

3.在URL里面直接输入请求的接口地址和参数就可以查看服务器返回的json格式数据,然后检查返回的列表中的数据是否准确(检查数据展示及状态码是否准确),这只限于get请求方式。另外也可以使用jmeter工具对get或是post请求方式,做接口测试。

步骤:添加线程组,再添加http请求,在http请求中设置服务器地址,端口,路径,请求方式,设置参数及参数值,添加查看结果树,执行这个请求,然后在查看结果树的响应部分查看核对json数据,检查数据展示或是数据状态是否准确。

三、接口文档示例:

1:获取商品信息接口

接口地址:

http://amsseller.wonderbuy.xyz/rs/store/getStore

请求方式:get

请求参数:

storeId:门店ID

pn:第几页

PS:每页显示多少条记录

状态码:

200:响应成功

20001:门店信息错误

20002:没有对应的数据

20003:网络异常

举例:

罗湖店:1 90

宝安店:2 100

福田店:3 200

http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=2&pn=10&ps=10

显示宝安店的第10也的10条数据:91-100

http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=2&pn=11&ps=10

① 没有对应数据;②默认给最前/最后一页的数据

http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=4&pn=10&ps=10

① 门店信息错误;②给默认的门店信息

请求示例:

http://amsseller.wonderbuy.xyz/rs/store/getStore?storeId=2&pn=10&ps=10

响应格式:

{

: “trxrc”:20001,

: “state”:

: {

: : “code”:200,

: : “msg”:”ok”

: },

: “storeName”:”Twireless”,

: “storeEmail”:”joejustinesia@gmail.com“,

: “storeMobile”:”09178313838”,

: “storeImage”:”http://data.wonderbuy.xyz/20161129/store/img/64f16c09ebe5e83318408ba8192531cd.jpg",

: “commodityList”:

: [

: : {

: : : “id”:2085,

: : : “modelId”:2085,

: : : “modelName”:”Planet CCTV AHD425 Dome Cam 1080P IR”,

: : : “inventory”:9,

: : : “price”:”2,850.00”,

: : : “moneyTag”:”PHP”,

: : : “itemIconUrl”:”http://data.wonderbuy.xyz/20170324/model/logo/315cc948878b1073b15196d6c340c24b.jpg"

: : },

四、接口测试用例模板

接口名称、用例编号、用例说明、请求参数、请求方法、请求地址、请求头部信息、预期响应状态、测试结果

以查询接口为例:

以注册接口为例:

五、jmeter接口测试步骤:

1、 添加线程组:在“测试计划”上点击鼠标右键–>添加–>threads(Users)–>线程组,添加测试场景设置组件,(接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”,接口性能测试是并发测试,因此一般就设置多个线程数)

2、 再在“线程组”下面添加一个HTTP cookie管理器

Cookie 管理器就像一个 web 浏览器那样存储并发送 cookie, 一个测试计划内最好只有一个cookie manager, 没有cookie管理器,登录后的用户名admin就显示不了

3、 添加Http请求默认值组件

HTTP默认请求值: 当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。

在“HTTP 请求默认值”组件配置页面,填写:

被测系统的域名、端口、http请求的实现包版本、协议类型

后续添加的线程组里的所有“HTTP Sampler”可默认使用此设置。

4、 添加接口的请求,线程组–>HTTP请求

在HTTP请求设置页面,录入被测接口的详细信息,包括请求路径,对应的请求方法,以及随请求一起发送的参数列表

注:由于Jmeter请求线程组内的请求时从第一个开始执行,所以我们将需要最先执行的请求放在前面

后续继续添加其它请求,如果提交的请求中参数带有中文字符,就讲字符编码设置为GBK,就不会乱码了

5、 接下来,可以参数化、关联、添加事务,集合点 、查看结果树、聚合报告等等运行测试

(最简单的接口测试,可以直接添加一个查看结果树、聚合报告就可以测试了)

那么仅仅是状态码ok了,就表明返回数据一定是正确的吗? 不一定,我们还得通过在返回

的页面中检查部分数据是否符合正确预期结果,那么就是检查有没有出现欢迎xxx登录了,这个可以通过接口文档查得(或者问开发),这里是admin用户登录

接口测试步骤:

1:熟悉接口定义文档,获得接口功能描述、接口请求方式、请求URL、请求参数、返回参数以及状态码信息等(从接口说明文档中整理出接口测试点)

2:写接口测试用例(主要的接口业务)

3:编写接口脚本(就是使用jmeter编写脚本,添加查看结果树)

4:在接口测试工具(Jmeter)执行接口测试用例

5:分析查看结果树中接口测试返回的结果及状态


文章作者: 派大星是一个天才
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 派大星是一个天才 !
评论
  目录