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