• 12
  • 13
分享
  • 接口测试(详细文档)——软件测试圈
  • 恬恬圈 2021-04-07 10:04:35 字数 2958 阅读 2292 收藏 13

接口测试

接口测试常用工具:postman,jmeter (现在主流的两个测试接口工具)

接口分类 :

把接口分为两类:程序接口和协议接口。

  1. 程序接口,也可以看作是程序模块接口,具体到程序中一般就是提供了输入输出的类、方法或函数。 对于程序接口的测试,一般需要使用与开发程序接口相同的编程语言,通过不同的传入不同的参数,来验证 程序接口的功能。

  2. 协议接口,一般指系统通过不同的协议来提供的接口,例如 HTTP/SOAP 协议等。这种类型接口对 底层代码做了封装,通过协议的方式对外提供调用。因为不涉及到程序层面,所以,不受编程语言的限制; 我们可以通过其它编程语言或工具对其进行测试。

接口分类 :

接口大体可以分成三类:

  1. 系统与系统之间的:系统与系统之间的接口,这里可以是公司内部不同系统之间的接口调用,也可以是不同公司之间系统接口的调用。而对于公司的其它系统,如社区网站和微信活动可以调用这些接口快速的实现相应的功能。而对于后者来说,如微信,微博所提供的第三方登录接口,如果你开发的系统不想自建用户体系,完全可以调用这些接口来实现用户的登录。

  2. 下层服务对上层服务的接口应用层,从认知上你可以看成是系统所提供的 UI 层功能。对于 Web系统来说,你可以认为是浏览器页面上所提供的功能,登录、注册、查询、删除等。Service 层,可以理解为服务器所提供数据和逻辑的处理。DB 层,(Data Base) 数据库主要用来存放数据,例如用户的个人信息,商品的信息等。

  3. 系统内,服务与服务之间的调用 假设系统开发一个用户查询接口,输入用户名,返回用户信息(性别、年龄、手机号、邮箱地址等),如果用户不存在则返回NULL;现在需要新开发一个用户抽奖的接口,该接口需要用户名和抽奖id,抽奖接口得到用户名后可以调用用户查询接口,如果用户查询接口返回NULL,那么投资接口就可以直接返回用户不存在了。在这个例子中,用户抽奖接口就调用的用户查询接口。

接口测试的意义:

  1. 更早地发现问题: 测试应该更早地介入到项目开发中,因为越早地发现bug,修复的成本越低。然而功能测试必须等到系统提供可测试的界面才能对系统进行测试。而接口测试可以在功能界面开发出来之前对系统进行测试。系统接口是上层功能的基础,接口测试可以更早更低成本地发现和解决问题。

  2. 缩短产品研发周期: 对于产品研发周期来说,如果将所有测试工作都集中在功能测试阶段,那么测试的问题和修复周期就会变长。因为测试可以更早地介入产品开发中,所以,可以有效地控制功能阶段bug的数量;从而有效地缩短产品开发周期。

  3. 发现更底层的问题: 系统的有些底层逻辑是在UI功能测试中不太容易触发的,那么这些逻辑可能会存在问题。接口测试可以更容易更全面的测试到这些底层的逻辑。

  4. 检查服务器的异常处理能力: 我们通常把前端的验证称为弱验证,因为它很容易被绕过,这个时候如果只站在功能的层面进行测试,就很难发现一些安全的问题。

接口测试的原理:

通过测试程序或工具模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request→response)

接口测试的流程接口测试的流程:

类似于功能测试,需求讨论→评审需求→确定需求→产出接口定义→根据需求文档及接口定义设计测试用例(测试用例主要从业务场景,功能以及异常测试几个方面考虑)→评审用例→执行测试

  1. 接口测试的流程其实和功能测试的流程类似,因为接口测试依赖的主要对象也是需求说明书,所以,最初的流程就是参与需求讨论,评审需求。

  2. 需求确定以后,开发会根据需求进行接口设计,会产出接口定义,在开发设计过程中,有能力的话,可以给出一些针对设计的建议,提高可测性,针对需求及设计,进行测试计划,测试设计,然后还需要和配管确定测试环境相关的事情。

  3. 在开发完成接口定义之后,就根据需求文档及接口定义进行测试用例设计,测试用例设计主要从业务场景,功能,以及异常测试几个方面考虑。

  4. 测试用例设计完成后,针对测试用例进行评审,然后,如果开发代码部分可测时,即可进入测试了,因为是部分可测,可能会使用到mock方法。

  5. 已有测试代码时,就要进行测试代码的持续集成了,我们是使用hudson来进行持续集成的在项目结束后,会对每个项目进行总结。

接口测试数据准备:

