接口测试

什么是接口?

  简单来说,接口就是前后端的桥梁,一个传递数据的通道。
  一般来说接口有两种,外部接口和内部接口
  1.系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
  2.程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
  接口的分类:
  1、webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
  2、http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;(json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,他与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原生对象,可以转换成java中的类对象等。)

为什么要做接口测试

  现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了),需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
  如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移也叫测试左移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。
  接口测试的必要性就体现出来了:

①、可以发现很多在页面上操作发现不了的bug

②、检查系统的异常处理能力

③、检查系统的安全性、稳定性

④、前端随便变,接口测好了,后端不用变

接口测试的策略

  接口测试也是属于功能测试,所以跟我们以往的功能测试流程并没有太大区别,测试流程依旧是:1.测试接口文档(需求文档) 2.根据接口文档(开发提供的)编写测试用例(用例编写完全可以按照以往规则来编写,例如等价类划分,边界值等设计方法) 3. 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期。

接口测试用例的设计

  Web接口测试其实可以等同于功能测试,只是被测对象是接口,无界面交互而已,所以用例设计的方法是通用的。
常用的测试方法如下:
1、等价类划分法
2、边界值分析
3、因果图判定法
4、场景分析法

1.接口测试用例设计关注点

1、接口的协议类型(http还是https…)。
2、 接口请求的方法(get/post…)。
3、 参数是否必填。
4、参数间是否存在关联。
5、参数取值范围。
6、业务规则。

2.接口测试用例设计思路

  1. 优先级–针对所有接口。
    1、暴露在外面的接口,因为通常该接口会给第三方调用。
    2、供系统内部调用的核心功能接口。
    3、供系统内部调用非核心功能接口。
  2. 优先级–针对单个接口。
    1、正向用例优先测试,逆向用例次之(通常情况,非绝对)。
    2、是否满足前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 >参数数据类型自身的数据范围值限制。

3.接口测试用例设计分析

  通常,设计接口测试用例需要考虑以下几个方面:
1、是否满足前提条件
有些接口需要满足前置条件,才可成功获取数据。常见的,需要登陆Token。
逆向用例:
针对是否满足前置条件(假设为n个条件),设计0~n条用例。
2、是否携带默认值参数。
正向用例:
带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计1条用例。
3、业务规则、功能需求。
这里根据实际情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例
4、参数是否必填。
逆向用例:
针对每个必填参数,都设计1条参数值为空的逆向用例。
5、参数之间是否存在关联。
有些参数彼此之间存在相互制约的关系。
逆向用例:
根据实际情况,可能需要设计0~n条用例。
6、参数数据类型限制。
逆向用例:
针对每个参数都设计1条参数值类型不符的逆向用例。
7、参数数据类型自身的数据范围值限制。
正向用例:
针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例。
逆向用例:
针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例。
针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例。
以上几个方面考虑全的话,基本可以做到如下几个方面的覆盖:
主流程测试用例:正常的主流程功能校验。
分支流测试用例:正常的分支流功能校验。
异常流测试用例:异常容错校验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值