为什么要做界面自动化相比UI自动化,界面自动化有更大的价值。为了优化转化路径或提升用户体验,APP/Web界面的按钮控件和布局几乎每个版本都会变化,导致自动化代码频繁改动,对减少工作量没有任何作用。一旦接口开发出来,后期重构/实质性修改的频率就比较低。所以接口自动化的性价比还是很高的。对于迭代版本中旧功能的回归,公测、在线回归都可以达到事半功倍的效果。本文不详细讲单个接口的测试,主要分析下如何根据业务场景做接口自动化。哪里有问题?一个业务场景通常需要多个接口来完成一个完整的业务流程,每个接口完成一个特定的功能步骤。比如微信的加好友流程:每个操作步骤至少有一个接口请求。那么我们将这个过程以接口请求的形式表达出来,如下:仅供说明,不用于实际使用。如果我们要完成这个接口用例,需要执行哪些操作?1)输入微信号,发送查询请求2)将获取到的用户信息传递给“添加好友接口”,发起添加好友请求3)将好友应用的用户信息发送给发送好友应用接口4)通过同意信息成为好友消息接口5)将拒绝信息传递给拒绝消息接口。综上所述,需要解决几个问题:测试数据输入、接口依赖、接口间参数传递。这也是接口测试自动化遇到的常见问题,解决方案可以移植到各个业务。接下来笔者将针对以上问题提出一些具体的解决工具,并介绍本文所使用的接口测试工具:作为接口测试工具,ApifoxPostmanforWindows在业界有着毋庸置疑的地位,但Apifox是一款本地接口调试工具,界面测试&测试管理软件的优点是符合国内互联网的测试模式和工作流程,使用更简单。大部分功能可以通过可视化界面+控制操作完成。对于不懂代码、不会写脚本的测试人员来说,基本可以轻松、流畅的完成界面自动化任务。所以本文讲解自动化时,会直接使用Apifox。如需按照文章进行讲解和学习,可以到官网(www.apifox.cn)下载注册一个。该软件是免费的。完全依赖参数化人工测试的好处是灵活可控,而自动化则依赖于我们预先设定的步骤来完成功能接口之间的参数传递。像上面微信好友请求的例子,涉及到多个接口之间的参数传递。依赖于之前接口响应中的某个字段,需要准确提取并传递过去。解决方法:提取上一个接口的响应数据——参数化——调用下一个接口的参数。这样无论界面运行多少次,传递的参数如何变化,都可以动态提取调用下一个界面。在Apifox上的操作步骤如下:1)在接口提取参数后的步骤中,使用json路径表达式提取目标响应字段并命名,并设置变量类型2)保存该字段在项目设置中,同一个环境,同一个项目中的其他接口有调用权限。运行上图界面,可以看到这个字段已经被提取到变量设置中了。3)在需要调用该变量作为参数的接口请求参数中,以参数的形式填入相应的空格即可看到结果:发送post请求,在接口>运行>中可以看到实际请求选项卡>请求URL,参数已成功调用。测试数据参数化使用变量。一些测试数据(如登录账号密码、用户信息等)会在不同的接口中被反复调用。此时测试数据可以参数化,区别于接口响应参数。是的,响应参数是从之前的接口中获取的,测试参数是直接写入变量设置的。Apifox中的操作步骤如下:1)在全局变量中设置测试数据变量名和值2)在接口请求参数中直接调用测试数据当我们需要上传不同的测试数据进行验证时使用测试数据集response返回数据异常时,一个接口参数需要多个测试数据。这个后面在测试管理的部分再说。由于测试断言是自动化测试,我们无法手动验证返回的响应是否符合我们的要求,因此我们需要使用脚本/函数设置来为人类完成这些任务。我们主要检查:1)接口请求是否成功,即返回的代码是否符合预期2)返回的接口数据中的关键字段和键值是否符合预期在Apifox上,可以直接设置基本的断言操作通过接口操作:在接口管理-后操作中选择断言请求后,如果返回值符合预期,会在返回点提示断言成功,如果失败则给出错误提示。如果需要灵活设置断言,可以在apifox中使用后期操作中的自定义脚本功能,它也提供了代码模板功能,测试人员只需要修改期望值即可。对于单个接口,自动化的准备工作是将输入的数据参数化,接口之间的参数传递,不硬编码,后期修改和维护数据,使用测试断言代替人工检查接口测试结果。完成这部分工作后,我们就可以将不同的接口组织成一个接口自动化用例,完成一个业务场景的测试。我们将在Apifox的测试管理选项卡中完成接下来的工作。测试管理导入测试用例测试单个接口时需要生成接口用例,这是导入测试用例前需要完成的准备工作。测试单个接口时,选择另存为测试用例生成测试用例。在测试管理选项卡中,新建测试用例>导入接口用例>选择测试场景需要的用例>默认选择绑定>确认导入的用例如下,一个接口请求是一个操作步骤,并且多个步骤共同完成场景测试。接口执行顺序在以上用例中,接口请求的步骤是从上到下的。如果要调整界面的操作顺序,只需将界面拖动到目标位置即可。如果您需要添加其他接口请求,请选择添加步骤。使用测试数据集上面关于测试数据参数化的部分提到了一个接口需要多个测试数据。到这里比较方便,因为功能模块就在这里。在TestManagement>UseCase右侧可以看到测试数据功能,点击ManageData进入测试数据标签管理,添加外部测试数据。然后在TestSteps>Settings页面,将测试数据修改为测试数据集的变量名。当你点击下面的运行按钮时,会弹出一个界面供测试人员选择要使用的测试数据集。每个测试数据集将被视为一个测试用例。跑步。相应的,会生成多个测试结果:除了可以直接填写外,还可以导入外部CSV文件,更适合数据量大的测试场景。测试参数配置在用例右侧。有运行环境、保存变量值等配置,可以根据项目实际需要选择。其中【间隔暂停】和【使用全局cookie】在接口测试中使用频率较高。运行结果&测试报告点击【运行】按钮,运行成功则跳转到运行结果页面。还可以导出测试报告。测试套件同一模块的接口用例可以组合成一个测试套件运行。在测试套件页面,直接添加单接口用例,其他操作步骤同上。单击运行以按顺序运行添加的用例。总结一下整体的讲解,感觉Apifox在接口自动化方面的优势在于流程高度集成,代码少,贴合国内测试团队的工作模式和思维方式。所以,从单一的接口测试,到业务流程的接口测试,到整个测试套件的组装,再到自动化,一路往下,下一步的工作可以复用上一步的结果,有几乎没有浪费的工作。数量。还有一点就是我们使用Apifox来实现自动化,但是过程中几乎不需要用到代码,很多地方直接被它做成了可视化界面。我们只是选择控件来填充数据,这对于代码基础薄弱的人来说是个好消息。测试人员是真正的福音。这次《Apifox的接口自动化测试攻略》就给大家讲解一下,希望能对大家有所帮助。
