一、Web接口测试概念
Web 应用的接口测试大体分为两类:模块接口测试和Web 接口测试。
1.模块接口测试,主要测试模块之间的调用与返回。当然,我们也可以将其看作是单元测试的基础。它主要强调对一个类方法或函数的调用,并对返回结果的验证,所用到的测试工具与单元测试相同。
2.Web 接口测试又可分为两类:服务器接口测试和外部接口测试。服务器接口测试:指测试浏览器与服务器的接口。我们知道Web 开发一般分前端和后端,前端开发人员用HTML/CSS/JavaScript 等技术,后端开发人员用PHP/Java/C#/Python/Ruby 等各种语言。用户的操作是在前端页面上,需要后端提供服务器接口,把前端通过调用这些接口来获得需要的数据,通过HTTP 协议来实现前后端的数据传递。
外部接口测试:指调用的接口由第三方系统提供。典型的例子就是第三方登录,例如新上线的产品为了免于新用户注册账号的麻烦会提供第三方登录,那么用户在登录的时候调用的就是第三方登录的接口,用户登录信息的验证由第三方完成,并返回给当前系统是否验证通过。当然,接口测试也有相应的类库或工具,例如测试HTTP 的有HttpUnit、Postman 等。
二、接口使用场景
接口测试的场景一般分为以下三种:
1.系统与系统之间的调用
系统与系统之间的调用主要产生于系统的Service 层,很典型的例就网站的第三方登录。在A 网站输入B网站已经注册过的用户名密码,A 网站调用B 网站提供的接口,将用户在A 网站输入的用户名密码交由B 网站验证,如果B 网站验证通过将会返回给A 网站一个登录成功的信息,A 网站允许用户登录A 网站。
2.上层服务对下层服务的调用
应用层,从认知上你可以看成是系统所提供的功能。对于web 系统来说,你可以认为是浏览器页面上所提供的功能,按钮、输入框等。
Service 层,可以理解为服务器所提供数据和逻辑的处理。
DB 层,(Data Base) 数据库主要用来存放数据,例如用户的个人信息,商品的信息与价格。访问对象,它是第一个面向对象的数据库访问接口。
举个例子来说明各层的工作过程,首先是Service 提供了一个查询接口,这个接口只需要一个参数(查询的关键字);然后应用层提供了一个输入框,需要用户输入查询关键字,并且还提供了一个查询按钮用于提交查询的关键字。
当用户输入查询关键字并点击提交按钮后,相当于调用的查询接口,查询接口需要对用户提交的关键字做各种判断,为空怎么处理?为特殊字符怎么处理?后然,通过DAO 层调用数据库,根据关键字查询表中的数据,然后再将拿到的数据返回给应用层,应用层再负责将数据展示到web 页面上。
在这个过程中,各层之间的交互就是通过接口,应用层与Service 主要通过HTTP 接口。Service 层与DB层主要通过DAO(Data Access Object)数据库访问接口,对于Python 与MySQL 之间,我们前面介绍的PyMySQL驱动就扮演着这样的角色。
3.系统内,服务与服务之间的调用
系统内部,服务与服务之间的调用,这里也可以看作是程序与程序之间的调用。
假设系统开发一个用户查询接口,输入用户名,返回用户信息,如果用户不存在则返回null;现在需要新开发一个用户抽奖的接口,该接料需要用户名和抽奖动id,抽奖接口得到用户名后可以调用用户查询接口,如果用户查询接口返回null,那么抽奖接口就可以直接返回用户不存在了。在这个例子中,用户抽奖接口就调用的用户查询接口。