分布式服务框架自动化测试方案分享 - 副本_第1页
分布式服务框架自动化测试方案分享 - 副本_第2页
分布式服务框架自动化测试方案分享 - 副本_第3页
分布式服务框架自动化测试方案分享 - 副本_第4页
分布式服务框架自动化测试方案分享 - 副本_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论