为什么要做接口自动化

相对于UI自动化而言,接口自动化具有更大的价值。

为了优化转化路径或者提升用户体验,APP/web界面的按钮控件和布局几乎每个版本都会发生一次变化,导致自动化的代码频繁变更,没有起到减少工作量的效果。

而接口一旦研发完成,后期重构/大幅度修改的频率则比较低.因而做接口自动化性价比还是很高的,对于迭代版本旧有功能的回归,beta测试,线上回归都能起到事半功倍的作用。

本文不详细谈单个接口的测试,我们来主要来分析一下基于业务场景的接口自动化怎么做。

问题在哪里

一个业务场景通常需要多个接口才能走完一个完整的业务流程,其中每个接口完成一个特定的功能步骤。例如微信的添加好友流程:

每个操作步骤里都至少有一条接口请求。那么我们把这个流程以接口请求的方式表现出来,如下:

仅作示意,并非实际

我们想要完成这条接口用例,需要的操作有哪些?

1)输入微信id,发出查询请求
2)将获取到的用户信息传递给“添加好友接口”,发起添加好友请求
3)将申请好友的用户信息传给下发好友申请接口
4)将同意信息传给成为好友消息接口
5)将拒绝信息传给拒绝消息接口
概括起来有几个需要解决的问题:测试数据传入,接口依赖,接口间参数传递。 这也是接口测试自动化中会遇到的普遍问题,解决方案可以迁移到各类业务中去。接下来笔者将针对上述问题提出一些具体的解决方案

工具介绍 本文所用接口测试工具: Apifox Windows版
Postman作为接口测试工具,在业界的地位毋庸置疑,但Apifox作为一款本土的接口调试、接口测试&测试管理软件,优势在于符合国内互联网的测试模式和工作流程,用起来更顺手些。
大部分功能均能由可视化界面+控件操作完成,对于不懂代码、不会写脚本的测试人员,基本也可以无痛顺利地完成接口自动化的任务。
因此本文讲解自动化的时候会直接使用Apifox,大家如果需要跟着文章讲解学习的,可以先去官网下载注册一个,软件免费。

全靠参数化

手工测试的优点在于灵活可控,自动化则依赖我们预先设置好的步骤完成功能

接口间参数传递

像上述微信好友请求的例子,涉及到多个接口间的参数传递,下一个接口对依赖于上一个接口响应中的某个字段,需要将它能准确提取并传递过来。

解决方案:提取上一个接口响应数据--参数化--下一个接口调用该参数。
这样无论接口运行多少次,传递的参数怎么变化,下个接口都能动态提取并调用。
Apifox上操作步骤如下:
1) 在要提取参数的接口的后置步骤里,使用json path表达式提取目标响应字段并命名,设置变量类型

2)该字段会保存到项目设置中,同一环境,同一项目里的其他接口具有调用权限。 运行一下上图中的接口,可以看到该字段已经被提取到变量设置中了。

3)在需要调用该变量作为参数的接口请求参数里,以参数形式填入到对应空格中

看一下结果: 发送该post请求,在接口>运行>实际请求tab>请求URL中可以看到,该参数已被成功调用

测试数据参数化

  1. 使用变量 某些测试数据(如登陆账号密码,用户信息等)会在不同的接口被反复调用,这个时候可以将该测试数据参数化,与接口响应参数不同的是,响应参数是获取自上一个接口的,而测试参数是我们直接写进变量设置里的。

    在Apifox里的操作步骤如下:

    1)在全局变量中设置好测试数据变量名和值

    1. 直接在接口请求参数中调用该测试数据

  2. 使用测试数据集 当我们需要上传不同的测试数据以校验响应返回数据是否存在异常时,一个接口参数需要多个测试数据。这个我们放到后面测试管理的部分谈。

测试断言

既然是自动化测试,我们无法一一人工去校验返回的response是否符合我们的要求,因此需要用脚本/功能设置替人力完成这些工作。 我们主要校验:
1)接口请求是否成功,即返回的code是否符合预期
2)返回的接口数据里的关键字段、关键值是否符合预期

Apifox上,可以直接通过界面操作设置基本的断言操作:

  1. 在接口管理-后置操作 里选择断言

  2. 请求发出之后,如果返回值符合预期,则在返回处会提示断言成功,失败则给予错误提示。

