九、接口自动化测试

一、接口的分类
1.1 第一种是代码内部的接口或称程序接口
  • 是程序模块间的接口,代码A与代码B在组合的时候,必然需要定义一些名称以及参数、类型。
  • 对于程序接口的测试,一般需要使用与开发程序接口相同的编程语言,通过对类、方法和函数的调用,验证其返回结果是否正确来进行测试。
  • 这种测试一般划分在白盒测试中,也算是集成测试阶段,既可以由开发人员自己完成,也可以由有良好编程能力的测试人员来做。
1.2 第二种接口是协议接口
  • 是系统与系统之间,通过网络数据的传递进行交互,这种类型的接口对底层代码做了封装,系统通过不同的协议提供接口对外提供调用。
  • 此类测试一般不涉及底层程序,也看不到代码,属于黑盒层面,可以通过各种手段将网络数据发送到接口从而得到接口的响应信息,达到测试的目标。
  • 这一类测试工作多数情况下由测试人员完成。通常所说的的接口测试主要是对协议接口的测试。
二、协议接口的分类
2.1 按系统不同的调用方式进行分类
2.1.1 系统与系统之间的接口
  • 系统与系统之间的接口,既可以是公司内部不同系统之间调用的接口,也可以是不同公司不同系统之间调用的接口。
    • 后者如微信、微博所提供的第三方登录接口,如果你开发的系统不想自建用户体系,那么完全可以调用这些接口来实现用户的登录。
2.1.2 系统内部,服务与服务之间的调用
  • 大多情况下是指程序之间的调用。
    • 假设系统开发一个用户查询接口,输入用户名,返回用户信息(性别、年龄、手机号、邮箱地址等),如果用户不存在则返回null。
    • 现在需要新开发一个用户抽奖的接口,该接口需要用户名和抽奖活动id,抽奖接口得到用户名后可以调用用户查询接口,如果用户查询接口返回null,那么抽奖接口就可以直接返回用户不存在了。
    • 这个例子中,用户抽奖接口调用的就是用户查询接口。用户查询接口和抽奖接口本质上就是程序开发的函数或方法,提供入参与返回值。
2.1.3 下层服务对上层服务的接口
  • 应用层
    • 可以认为是系统所提供的UI层功能。对于Web系统来说,就是浏览器页面上所提供的功能,如登录、注册、查询、删除等。
  • Service层
    • 可以理解为服务器所提供数据的处理。
  • DB层
    • 数据库(DataBase)主要用来存放数据。
  • 各层之间的调用过程
    • 首先应用层实现了一个用户查询的功能,需要用户输入查询的关键字,并显示查询结果。
    • 当用户使用查询功能时,首先底层调用Service层所提供的查询接口,查询接口得到应用层调用的查询数据;然后再通过DAO访问数据库,根据用户输入的查询数据,查询数据库中的数据。
    • 最后,将查询到的数据库数据返回给应用层,用户在应用层看到查询结果。
    • 在这个过程中,各层之间的交互就是通过接口,应用层与Service主要通过HTTP接口,Service 层与DB层主要通过DAO(Data Access Object)数据库访问接口。
2.2 按协议的不同进行分类
2.2.1 webService接口
  • 使用soap协议
  • 通过http传输,请求报文和返回报文都是xml格式的
  • 通常使用的工具SoapUI、jmeter、loadrunner等
2.2.2 http api接口
  • 使用http协议
    • HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是从万维网(www,World Wide Web)服务器传输超文本到本地浏览器的传送协议。
    • HTTP基于TCP/IP通信协议来传递数据(HTML文件、图片文件、媒体等)。
    • HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(即Web服务器)发送请求。
    • 通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串
    • 最常用的两种请求方式是get和post等方法
    • 通常使用的工具有postman、RESTClient、jmeter、loadrunner等
三、接口的组成
3.1 接口文档的内容
  • 接口说明
  • 调用url
  • 请求方法(get/post)
  • 请求参数、参数类型、请求参数说明、请求头header
  • 返回参数说明、请求响应的代码、响应内容 
3.2 http请求方法与请求参数
  • 参数是客户端向服务器发送的数据,有的可见,有的不可见。
  • GET请求
    • 发送指定参数的请求来取得服务器上的某一资源
    • 提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如
    • EditPosts.aspx?name=test1&id=123456
    • get请求数据不会出现在body中
  • POST请求
    • 向指定资源提交数据,数据被包含在请求体中(提交的数据放在HTTP包的Body中)
    • 不在url中出现
  • GET请求和POST请求的区别
    • GET使用URL或Cookie传参,而POST将数据放在BODY中。
    • GET的URL会有长度上的限制,而POST的数据则可以非常大。
    • 不同浏览器要求不同,如IE6要求最大256
    • POST比GET安全。
    • get请求能够被缓存,请求会保存在浏览器的浏览(历史)记录中,请求的数据会显示在地址栏中,不安全,请求的url能够保存为浏览器书签(收藏夹)
    • post请求不能被缓存,请求不会保存在浏览器浏览记录中;请求的数据不会显示的地址栏中,相对安全;请求的url无法保存为浏览器书签
    • 一般get请求用来获取数据,post请求用来发送数据。
    • get请求数据只支持ASCII类型,post请求数据类型没有限制,支持二进制数据。
3.3 header
3.3.1 标头 (header)是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,一般存放cookie、token等信息。
  • header和入参的关系
    • 它们都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。
  • Cookie
    • 万维网站点使用 Cookie 来跟踪用户。
    • Cookie表示在 HTTP 服务器和客户之间传递的状态信息。
    • 使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。 
  • Session
    • Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间,以及如果需要的话,可能还有一定的操作空间。
    • Session是用于保持状态的基于 Web服务器的方法。
    • Session允许通过将对象存储在 Web服务器的内存中在整个用户会话过程中保持任何对象。
3.3.2 请求头信息
  • 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
  • 常用的请求报头如下:
    • Accept:浏览器可接受的MIME类型。
l MIME用于设定某种扩展名的文件用哪种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
    • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。
    • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时会用到。
    • Connection:表示是否需要持久连接。从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性。
    • Host:初始URL中的主机和端口,它通常是从HTTPURL中提取出来的。
    • User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其他属性告诉服务器。
3.3.3 响应头信息
  • 响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
  • 常用的响应报头如下:
    • Content-Type:表示后面的文档属于哪种MIME类型。
    • Date:当前的GMT(国际时)时间。
    • Server:包含了服务器用来处理请求的软件信息。
    • X-Frame-Options:用来给浏览器指示允许一个页面可否在、
posted on 2023-11-06 02:31  Damon_Ding  阅读(11)  评论(0编辑  收藏  举报