分布式服务框架自动化测试方案分享

张开发
2026/4/19 1:20:50 15 分钟阅读

分享文章

分布式服务框架自动化测试方案分享
一、分布式自动化测试的挑战和困难如何解决分布式节点的测试任务编排因分布式涉及的机器节点较多产品组件间依赖关系复杂单一业务功能需要多组件集成协同完成同时测试时需要将分布式的测试结果进行汇总判断。因此需要测试框架支持分布式的测试执行和自动化执行。如何保证测试结果的可读性不同种类的测试方式测试的侧重点不同需要的指标也不尽相同且编写语言各异因此生成的测试报告也会有所差异需要统筹输出可读性综合性测试报告。敏捷开发模式下如何开展快速的回归测试敏捷开发过程中迭代周期较短阶段性的输出成果带来是频繁的回归测试 同时各组件间独立开发单组件模块替换要求对相关依赖的组件进行完整的回归测试。二、自动化测试范围分析方向是指引走向成功的关键在自动化测试领域由敏捷大师Mike Cohn大师提出的测试金字塔模型被视作经典模型。在分布式系统的自动化测试中纵向可按照“分层”概念划分横向可按照“组件”进行开展。通过增加了“分层”的概念用于区别传统的自动化测试。分层自动化测试倡导的是从UI单层到多层次多粒度的测试组合。按照从底向上的层次顺序测试数量应当是依次减少。测试组合实践的建议是测试组合应具有许多小而快的单元测试 适当的更粗粒度的测试较少高层次的端到端测试。单元自动化测试单元自动化测试是软件中最小可执行的测试单元是最接近代码底层实现的验证手段利用自动化进行完整的回归测试在生命周期中可以尽早地对软件产品进行测试将使效率和质量得到最好的保证。集成测试可依据测试场景进行完整测试在单元测试的基础上将所有模块组装进行测试。联调测试侧重点在于模块间接口的正确性、各模块间的数据流和控制流是否按照设计实现其功能、以及集成后整体功能的正确性。UI功能测试通过用户界面对可见外观及其底层与用户交互的部分的功能测试降低系统功能回归测试的成本。三、自动化测试相关技术与工具自动化测试涉及持续集成工具、UI自动化测试框架、单元测试框架和负载测试工具等一系列工具和技术。为保证技术的先进性和可扩展性分布式自动化测试选用业界主流工具进行集成满足各类测试场景要求。持续集成工具Jenkins是开源CICD软件领导者提供超过1000个插件 来支持构建、部署、自动化。通常与版本管理工具(SCM)、构建工具或者Docker结合使用。通过Jenkins的pipeline流水线插件进行单元测试、集成测试和非功能测试的执行。其中pipeline流水线将独立运行的多个任务连接起来可以实现更复杂的CI/CD流程。pipeline流水线实际上是一套Groovy DSLJenkinsfile用Groovy脚本描述CI/CD的流程。由测试人员编写Jenkinsfile的文本文件并提交到项目的代码版本控制仓库通过Jenkins流水线构建将从代码库中获取脚本进行任务的执行。UI自动化测试框架Selenium是一个web开源自动化测试框架支持主流的浏览器 可实现模拟用户真实操作 支持JavaPython等多种语言编写用例脚本 。同时提供Selenium IDE、Selenium WebDriver和Selenium Standalone Server等工具组件。Selenium IDE为嵌入到浏览器中插件可在浏览器界面中录制和回放脚本支持多种语言到脚本导出。Selenium WebDriver是支持多种编程语言的用于浏览器自动化模拟操作的API库方式上更为灵活同时便于维护。Selenium Standalone Server包含Selenium Grid、远程控制、分布式部署等功能提供分布式扩展、跨平台、异构环境运行的功能。Appium是一个移动端自动化测试开源工具支持iOS和Android平台支持Python、Java等语言。Appium是跨平台的即可以针对不同的平台用一套API来编写测试用例。Appium采用C/S架构核心为Web服务器提供了一套REST的接口。当收到客户端的连接后就会监听到命令进行执行然后通过HTTP响应收集命令执行的结果。因目前项目未涉及移动端开发故暂时未使用此工具。单元测试框架TestNG是一款基于Java的测试框架被设计用于解决大部分的测试需求涵盖单元测试测试一个单独的类和集成测试测试由几个类、几个包甚至有几个框架组成的系统两种测试方式。负载测试工具Fortio是一个快速、小型、可重用、可嵌入的go库以及命令行工具的服务器进程服务器包括一个简单的web UI和结果的图形表示。通过参数化的设置可以运行一个设置的持续时间固定的调用次数的负载任务。四、分布式自动化测试集成方案依据测试范围的分析针对分布式平台测试的手段包括单元自动化测试、集成测试、联调测试和UI自动化测试。针对分布式平台测试场景下的分布式自动测试及执行结果的收集问题将采用Jenkins的pipeline实现流水线的任务编排通过“masteragent”架构的形式进行分布式构建通过串行或者并行的方式借助自动化前端测试框架和组件测试组合、负载测试工具和多组件间实现测试的组合集成可分步骤对执行结果进行采集并可灵活输出测试报告。通过Jenkins与git源码仓库的提交触发关联或者设定定时可实现动态的自动化测试执行。测试架构图多环境分布式执行解决多节点测试协同Jenkins提供了Master Slave机制Master负责调度任务和发送请求多个Slave可以并发的执行构建任务同时可将各步骤结果进行汇总。多测试环境情况下Master节点提供web接口让用户来管理job和Slave Agent并通过标签进行管理。自动化执行满足敏捷开发快速迭代测试采用Jenkins提供时间触发和事件触发等方式实现自动化执行时间触发方式包括定时cron设置和轮询代码仓库事件触发包括上游任务触发、版本管理工具通知触发等方式。通过设定cron定时任务和代码仓库自动触发的方式完成实时构建和每日构建提供持续集成的能力同时通过邮件通知的方式及时反馈给干系人。可视化测试报告输出可视化的自定义测试报告通过对测试案例的编排可根据各环节点的输出内容统一的进行断言判断各测试模式可借助于相关Jenkins插件输出定制化、可视化的测试报告其中报告信息包括成功和失败率、测试覆盖率等信息最后可使用邮件发出。测试库管理和流水线设计任务编排和测试手段的实现pipeline编排方式支持条件分支执行、循环执行方式、重试机制同时对于多执行任务可采用串行和并行的方式进行编排从而实现各类测试手段。测试库管理包括测试组件、测试案例和测试流水线。测试组件考虑到在实际的测试过程中测试的步骤中包含一部分无关乎业务的执行方式比如接口调用、脚本执行等从复用性的角度考虑故考虑将这些重复的事件使用方式抽取为无关业务的执行组件使用Jenkins的pipeline实现。组件在执行前会接收环境信息参数和执行参数环境信息参数包括需要执行的测试环境服务器信息执行参数按照执行场景需要为具体的测试数据和期望结果。测试案例测试案例通过根据对功能测试的原子性划分专注于测试单一业务功能。测试案例按照组件进行独立的功能进行编写。针对测试案例的设计包括案例名称、分类目录、描述、流水线名称、测试步骤、测试流程编排、案例级别、检查关键点等等。流水线流水线的设计通过对测试案例的复用和多场景编排使得测试针对特殊场景按照概要设计规格说明的要求组装成模块从而检查工作是否达到或实现相应技术指标及要求。流水线中可实现对于单元自动化测试、集成测试、联调测试和UI自动化测试的调用 借助与流水线的复用和组合实现组合流水线的前置处理、后置处置和检查点的比较。五、总结与展望通过Jenkins持续集成平台与前端自动化测试、单元测试框架以及负载工具的集成可基本覆盖分布式系统自动化测试的场景未来可在此基础上对Jenkins pipeline进行扩展借助于共享库的功能将更可复用性高的测试代码和函数进行更加灵活的管理和应用借助于可视化构建及视图插件实现视图管理。同时根据自动化测试工作的不断推进和深入进行Jenkins插件代码骨架的开发和实施工作。最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。

更多文章