接口测试利器:AREX
配景在整个软件开辟生命周期中,软件测试工作始终贯穿其中,包括开辟过程中、代码合并前的集成测试以及上线后的一连集成测试。为包管软件质量的全面性和稳定性,开辟和测试人员都必要不断重复执行以下测试任务:
接口调试
接口调试是开辟人员在完成开辟后举行快速自测的一种有效方式,通常可以使用一些接口调试工具,如 Postman、ApiFox 等向接口发送请求并观察返回结果,调试和办理接口实现中出现的问题。
接口主动化测试
由测试人员准备测试数据、编写测试用例并使用 JMeter 等工具编写主动化测试脚本,主动化执行测试用例,以确保代码的质量和稳定性。
接口数据 Mock
Mock 在英文中含有模仿的意思,顾名思义,数据 Mock 就是通过构造假数据来达到测试的目标。采用 MockJS 等工具 Mock 接口数据,可以节省数据构造的时间,这对后期举行回归测试工作的效率提升至关紧张。
接口回归测试
回归测试旨在确保软件在经过修改、添加新功能、优化性能等后仍旧能够正常工作,在软件的快速迭代开辟中尤为关键。在接口回归测试中,通常必要构造数据、维护数据、测试用例及接入 CI/CD 流程。
对于一个产研团队来说,若要实现上述研发过程中全部环节的需求,至少必要使用四五种不同的工具才能满意,在实际工作中带来的问题也可想而知:
复杂性增加:使用多个工具大概会导致研发流程变得更加复杂,必要更多的时间和精神来协调和管理,团队无法在同一套体系中举行协作,导致各种沟通不及时、共同低效。
高风险:使用多个工具也意味着必要将数据从一个工具同步到另一个工具,这大概会增加出错的风险。
高成本:每个工具都有自己的使用方法和特点,必要花费时间来学习和掌握,后期也必要花费更多的时间来维护和更新工具,特殊是在恒久的项目中。
回归测试复杂度增加:对于必要快速迭代的复杂体系,必要频繁地维护数据和用例,无论是脚本化维护照旧手工维护,都必要花费大量的精神。业务复杂度高时,回归测试的复杂度大概会日益增高,这大概必要更多的时间和资源来完成。
“主动化”测试偏重于“主动化”执行,但维护工作仍旧是“手工”,工作量非常大。
试想一下,如果有一款工具可以实现上述全部功能,那不是可以大大简化研发流程,提高测试效率,降低维护成本和出错率?今天我们要先容的就是这样一个工具:AREX。
什么是 AREX
AREX 是一款开源的主动化测试平台,联合了 Postman + Mock + 比对测试,不仅提供了接口测试功能,更是通过 Java Agent 字节码注入技术,在生产情况录制和存储请求、应答数据,在测试情况回放请求和注入 Mock 数据,并存储新的应答,以此来达到主动录制、主动回放、主动比对,为接口回归测试提供便利,实现了从接口调试到接口数据 Mock,再到接口主动化测试和接口回归测试的闭环工作流。借助 AREX,开辟和测试人员可以各取所需,协同合作,实现更高效的软件开辟和测试。
https://i-blog.csdnimg.cn/blog_migrate/d2b299afb9ddf66ce08acff5bdeae863.png
接口调试(Postman)
AREX 不仅能支持 Postman 大部分的接口调试功能,还提供了接口用例功能。
https://i-blog.csdnimg.cn/blog_migrate/e4660bd2427225492b2834dcd9c700f7.png
接口用例功能
AREX 可以为同一个接口请求保存多个场景下的接口用例,每个用例都将主动继续当前接口请求下的设置,如 URL、请求方式及 Parameters、Header、Body 及前置脚本(Pre-request Script)等。通过继续父节点的接口请求设置,测试用例不必要逐一重新界说接口的请求参数及前置脚本,后续再次调试时可直接运行接口用例,从而淘汰测试用例编写的工作量和时间。
AREX 还提供了测试用例管理功能。如今可以对测试用例添加标签(Add Tag)举行分类,后期将增加通过标签搜刮用例的功能,方便管理。别的可以为用例添加描述,提高用例可读性,让协作者更容易明确测试用例的目标和预期结果,并且能更好地把握测试内容。
导入、导出用例(开辟中)
各个测试团队都有自己的测试习惯,欺凌迁移到一个新的测试工具,有很大的迁移成本。AREX 后续将一连支持各种格式的测试用例导入、导出,届时旧工具中的众多用例可以一键迁移到 AREX,无需再次新建项目,同时也可以将 AREX 录制到的用例导出,资助测试团队降低迁移成本。
如今 AREX 正在支持 Postman 导出的用例导入,如需支持其他格式的用例导入,可以在 Github 上提交 Issue,与社区共建。
固化的测试用例也支持导出,如今支持 Postman 格式的用例(JSON格式)。
接口回归测试(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) -jar your-application.jar
其中:
[*]/path/to/arex-agent-0.1.0.jar 必要修改为 arex-agent-0.1.0.jar
文件在你服务器中的实际路径
[*]your-service-name 必要修改为你被测应用的名称
[*] 必要修改为数据存储服务的地点和端口号
[*]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)。
步骤四:选择回放,输入你测试情况的接口地点,开始执行全部录制的接口测试用例。
回放完成后,会天生详尽的回放报告,可以很直观地看到回放通过率、接口通过率,以及每个接口下的详情。
https://i-blog.csdnimg.cn/blog_migrate/7e531f1ebe15778576a19a1b632c27a5.png
出现回放失败的接口可以点击查察该接口下回放失败用例的比对结果,AREX 在最新版本中将比对结果举行了可视化展示,方便定位问题。
https://i-blog.csdnimg.cn/blog_migrate/b20e4c6d5659005163ee4f72c2d4a414.png
还有一种更简单的方式,不消安装 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"
运行后进入如下界面
https://i-blog.csdnimg.cn/blog_migrate/f653aed5badbf9105bd4ef3ade8bef80.png
支持的下令如下:
ls:查察录制的全部case。
view all cases under the specified operation
replay:回放录制好的数据并对比差异。
replay numbers, default the latest 10
single replay available for local debug
watch:查察回放结果及差异。
replay id, multiple are separated by spaces
必要注意的是,在当地模式中,AREX 使用 H2 作为当地存储保存测试数据,不再依赖设置服务和存储服务。同时,你将无法使用 AREX 的前端界面。
接口主动化测试
AREX 的主动化测试实际上就是通过将多个接口测试用例有序地组合在一起后举行批量运行,以测试一个完备的业务流程。
https://i-blog.csdnimg.cn/blog_migrate/9492e9405073248921664a227f199c19.png
使用 AREX 工具举行接口主动化测试的一大优势在于,无需手动编写大量的测试用例,海量的线上真实请求即可轻松满意覆盖率,你可以选择直接固化已经录制好的接口用例,或通过欺凌录制的方式固化你所必要的接口用例。
AREX 固化用例
AREX 可以将搭载过 AREX Agent 的应用在线上真实发生的请求,包括其 Mock 数据通过一定的采样频率举行录制。如果必要将某些紧张用例固化下来,作为之后回归测试必须执行的项目,只需在回放报告中,找到必要的用例,点击保存,选择目标目次,即可将用例固化下来,表现为通例的测试用例(区别在于报文头里边有arex-record-id标识)。
https://i-blog.csdnimg.cn/blog_migrate/ad854be79aafaf15b75686c2c33f7f0b.png
AREX 欺凌录制
如果某些紧张的测试用例没有录制下来,则可以通过手动欺凌录制来完成固化。
在 AREX 接口测试界面中,点击 action.record 图标,在请求 Header 中添加 Key: arex-force-record,Value: true,点击 Send 发送请求。返回报文的 Header 中会天生 Record ID,Key:arex-record-id,Value:录制 ID。点击 Save 即可保存该条录制用例。
https://i-blog.csdnimg.cn/blog_migrate/aa293ca7c4d995f0ce613d3b8304486f.png
通过 AREX 录制或欺凌录制固化下来的测试用例,相较普通的测试用例会多一个 Mock 数据的模块,即 AREX 在录制过程中 Mock 到的全部数据(左侧是 Mock 到的主接口及外部调用的请求报文,右侧是对应的响应报文)。
https://i-blog.csdnimg.cn/blog_migrate/e8f410287dbebc474ee96809121d884d.png
AREX 如今支持对 Mock 数据举行编辑修改。好比你必要验证当地情况下开辟的新功能,如果对 Mock 的数据不满意,则可以手动修改以满意新功能的需求。
主动化测试 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 开启回放测试时获取。
https://i-blog.csdnimg.cn/blog_migrate/7d43050730c08ffdfc0d1442927af2a0.png
设置 Jenkins Job 的触发器,使得 Job 可以在特定的条件下主动运行。例如,可以设置为每次提交代码到源代码仓库时触发。
运行 Jenkins Job,查抄测试任务是否被触发,并且测试结果是否正常。
通过上述步骤,我们可以将 AREX 集成到 Jenkins 中,实现主动化测试和一连集成。
接口测试左移
传统软件测试流程通常包括需求评审、编写测试用例、准备测试脚本、开辟提测后执行测试、提交问题、回归测试等步骤。这种流程存在的问题在于,测试人员处于非常被动的状态,往往必要等待开辟人员完成代码开辟、正式提测后才能开展测试工作,从而影响整个开辟流程。
特殊是在敏捷开辟和一连交付等开辟模式广泛应用的期间,互联网产品的迭代周期变得更短、速度更快、频次更高,这也为传统软件测试带来了更大的时间压力。
为办理这一问题,测试左移成为一种更加主动的测试计谋。测试左移的重要头脑是,通过在代码开辟的早期阶段举行测试,让测试人员更有主动权,能够更早地发现和办理问题,从而淘汰错误和故障对于后期开辟工作的影响。这样,测试人员就不会因为质量差或风险高而每次都推迟上线,同时也能包管产品在线上的质量。
在软件开辟中,开辟人员通过触发 CI 流程,使用 AREX 举行代码签入前的测试。这样做的目标是为了在代码 CheckIn 之前,提前发现并办理问题,淘汰对于后期开辟工作的影响。如果在问题验证过程中确定是 BUG,开辟人员会举行修复。如果厘革是由于代码变更导致的正常结果,开辟人员会将差异标识为忽略。测试团队能够看到被标识为忽略的节点及其厘革,从而同步获知代码厘革的影响面。这样做可以让开辟人员更加主动地处理问题,同时也可以提高软件的质量和稳定性。
最后: 为了回馈铁杆粉丝们,我给大家整理了完备的软件测试视频学习教程,朋侪们如果必要可以自行免费领取 【包管100%免费】
https://i-blog.csdnimg.cn/blog_migrate/69d8f0d9807ca72d5525111ba8f515a3.png#pic_center
这些资料,对于【软件测试】的朋侪来说应该是最全面最完备的备战仓库,这个仓库也伴随上万个测试工程师们走过最艰巨的旅程,希望也能资助到你!
软件测试工程师的交流学习群社:786229024
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
https://i-blog.csdnimg.cn/blog_migrate/a46bdc1ffca6f2312f4ff41c372a5ad4.png#pic_center
全套资料获取方式:
https://i-blog.csdnimg.cn/blog_migrate/b715062ea7edb5131e85b799891d433a.gif#pic_center
https://i-blog.csdnimg.cn/blog_migrate/e8389c42aff691fedba42979162a4aee.gif#pic_center
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]