• 接口测试的工具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、请求方法(getpost) 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添加线程组然后通过聚合报告和查看结果树来看运行结果:

  • 相关阅读:
    PHP $_SERVER变量
    Buddy system伙伴分配器实现
    Linux iconv使用
    内存管理(memory allocation内存分配)
    内存碎片
    《STL源码剖析》chapter2空间配置器allocator
    Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
    c++ explicit
    《STL源码剖析》环境配置
    C++ STL的各种实现版本
  • 原文地址:https://www.cnblogs.com/cuimeiping/p/9911986.html
Copyright © 2020-2023  润新知