接口测试原理
01
 

我们所说的接⼝测试就是开发⼈员把这个接⼝实现了,他需要去验证这个接⼝的实现是否正确。

 

但是这是⼀个后台的功能,这个开发也是⼀个后台开发,他去验证接⼝的时候,他不会想让前端⼈员介⼊,因为让前台⼈员介⼊的话会⽐较⿇烦。

 

那么他就需要⼀个⼯具来模拟前端界⾯。(前端其实就是提供⼀个窗⼝,既能让⽤户输⼊数据,并且还可以查看结果。)

 

接口测试实现
02
 

实际上我们做接⼝测试,还是“输⼊—处理—输出”这样的模式。

 

⽤户输⼊⼀串数据,然后让这个接⼝或者让这个后台功能来处理,然后检查输出结果跟期望是否⼀致。

 

这个其实也就是我们所说的⿊盒测试。也是我们做测试的⼀个常规的思路。

 

⽤户输⼊⼀串数据,然后让系统去处理,然后我们再去检查结果 跟期望是否⼀致。

 

功能测试是这么做的,接⼝测试实际上还是这么做。

 

但是相对功能测试⽽⾔,接⼝测试有⼀个⽐较明显的区别,就是输⼊不再是界⾯的,⽽是⼀个基于HTTP的请求;输出也不再是界⾯,⽽是 基于HTTP的响应。所以需要通过请求和响应分别来输⼊我们的数据以及检查我们的结果。

 

接口测试用例
03
 

其实接⼝测试和的功能测试是⾮常相似的,功能测试怎么做,接⼝测试还是怎么做。

功能测试⽤例,最核⼼的三个部分就是:输⼊、操作步骤和预期结果。

 

接⼝测试⽤例,其实主要的也就是这么三个部分。平时所说的测试⽤例设计⽅法,也就是对输⼊项进⾏各种不同的取值,然后再做组合。

 

拿登录来说,登录功能有⽤户名和密码,那⽤户名, 有正确的⽤户名和错误的⽤户名两种情况,密码有正确的密码和错误的密码两种情况。⽤户名和密码在⼀起就会产⽣⼀些组合:

 

1)⽤户名正确,密码正确;

2)⽤户名正确,密码错误;

3)⽤户名错误,密码的正确;

4)⽤户名错误;密码错误;

 

输⼊时,选择不同的数据组合会产⽣不同的测试场景,每⼀个场景都需要执⾏⼀遍。

 

功能测试是这么去做的,但是接⼝测试没有界⾯,也就没有办法输⼊,怎么办?

 

接⼝测试⾥有个东西叫参数,这个参数就对应了功能测试⾥的输⼊项。

 

所以,接⼝测试⽤例其实也就是对输⼊参数,做⼀个划分然后再做组合,形成接⼝测试⽤例。每⼀组测试⽤例执⾏后,肯定会得到不同的结果。

 

⽐如正确的⽤户名和正确的密码,结果是登录成功;错误的⽤户名或错误的密码,结果是 登录失败。那么只要思考,如何将参数取值和测试结果应⽤在⼯具中,这个问题就解决了。

 

接口测试工具
04
 

接⼝测试⼯具有很多,⽐如soapUI,postman,jmeter等。⼯具其实只是⼯具⽽已。

 

做接⼝测试⼀定要明⽩接口测试流程。

 

接口测试流程
05
 

1)设计操作步骤

 

请求,有⼀些请求是是单独的,有些请求是多个请求前后有联系的,这种情况就需要创建关联,那么我们需要了解请求的格式,规范以及如何做关联。soapUI,postman,jmeter⾥,都有关联。

2)设计数据⽤例

将数据⽤例写到Excel⽂档⾥,然后让⼯具读取Excel。Excel⾥有⼏组数据⽤例,就执⾏⼏次。循环执⾏(⾃动化),就可以让每⼀个⽤例被执⾏⼀次,那么每⼀个测试场景也就被运⾏到。

3)断⾔

也就是提前将预期结果写⼊到⼯具中,让⼯具⾃动化判断结果是否正确。不同的⼯具叫法不同,soapUI和Jmeter中叫做断⾔,postman中叫做tests。

4)执⾏并检查测试结果

执⾏很简单,对测试结果进⾏分析的话就需要了解协议。知道发出去了什么,返回了什么,才能够知道,到底哪个环节出了问题。

5) HTTP协议

HTTP协议⾮常重要。清楚了HTTP协议,再去使⽤⼯具其实就很容易,按照上⾯四个步骤就⾏。为什么是HTTP协议⽽不是其他协议?因为90%的系统都是HTTP协议的。

 

HTTP协议包含请求和响应,请求就是⽤户的输⼊,响应就是结果。我们通过请求去找参数,然后输⼊不同的参数值,然后组合成请求,只要这个请求是合法的,那么就 可以发出去,并且能够被服务器接收。

 

所以,⾸先要能够判断出来什么叫做合法请求。那么就需要去了解HTTP协议的请求的组成,请求的规范,知道哪些请求项是我们所关⼼的,哪些请求项是我们⼀定要遵循的,哪些项是我 们可以删除的。

接口测试JMeter
06
 

其实哪个⼯具都可以,但是jmeter有两个好处:

  • 它是中⽂版的,学习成本较低,postman和soapUI都是英⽂版的。

  • jmeter 既可以做接⼝测试,⼜可以做性能测试。

     

接口测试抓包
07
 

抓包⼯具推荐fiddler,两个优势:

1、简单好⽤

2、fiddler抓包后可以直接导出为jmeter脚本

 

⼀般情况下,做接⼝测试是有接⼝⽂档的 但是如果没有接⼝⽂档我们怎么做接⼝测试?这就需要抓包,请求我们是可以抓到的,响应如果抓不到,我们可以根据测试数据⾃⼰分析应该得到什么样的结果。

 

⼀个常见的问题,页⾯的输⼊框可能会有长度限制,⽐如限制只能输⼊⼗个字符,但是后台并没有做限制,这样很容易会导致出现⼀些数据库的异常,这样的问题可能在功能测试⾥⾯没办法发现,但是接⼝测试可以。

 

所以很多时候,接⼝测试,可以认为是功能测试的⼀种补充。它可以让我们的测试做得更深⼊,更全⾯。