参考网站:http://www.cnblogs.com/zoraliu66/p/6743126.html
1.什么是接口测试
1)接口测试是测试系统组件间接口的一种测试。(是什么)
2)接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点
3)接口测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
2.为什么要做接口测试
为什么=原因+目的+作用
1)由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。(什么导致的)
2)同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。(作用)
3)接口持续集成是为什么能低成本、高收益的根源。
4)现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
5)前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。(举例)
总结:由于系统复杂度不断上升,加上目前很多系统前后端架构是分离的,为了降低成本、提高测试效率以及满足系统安全要求,需要从接口层面进行验证;接口测试甚至可以实现自动化持续集成,可以减少回归测试的人力与时间、缩短测试周期,最终实现低成本高收益。像涉及到用户的隐私信息,如身份证、银行卡等是否加密传输是需要验证的。
3.怎么做接口测试
3.1步骤
1,拿到开发给的需求文档(输入参数,检出参数,URL地址,请求方式);
2.了解接口文档里实现的功能,测试点和测试范围;
1)数据验证:长度,格式,必填项,数据类型
2)功能逻辑:枚举值,节点组合
3.编写测试用例;
4.接口测试用例的评审;
5.用工具执行测试用例:选择所需请求方式发送url地址、请求参数;
6.根据返回参数分析结果,总结写报告。
3.2 步骤解析
1)URL地址内容:协议(http文本传输协议、https超文本加密协议,开放协议SOAPsoap),端口号(默认为88);
参考文献:http与soap协议的区别
2)请求方式:最基本的方法有4种,分别是GET,POST,PUT,DELETE
3)-如果输入参数比较多,比较复杂,最好用思维导图分析再写用例
4)接口测试工具用jemeter或者robotframework,两者各有各的优点,如果纯接口测试可以选择jemeter工具,如果想更好的管理用例,实现自动化,可以选择rf,两者原理差不多
5)请求参数:头信息不一定需要,cokies也不一定需要,根据具体情况而定
Post和get的区别 :
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作,实际上只要get与post就可以实现。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
1)Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,GET和POST只是发送机制不同,都是一种发送
2)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
ps1:安全指的是不修改数据方面,实际上从真正安全角度要post更安全,因为密码不会像get方式一样以明文方式发送,因为一旦被浏览器缓存,别人可以看到明文的密码就不安全了
ps2:幂等的意味着对同一URL的多个请求应该返回同样的结果
3)根据HTTP规范,POST表示可能修改、改变服务器上的资源的请求
3.3jemeter工具接口测试总结:
1)线程组------可以设置:线程数、循环次数及持续时间等
2)HTTP请求-----url(协议、服务器IP、端口号、路径)、parameters与Body Data(请求参数)、请求方法
ps:如果是xml或者Json格式则写在body data里,详解:【Jmeter】参数Parameters和Body Data
注意Json和xml格式的区别:Json有键值对,用{}括起来;Xml 是<> </>,值在中间
Parameters ------ xx=xx&xxx=xx格式的参数为GET或者POST请求中,url中带的参数值,如: 在一个这样的请求中/api/xx/xxx/xxxx?index=0&pagesize=100&thumb=1 ?号后面的可以写在url中,也可以写在Parameters中
Body Data----- json格式的是POST请求中的参数,POST请求参数时,看请求的格式,是否需要在请求中添加HTTP信息头管理器,将请求的Content-Type 或者 User-Agent 等进行定义
3)HTTP信息头管理器-----主要项Content-Type、User-Agent
4)HTTP Cookie 管理器-----装cookie信息,不一定需要
5)查看结果树-------查看运行的结果
6)CSV Data Set Config---------可设置变量
7)固定定时器-----设置时间
3.4抓包工具httpwatch的使用
抓包步骤:点击Record->执行动作->Stop
分析数据:
1)看"Overview"------url、result(看状态码status code---可以用来检查结果)
2)看"Headers"(‘’标头")-------Content-Type、Cookie、Referer(要去添加的)
3)看"postData‘’(post类型会有)-------有值(value)的都需要,如果为空则可不去添加
4)看content(返回数据)--------在查看结果时需要用来参考的数据
4.面试怎么回答---你的接口是怎么测试的?
(开头的总结)我觉得接口测试还是比较简单的,和功能测试差不多。
接口测试就是模拟客户端用户操作向服务端发送请求,是测试系统组件间接口的一种测试;主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点;重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
首先开发给我们一个需求文档,里面会标注一些参数信息,URL地址,是什么协议的(http协议还是https的,一般都是http协议的)请求方式(是post请求数据多一点)还是get(传输速度快一点)
然后对接口文档进行一个详细的分析,需要了解接口文档里实现的功能,测试点和测试范围。(我们主要测试参数的取值范围,它的一些边界这些都会测试,当他们取值成功或者失败我们都会去测,我们也会考虑一些参数的错误情况,当参数为空,或者参数多 一个或者少一个,或者参数不存在的时候,我们都会去测,看他返回的状态码是不是跟需求文档时候一致,如果不一致,那就是问题了)
然后再根据测试点编写测试用例,像我们编写测试的时候考虑实现什么功能来写测试点,然后参数的长度,格式,类型,参数组合,一些异常情况,
用例编写完之后,我们会做一个接口测试评审(因为一个人可能考虑不是那么全面)
然后用工具去执行测试用例,我们之前用的最多的工具就是jemeter,输入接口地址和请求参数,通过点击运行发送请求,然后看它的返回码和返回报文,分析。
(说完的总结)我觉得接口测试比功能测试就是多了一个检查点,检查它的返回码和返回报文是不是符合需求文档,重点就是请求和返回之前的参数校验和检查;如果有问题的话,我们会提交给开发进行修复,之后再做回归测试