• 13
  • 13
分享
  • 软件测试工程师必会:如何做好接口测试?——软件测试圈
  • 曼倩诙谐 2021-08-12 09:59:16 字数 2654 阅读 1305 收藏 13

  谈起软件测试,就不得不说一下接口测试,凡是有功能的软件都离不开接口,没有接口的软件只是一个模具或页面,不具备任何功能。

  什么是接口

  接口说白了就是实现软件功能的方法,而这些方法的最终目的就是传递信息,实现软件功能。

  接口测试是什么

  接口测试就是验证这些信息能否正确传递,验证这个方法是否正确,有没有存在潜在的安全,性能问题。

  所以总结一下接口测试的测试点就有三个:接口功能测试、接口安全测试、接口性能测试。

  那么接下来我就给大家讲讲我所遇到过的一些接口和测试吧!

  查询本地数据库数据的查询接口

  这个接口的功能是这样的:

  查询条件

  订单编号、产品名称、产品型号、订单日期,可单独一个条件查询也可多个条件联合查询,多个条件查询的时候查询出来的结果取并集。

  结果展示

  根据查询条件查出来所有产品的配置信息展示给有权限的用户看,展示的字段有订单编号、产品名称、产品版本号、产品型号、配件编号、配件描述、订单日期。

  对这个接口的功能进行进一步的了解我们知道了如下信息:

  这些数据都是存在于本系统后台数据库中,涉及两张表:订单表、产品配置表。

  开发通过获取页面输入的查询条件,去数据库查询这两张表里面的页面需要的相关信息并展示出来。

  订单表中订单编号是主键,产品配置表中产品名称+产品版本号是主键,两张表通过产品名称+产品版本号进行关联。

  产品名称存在特殊字符的现象。

  通过以上的了解,对这接口测试点进行分析:

  这是一个结果可见性的查询接口,可以通过页面功能直接来测试,可以不借用工具,另外它也不涉及外部系统数据,不用考虑联测。

  因为字段表中查询条件相关的字段有特殊字符,所以在测试输入条件查询的时候要关注特殊字符查询条件的查询。

  所以综合以上分析,输入这块的测试场景有:

  ·输入特殊字符

  ·输入超长字符

  ·输入空字符

  ·SQL注入安全测试

  从查询条件分析,这个查询条件是单独或多个联合使用的,且多个条件联合时取的并集。

  所以从查询条件的组合来看,测试场景有以下四种情况:

  ·输入一个查询条件

  ·输入两个查询条件

  ·输入3个查询条件

  ·输入4个查询条件

  根据组合,我们罗列出查询条件的测试场景,为防止有重复,我用了一个表格来画如下:

1.png

  对后台两个表中的数据进行分析,发现由于历史原因,存在版本号为空的数据,而且存在数据量比较大的查询数据,所以在测试的时候还需要关注版本号为空的场景,大数据查询结果的场景。

  另外出于性能考虑,我们还要关注多人并发查询的场景和一人频繁查询的场景,及异常场景:数据库宕机的场景。

  所有测试的场景分析完了,接下来就是把这些场景转化为具体的测试用例,执行测试了。

  传递数据信息的通道中间接口

  这是一种常见的且最简单的接口,没有任何逻辑,也不做任何处理,只是把A系统传过来的数据再转手传给B系统,功能比较单一,这种接口功能大致流程如下:

2.png

  我记得当时测试有这样一个接口,系统B想要获取系统A产品的版本号信息,但系统B又没有直接跟系统A交互,只能通过我们这个中间系统进行交互。

  所以系统B就把存在他们系统的产品名称和产品型号传到我们系统,我们系统再把这个信息推给系统A,系统A返回一个版本信息到我们系统,我们系统就直接把这个信息传给了系统B。

  记得当时story测试时,直接用的soapui工具,自己手动构造的系统B的产品信息传给了系统A,这样虽然验证了本系统接口功能的正确性和性能,但它的测试充分性却是不足的,为啥呢?

  因为我们对系统A产品的特殊参数了解的不多,只能测试普通的共同性问题,不能测试到个性问题,所以必须进行联测来完善测试,让对方系统的测试人员根据他们的测试场景去构造测试数据进行测试。

  涉及到外部系统的查询接口

  这种接口的流程一般如下:

