接口测试-小白科普篇

1.什么是接口?

  在说接口之前要先明确一个前端、后端的概念。前端是什么呢,对于web端(例如电商)来说,打开的网站,这都是前端,这些都是html、css写的;对于app端来说呢,它就是我们用的app,android或者object-C(开发ios上的app)开发的,它的作用就是显示页面,让我们看到漂亮的页面,以及做一些简单的校验,比如说非空校验,咱们在页面上操作的时候,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时候扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。接口就是一个前、后端的一个桥梁。前端展示的一个页面,但是这些数据要通过接口从服务端去获取。

2.接口请求的分类?

  接口分为系统对外的接口和程序内部的接口,一般常见的分两类:基于http协议api接口和基于web service接口。

  2.1 基于http协议的api接口,走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,具体分为get、post、put、delete等方法。最常见的就是get和post等方法。

  2.2 基于web service的接口,大多数对外接口会实现web service方法而不是http方法,考虑到安全,方便和外部对接,共享一些数据为目的。

    1) SOAP类型,走soap协议通过http传输,请求报文和返回报文都是xml格式的。遵循一种特殊的xml消息格式Content-type设置为: text/xml任何数据都可以xml化,由于要进行xml解析,速度可能会有所降低。测试人员在测试的时候都用通过工具才能进行调用,测试。

    2) RMI类型,远程方法调用,针对于java语言的一个接口。在tcp协议上传递可序列化的java对象,只能用在java虚拟机上,绑定语言。

    3)RPC类型:远程过程调用是一种协议,程序可使用这种协议向网络中另一台计算机上的程序请求服务。

3. 接口的组成

      接口一般由请求地址(URL)、请求方法(GETPOST)、请求参数(入参和出参)组成,部分接口有请求头header。开发提供的接口文档里包括接口和接口说明,一般都会写明白的。或者这些东西通过抓包都是可以看到的。

  标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔,一般存放cookie、token等信息。header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。

4.什么是接口测试?

  接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

  接口测试也是功能测试的一种。需要模拟用户的操作,只是它没有页面,没有经过前端,是通过接口来提供,也就是说通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果。这样减去了手工操作。

5.为什么要做接口测试?

  ①从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

  ②检查系统的异常情况的容错能力

  ③能够尽早的发现问题,符合质量控制前移的理念

  ④接口测试低成本高效益,因为接口测试可以自动化并且是持续集成的。

6.怎么做接口测试?

  需要先了解get请求和post请求, 如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送。
 6.1GET请求和POST请求的区别:
    1)GET使用URL或Cookie传参。而POST将数据放在BODY中。
    2)GET的URL会有长度上的限制,则POST的数据则可以非常大。
    3)POST比GET安全,因为数据在地址栏上不可见。
    4)一般get请求用来获取数据,post请求用来发送数据。
  其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。

 6.2 http状态码

  6.2.1 http状态码

  当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

  HTTP状态码的英文为HTTP Status Code。

  下面是常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

  6.2.2 http状态码分类

  HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

  1**:信息,服务器收到请求,需要请求者继续执行操作

  2**:成功,操作被成功接收并处理

  3**:重定向,需要进一步的操作以完成请求

  4**:客户端错误,请求包含语法错误或无法完成请求

  5**:服务器错误,服务器在处理请求的过程中发生了错误

  

   6.3  怎么测试接口

  一般又有两种:通用接口测试,业务逻辑接口测试;

  6.3.1通用接口测试:验证性测试,参数组合测试,接口安全性测试,异常验证;

    1)验证性测试就可以按照接口文档上的参数,正常传入,是否可以返回正确的结果。

    2)参数组合测试:一个接口含有一些字段,这些字段的值不同,请求后,返回的数据可能不一样,通过改变接口各个参数的传值及参数的不同组合来测试系统是否存在潜在问题。

    3)安全测试,如一些人试图绕过验证或者绕过身份授权来做一些操作;一些敏感字段接口是否作了参数加密,或者用户的隐私信息是否符合一些安全规则等。

    4)异常验证:不按照接口文档上的要求输入参数值,来验证接口对异常情况的校验。

  6.3.2 业务逻辑测试,根据系统业务,构造数据来进行测试。

        6.3.3  遇到传参有加密的情况怎么处理

                1)  测试环境中去掉加密逻辑后进行测试

                2)  让开发提供加密工具

                3)自己了解加密算法,自己编写代码进行加密后测试

原文地址:https://www.cnblogs.com/lhy-qingqiu/p/13423392.html