0

    介绍一个接口测试工具AREX

    2023.04.18 | admin | 251次围观

    背景:在整个软件开发生命周期中,软件测试工作始终贯穿其中,包括开发过程中、代码合并前的集成测试以及上线后的持续集成测试。为保证软件质量的全面性和稳定性,开发和测试人员都需要不断重复执行接口调试、接口自动化测试、接口数据 Mock、接口回归测试等测试任务。

    对于一个产研团队来说,若要实现上述研发过程中所有环节的需求,至少需要使用四五种不同的工具才能满足,在实际工作中带来的问题也可想而知:

    1.复杂性增加:使用多个工具可能会导致研发流程变得更加复杂,需要更多的时间和精力来协调和管理,团队无法在同一套系统中进行协作,导致各种沟通不及时、配合低效。

    2.高风险:使用多个工具也意味着需要将数据从一个工具同步到另一个工具,这可能会增加出错的风险。

    3.高成本:每个工具都有自己的使用方法和特点,需要花费时间来学习和掌握,后期也需要花费更多的时间来维护和更新工具,特别是在长期的项目中。

    4.回归测试复杂度增加:对于需要快速迭代的复杂系统,需要频繁地维护数据和用例,无论是脚本化维护还是手工维护,都需要花费大量的精力。业务复杂度高时,回归测试的复杂度可能会日益增高,这可能需要更多的时间和资源来完成。

    “自动化”测试侧重于“自动化”执行,但维护工作依旧是“手工”,工作量非常大。

    试想一下,如果有一款工具可以实现上述所有功能,那不是可以大大简化研发流程,提高测试效率,降低维护成本和出错率?今天为大家介绍一个工具:AREX,以下是一点使用体会新点软件测试面试,希望对大家有所帮助。

    01 什么是AREX

    AREX是一款开源的自动化测试平台,结合了Postman+Mock+比对测试,不仅提供了接口测试功能,更是通过Java Agent字节码注入技术,在生产环境录制和存储请求、应答数据,在测试环境回放请求和注入Mock数据,并存储新的应答,以此来达到自动录制、自动回放、自动比对,为接口回归测试提供便利,实现了从接口调试到接口数据 Mock新点软件测试面试,再到接口自动化测试和接口回归测试的闭环工作流。借助AREX,开发和测试人员可以各取所需,协同合作,实现更高效的软件开发和测试。

    02 接口调试(Postman)

    在接口调试方面,AREX不仅能支持Postman大部分的接口调试功能,还提供了强大的接口用例功能。

    接口用例功能

    AREX可以为同一个接口请求保存多个场景下的接口用例,每个用例都将自动继承当前接口请求下的配置,如URL、请求方式及Parameters、Header、Body及前置脚本(Pre-request Script)等。通过继承父节点的接口请求配置,测试用例不需要一一重新定义接口的请求参数及前置脚本,后续再次调试时可直接运行接口用例,从而减少测试用例编写的工作量和时间。

    另外,AREX还提供了测试用例管理功能。目前可以对测试用例添加标签(Add Tag)进行分类,后期将增加通过标签搜索用例的功能,方便管理。另外可以为用例添加描述,提高用例可读性,让协作者更容易理解测试用例的目的和预期结果,并且能更好地把握测试内容。

    导入、导出用例(开发中)

    各个测试团队都有自己的测试习惯,强制迁移到一个新的测试工具,有很大的迁移成本。AREX后续将陆续支持各种格式的测试用例导入、导出,届时旧工具中的众多用例可以一键迁移到AREX,无需再次新建项目,同时也可以将 AREX录制到的用例导出,帮助测试团队降低迁移成本。

    目前 AREX 正在支持 Postman导出的用例导入,如需支持其他格式的用例导入,可以在Github上提交Issue,与社区共建。

    固化的测试用例也支持导出,目前支持 Postman 格式的用例(JSON格式)。

    03 接口回归测试(Mock+比对测试)

    AREX采用Java的instrument技术实现了无代码侵入的数据采集和自动化Mock,在进行回放时会使用录制过程中采集到的数据进行Mock,代替真正的数据访问,并不会产生真正的外部交互(如DB的写入、其他第三方服务的调用),避免了回放测试中脏数据的写入。同时支持各种主流技术框架的自动数据采集和Mock,包括数据库redis等,并且支持了本地时间、缓存等数据的 Mock,回归测试时可以在测试环境完美还原生产执行时的数据环境。

    如果用户对Mock的数据需要进一步了解,可以在回放界面找到指定的用例,查看Mock数据和修改Mock数据。

    接口回归测试,不需要准备测试用例、测试数据、接口ASSERT,只需安装AREX Agent,就可以全部从生产环境获取最新的请求,最新的数据,使用比对差异来验证最新的代码:

    · 支持录制生产请求应答

    · 支持录制接口的外部请求和应答,包括http请求、数据请求、redis 请求等

    · 支持自动比对接口应答的差异,外部请求的请求差异

    · 支持回放请求和 MOCK 外部请求

    步骤一:安装AREX服务

    git clone https://github.com/arextest/deployments.git
    cd deployments
    docker-compose up -d
    

    步骤二:将被测试应用生产环境的运行方式修改成如下的命令

    java -javaagent:/path/to/arex-agent-0.1.0.jar -Darex.service.name=your-service-name -Darex.storage.service.host=[storage.service.host:port](storage.service.host:port) -jar your-application.jar
    

    其中:

    · /path/to/arex-agent-0.1.0.jar 需要修改为 arex-agent-0.1.0.jar 文件在你服务器中的实际路径

    · your-service-name 需要修改为你被测应用的名称

    · [storage.service.host:port] 需要修改为数据存储服务的地址和端口号

    · your-application.jar 需要修改为应用程序的 jar 包文件名

    或者在环境修改环境变量

    export JAVA_OPTS="-javaagent:/path/to/arex-agent-0.1.0.jar -Darex.config.path=/path/to/arex.agent.conf"
    

    步骤三:访问AREX前端页面,在Replay模块,选择到刚才搭载过AREX Agent的服务(即上文的 your-service-name)。

    步骤四:选择回放,输入测试环境的接口地址,开始执行所有录制的接口测试用例。

    回放完成后,会生成详尽的回放报告,可以很直观地看到回放通过率、接口通过率,以及每个接口下的详情。

    出现回放失败的接口可以点击查看该接口下回放失败用例的比对结果,AREX 在最新版本中将比对结果进行了可视化展示,方便定位问题。

    还有一种更简单的方式,不用安装AREX各种繁琐的服务组件,只需通过ArexCli启动本地模式:

    git clone https://github.com/arextest/arex-agent-java.git
    cd arex-agent-java
    mvn clean install  
    java -jar "./arex-cli-parent/arex-cli/target/arex-cli.jar"
    

    运行后进入如下界面

    支持的命令如下:

    · ls:查看录制的所有case。

    o [option: -o/–operation] view all cases under the specified operation

    · replay:回放录制好的数据并对比差异。

    o [option: -n/–num] replay numbers, default the latest 10

    o [option: -r/–recordId] single replay available for local debug

    介绍一个接口测试工具AREX

    · watch:查看回放结果及差异。

    o [option: -r/–replayId] replay id, multiple are separated by spaces

    需要注意的是,在本地模式中,AREX使用H2作为本地存储保存测试数据,不再依赖配置服务和存储服务。同时,将无法使用AREX的前端界面。

    04 接口自动化测试

    AREX的自动化测试实际上就是通过将多个接口测试用例有序地组合在一起后进行批量运行,以测试一个完整的业务流程。

    利用AREX工具进行接口自动化测试的一大优势在于,无需手动编写大量的测试用例,海量的线上真实请求即可轻松满足覆盖率,可以选择直接固化已经录制好的接口用例,或通过强制录制的方式固化你所需要的接口用例。

    AREX 固化用例

    AREX可以将搭载过AREX Agent的应用在线上真实发生的请求,包括其Mock数据通过一定的采样频率进行录制。如果需要将某些重要用例固化下来,作为之后回归测试必须执行的项目,只需在回放报告中,找到需要的用例,点击保存,选择目标目录,即可将用例固化下来,表现为常规的测试用例(区别在于报文头里边有arex-record-id标识)。

    AREX 强制录制

    如果某些重要的测试用例没有录制下来,则可以通过手动强制录制来完成固化。

    在AREX接口测试界面中,点击action.record图标,在请求Header中添加 Key: arex-force-record,Value: true,点击Send发送请求。返回报文的Header中会生成Record ID,Key:arex-record-id,Value:录制 ID。点击 Save 即可保存该条录制用例。

    通过AREX录制或强制录制固化下来的测试用例,相较普通的测试用例会多一个Mock数据的模块,即 AREX 在录制过程中Mock到的所有数据(左侧是Mock到的主接口及外部调用的请求报文,右侧是对应的响应报文)。

    AREX现在支持对Mock 数据进行编辑修改。比如你需要验证本地环境下开发的新功能,如果对Mock的数据不满意,则可以手动修改以满足新功能的需求。

    05 自动化测试Pipeline

    CI/CD是现在测试团队的标配, 支持接入CI/CD是必须的功能。AREX支持放出WEB Hook接口,由外部系统(比如Jenkins)触发执行。

    在AREX中创建一个测试任务,创建测试用例和测试环境,确保测试任务能够在 AREX 中正常运行。

    在Jenkins中创建一个新的Job(任务),用于触发AREX测试任务。

    在Jenkins的Job配置中,添加一个 “Execute shell” 步骤,用于执行CURL命令,调用AREX的Web Hook接口。CURL命令可以通过以下方式来构造:

    curl -H "Content-Type: application/json" -X POST -d '{"test_id": "test_task_id"}' https://arex-webhook-url
    

    其中,arex-webhook-url是AREX的Web Hook接口URL,可以在AREX点击Start replay开启回放测试时获取。

    配置Jenkins Job的触发器,使得Job可以在特定的条件下自动运行。例如,可以设置为每次提交代码到源代码仓库时触发。

    运行Jenkins Job,检查测试任务是否被触发,并且测试结果是否正常。

    通过上述步骤,可以将AREX集成到Jenkins中,实现自动化测试和持续集成。

    06 接口测试左移

    传统软件测试流程通常包括需求评审、编写测试用例、准备测试脚本、开发提测后执行测试、提交问题、回归测试等步骤。这种流程存在的问题在于,测试人员处于非常被动的状态,往往需要等待开发人员完成代码开发、正式提测后才能开展测试工作,从而影响整个开发流程。

    特别是在敏捷开发和持续交付等开发模式广泛应用的时代,互联网产品的迭代周期变得更短、速度更快、频次更高,这也为传统软件测试带来了更大的时间压力。

    为解决这一问题,测试左移成为一种更加主动的测试策略。测试左移的主要思想是,通过在代码开发的早期阶段进行测试,让测试人员更有主动权,能够更早地发现和解决问题,从而减少错误和故障对于后期开发工作的影响。这样,测试人员就不会因为质量差或风险高而每次都推迟上线,同时也能保证产品在线上的质量。

    在软件开发中,开发人员通过触发CI流程,使用AREX进行代码签入前的测试。这样做的目的是为了在代码CheckIn 之前,提前发现并解决问题,减少对于后期开发工作的影响。如果在问题验证过程中确定是BUG,开发人员会进行修复。如果变化是由于代码变更导致的正常结果,开发人员会将差异标识为忽略。测试团队能够看到被标识为忽略的节点及其变化,从而同步获知代码变化的影响面。这样做可以让开发人员更加主动地处理问题,同时也可以提高软件的质量和稳定性。

    · 项目地址:

    · AREX文档:

    · AREX官网:

    概念小知识

    · 接口调试

    接口调试是开发人员在完成开发后进行快速自测的一种有效方式,通常可以使用一些接口调试工具,如Postman、ApiFox等向接口发送请求并观察返回结果,调试和解决接口实现中出现的问题。

    · 接口自动化测试

    由测试人员准备测试数据、编写测试用例并使用 JMeter 等工具编写自动化测试脚本,自动化执行测试用例,以确保代码的质量和稳定性。

    · 接口数据Mock

    Mock在英文中含有模仿的意思,顾名思义,数据Mock就是通过构造假数据来达到测试的目的。采用MockJS等工具Mock接口数据,可以节省数据构造的时间,这对后期进行回归测试工作的效率提升至关重要。

    · 接口回归测试

    回归测试旨在确保软件在经过修改、添加新功能、优化性能等后仍然能够正常工作,在软件的快速迭代开发中尤为关键。在接口回归测试中,通常需要构造数据、维护数据、测试用例及接入CI/CD流程。

    最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

    软件测试面试文档

    我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

    面试文档获取方式:

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论