一.关于接口的介绍什么是接口:不同的系统和功能之间实现连接的口,可分为硬件接口和软件接口。1.1接口的分类硬件接口:如我们常见的USB接口,耳机接口等 (硬件接口 起到了数据传输的作用)。USDB接口软件接口:软件不同部分之间的交互接口,即我们常见的API接口(Application Programming Interface,简称API),也称为应用程序接口。例如:支付宝支付接口,微信支付接口(通俗讲:别人写好的代码,或者编译好的程序,提供给你使用,就叫作api 调用的时候需要鉴权码token,即鉴定是否有权限去调用该接口)。人脸识别即通过调用API接口来实现的再举个常见例子给大家介绍一下什么是API,比方说你在淘宝上下单付款之后,商家使用顺丰发货,然后你就可以在淘宝上实时查看顺丰的物流信息。那我们想一下,淘宝和顺丰作为两家独立的公司,为什么会在淘宝上可以实时查看顺丰的物流信息呢,这就用到了API,当查看自己快递信息时,淘宝平台利用了顺丰提供的API接口,可以实时调用物流信息呈现在自己的网站上。1.2 软件接口的分类内部接口:开发人员自己开发,对自身系统提供的接口,一般为了尽早介入测试,所以一般接口开发完,测试人员就可以进行内部的接口测试。外部接口:公司外部提供的接口(提供给第三方使用)例如:我们自己的开发系统调用调用某信,微信供我们调用的接口为外部接口。2 .为什么需要接口?因为可以通过接口这个途径,让内部的数据被外部调用或进行修改。比方说通过微信充值可以改变你卡里的余额。3.为什么需要做接口测试?1)现在很多系统前后端是分离的,因为前后端工作进度不一样,所以我们要针对首先出来的接口,以及需要调用其他公司的(银行等)一些接口进行接口测试及验证数据2)另外,前端验证很容易被绕过,直接请求接口的信息,比如说身份证信息,涉及到金钱交易时。3)为了尽早介入测试,尽早发现问题。4.接口测试的重点测试接口参数传递的正确性,接口功能的正确性,输出结果的正确性,及对各种异常情况容错能力和权限控制。"接口测试的本质,就是接口的功能测试,是测试接口能否正常的交互数据,通过调用接口,输入一些数据,随后接口返回一些数据来验证接口返回数据的正确性。"二.Postman简介Postman 是谷歌开发的一款网页调试和接口测试工具,在我们做接口测试的时候,相当于一个客户端,模拟用户发送任何类型的 HTTP 请求,并将请求数据发送给服务端,从而获取服务端的响应结果,来验证响应结果是否和预期匹配。1.postman安装1)下载: https://www.postman.com/downloads/双击"Windows 64-bit"下载2)安装 双击postman应用程序双击启动安装双击桌面上postman图标 进入到postman主界面打开这样界面,表示下载成功3)如何使用汉化版postman下载postMan 汉化包(app.zip) 然后后我们打开postman的安装目录找到app-XXX(XXX为版本号)-resource文件夹,而后将app文件夹复制到此文件夹下即可,然后重启postman运行。(想要领取汉化版的小伙伴可以在评论区回复)汉化版postman4)界面主要功能介绍postman主要功能介绍如上图三.关于postman的使用2.1先给大家介绍一下状态码的知识(通过状态码就能判断和分析服务器的运行状态)。当用户在浏览网页的时候,浏览器会返回一个htttp状态码,主要是用来响应浏览器的请求。通常情况下,一般是3位数字,所有的状态码的首位数字就代表着是什么状态。状态码首位数字决定了不同的响应状态,有如下:2 表示成功4 表示请求错误5 表示服务器错误常用HTTP状态码使用场景,小白直接看 200、400、401、403、404、500 就可以了200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回400(错误请求):服务器不理解请求的语法401(未授权):请求要求身份验证。对于需要登录的网页,服务器可能返回此响应403(禁止):服务器拒绝请求404(未找到):服务器找不到请求的网页500(服务器内部错误):服务器遇到错误,无法完成请求2.2以【获取access_token】为例 创建GET请求和POST的请求如下:创建collection集合–创建请求—-设置HTTP GET请求,并在HTTP请求中输入请求方法,请求URL地址及请求参数其次创建HTTP POST请求,前一个HTTP请求的响应结果值 是第二个HTTP请求的参数值。GET和POST是HTTP于服务器交互的方式,常见的请求方法有GET和POST两种,两者区别如下:1.GET请求用来获取数据,POST请求用来发送数据。2.GET是把请求的数据放在了URL地址里(如上图所示)格式为:GET+url 地址 ? +传输数据,参数之间用&隔开。get请求没有请求体,如下图所示请求body为空而POST把 "数据"放在了HTTP请求体中 如下图所示。get 请求数据在请求体中3.GET的参数安全性比较差(因为在url地址中易获取)而GET 的参数安全性高 在body体中4.GET的URL 在长度上会有限制,而POST没有。即get的参数长度受限,而post的参数长度不受限。5.GET请求可以直接访问浏览器,而POST请求不能直接使用浏览器访问 ,如下图所示!GET请求可以直接访问浏览器而POST请求不能直接使用浏览器访问2.3为什么要设置环境变量和全局变量在平时接口测试过程中涉及开发环境,测试环境及生产环境,每种环境对应的IP地址不同,所以在接口测试期间,需要经常修改API地址,这样效率比较低。而且有时候需要调用上一个接口的返回值,手动修改参数也比较慢。两者区别 :环境变量就是全局变量,而全局变量可以在任何接口里面访问的变量。获取环境变量和全局变量的值 通过:{{变量名}}2.4 关于postman的接口关联postman接口关联思路如下1.获取上一个接口的返回值2.将返回值设置成环境变量或者全局变量3.设置下一个接口的参数形式接口关联2种方式1.使用JSON提取器实现var result=JSON.parse(responseBody); //返回响应结果,提取token值pm.globals.set("access_token",result.access_token);//把token设置成环境变量供下个接口用补充一下:什么是JSON格式数组 格式:{ "key": value} 示例: {"key1":100}字符串格式:格式:{ "key": "value"} 示例: {"key1": "张三"}数组 格式:格式:{ "key" : [value]} 示例:{"key" : [000, 111111]}对象 格式:格式:{ "key": {value}} 示例: {"key” : {"1": "亚索"}}具体步骤如下:首先,在GET请求中-Tests中录入代码,获取access_token的值 并把它设置为全局变量 ,Tests模块是后置模式,可以对响应结果进行处理。此时我们可以通过给变量赋值的形式把响应结果保存到变量中。通过上图所示 "快速查看"来检查是否成功获取access_token的值其次,在post请求参数中引用access_token的值,格式为:{{access_token}}前面将access_token的值保存到了环境变量中,所以在该请求中,只需要通过参数引用即可2.使用正则表达式实现【关联步骤同上】1)使用正则表达式提取token值 //正则表达式提取器 match 匹配var value=responseBody.match(new RegExp('"access_token":"(.+?)",'))console.log(value[1])pm.globals.set("access_token", value[1]);2)在第二个接口中使用{[1]}方式取值:{{access_token}}2.5关于postman的参数化什么是参数化?参数化本质上就是不写死接口数据,而是把数据存放在变量内。为什么要做参数化?业务功能的需要,如果写死数据在脚本内,每一次运行脚本,都要手动修改数据,而且有时候测试时需要用到大量的数据,通过手动修改不可能实现。案例:比如注册接口,注册一个账户后就不能重复注册了,为了可以重复执行这个接口,我们可以把这个接口的请求参数改成一个可变化的值,这样每次注册时,参数随机生成 就能注册成功了。postman参数化的三种方式如下:1.动态函数实现参数化先给大家举2个常用的变量:{{$timestamp}} 表示生成当前时间的时间戳{{randomInt}}表示生成随机数0-1000步骤:在请求参数中输入: {{$}} 当鼠标停留在美元$符合后时,自动出现随机变量 引用即可,记得在英文状态下 双引号内" "。如图所示:在参数双引号内添加:变量如图,响应的结果中加上了随机参数2.文档参数化 批量导入参数 进行测试 ,postman支持json文档,txt文档,csv文档。具体步骤:以csv文档为例1.准备参数化文件2.设置请求参数的变量(注意:变量名要和txt文档中的变量名一致)3.导入测试文件运行集合即可(注意:运行之间注意文件格式是否匹配,即可以提前预览查看是否有乱码情况)案例:以某电商平台登录接口为例1)输入导入数据以.csv格式保存2)变量名要和txt文档中的变量名一致,输入完记得先保存3)注意文件选择正确的文件格式,以及提前预览一下内容 是否有出现乱码情况,如果有乱码情况 重新保存 csv文件,并设置为:utf-8即可4)如下图批量测试用例运行成功,可在响应正文中参考输入参数是否正确(未设置断言)3.全局变量全局变量是将这个变量设置成整个程序的都可以用,不用去区分环境设置。注意:当环境变量和全局变量 设置同一个变量时,优先使用环境变量。没有环境变量时,才优先使用全局变量具体步骤1.打开Postman,点击右上角的环境快速查看按钮2.选择Global,设置全局变量3.输入你要设置的变量名和变量,点击Save,进行保存4.引用全局变量,引用的方法为:{{变量名}}引用{{ip}}成功2.6关于postman的断言1)什么是断言:断言就是验证实际结果和预期结果是否一致,如果一致则用例通过,否则用例失败。从而判断是否是一个bug。2)完整的接口测试:请求--响应正文--断言3)断言的常见方法如下Status code:Code is 200 检查返回的状态码是否为200response body:contains string验证响应数据是否包含了某一字符串response body:is equal to a string验证响应数据是否等于某一个字符串response body:json value check校验返回结果中某个字段是否等于某个值tests中添加断言案例1:获取接口统一鉴权码 access_token,业务关键词:鉴权码 所以可以使用response body:contains string验证响应数据是否包含了某一字符串(其他函数使用方法一致,不再赘述)断言结果与实际结果一致四.postman和Jmeter的区别1.断言方面Postman用函数断言, Jmeter用元件进行断言。2.创建HTTP请求方面Postman请求的请求URL是一个整体,Jmeter分成了4个部分(协议、主机、端口、路径)。3.请求头方面Postman可以在请求中直接填写请求头信息, Jmeter需要通过添加http信息头管理器来添加请求头。4.支持的接口类型Jmeter的功能更强大,可以测试各种类型的接口,不支持的也可以通过网上或自己编写的插件进行扩展 postman常用来测试Rest接口。5.执行方面Postman:可以通过newman实现批量执行和保存结果Jmeter:可以通过ant实现批量执行和保存结果。各位小伙伴 如果觉得有错误的地方 可以在评论区回复,咱们一起讨论,关注我 一起学习软件测试,一起进步[耶]
本文出自快速备案,转载时请注明出处及相应链接。