面向智能时代的开放式集成测试框架标准化服务化,共建测试生态 -彭湃(ITEA technologies Inc 研发总监)
Posted TiD质量竞争力大会
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向智能时代的开放式集成测试框架标准化服务化,共建测试生态 -彭湃(ITEA technologies Inc 研发总监)相关的知识,希望对你有一定的参考价值。
文章整理自TiD2020质量竞争力大会
彭湃 Peter Peng(ITEA technologies Inc 研发总监)
《面向智能时代的开放式集成测试框架标准化、服务化,共建测试生态》演讲
TiD2020质量竞争力大会邀请了ITEA technologies Inc 研发总监彭湃 Peter Peng为参会者带来《面向智能时代的开放式集成测试框架标准化、服务化,共建测试生态》精彩演讲。
彭湃 Peter Peng从业界技术趋势,测试面临的挑战与机遇,测试演进的思考,开放测试框架,共建共营测试生态四个方面,为我们讲述智能时代的开放式集成测试框架标准化、服务化的测试生态构建。
在5G、物联网、大数据、AI、SDx时代,任何团队、公司都不再是单兵作战,产品、服务、软硬件的集成与被集成无处不在。那么如何更快、更好、更省、更安全、更可信地完成产品集成交付与评估迫在眉睫。此次演讲,彭湃结合在业界公司实践和国际标准组织合作的案例,对如下方面进行分析:
1、 测试API标准化:不同团队、公司可能采用不同的技术栈和测试技术,如何通过测试API标准化实现测试同源与协同,更快、更安全完成测试交付。
2、 测试设计标准化:相关测试用例集可能在不同团队、不同时间采用不同数据和环境组合进行测试,如何通过测试设计标准化实现高效测试复用,更好完成测试覆盖。
3、云化资源动态调度:测试环境与资源是有限的,如何实现高效测试环境与资源复用和测试极限并行化,更低成本实现测试交付。
4、测试数据可追溯性:如何跟踪测试过程中通过被测产品、工具、平台的数据,形成高效测试知识图谱,实现产品需求、设计的可追溯性,实现产品可信。
业界技术趋势
近期业界测试技术的演进缘由,主要是在以下几个方面:
1、研发模式的转变:Agile的模式,需要开发、测试人员在前期能高效、自动化的将Unit、组件、CI、功能测试及时完成;DevOps 的模式是 Agile + CD + 。还有很多新的模式不断产生。
2、云化服务的Ready:运行快速频繁的部署,低成本恢复,实时的用户分析和验证,促使参与测试活动的人群由原来测试人员,加上开发人员、用户,提升了测试效率和快速响应能力。测试能力也需要适应这种趋势,测试工程方法和测试工具需要适配。
3、微服务架构的成熟应用:设计理念从单体服务向微服务转变,加速与缩短了软件开发与交付周期,相对的,测试亦需要有跟得上节奏的测试方法、工具以达成目标。亚马逊和Netflix等公司已经成功实践。
4、组织变革的需求:开发者的职责向端到端的产品质量交付转变,开发者需要高效的Unit、组件、功能测试、CI/CD能力与环境。
5、数据驱动的智能化工具:开发和应用更多的工具来协助和替代人力投入,从而降低端到端的交付周期。
除此之外,业界的一些测试实践给我们带来了新的方向,主要是云化,服务化,自动化,数据化,智能化,精兵文化的相关研究。
其中,VSTS通过集成Bing代码搜索、微软工作流、标准的Azure云服务、定制的SaaS和智能化的编码工具、收购API、GitHub极大丰富了智能化开发环境,提供了一个很好的端到端的DevOps工具集成解决方案。
在云化服务的转变过程中,业界测试工程还是存在一些短板的。主要是缺少一个端到端的自适应平台,开发测试不理想,缺陷定位/定界/修复缺乏有效的手段,多厂商集成生态系统不完备。此次演讲,彭湃老师主要是针对多厂商集成生态系统进行分析阐述。
测试面临的挑战与机遇
1. 测试环境越来越复杂、组合越来越多
目前,云化技术越来越普遍。公有云、私有云、混合云不断出现新的技术,组网灵活多变,分布式成为常态。物理机、虚拟机、容器Docker、Kubernetes,形态众多。物联网IoT实现万物互联、软硬结合。5G时代,传统CT向IT迁移,组网复杂。
那么在CT向IT的迁移和云环境的应用和演变过程中,相同的测试用例需要在不同的环境、配置进行验证。版本演进加速等导致相同的测试用例需要大量不同数据组合的验证。软件交付周期缩短,对测试执行效率要求急剧提升。网络开放性决定了上下游软硬件集成成为常态,需要测试设计的共享、测试执行的协同、测试结果的可信。万物互联、软硬结合、云化使得被测系统、软硬件分布式、异地部署、测试驱动也不拘泥于单一软件、系统的应用,多厂商系统集成测试挑战越来越高。云平台、服务化使得系统可靠性、韧性大幅提高,但是单个软件和服务可能存在的问题会被隐藏,最终导致复杂问题难以定位、规避和解决,测试相关数据的采集、监控与分析逐步成为新的技术热点。组网灵活导致对环境资源要求多、交付周期长,如何高效复用环境与资源、极速执行成为新的挑战。
2. Cloud Native开发模式带来机遇和挑战
在Cloud Native云原生开发模式下,微服务、DevOps、持续交付、容器化,对测试都是有一定要求的。微服务集成验证对测试用例的复用提出更高要求。我们需要对不同的数据,不同的环境,进行更多的组合。
DevOPS在持续集成、持续部署(蓝绿部署Blue-green Deployments、金丝雀发布Canary Releases)的模式下,测试自动化的覆盖与质量成为产品成功的关键。环境、产品、测试数据的关联性分析对发布决策与质量起关键性作用。
产品频繁发布、快速交付,对测试执行效率要求更上一层楼。
容器化,特别是在K8S的动态可配的资源请求与限制,使得性能测试更加复杂。静态负载测试不再满足要求,我们更多的需要智能化性能测试与调优。
3. 单个语言、工具独打天下的时代不复存在
测试语言,开发语言层出不穷。新的不同的测试工具也越来越多。TCL、TTCN3等测试语言10多年前在通信行业的如日中天,到现在的弃之如敝履。如何能够将历史的测试资产和能力保持更久的生命力?开源工具日新月异,如何能够将异构技术无缝拉通而不是依赖于单一的工具?很多工具有自己的语言、技术栈,如何高效集成应用?这将都给我们带来很大的挑战。
测试演进的思考
1. 云、大数据、微服务、AI赋予测试架构新生命
云、大数据、微服务、智能化给我们测试带来了很多的挑战。但同时也给测试带来了新的思想,赋予测试架构新生命。
用微服务的思想来重构测试系统。在微服务的架构下,可以将测试API契约化,定义API接口契约。测试工具、能力服务化,可以解耦工具能力技术栈与测试系统,异构、分布式、云化动态部署。测试设计标准化,以API契约为基准,与环境、数据解耦但高效复用。
用云架构的理念来调度环境资源。对测试资源模型化管理包括测试资源、环境建模。对测试环境动态构建,按照需要从分层管理的资源池动态构建测试环境并分配,避免测试资源浪费。测试资源按需分配和释放,充分二次利用分配环境,动态匹配资源。测试执行能力横向弹性扩容,根据测试执行策略和资源池能力,极速并行化测试执行。
用大数据的能力来管理知识图谱。我们可以对数据进行归一化管理,定义数据元属性、数据关联性标准。我们可以通过SUT/AUT、工具、基础设施数据与日志采集、清晰与标准化规整数据的ETL。通过数据与数据关联性构建测试/研发知识图谱。
用人工智能来持续优化测试演进。基于历史测试设计与执行数据知识图谱的学习,有效反馈和调整测试计划、设计、执行与分析。
2. 测试理念规范化
我们希望把测试的理念进行规范化。上图的实践中,测试语言ITEL获得国际标准组织ETSI推荐。该实践当时定义了测试的一些理念,包括:
• 测试用例由测试执行流和抽象资源构成,引用非资源类数据模型。测试环境、资源和数据本身是解耦的,可以做到有效的结合。
• 测试执行流调用高层函数及测试API,测试设计与实现解耦,测试复用。
• 资源实例从测试环境动态分配,并动态映射到抽象资源实现环境解耦,动态复用,高效调度。
• 测试套定义测试用例与环境、数据、测试调度要求,降低环境成本,极速测试并行化。
• 性能测试可复用测试设计,丰富测试场景,逼近真实应用。
3. 测试语言ITEL是测试标准框架的基石
上图左边是ETSI GR NFV-TST 011中ITEL完整概念模型。右边是ITEL在python的一个实现。我们要说的ITEL并不是具体规定的某一种语法,而是定义的抽象的语意。我们可以用不同的语言实现语意。现在用python来实现。上图右边展示的是一个简单的用例结构:
• @testcase提供用例必备和可扩展的属性描述,用于用例标识,并支撑在测试套检索、测试分析中关键字查询等。
• @resource申明需要的测试资源,如手机等。具体的资源信息(如手机的品牌)是不需要关注的,可以在测试执行过程中动态调度,与具体资源和环境解耦。
• @procedure部分描述测试过程。用来描述用什么测试资源调用什么样API。用户不用关注工具在哪里。数据采集由测试服务提供。我们可以通过标准化,通过测试用例,快速反向生成文本式的测试用例,可以做很多的测试用例的生成。
• DS关键字是数据服务的引用。与数据实例是分离解耦。测试套可完成测试数据与测试用例的组合。
分布式测试架构API获得标准组织TM Forum高度认可。我们在测试设计与执行的管理中,做到测试资源、API、用例、数据、高层函数等标准化管理;测试设计语言与测试资源实现解耦,不同技术栈工具能力复用;定义测试用例的概念语义模型,与用例语言载体解耦,使BYOL成为现实;多形态的用例设计IDE给不同层次用户和不同场景应用带来便利。
4. 资源动态分配与测试极速并行化
对于测试环境的管理,我们希望通过分层的动态的环境分配实现资源的最大化利用。可以通过多数据中心的模式来管理资源。通过对环境的描述可以动态构建测试环境。在测试活动中,我们向资源管理系申请需要的环境。它就会动态地从数据中心里分配我们需要的资源,构建我们需要的环境。
环境可以分层来管理,通过动态资源管理,将大池子里面的资源筛选出需要的资源给下一层小池子来使用,具体需要将资源分层,几层由业务团队和资源情况来决定。比如说,我们将全部资源定位为第一层,分配给这个团队的资源为第二层,测试用例集需要的测试环境为第三层,每层任务结束后自动释放给上一层。同时,通过对资源使用的监控,可以将更加合理自动智能调正。在测试执行的过程中,执行器分析用例里面的状态机还有资源,向动态构建好的环境(第三层)申请需要的所需资源,形成进一步共享,用例执行完成后自动释放回资源池。这样就可以高效复用了。同时,通过AI相关应用,可以更好地实现智能化环境构建,实现环境零等待高复用。
5. 动态资源调度使能极速测试执行
最早的时候,在粗放式的环境占用下,我们分配一套环境进行测试,可能会存在2-4测试用例。但是我们还是串行的完成了测试用例的执行。因为我们不知道哪些资源会冲突。如果通过一些精细化的管理,我们知道哪些用例需要什么样的资源,然后通过动态的资源池化,实现极限测试并行执行。那么在测试过程中,其实很多问题是可以通过这个测试数据回答的。比如“这个代码是否被完整测试了”“告警以前出现过吗”等各种各样的测试问题。
6. 测试知识图谱的构建与应用
可以通过将现有的数据进行归一化的标准化模型管理,然后根据采集的数据进行清洗形成测试图谱反馈回去,从而对测试设计、测试计划、测试执行、测试分析进行反馈和引导。
7. 典型应用
澎湃还跟参会者分享了一个典型的应用。通过一些Pipeline,一个智能化的工作流将测试活动串联起来,就可以更好地通过测试的智能化提升测试质量和效率。
开放测试框架
共建共营测试生态
1. 开放测试框架,共建共营测试生态
上图是定义的一个新的开放框架。包括:构建开放的微服务测试架构,按需构建测试生态;标准化可定义的集成测试桌面,一站式完成测试计划、设计、执行与分析;以工作流框架驱动业务,标准化测试(研发)流程,像GPS一般进行引导,过程一目了然。通过动态资源管理使能资源利用最大化。测试执行服务化,测试能力跨公司、跨技术、跨地域复用。执行过程安全可信,测试数据归一化管理,最终形成测试知识图谱实现测试持续优化。
2. 测试设计与执行实现范例
澎湃分享了一个测试设计与执行实现范例。通过不同形态的IDE,如WebIDE、PyCharm、Eclipse,进行测试用例的编辑。在编辑的过程中,可以将用例编译成不同的语言形态归一化到标准测试模型。由测试执行平台和不同的测试工具服务进行调用。
3. 测试数据分析实现范例
澎湃介绍到工具本身就是动态的。工具贡献到资源池里,可以实现测试资源的共享。随时、随地执行,无需安装、在自己的桌面即可完成用例的设计与执行。
在测试数据的实现过程中,可以利用很多开源的工具技术,如logstash、elasticsearch、Grafana Dashboard Notifications、User Dashboard等各种工具的组合,实现对数据归一化的清洗、转化、存储、分析,最终将一些告警等内容,推送到测试工作人员的桌面,让测试工作人员更高效地完成测试用例,测试分析,测试设计。
4. 在线测试设计、执行、调试
ITEA做了一个在线测试设计、执行、调试一体化平台。这个平台采用的是Code Service的开源方案,用phyon实现的测试用例设计。这个云平台无需安装,可以在线完成测试设计,进行动态的调试。这背后直接应用了不同工具、不同的语言实现测试能力。如:用C语言实现对手机的控制或者其它的测试工具能力。所有的工具都可以通过这样的测试服务集成在一起。但是在前端可以采用任何喜欢的语言进行测试用例的设计、调试。
5. 拖曳式测试用例设计
这个平台还可以通过拖拽式形式完成测试用例设计。目前可与其它ITEL规范下测试用例实时互转(当前支持PyITEL)。
6. 测试套定义测试组合
平台可以通过测试套将测试用例、测试数据、测试环境关联起来,比如说windows,linux不同的测试环境,不同的浏览器组合里中英文的数据,不同软件版本的不同数据配置,通过测试套将这些结合到一起,使得测试用例和数据、环境进行解耦并且有机结合在一起。
7. 在线完成性能测试
通过将测试用例和定义的话务模型,以及一些我们需要的用例组合起来,完成在线测试用例的性能测试。也可以在线地通过这些数据的一些采集,实时的观测测试执行情况,以及一些相关的KPI。这些都是初步阶段的功能。后期通过不断地完善系统,可实现更高效的自动化性能测试的设计和分析。
8. 开放桌面、数据分析
平台还可以实现开放式的桌面,开放式的数据分析。开放式桌面可以定制化。平台可以将不同方面的测试数据集成到一起。
数据自动采集有助于一目了然地了解测试过程。这些数据包括测试执行过程中产生的日志,比如说截屏,微服务里面的消息码流和一些异常请求等,以及在WEB测试时,正常页面背后产生的一些请求的异常。这个异常可以进行采集推动到测试工作人员的桌面。
推 荐
以上是关于面向智能时代的开放式集成测试框架标准化服务化,共建测试生态 -彭湃(ITEA technologies Inc 研发总监)的主要内容,如果未能解决你的问题,请参考以下文章
重庆十大人工智能应用场景发布,永川西部自动驾驶开放测试基地项目入选
重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准