zoukankan      html  css  js  c++  java
  • 接口测试+postman+Jmeter用法

    接口测试

    什么是接口测试

    接口测试:接口测试就是功能测试,向服务端发的请求或者获取数据,

    例如:新浪微博,新浪为客户端(client),新浪的服务器为服务端(server)

    a:刷微博,即从客户端向服务端获取数据

    b:发微博,即客户端向服务端插入数据

    c:修改微博,即客户端向服务端发送数据,即修改后的内容

    d:删微博,即服务端向客户端发送删除数据的请求

    以上,都是通过接口来连接客户端与服务端的。

    接口测试第一步需要做什么?

    首先要取得接口文档,接口文档一般都是由开发提供的,

    接口文档中会提供至少三种信息:接口地址(url)、请求参数(get、post)、请求参数,一般还会提供返回参数,如下:

    接口返回的数据类型是什么?

    接口返回的数据类型都是json格式的,那么什么是json呢?

    json:json是一种通用的数据类型,所有语言都认识它,即任何语言接口返回的都是json格式的,如:Java PHP .net Python ruby C

    json格式如下:键值对的存在 key-value

    接口常用请求方式有什么?

    get与post请求方式

    get请求

    直接用浏览器就可以访问,不需要借助外部工具,在浏览器中输入url即可

    如何传参数:在url后面加一个问号?+参数名+值,其中如果要传多个参数的话,中间用&连接

    例如:hfhfhh/stu_info?参数1=值1&参数2=值2,如下图所示:

     post请求

    post请求不可以通过浏览器直接访问,需要借助工具来进行接口的访问,如postman、jmeter

    post常用的传参方式:key-value、json格式、上传文件。如果接口文档里不特别说明是什么传参的方式的话,那么就是key-value形式传参。

    get与post区别

     1、get请求只有请求头,没有请求体,如下图postman中所示:请求的cookie是在headers里面的,而参数是在url里面的,body是置灰的,即没有请求体

           post请求既有请求头,也有请求体

           get请求如下图:

    post请求如下图:

    2、get请求没有post请求安全,因为get请求参数是在url里面传的,参数是可见的,而post请求参数是在body里面传的,不可见。但是post请求参数还是可以用抓包工具抓到,所以也没有那么安全

    3、get请求有参数的大小限制,post请求没有参数大小的限制(在以前浏览器版本低的时候,有参数大小的限制,现在浏览器版本很高了,就没有这个限制了)

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

    设计接口测试用例

    设计思路:

    1、正常的:按照接口文档上面来

    2、异常的:不按照接口文档上面来

    3、根据业务逻辑设计不同的场景

    测试用例里面需要写什么?

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

     cookie与session

    什么是cookie?

    cookie是保存在用户浏览器端的一个键值对。

    例如:登陆一个网站,就会把cookie保存在浏览器端,即保存登录名与密码,等你关掉网站,再次进去的时候,不需要再次登陆,就可以直接访问了,这就是浏览器保存了cookie的结果

    什么是session?

    session是保存在服务端的键值对。

    例如:登陆网站之后,浏览器会保存cookie,而服务端会保存session,当再次访问网站的时候,服务端会把session里的键值对和浏览器端的cookie进行对比,如果一致就不需要重新登陆了,直接就可以访问,如果不一致则需要重新登陆

    注意:cookie与session都有失效时间,至于时间的长短是在代码里面设置的。

    postman

    postman是用来发送http请求接口的测试工具,可以用来发送get与post请求

    在postman中发get请求

    例:

    请求如下图:

    在postman中发post请求

     1、入参是key-value型的

    postman中如下:

    2、入参是json型的。

          如何判断入参是json型的:接口文档中会标识出来,如果不特意标识,那么默认就是key-value型的,如下图,接口文档中已特意标出是json型的

    postman中请求如下:

    json类型参数在postman中如何传?

    在body下面的选择raw,就可以传json格式的了

    3、在postman中上传文件

    4、传cookie

    传cookie需要知道:请求方式、url、cookie值、请求参数

    例如:获取某个QQ群里的成员信息

    step1:获取url,url如下:https://qun.qq.com/member.html#gid=QQ群号

    step2:按f12,选择network下的XHR,XHR下面的都是请求的接口,有利于接口测试,所以直接选择XHR就行了,下面以search_group_members这个接口为例

    step3:获取请求方式与url

    step4:获取cookie

    step5:获取请求参数

    step6:在postman中可以调接口了,cookie存在Headers里面,如下

    参数放在body里

    step7:发请求

    postman中 form-data、x-www-form-urlencoded、raw、的区别

    form-data:可以上传键值对,也可以上传文件

    x-www-form-urlencoded:可以上传键值对,不可以上传文件

    raw:可以上传json格式的参数

    postman中Globals用法

    step1:点击小齿轮下的Manage Environments

    step2:选择Globals

    step3、添加一个ke与value,例如key=ip,value=ip地址,添加完后点击 save,配置完成

    step4、如何运用刚才配置的Gloabals

    在url中不用写IP地址了,用{{ip}}代替即可,其中ip根据自己在globals中定义的key的名字而变化

    jmeter

     定义:Java开发的开源的性能测试工具,即需要安装jdk才可以使用jmeter

    jmeter的http接口测试

    step1、添加线程组,线程组可以理解为一个容器,之后的测试都在线程组里面执行,

    其中,线程数:即为并发数,如果要测试100个用户同时登陆,那么现成数设置为100即可

             Ramp-Up Period(in seconds):为在XX秒之内执行这个线程

        循环次数:想要循环几次就填几

    step2、添加http请求,选择线程组,点击右键

    step3、配置http请求,如下图

    step4、添加监听器,即查看结果树,可以看发送的请求与响应的数据

     当查看结果树中存在乱码时如何解决?

    如下图

    解决办法:在jmeter的bin目录下,找到jmeter的配置文件,jmeter.properties最下面一行加上sampleresult.default.encoding=UTF-8后,保存,然后重新打开jmeter,再次执行接口文件,就可以了

    当body data里面中文乱码如何解决

    如下图

    解决办法:

    在jemeter的bin目录下,找到jmeter的配置文件,jmeter.properties最下面一行加上jsyntaxtextarea.font.family=Hack

    后,保存,然后重新打开jmeter,再次执行接口文件,就可以了

    数据库存在乱码如何解决?

    在http请求配置页面中Content encoding=utf-8,即可

    上传文件

     参数化

    1 、__random:函数助手里面的__random取一个范围内的随机数

    注册接口

    step1

    step2

    step3

     step4:

    2、__time:函数助手里面的__time取当前时间戳

      时间戳:从计算机诞生那一天到现在过了多少秒

    3、__UUID生成的字符串很长

     --CSV Data Set Config

    配置方式:右键--->添加--->配置原件--->csv Data Set Config

    注意:如果不写绝对路径,可以只写文件名,那么需要把文件放在jmeter的bin目录下即可,那么就可以直接写文件名就可以了

    然后去编辑登陆接口如下,此时username不可以写死,需要写名字集,格式 ${名字集},如下图:

    关联

    从上一个接口里面获取到结果传递给下一个接口

    例如:抽奖接口的请求参数就要从登录接口的返回参数中取

    step1、取登陆接口返回的userid与sign

    配置如下:

    从登陆接口返回的参数中取userID与sign

    返回参数如下:

    step2、JSON Extractor 配置如下,其中$.login_info.userId定义如下:

    $代表登录接口返回的参数中最外边的大括号,.代表大括号里面的内容,login_info代表从返回参数中找到login_info,.代表返回参数中的login_info里的信息,userId代表在login_info取到userId的值

     step3、配置抽奖接口:

     用户定义变量

    配置:线程组--->添加--->配置原件--->用户定义的变量

    配置:,名称与值,例如名称为 ip

    应用:

    在http请求中配置IP的地方改写成上边配置的变量即可,就不用每次都输入IP地址了

    格式:$(定义的变量)

    压测

    例如:要测试10秒之内1个用户登陆100次情况

    思路:线程组中线程数设置100(代表一百个用户),10秒

    聚合报告

    压测,需要关注返回的TPS、响应时间,通过聚合报告就可以看

    TPS:服务器每秒钟处理的事物数,即请求数

    响应时间:从发出去请求到服务端处理完返回给客户端的时间

     如下图:

    响应断言

    jmeter在接口测试过程中,有时需要响应断言来判断接口测试得到的接口返回值是否正确。 
    响应断言 :对服务器的响应接口进行断言校验。

    1. 首先,选中某个线程,然后右键,选择添加—>断言—>响应断言 ,得到如图所示的响应断言界面。

    Apply to:默认选择 Main sample only即可

    要测试的响应字段:默认选择  响应文本 即可

    模式匹配规则:选择“包括”即可,即返回的参数中包括添加的  要测试的模式里的内容即可

    要测试的模式:输入 我们要匹配的响应接口(即接口测试结果的期望值或者其他期望值)

    应用如下:

  • 相关阅读:
    bigtint;int;smallint;tinyint
    修改sqlserver2008默认的数据库文件保存路径
    通过代码来调用log4net写日志
    supersocket中的日志处理
    QuickStart下的CommandFilter项目 github上自己修改过的版本
    演练:实现支持基于事件的异步模式的组件
    BroadcastService的测试用例
    2-Medium下的MultipleCommandAssembly
    如何获取supersocket的源代码
    supersocket中quickstart文件夹下的MultipleCommandAssembly的配置文件分析
  • 原文地址:https://www.cnblogs.com/qiaomeiling/p/9952007.html
Copyright © 2011-2022 走看看