接口测试的数据准备,可以从下面几个方面去考虑:

  1. 如果是只测试一次的接口,可以使用硬编码的方式准备测试数据,在写测试代码的时候,使用到什么数据就写什么数据,为了避免数据重复,可能比较多的会用到随机字符或随机数

  2. 可以直接通过调用其他API的方式准备测试数据,这种情况在测试最上层服务的时候比较有用,比如测试团购购买服务,就需要准备要购买的团购数据,购买团购的用户数据,这个时候,可以直接调用生产团购的api和生成用户的api直接生成测试数据

  3. 使用excel或xml准备测试数据,这种准备测试数据的方式,主要针对对象数据的准备,比如可以将一条团购数据对应excel中的一条数据,因为一般开发都会使用pojo映射,而在准备测试数据的时候,这些pojo对象属性的设置往往是重复和大工作量的,用excel或XML方式准备,则可以减少在代码当中重复去准备这些数据。

  4. 也可以使用工具方法的形式去准备测试数据,通过在代码中写工具方法去实现数据生成,而在测试代码中调用工具方法去得到所需数据。

接口测试的着眼点:

  1. 检查接口返回的数据是否与预期的结果一致。

  2. 检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或字符串呢?

  3. 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

  4. 接口的性能,接口处理数据的时间也是测试的一个方面。牵扯到内部就是算法与代码的优化。

  5. 接口的安全性,如果是外部接口的话,这点尤为重要。

接口测试用例设计:

接口测试用例的设计方法其实和功能测试用例的设计方法是类似的,因为接口是需要满足需求的,而接口测试所依赖的也是需求说明书,但是,因为接口测试毕竟是通过代码去测试代码,所以,为了保证覆盖率,可能会使用到单元测试的方法,具体的测试用例设计如下:输入参数测试:

  1. 针对输入的参数进行测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法,输入参数不合法,输入参数为空,输入参数为null,输入参数超长;

  2. 功能测试:接口是否满足了所提供的功能,相当于是正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性;

  3. 逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;

  4. 异常情况测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。

作者:天空之城下的乌托邦

原文链接:https://blog.csdn.net/weixin_42622771/article/details/81002620


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   大厂外包项目好还是自研公司好?相信很多人在找工作的时候都遇到这个问题。  大多数程序员一听到“外包”两个字,就避之不及,那么到底什么是外包呢?  外包  目前的外包大概有2种。  一种是人力外包,工作环境和正式员工一样,但是不属于公司正式员工,有种寄人篱下的感觉,各种福利待遇也没你的份。  但这种方式有利于企业解决成本,根据“二八原则”,80%的企业利润是由20%的核心工作创造的,将这非核心的工作部分外包出去,则可令企业人力资源人士有更多时间和精力关注这20%的工作,从而有效保持和提升企业核心竞争力。所以很大公司都有外包岗位。  还有一种是项目外包,公司就是承接各种项目的,赚中间差价。差价...
            0 0 1479
            分享
          •   大家还记得我们之前讨论过校招和社招之间的关系吗?不记得的小伙伴可以点右边蓝字复习一下:多家企业开启“报复性”校招,大厂还会频繁裁员吗?  当时我们曾说过,今后大厂应该不会再有大批裁员的行为了,论其原因大概是:大厂外包会越来越多。  当前局势  大厂分互联网大厂和金融大厂,目前以互联网大厂为例,几个头部互联网公司一边裁员,一边招聘:  甚至有人断言:大厂裁员新闻以后就看不到了。  消失不见的大厂裁员  最近有网友表示:大厂裁员新闻会越来越少,因为大厂会逐步把非核心业务转为外包,这位网友还表示:以后外包也会很稳定,并逐渐成为趋势。  根据国家人力资源社会和保障部的数据,截至2021年年底,全国...
            0 0 906
            分享
          • 接口测试看着很简单,但是操作过程中还是出现很多问题,现总结如下:一、jmeter中乱码问题可在jmeter.properties 这个文件里面找到sampleresult.default.encoding=xx,后面xx改成utf-8,然后取消注释。解决jmeter的body里面中文显示不出来,可找到 JSyntaxTextArea然后把以js开头的注释取消即可。JDBC请求查询结果乱码,可在JDBC连接配置中将URL加上characterEncoding=UTF-8即可。二、报错检查请求中的url、路径、请求方式、参数等一定写准确,多个空格都不行。三、JDBC Request 之Query ...
            12 12 1554
            分享
          •   最近,在做测试开发平台的时候,需要对测试用例的列表进行后端分页,在实际去写代码和测试的过程中,发现这里面还是有些细节的,故想复盘一下,所以有了这篇文章。  分页的目的  做个假设,加入用例库有 1W 条数据,如果想要以列表形式展示,一次性返回 1W 条数据;这样做有两个弊端:  1.这样写出来的接口会慢。想一下如果随着时间的发展,这个数量变成了 10W、100W 该怎么办?  2.对前端不友好。用前端渲染 1W 条数据,有理智的开发都不会这么做。  所以,我们做分页的目的,主要是为了性能的提高,提高使用体验。  我这边开发语言是Python,Web框架用的是 Tornado,后台数据库用的...
            0 0 935
            分享
          • 当我们编写一段Java代码之后,如果想知道代码性能如何,就需要进行一些快速的性能测试。当我们实现一个需求,面临2种及以上的方案,选择一种性能更好的方案时,也需要进行一些快速的性能测试。在之前的实践中,我一开始的测试代码通常是这样的:    public static void main(String[] args) {        long start = System.currentTimeM...
            0 0 833
            分享
      • 51testing软件测试圈微信