• 接口测试——postman & jmeter



    新名词:

    自动化测试:
    写代码帮你测试

    接口:是一个抽象的概念,一种交互关系。

    抓包:拦截请求。

    接口测试:就是功能测试,比后者还简单。

    需要有测试文档,包括项目、模块、URL、请求方式、参数、参数说明、预期结果、实际结果、成功与否
    测试工具:常用的有postman&jmeter

    server:服务器
    user:用户端

    抓包: 拦截请求。  点击右键的审查元素/检查/F12可以 点击network(出不来刷新一下)就可以出来一个接口 

    前端(像我们的使用界面)和后端(像抓包页面)

    前端和后端是两拨人开发的,像前端手机,使用语言Android,object-c,或swift.后端语言就多了,像Java,php,.net,python,ruby等。后端人开发好后,把接口给前端人。前端需要什么,展示出来就行了。

    后端的语言和前端的不同,前端肯定展示不了。所以用一种通用的语言——json.

    json:所有语言都认识的一种数据类型。json出来前用的xml。json是key-value的形式。json串儿。

    接口测试:

    先要有一个接口文档:

    请求方式:get / post

    get 无需借助工具,(第一个接口)在浏览器就可以,将地址直接沾到浏览器。怎样传参数呢,在后边加上“?”然后参数名谁=谁(?key=value)就可以了。如http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑。若是有多个参数,用&连接就可以了。如age=18&sex=男
    注意:要输入英文字符"?",尽量粘贴
    而且get没有body

    post 需要借助工具

    第一个接口:(get请求)打开postman→ 选get→ 输入URL(全)→ 点击hander,在下边输入key-value(stu_name 小黑)→ 点击send→ 看结果
    备注:get可以直接在浏览器使用,见上边。
    第二个接口:(post请求)打开postman→ 选post→ 输入URL(全)→ 点击body→在form-date下边输入key-value→ 点击send→ 看结果
    第三个接口:(post请求json入参)打开postman→ 选post→ 输入URL(全)→ 点击body→点击raw→后边的语言改为JSON→下边输入json串儿(即{"key":"value",}注意格式)→ 点击send→ 看结果
    备注:post请求,默认的话是key-value传参,用默认的form-date就行;写明入参json的话,要用raw。
    第六个接口:(post请求上传文件)打开postman→ 选post→ 输入URL(全)→ 点击body→在form-date下边输入key→后边的value先选择为file→点击send→ 看结果

    postman的body中,form-date和x-www-form-urlencode的区别,只是前者能传文件。

    第三节:(cookie)接口测试、访问qq接口

    打开qun.qq.com到成员管理(需要登录),开始抓包。选择搜索群成员,里边的Headers里的cookie需要找出来,还有最下边的form-date.
    第四个接口:(post请求有cookie)打开postman→ 选post→ 输入URL(全)→ 点击header,输入cookie和抓包的数据→点击 body→在form-date下边输入key-value→点击send→ 看结果

    cookie 用户端会key-value记录你登录的状态,会过期;

    session 服务端同样会key-value记录你登录的状态。

     cookie就是保存在你自己本地的一个键值对。session就是保存在服务端的一个键值对。

    上边俩者都会记录,下次登录时候,服务器一对比,一样的,就表明又登录了
    http://nnzhp.cn/api/user/user_reg牛牛的文档,供学习。
    body用来传参,hander用来补充,比方写cookie


    怎样测试接口:

    post、get请求区别:

    定义变量:设置→管理环境→globals→加个变量,之后用的时候,直接{(变量名称)}代替就行。
    ip可以代替域名来访问:

    保存collection:可以把几个接口放在一起保存起来。历史中点击...→create collection→save,已经保存。

    功能测试主要还是测业务,要了解业务,然后测试功能。

    接口测试用例:
    1、正常的
    2、异常
    1)、不按接口文档上来
    3、根据业务逻辑来设计不同的用例

    项目 模块 url 请求方式 请求参数 预期结果 实际结果 状态

    get post 区别:

    http请求

    请求头header


    你发出去这个请求的额外信息
    你用什么浏览器发的
    你想让服务端给你返回什么样的数据
    cookie

    请求体body

    正常咱们发过去的数据了

    1、get请求没有请求体,只有请求头 (把参数放在url里,或cookie里)
    2、get请求没有post安全,因为get把参数都写到url里面 (其实抓包都能看见,并没有哪个更安全一说)
    3、get请求有参数的大小限制,post请求。(以前浏览器不好,现在没了)
    4、get请求一般用来获取数据,像服务端发送数据的时候用post (get请求如百度搜索,post请求如登录)
    备注:其实区别只在第一点,其他的其实没有太大区别。


    Jmeter做接口脚本

    打开Jmeter:无需安装,直接点击解压文件中的jmeter.dat(要先安装jdk)
    文件不显示扩展名:组织→文件夹和搜索选项→查看→不要勾选隐藏文件扩展名

    Jmeter:Java开发的(所以必须装JDK再使用)开源的(即免费的)性能测试工具,也可以测接口

    添加第一个:get请求

    线程组:得先设置一个来干活
    线程数:并列的几个线程组
    加一个HTTP请求:添加→sampler→HTTP请求
    名称:随便改
    服务器名称或IP:写域名或IP。端口:默认HTTP,HTTPS时要输入
    路径:
    方法:get或post
    paremeters:key-value,或者写在路径后?key=value
    点击运行:一个绿色的三角形标。提示保存,那就保存一下子。

    添加线程组→添加HTTP请求→填写服务器名称或IP→路径→ 方法→ 参数→ 添加监听器→ 察看结果数→ 点击运行→ 查看接口的请求和响应数据


    post请求:

    jmeter返回中文乱码:
    1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把
    sampleresult.default.encoding=UTF-8
    加到最下面
    2、重新打开jmeter

    jmeter bodydata里面中文乱码
    1、在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties,然后把
    jsyntaxtextarea.font.family=Hack
    加到最下面
    2、重新打开jmeter

    添加第三个:入参是json类型的post请求

    入参类型是json的返回乱码:
    1、在content encoding中加入utf-8

    添加第四个:带cookie的post请求

    添加 配置元件 HTTP信息头管理器

    协议默认的HTTP,如果是HTTPS,就写在协议里。

    添加第五个:上传文件接口

    选择file,上传文件,并在此file写参数"file"

    jmeter参数化

    1、jmeter 参数化
    1、选项→函数助手对话框里面的
    __Random 取一个范围内的随机数
    __time取一个时间戳:从计算机诞生的那一天到现在过了多少秒
    参数加上YYYY(4个),即只取格式化的年
    参数加上YYYY MM dd HH mm ss,取到格式化的年月日时分秒
    __UUID 取一串儿唯一的数字,但有些长
    文件中取值:
    并列建立一个活儿:添加→配置元件→CSV Data Set Config
    当中filename写清楚路径(也可以直接写明儿,但文件要放在bin目录下),
    variable name随便取一个名儿AAA,BBB,CCC(可只有A,带上B也行),Dlimiter中输入分隔符","。
    然后在HTTP需要取值的地方输入${AAA},${BBB},${CCC},
    备注:,也可以换成其他符号,如空格的

    ${}是取变量格式。

    CSV Data Set Config:当中的recycle选择TRUE和FALSE决定是否循环

    备注:右上角的注意里边有数据时,就说明有错误。

    先用注册接口注册一个账号。
    注意:账户名fang${__time(,)}这个串儿,部分粘贴复制的时候容易粘不干净,像fang${__time(,)}容易错变成${__time(,)}},外边儿多留个大括号。

    jmeter关联:

    首先建立一个有效的登录接口,然后建立一个抽奖接口。
    在登录接口中,添加→ 后置处理器→ JSON Path PostProcessor
    正则表达式提取器:跟JSON Path PostProcessor功能一样。
    "sign": "(.*?)"表示取左边是"sign": " 右边是"的值。
    缺省值:没取到

    变量取值:${name} 是大括号
    结果中找东西:$.A.B....

    错误:userid和sign结果值写反了

    jmeter压测:

    TPS:服务端每秒钟处理的事务数,越大越好

    响应时间:从发出动作到服务端处理完返回给客户端的时间,越短越好

  • 相关阅读:
    JVM调优总结(转载)
    项目应该如何分层(转载)
    SpringCloud Feign 配置(基于Consul)
    yml配置文件嵌套
    SpringCloud Zuul基于Consul配置及详解
    springBoot聚合项目打包
    SpringCloud Config 配置(基于Consul)
    hibernate的三种状态
    IOS 图片全屏预览
    IOS 下拉菜单
  • 原文地址:https://www.cnblogs.com/fangfangzhang/p/9931924.html
Copyright © 2020-2023  润新知