1、接口测试概念、接口测试流程及接口测试原理0接口测试详解The concept of iinterface test,interface test procedure and interface test operation steps.接口测试怎么做?接口测试做什么的?一二疑问(学习目标)为什么要做接口测试?前后端移动端由来不同段的进度不同,需要对最开始出来的接口进行接口测试接口测试的优点?(接口测试给我们带来了哪些好处?)010203节约时间,缩短项目时间节约时间,缩短项目时间提高工作效率提高工作效率提高系统的健壮性提高系统的健壮性目录 Contents接口测试简介接口测试工具接口测试流程0
2、20252022-11-2401 接口测试概念0303第一章 SECTION62022-11-24接口的概念从IT的角度出发,主要是子模块或者子系统间交互并相互作用的部分。虽然接口的形式各有不同,但是从测试角度来说,需要测试的内容大致是相同的,功能,性能,安全。硬件的驱动程序Webservice接口API数据库系统的访问接口http rest接口接口的概念72022-11-24 接口测试:测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的交互点。u接口测试的概念接口测试概念8原理接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接
3、收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。接口测试原理目的测试接口的正确性和稳定性(持续集成是接口测试的核心)。9 1)LoadRunner:一款商业性能测试工具,用来做接口测试,很好很强大 2)Jmeter:一款开源的性能测试工具,操作简单,方便,既有jdbc request操作数据库数据,也有http request和soap request应对测试 3)poster:火狐浏览器自带接口测试工具,插件中安装即可,界面简单明了,容易上手。4)postman:谷歌浏览器的扩展工具,谷歌商店中选中安装,界面同poster差别不大,界面简洁 5)S
4、oapUI:开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试;该工具既可作为一个单独的接口测试工具使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。常用的接口测试工具10单一接口组合接口结构检查接口测试应该测什么?11接口测试应该测什么?单一接口测试主要测试的是输入输出值,一些具有业务意义的值需要特别测试(例如,1和2分别代表两个测试场景,那么就不能够把他们看成是等价类,需要分开测试单一接口12接口测试应该测什么?组合接口测试主要是通过组合多个单一接口,来测试一个业务场景Example:测试
5、购物网站的一个下单的功能,那么因为在下单之前还有一些流程,所以要测试一个场景。测试:搜索商品-选中商品-添加进购物车-提交订单-支付(提交订单时还涉及到地址的选取等)注:涉及到如果使用从cookie或者session在本例中的区别:如果使用cookie加入购物车,那么换一台电脑购物车里的商品就不存在了,但如果使用的是session,购物车里面的东西就一直存在,即:cookie是本机作用的,session不止于本机作用组合接口13接口测试应该测什么?(1)检查返回值的结构是否正确,如是json类型还是xml类型的数据(2)字段名称是否正确等结构检查14调用方式 HTTP调用 (注意:提交数据,一
6、定使用POST方式,不能使用GET方式。)其他方式参数格式校验 必选项检查 非必选项默认值 类型 取值范围 长度 全/半角、大/小写转换。返回结果 与需求一致(返回码及返回字段)。每种错误要有单独且明确的错误码。接口测试内容15功能逻辑路径测试异常测试其他异常场景 通过查数据库或缓存等验证数据是否处理正确。通过其他辅助途径进行验证03.路径测试 当被测接口的实现方法中,判断逻辑复杂分支多,且判断中又调用了其他的接口,此时必须要进行路径覆盖测试。02.异常测试 接口测试中主要测试接口正常逻辑,但仅逻辑测试不能保证数据的安全及程序接口在异常情况下的逻辑处理的正确性。04.其他异常场景 研发的项目,
7、有些项目是底层使用的系统,根据项目特点,可能会存在特殊的异常场景。例如:堵命令,支付的异步操作,支付消息重试等。01.功能逻辑接口测试内容16接口测试的依据接口测试的依据测试依据-需求规范(接口文档)资源评测资源评测用画像用画像质量评测质量评测用户反馈用户反馈接口文档包含如下内容:1、接口概述:1)接口名称2)接口功能3)接口类别4)提交者、提交时间、需求来源及时间要求2、HTTP请求方式3、认证说明4、请求限制说明5、请求参数说明 参数名、是否必选、类型、取值范围、描述(非必选项的默认值)6、相关约束7、注意事项8、调用示例9、返回说明1)返回数据格式2)返回结果示例3)错误代码及返回说明1
8、7可以通过开发脚本代码进行测试。可以通过开源免费的接口调用调试工具测试或者自动化工具,如:Postman,jmeter等。可以通过App手动测试,结合抓包工具分析,如:Fillder/Charles等。接口测试内容18111102 常见的接口测试及接口测试流程第二章 SECTION192022-11-24常见的接口测试我们常说的接口一般指2种1)API:应用程序编程接口 application2)GUI:图形用户界面(接口)这里我们主要说API接口测试20思路01020304Get方式是从服务器上获取数据;在做数据查询时,建议用Get方式;如:公共服务部五大服务接口、搜索接口、博客访客系统接口
9、等。Post方式是向服务器传送数据;在做数据添加、修改或删除时,建议用Post方式;如:微博图片上传图片接口、Picself API接口等。这个方法比较少见。HTML表单也不支持这个。本质上来讲,PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。Delete:删除某一个资源。基本上这个也很少见。接口传递数据的方式(接口的分类)21不同接口类型差异参数提交方式请求数据大小post-:webform大Get:服务器,小安全性Post安全Get相对不安全22模块接口测试是单元测试的基础。
10、它主要测试模块的调用与返回例如:package com.java.base;public class InterfaceTest /求两个整数相加的和 public static int add(int a,int b)return a+b;public static void main(String args)/测试整数相加 int resule=add(1,2);if(resule=3)System.out.println(success!);else System.out.println(fail!);模块接口测试模块接口测试23流程惹的祸有一天,领导嘱咐我让我做一下支付接口是否正确?给
11、了我一整天的时间。我当时挺高兴的,想这不就是下个订单,支付一下吗?很简单第二天,我还没到公司,领导就来电话了(无法下单),问昨天的接口测试了没有?如果测试了,把你的测试用例和测试数据发过来看看。我当时就傻眼了!24接口测试流程25为什么要讲接口测试流程熟悉接下来要干的事情面试用掌握基础知识26接口测试流程和黑盒测试流程相同27111103 http请求第二章 SECTION282022-11-24http请求的组成httphttp010203HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。HTTP遵循请求(Request)/应答(Respo
12、nse)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。请求正文请求行消息报头http请求的组成http请求的组成GET/index.html HTTP/1.1,请求行是请求消息的第一行,由三部分组成:分别是请求方法(GET/POST/DELETE/PUT/HEAD)、请求资源的URI路径、HTTP的版本号请求行请求头中的信息有和缓存相关的头(Cache-Control,If-Modified-Since)、客户端身份信息(User-Agent)等等。例如:Cache-Control:max-age=0Cookie:gsScrollPos=;_ga=GA1.2.
13、329038035.1465891024;_gat=1User-Agent:Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/51.0.2704.84 Safari/537.36请求体是客户端发给服务端的请求数据,这部分数据并不是每个请求必须的。请求正文请求头消息报头思路getPostPutDeleteGet方式是从服务器上获取数据;在做数据查询时,建议用Get方式;如:搜索接口、博客访客系统接口等。Post方式是向服务器传送数据;在做数据添加、修改时,建议用Post方式;如:微博图片上传图
14、片接口等。PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。Delete:删除某一个资源。基本上这个也很少见。接口传递数据的方式32Http响应格式响应正文状态行消息报头33http响应状态行位于响应消息的第一行,有HTTP协议版本号,状态码和状态说明三部分构成。如:HTTP/1.1 200 OK状态行消息报头服务器传递给客户端用于说明服务器的一些信息,以及将来继续访问该资源时的策略。是服务端返回给客户端的HTML文本内容,或者其他格式的数据,比如:视频流、图片或者音频数据。响应正
15、文消息报头状态响应码1xx指示信息-表示请求已接收,继续处理3XX重定向-要完成请求必须进行更进一步的操作5XX服务器端错误-服务器未能实现合法的请求2XX成功-表示请求已被成功接收、理解、接受4XX客户端错误-请求有语法错误或请求无法实现状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值1401 Unauthorized/请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用400 Bad Request /客户端请求有语法错误,不能被服务器所理解403 Forbidden /服务器收到请求,但是拒绝提供服务500 Internal Server E
16、rror/服务器发生不可预期的错误200 OK /客户端请求成功常见状态代码234567404 Not Found /请求资源不存在,eg:输入了错误的URL503 Server Unavailable /服务器当前不能处理客户端的请求,一段时间后可能恢复正常111104 接口文档与接口测试用例第二章 SECTION372022-11-24接口测试流程中的重点是什么?测试用例!382022-11-24为什么要设计测试用例?(一)理清思路,避免漏测(二)提高测试效率(三)跟进测试进度(四)告诉领导做过没有理清思路,就进行随机测试,在以后你会发现你一定有漏测的情况出现(一些关键的业务点),那么上线
17、后难免会出现一些bug当我们有了思路,后面就只需要按照这样的思路去测试就好了,这样的效率将会很高当领导问你进度时,你就能很方便的知道自己已经做了多少,还剩下多少如果项目上线了,出现了问题,追究责任的时候,如何避免这个问题呢?通过用例体现这个问题(五)跟进重复性工作如果让你大量的重复的去做一件事情,你能保证你做的一样吗?但是根据用例,就不会出现漏测的情况392022-11-24用例设计功能逻辑业务异常安全402022-11-24用例设计-功能用例设计0102验证功能是否实现了。功能是否正常功能是否正常以登录为例,如果接口文档中写的是loginname,开发却将参数写成了username,虽然接口
18、实现了,也是不对的功能是否按照接口文档实现功能是否按照接口文档实现412022-11-24用例设计-逻辑业务01下单,首先要验证过是否登陆成功,header是否有业务依赖是否有业务依赖422022-11-24将参数或数据值修改为关键字,如echo,null关键字数据关键字数据数据为空数据为空如输入不存在的用户名密码错误数据错误数据长度不一致长度不一致用例设计-异常用例设计参数异常数据异常1 12 2将参数或数据值修改为关键字,如echo关键字参数关键字参数参数为空参数为空如loginname-username,password-pwd错误参数错误参数多、少参数多、少参数数据表在创建时,字段都有长度限制432022-11-24用例设计-安全用例设计如下单或有逻辑业务依赖时(一)(一)cookiecookie(二二)headersheaders移动端的接口测试中应用到(三三)唯一识别码唯一识别码442022-11-24PPT模板下载: 谢谢接口测试总结