3.png

  像这种接口的测试输入,输出都在本系统但有一个中间结果在页面是不可见的,我们虽然可以在页面上看到输入、输出,但却不能判断输出结果的正确性,这个时候我们就要通过接口测试工具和页面功能相结合的方式来验证了。

  有这样一个页面查询功能就是这样的,那个页面查询功能是:

  当登录人A,所在公司下有子公司时,他可查询到总公司及其所有分公司的订单,当所在公司下没有分公司时,只能查看当前公司的订单。

  而这登录人所在公司下是否有分公司只能通过查询系统B才能知道,而系统B返回的结果在页面上并没有展示,而是直接拿他作为查询条件进行了查询,所以要测试这个查询接口查询结果是否正确,就要结合B系统返回给我们的结果进行测试。

  通过接口工具先查看系统B返回的结果,然后再对比页面上的查询结果看是否与我们预期的一致。

  这里用接口测试工具查看返回结果还有一个好处就是可以看到对方系统返回给我们的参数格式,便于我们根据他们的返回结果格式去构造适合的测试场景来验证我们的查询结果,使我们的测试更充分。

  输入在本系统,输出在外系统的接口

  这类接口的测试一般我们采用接口工具和页面功能相结合的方法进行测试,就是在我们的系统页面触发调用这个接口的功能,通过接口工具查看监控此接口的信息来验证信息的传递情况以及查看相关的输出结果。

  当然这种接口也可以直接用测试工具进行测试,但是我一般是不这样的,为啥呢?因为数据构造太麻烦,而且构造的数据没有直接在页面调用接口形成的数据的可靠性高。

  同样的这种接口还是少不得联测的,联测就是检测我们系统存在的各种场景的数据传递过去后是不是都能被对方系统正常接收到。

  我碰到过的这样的接口是这样的一个功能:我们系统订单生成的产品价格要传给系统C,他们要做记录进行预算。

  这个接口前期的各种参数输入都在我们的系统页面上可以完成,只是后期生成订单后的价格和对应的产品信息要传到对方系统后的结果我们是看不到的。

  在这个时候,前面的测试就是根据我们系统各种参数场景组合测试,那这个参数到底传没有传过去,因为两个系统的开发并不同步,无法直接联测,前期只能通过接口工具调用日志查看参数是否传过去及各个参数的值与我们系统页面上是否一致,后期两边系统功能都实现了就要进行一个联测了。

  在这个联测的过程中你不单要把自己系统的各种数据场景覆盖到,还要了解对方系统有什么特殊的地方,根据他们的特殊要求构造特殊的数据传给数据进行更深一步的验证。

  好了,我碰到的接口类型大概就是这些了,希望我的这些测试对你有所帮助。



作者:薇薇   

来源:51Testing软件测试网原创

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   当地时间周二,硅谷银行新任首席执行官Tim Mayopoulos对客户表示,硅谷银行已经恢复开门,准备接收和持有客户的存款。此番言论是在呼吁风投公司和其他科技客户重新回到该银行。  Tim表示:“如果你、你的投资组合公司或你公司在过去一周内转移了资金,请考虑将其中一些资金转移回来,作为安全存款多样化战略的一部分。”  Tim对客户群表示:“储户可以完全接触到他们的资金。”并补充说,新流入的资金和现有的存款都受到联邦存款保险公司的全面保护。  上周,硅谷银行刚发布的季度显示其亏损出售了价值210亿美元的证券,导致创企和VC基金纷纷逃离,超过420亿美元的存款被撤出硅谷银行。硅谷银行倒闭是美国...
            0 0 899
            分享
          •   日本国会已经完成了一项与欧盟非常相似的举措,即制定一项法律,禁止大型科技公司阻挡第三方应用程序商店的出现。该法案于 5 月在日本众议院获得通过,现在又于周三在参议院获得通过。根据现行程序,该法案无需经天皇签署即可成为法律。  该法案旨在促进竞争,降低应用程序价格。据报道,日本政府认为苹果和Google是双头垄断企业,它们向开发者收取高额费用,然后再转嫁给用户。  拥有应用商店的大型科技公司也将禁止公司优先使用自己的服务,Google可能受此打击最大。  违法者最初将被处以最高为违法具体服务国内收入 20% 的罚款。如果被罚主体放任这种行为持续下去,罚款可能会增加到 30%。  日本政府的公...
            0 0 388
            分享
          • 利用Jmeter做接口测试怎么做呢?过程真的是超级简单。明白了原理以后,把零碎的知识点填充进去就可以了。这篇文章就来介绍一下如何利用Jmeter做接口测试的流程,主要针对的是功能测试。暂不涉及到自动化测试和性能测试的内容。一把来说,主要的步骤都大差不差。第一步:通过分析API文档和需求文档提取接口清单。接口测试工作人员工作的开始就是从API文档和需求文档开始的。所以进入公司的第一件事情就是要拿到API文档和需求文档来了解,来看,来分析。从其中提取接口清单的话,主要是因为API文档中有很多冗余,不必要的信息。这些信息可能对于开发人员是有用的,但是对于我们测试人员是没有用的,所以要去除冗余,提取关...
            0 0 1835
            分享
          • 声明:本文内容不涉及任何 Apifox 的功能介绍,一来网上这方面的文章已经汗牛充栋,二来 Apifox 本身的用户体验做的非常好,对于开发者而言学习成本基本为零。阮一峰:不管你是前端开发还是后端开发,只要项目是服务架构,它可能会大大提升你的开发效率。虫师:我们很难把它描述为一款接口管理工具或接口自动化测试工具,它增强了团队协作能力,这对一个研发团队而言很重要。池建强:Apifox,这是一代更比一代强。什么是Apifox?看了一众大咖们对 Apifox 赞不绝口,你可能会好奇 Apifox 究竟是何方神圣?根据官方定义,Apifox 是 API 文档、API 调试、API ...
            1 0 1112
            分享
          • 概述对于post请求 有几种方式。 Content-Type 实体头部用于指示资源的MIME类型 media type 。content-type是http请求头的字段。作为请求头时(post或者put),客户端告诉服务器实际发送的数据类型。对于不同的content-type 发送的数据不太一样,对于服务器端,需要如何获取数据,以及正确解析的方法也是不一样的。下面列出常用的几种 Content-Typeapplication/jsonapplication/x-www-form-urlencodedmultipart/form-datatext/plaintext/xmltext/html1....
            0 0 1514
            分享
      • 51testing软件测试圈微信