如果需要灵活设置断言,可以使用apifox里的后置操作中的自定义脚本功能,它也提供了代码模板功能,测试人员只需修改期待值即可。

对于单个接口,自动化的预备工作即将输入数据和接口间的参数传递都参数化、不要写死,方面后期数据修改和维护,以及使用测试断言来代替人工检查接口测试结果。

完成了这部分工作之后,我们接下来就可以把不同的接口组织到一条接口自动化用例里,完成一个业务场景的测试。

接下来的工作我们在Apifox测试管理tab完成。

测试管理

导入测试用例

接口用例需要在测试单个接口的时候生成,这是在导入测试用例之前需要完成的准备工作。在单个接口测试的时候选择保存为用例即可生成测试用例。

测试管理tab,新建测试用例>导入接口用例>选择该测试场景所需用例>默认选择绑定>确定导入

导入完毕后的用例如下,一个接口请求就是一个操作步骤,若干个步骤共同完成一个场景的测试。

接口执行顺序

在上述用例中,接口请求的步骤是从上而下的,如果想要调整接口的运行顺序,直接拖动接口到目标位置即可。 如果需要增加其他接口请求,则选择添加步骤

使用测试数据集

上文测试数据参数化那一节有提到过一个接口需要多条测试数据的事情,拿到这里讲主要是功能模块刚好在这边,方便些。 在测试管理>用例的右侧,可以看到测试数据这个功能

点击管理数据,可以进入测试数据tab管理添加外部测试数据。

接着在测试步骤>设置 页面,将测试数据修改为测试数据集的变量名称

点击下方的运行按钮时,会弹出界面让测试人员选择要用的测试数据集,每个测试数据集都会当成一条测试用例来运行。

对应的会生成多个测试结果:

除了能够直接填外,也可以导入外部的CSV文件,更加适合大数据量的测试场景。

测试参数配置

在用例的右侧,有运行环境和保存变量变化值等配置,可以根据项目的实际需要选用。 其中[间隔停顿]和[使用全局cookie]在接口测试中应用频率较高。

运行结果&测试报告

点击[运行]按钮,运行成功会跳转到运行结果页面。还可以导出测试报告。

测试套件

同一个模块的接口用例可以合并为一个测试套件来运行,在测试套件页面,把单个接口用例直接添加进来,其他操作步骤和上文一致。 点击运行可以依次运行添加的用例。

总结

整体讲解下来,感觉Apifox做接口自动化的优势在于流程高度整合低代码贴合国内测试团队的工作模式和思维模式

因此我们从单个接口测试,到业务流程的接口测试,到整个测试套件组装,以及将它们自动化,一路下来,下一步的工作都是可以复用上一步的工作成果的,几乎没有被浪费的工作量。

另一个点是,我们用Apifox实现了自动化,但过程中几乎没有需要用到代码的地方,很多地方都被它直接做成了可视化界面,我们选择控件填数据就行了,这对代码基础薄弱的测试人员确实是一大福音。

本次的《Apifox的接口自动化测试攻略》就讲解到大家了,希望能对大家有帮助。

