接口是主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。
接口一般分为两种:1.程序内部的接口 2.系统对外的接口
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
接口数据返回的方式主要有两种:XML和JSON
XML方式:格式统一,数据共享比较方便,但是xml文件比较庞大,格式比较复杂,解析比较困难,解析代码复杂度高
Json方式:返回的数据为json,json是javascript主要支持的语言,数据格式较为简单,易于读写,易于解析,现在一般都是采用json格式。
由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
也可以用 接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。
1、Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
2、Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
3、Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
4、Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
5、Delete 请求服务器删除request-URL所标示的资源(请求服务器删除页面)
6、Trace 回显服务器收到的请求,用于测试和诊断
7、opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)
8、Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器
2xx:成功
200:OK,请求成功
201:OK,新的资源建立(post命令)
202:请求被接受,但处理未完成
204:OK,但没有内容返回
3xx:重定向:需要用户代理执行更多的动作
301:Moved Permanently永久转移(所请求的资源已被指派为新的固定URL)
302:Found 暂时转移(所请求的资源临时位于另外的URL)
304:文档没有修改(条件GET)
307:Temporary Redirect(临时重定向)
4xx:客户端差错
400:Bad Request 请求错误
401:Unauthorized 未认证(该请求要求用户认证)
403:Forbidden 不明原因的禁止
404:Not Found 未找到
5xx:服务器差错
500:Internal Server Error(服务器错误)
501:没有实现
502:错误的网关(网关或上游服务器来的无效响应)
503:Service Unavailable(一般是访问人数过多)
1.get请求无消息体,只能携带少量数据,且不安全
post请求有消息体,可以携带大量数据,且安全
2.携带数据的方式:
get请求将数据放在url地址中
post请求将数据放在消息体body中
3.GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
添加请求信息,请求方式为POST,添加完成后点击运行即可查看结果,一个简单的POST请求就创建完成了
在KEY中选择File类型,点击VALUE中的Select File按钮选择文件
当我们想切换环境但又不改变请求的参数和路径时,我们需要手动的把请求的域名给替换掉,如果接口多的话就会显得很麻烦,所以这里我们可以把域名设置为一个全局变量,到时候只需要改变变量的值就可以轻松搞定切环境的问题了
点击右上角小齿轮的图标,然后点击Add添加一个环境命名为测试环境,并在key和value中添加对应的值,然后回到主界面,把之前的url改成两个花括号引用key,点击运行,查看接口返回成功。
选择Tests,再到右边列表选择response body:containg string,修改代码中需要断言的字段,点击Send运行,然后点击返回结果中的Test Results查看断言是否成功
点击文件夹右侧的三角形展开,然后点击Run进入设置页面
设置好运行参数
运行后查看返回结果
从左到右分别为:
(1)清除当前会话
(2)停止记录
(3)开始限流/停止限流
(4)开始断点/停止断点
(5)根据所写内容撰写新请求
(6)重发选定请求
(7)工具
(8)设置
显示模式:有结构和序列两种模式
(1)结构模式:可以很清晰的看到请求的数据结构,而且是以域名划分请求信
息的,可以很清晰的去分析和处理数据。
(2)序列:可以看到全部请求,这里的结果以数据请求的顺序来显示,可以根据时间、
大小等自由排序
在线上环境通常有些因为网速慢导致的 bug,在本机无法重现,那时候就很抓
瞎,模拟网速功能支持对带宽、利用率、往返延迟、字节进行配置,并且支持
3G/4G 或者其他网络模式。
上方工具栏的代理—限流设置—启用限流
(1)软件下方的过滤可以进行简单的过滤
(2)上方工具栏的代理—记录设置—包括—添加
可以对网络请求进行过滤。
然后填入需要监控的协议,主机地址,端口号等。这样就可以只截取目标网站的封包
了。
然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。
当我们测完测试环境后想切换到生产环境时一般是让开发重新打包,让他们把请求改为生产环境。其实用Charles,我们也可以做到不用开发打包而实现切换环境,这就用到映射了。
映射分为远程映射和本地映射
(1)远程映射是直接把某某域名映射到另外一个域名
(2)本地映射是访问这个域名直接读取本地文件里的内容
远程映射
(1)工具→远程映射→启用→添加
(2)配置参数,比如把百度映射到好123,点击确定后保存。
(3)查看结果,输入的百度地址,但是页面却是好123的页面,这就代表映射成功了
(2)配置参数,点击选择按钮选择文件,点击确定后保存。
(3)查看结果,输入百度的地址,页面内容显示的为我本地文件内保存的内容。