2345技术员联盟

深度解读接口测试

  • 来源:未知 原创
  • 时间:2018-05-18
  • 阅读:
  • 本文标签:

     接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。接口测试作为集成测试的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。


    接口测试分为两种,一种是webservice接口,走soap协议通过http传输,请求报文和返回报文都是xml格式的,测试时通过工具soapUI进行测试。使用情况比较少;另一种http api接口,走http传输协议,通过路径来区分调用的方法,最常用的是get和post请求。上面说过,get和post请求是通过路径来区分的,get请求的请求参数都是写在URL里的,格式为:http://url?param1&param2。而post的请求一般都是写在body里的,可能是key-value格式,或者json串格式,也可能是上传一个文件。。。那么问题来了,get请求和post请求的区别在哪里呢?我们百度时,大多数的答案是这样的:get请求可以在浏览器中请求到,post请求的测试需要借助工具,get请求使用url和cookie传参,post的数据放在body中,post比get更安全,因为传递的参数在url上是看不到的,get请求的url会有限制,而post请求的数据可以非常大,一般get请求是来获取数据,post请求是传递数据的,实,对于现在飞速发展的互联网来说,上面的说法已经不严谨了。首先,post请求的参数也可以写在url里,但是这种情况不多见;其次表面上看起来,post利用body传参,比get的url传参安全,但其实只要用抓包工具(fiddler,Charles等),post的参数也是一览无余;再次,现在的浏览器非常强大,可以输入支持很长的URL,所以也不再有限制一说了。这么说来,种种区别只有最后一条是最根本的了。


    怎么来测试接口呢?根据什么来测呢?这就需要开发提供的接口文档了,接口文档和功能测试的需求说明书的功能是一样的。包括:接口说明、调用的url,请求方式(get or post),请求参数、参数类型、请求参数说明,返回结果说明。有了接口文档后,我们就可以设计用例了,一般接口测试的用例分为以下几种:通过性验证,说白了就是传递正确的参数,是否返回正常的结果,参数组合,因为参数有必传和非必传,参数的类型和长度,以及传递时可能业务上的一些限制,所以在设计用例时,就要排列组合这些情况,保证所有情况都能覆盖到,接口的安全性,这个又分为几种情况:绕过验证,比如提交订单时,在传递商品价格参数时,修改商品价格,就要看后端有没有验证了。或者我支付时,抓个包将订单金额一改,如果能以我改后的金额支付,那这个借口就有问题了。


    绕过身份验证,就是某个功能只有有特殊权限的用户才能操作,那我传递一个普通的用户,是不是也能操作呢,参数是否加密,这个关系到一些账户的安全,比如我们在登录一些网站时,它要将我们的登录信息进行加密,如果不加密我们的信息就会暴露,危害性极大。密码安全规则,设置密码时复杂程度的校验。根据业务逻辑来设计用例,用例设计完了,用什么来测试接口呢?我们可以借助一些工具,比如postman和jmeter。postman使用比较简单,可以在列表中选择请求方式,在输入框中输入URL,如果是get请求,直接点击send就可以看返回结果了。1、什么是接口测试?接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等,为什么要做接口测试互联网的快速发展,公司内部系统或与外部系统的关联越来越多,一个业务流程关联多个后端系统,它们的关联都是基于接口来实现,接口测试可以将复杂的系统关联进行简化,只要做好每个接口的测试就能够较好的保证系统质量。单个系统的变更,是否会影响到关联业务系统,比较难用常规的测试方面来覆盖相关的应用系统(例如使用此接口的外部 系统有N个,不可能每个做功能兼容性测试),但可以通过对接口功能的覆盖来验证是否影响它人对接口的调用。


    接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成,,可以减少人工回归成本与时间,缩短测试周期。接口相对于界面功能,会更底层一些,测试覆盖会更容易(如业务在调用接口时做了判断,当不满足条件时链接就不显示,此时从界面无法测试相关功能是否做好判断,通过接口就比较容易),接口测试范围,业务功能(包括正常、异常场景是否实现),业务规则(覆盖度是否全面),参数验证(边界、业务规则是否达到要求),异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试),性能测试(响应时间、吞吐量、并发数、资源要求),安全测试(权限验证、SQL注入等),接口测试的重点,检查接口返回的数据是否与预期结果一致。


    检查接口的容错性,假如传递数据的类型错误时是否可以处理。接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。接口的安全性,外部调用的接口尤为重要。做好接口测试的前提,系统化的接口文档,传统的接口文档,一般采用word或wiki等系统来记录,从单次使用上似乎比较简单,因为大家会更习惯这样的操作,但这种形式存在比较大的问题:接口文档非标准化,无法直接与接口测试工具接口使用,接口维护困难,接口有变化时比较难标识清楚,沟通成本很高,系统化接口文档,例如rap(淘宝分源的一个系统),具备接口维护标准化、版本化管理、MOCK测试等功能;对标准化的接口内容做二次开发,可以直接导出Soapui等工具使用的格式,直接导入工具中使用,有以下好处:接口测试时不再需要手工输入相关字段,节省时间成本,版本化管理,能够清晰的知道哪些接口有变化。


    标准化的接口规范,接口管理是做好接口测试很重要的前提,如果一个系统有哪些接口都不太清楚,测试就很难覆盖到,接口管理建议采用以下方式:按接口提供方为单位进行首次划分,按接口使用方进行二次划分,再按业务模块进行细分,分类原则根据内容多少进行优化,不需要固定,如本身接口较少就没有必要分得过细,较多时就需要多划分模块,如:系统A,提供有 1、2、3、4、5、6、7、8、9 这9个接口,接口分别给B系统、C系统使用,其中1、2为公用接口,3、4、5为B专用,6、7、8、9为C系统专用,划分如下:按接口链接URL做为唯一,不同的接口参数做为接口变量,接口有参数变更时在原来接口上进行维护,而不是新增加接口,为接口增加版本号,方便清楚哪些接口本次有变更,易于维护用例。


本文来自电脑技术网www.it892.com),转载本文请注明来源.
本文链接:http://www.it892.com/content/pcfault/interface/2018/0518/95076.html

推荐阅读
热点排行
  1. 聚焦主板接口
  2. 电视HDMI接口,有哪些特别之处
  3. 深度解读接口测试
  4. 电脑常见外部接口知识普及
无觅相关文章插件,快速提升流量