清华学长请授接口自动化测试进阶攻略相关推荐

  1. 菜鸟程序员的成长之路:Python四大进阶攻略

    随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,编程圈金句从"人生苦短,我学Python"转变成了"学完 Python,可以上天",Pyt ...

  2. python职业发展规划-Python开发者的四大进阶攻略,菜鸟的成神之路

    原标题:Python开发者的四大进阶攻略,菜鸟的成神之路 随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,编程圈金句从"人生苦短,我学Python"转变成了& ...

  3. 云架构师进阶攻略(1)

    此文已由作者刘超授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.架构的三个维度和六个层面 1.1.三大架构 在互联网时代,要做好一个合格的云架构师,需要熟悉三大架构. 第 ...

  4. 欢乐球吃球服务器维护中是什么意思,欢乐球吃球进阶攻略:活动中心详解

    原标题:欢乐球吃球进阶攻略:活动中心详解 活动中心是为了球球成长专门开设的一个功能,在活动中心中可以查看各种已经开始或即将开始的活动,参与活动可以获得海量游戏内道具,还有机会获得实物奖励. 活动中心的 ...

  5. apex英雄机器人探路者怎么玩_Apex英雄探路者机器人进阶攻略

    Apex英雄探路者机器人比较呆萌,是一个非常适合做队长的英雄,很多小伙伴对探路者机器人不太了解,下面小编为大家带来了Apex英雄探路者机器人进阶攻略,希望可以帮到大家! Apex英雄探路者机器人进阶攻 ...

  6. HIVE攻略 JFK_异星蜂巢Alien Hive玩法进阶攻略大全

    异星蜂巢Alien Hive游戏怎么玩?小编给大家带来了详细进阶攻略,一起来看下. 如果没钱,泡妞都不行!!!还想去拯救外星人维护宇宙和平?所以这个游戏第一步就是筹钱.开始时就有六个道具任君选择~第一 ...

  7. 大龄程序员想转产品经理?3本书给你最靠谱的进阶攻略

    导读:2019校招已经趋近尾声,互联网企业的用人需求依旧占据了第一名.这其中,产品经理是热门职位,入门门槛也相对较低.而且,除校招外,每年也有很多程序员转向产品经理. 那么,门槛低就意味着谁都能做吗? ...

  8. 摆脱渣走位 新手进阶攻略:关于走砍

    大部分新手ADC在攻击敌人时都会只用鼠标右键点击敌方单位.放任控制的角色自由的完成攻击动作. 但是经常会有时候在你攻击的间隔中,你锁定的目标会借助位移技能或者移动至你身边,对你造成威胁甚至将你击杀. ...

  9. 进阶攻略|前端完整的学习路线

    前端完整的学习路线 最近写了一篇关于前端一些常见轻便耐用的UI框架的小总结,很多小伙伴私信问我,要怎么学习前端,没有明确的方向,为了感谢大家的关注点赞打赏和喜欢,决定把前端的学习进阶之路稍微整理一下, ...

最新文章

  1. 为了解决伴随RIP协议的路由环路问题,可以采用水平分割法,这种方法的核心是(22),而反向毒化方法则是(23)。
  2. 现金流量表整理及开发
  3. 【Linux】crontab 定时启动sh
  4. 《微软开源跨平台移动开发实践》团购通知
  5. 【JEECG技术博文】jeecg 定时任务配置用法
  6. stm32关定时器_STM32F103ZET6的基本定时器
  7. java 防止js注入_在WebView中如何让JS与Java安全地互相调用
  8. linux怎样禁止他人远程,linux禁止用户远程登录的方法
  9. 【Siddhi】Siddhi的window操作
  10. Spring使用注解方式的学习笔记
  11. Windows 10专业版下如何启用语音识别功能
  12. Matlab 图像像素点在RGB空间的显示
  13. isupper函数用法
  14. html 制作人物模型,星际科幻人物模型材质教程 Stargazer Character Design Tutorial
  15. 我的个人品牌——钱胖子
  16. 微型计算机字,小型微型计算机系统
  17. ios微信一直显示未连接到服务器,关于微信分享显示“正在连接”,“未验证应用”以及未正确加载apple-app-site-association配置文件问题说明...
  18. gunicorn flask的请求流程
  19. STM32F0xx_TIM输入捕获(计算频率)配置详细过程
  20. python常用的数字类型方法_python基础--数据类型的常用方法1

热门文章

  1. Nature综述: 蓝藻水华的形成机理及防治动态
  2. pandas使用str函数和startswith函数,筛选dataframe中不是(not start with)以特定前缀开头的数据列(selecting columns)
  3. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、自定义数据点的形状、自定义折线图的颜色
  4. 泰坦尼克号(titanic)数据集字段解释、数据导入实战
  5. 机器学习数据预处理之缺失值:插值法填充+ lagrange插值+拉格朗日插值
  6. c语言程序设计电大作业,电大C语言程序设计第1234次作业及答案
  7. html5 游戏制作软件,制作h5小游戏的免费软件有哪些?
  8. python colormap函数_python-使用由x,y位置定义的rgb值创建colormap
  9. Single Molecule Real-Time Sequencing
  10. android webview详情,Android中的WebView详细介绍