• 13
  • 13
分享
  • 软件测试工程师必会:如何做好接口测试?——软件测试圈
  • 曼倩诙谐 2021-08-12 09:59:16 字数 2654 阅读 1239 收藏 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软件测试网原创

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   测试左移  对于需求,代码,质量,效率,《代码大全》很早就从软件工程实践角度说明了一个bug产生的不同阶段,修复一个bug的成本从需求阶段,设计阶段,测试阶段有着天壤差别。不仅从成本上,从修复难度,引入新问题的可能性,沟通成本,团队状态也会有很大的影响。由于大部分bug都是在写代码的阶段就引入的,测试左移本质上可以尽早的发现,预防问题,使用必要的测试手段在软件开发周期的早些阶段发现问题。测试越是集中到后期,尤其是集成测试时进行功能测试,产品的复杂度就越高,出现问题后,越难以定位bug,修复时间花费越长。所以,bug越早被发现,越节约成本。这也是测试左移被普遍接受的原因。  测试左移的手段:...
            0 0 754
            分享
          • 当今软件开发中,接口测试已成为必不可少的一环。该如何选择接口测试工具?选择合适的接口测试工具对于程序员来说非常重要,因为这可以帮助他们更快、更高效地评估接口的质量和可靠性。为了提高测试效率和测试质量,自动化接口测试已经逐渐普及。然而,由于市场上有许多不同的接口测试工具,程序员们很难选择合适的工具。如何选择适合自己的工具呢?选择接口测试工具的考虑因素首先,得知道在选择接口测试工具时应该考虑哪些重要因素:一、易用性易用性是选择接口测试工具时首要考虑的因素。工具必须具有清晰的界面,能够让程序员快速、方便地操作。同时,工具也应该具有详细的帮助文档,方便程序员使用。功能性功能性是选择接口测试工具时第二重...
            0 0 812
            分享
          •   想想自己从2002年毕业一直在做测试相关的工作,这么说来也算是在国内做测试比较早的老人了。  从最初在日企中做测试到现在在国企中做测试,期间也有在一家私企做过测试经理。测试的内容从最初的执行日本客户写的测试用例到最后作为测试经理指导别人写测试用例。从软件工程中涉及到的阶段来说做过JUNIT、NUNIT单元测试,在开发组中做过集成测试,在测试组做过系统测试,在用户方做过相应的验收测试等。从和开发人员分工协作的敏捷开发的迭代过程中来说,做过冒烟测试,回归测试,兼容性测试等。从测试的内容来说做过功能测试,性能测试。从测试的类型来说做过黑盒测试白盒测试。使用过操作系统有Windows,linux,...
            0 0 3318
            分享
          •   ChatGPT已经越来越火爆,国内百度、阿里等互联网大厂也纷纷投入大模型研究,OpenAI官网中提供了许多ChatGPT应用场景,例如SQL翻译、语言翻译、代码解释等  作为一名QA,我更关注ChatGPT生成的自动化测试脚本质量如何,借助ChatGPT能否提升自动化测试编写效率。  当提到自动化测试时,我们通常将其分为单元测试、接口测试和UI测试,接下来,我们先看看ChatGPT生成的单元测试代码的质量如何。  ChatGPT辅助后补单元测试  首先,使用Spring框架编写一个简单的后端服务,服务包括两个接口:一个createUser接口和一个getUsers接口,使用“spring-...
            0 0 458
            分享
          • 我如何接触到的 Apifox今年三四月份的时候,公司已经上线的项目,发现有部分接口存在重复提交的情况,接口也没做好幂等,导致数据库落下了大量重复数据,于是我就开始优化接口,加了redis分布式锁和一些防重校验,好了,背景介绍完毕。锁是加上了,但是吧,要想测试就需要模拟压测环境,这个时候如果完全依赖测试同事,很显然不是我的风格,本着宁可麻烦自己也不麻烦别人的原则(减少扯皮,节省时间),于是想要自己做并发测试,看一看锁有没有效果。刚开始先想到了JMeter,毕竟也在测试那多多少少了解过,但是当我安装完准备使用的时候,发现配置很复杂,即使我叫来了测试同事,也很难讲的明白,于是乎我就在网上搜索的时候,...
            0 0 881
            分享
      • 51testing软件测试圈微信