什么是接口测试?接口测试很难学吗?No!且听作者“沉默小生”向你娓娓道来。
最近有朋友问我接口测试是怎么回事?怎么测?我想说,其实很简单,和功能测试一样,把它当一个没有界面的应用去理解,就可以测了。
功能测试大家应该都熟悉吧:看流程设计流程测试点;看字段要求设计功能测试点,然后考虑考虑输入、考虑考虑输出,再加上些异常操作、兼容、易用性等问题验证,感觉就差不多了(业务复杂程度暂且不管)。而上面说到的这些功能测试的考量,其实也是接口测试的测试点。
接口嘛,顾名思义,就是对接时的一个口子。对于App来说,其实就是咱们在点点点时,移动端(app)与服务器(Server)数据交互时的一个交互地址,英文叫API,也有就叫URL的。我接触的接口是Rest风格的,由请求(Request)和响应(Response),以及相应的信息头(Request Header和 Response Header)组成。而咱们看到的URL,实际上是接口请求的地址(Request URL)。在操作App时,会将操作或填入的信息,都转成一一对应的参数,然后在Request Header里写好请求的识别规则,请求接口,之后服务器接收并解析处理。处理好后再写好的结果的识别规则,再返给App解析加载结果。
例如:
Remote Address:125.39.7.139:80
Request URL:http://www.bilibili.com/api_proxy?app=tag&action=/tags/archive_list&aid=4177630&nomid=1
Request Method:GET
Status Code:200 OK
Response Content: {"code":0,"result":[{…}]}
这是bilibili视频播放页中,一个关于视频标签的接口(返回结果我人工省略了,太长)。可以看到,它包含①Remote Address、②Request URL、③Request Method、④Status Code、⑤Response Content五个部分。分别为①接口连接的服务器IP地址、②接口请求URL、③接口请求方法类型、④接口状态值、⑤接口返回结果。而这几个东西,咱们在使用app时,每个页面的数据交互,都会请求次接口,都会包含这些东西。而除IP地址只要知道连得是哪即可,下面会详细说下后几个,以理解接口是怎么用的。
Request Method:请求方法,该接口是GET的,一般常见的有GET、POST、PUT、DELETE,对应数据库的增删改查四种情况(CREATE -PUT、QUERY-GET、UPDATE-POST、DELETE-DELETE),作为概念理解,了解什么操作大概用什么请求方法即可。
Request URL:请求的地址,大家抓包时看到的URL就是它,它按“网络协议类型(http)+ “://” + 域名(www.bilibili.com,英文host) + 路径(/api_proxy,英文Path) + “?” + 参数(app=tag&…到结尾)组成。根据操作的不同,使用不同的请求方法和参数的,以让服务器接收进行不同的处理。一般查询用GET、提交用POST,参数分为key和value。GET方法,参数会附在路径Path后面,测试时就测试按照接口文档传入预期的值,是否能得到预期结果,以及检查是否有遗漏的选项值、有没有缺少必填字段情况等;POST方法,参数放入Header后面进行传参,测试时就测试按接口文档传入预期参数,是否能得到有效的修改、传入异常值(等价类、边界值等)是否能返回合适的容错提示等。(有兴趣的可以扩展了解下:http://blog.csdn.net/mfe10714022/article/details/39692305,Header内容直接百度百科即可)
Status Code:接口状态值,用于表明当前接口处于什么状况,一般Code值为200,表示接口正常;500,表示服务器内部错误;404,表示找不到数据等等。接口状态值很多,但要求都是一种业务结果,对应一个接口状态值。所以在接口测试时,除了参数的测试,也需要测试一下接口的状态值是否能满足业务中的各种结果、并与其结果都是一一对应的。(有兴趣请扩展:http://www.tuicool.com/articles/Ermmmyn)
Response Content:接口返回结果,顾名思义就是返回的数据,就是咱们在app上见到的那些显示数据。格式有的是JSON的、有的是HTML的,JSON格式的,百度下键值对和UML类图,按key和value对应着看,然后研发要个UML类图,方便理解。HTML的,最好复制下来,拖到浏览器打开,方便理解。
大概接口就这么些东西,url、请求、相应、参数、状态值、UML图,了解这些,大概就对接口有个足够的认识了。抓过包的、没接触过接口测试的童鞋们,可以开始试一试了,自己动手搞搞,快速加深对接口的理解,来对增加你的测试纬度吧!