微服务的流程自动化测试设计 | 叶婉婷-阿里云开发者社区

开发者社区> jurassic_1> 正文

微服务的流程自动化测试设计 | 叶婉婷

简介: 测试人员在流程微服务中如何简单高效完成开发测试任务?本期中,讲师将结合自身流程平台自动化测试实践的经验,梳理出在微服务架构的数字化企业云平台中,该如何完成流程微服务的自动化测试,并且提供高质量的上线保障。
+关注继续查看
3668e0f9d20a9122f0629ac2a3aafd53d2e84a37
大家好,我是来自普元的叶婉婷。今天由我来和中生代技术的朋友分享一下流程微服务的自动化测试。f4d5df347258c5d869ec872fc6eb76806d4f006b首先,我给大家分享一下普元多年实践的自动化测试过程与方法;2433a826c05a7f1441873229863720f41a5b8c5d阐述一下我们的测试理念:测试一切、测试驱动开发、测试自动化;1)测试一切文档、配置、环境、发布包,一切皆代码,这个很好理解,我不再赘述;2)测试驱动开发测试提前,敏捷协作,测试用例同步开发;3)测试自动化多种测试技术能力、组件化开发、统一管理,不间断测试执行;为了实现测试驱动开发、测试自动化,我们认为需要以下四个要素:1)敏捷协作的过程;2)测试设计方法;3)全栈测试团队;4)自动化测试服务;52179bb78f95ea7b01ad87f7752a3fd2623335bc
普元多年来在产品研发过程中,一直践行敏捷协作的RDT过程,在新一代云平台项目中,我们分为若干RDT小团队,每个团队负责一个或多个领域系统,以实现不同的用户场景;在每个RDT小团队中,采用需求、开发、测试协同并行工作模式;随着产品需要在公有云上部署运维,我们做了一些改进,运维组参与分析用户场景、需求设计测试评审、反馈运维遇到的问题,而且,运维组自身也作为RDT团队直接负责统一监控中心的需求定义和设计开发;6b47f73c983ace2da1e437411e1e63837bdb30cd那么为什么在敏捷协作的过程中,就能将测试尽量提前呢?从上面过程中我们可以看到,在计划阶段,每个RDT团队对用户场景都有了统一认识,那么在接下来的每个迭代开发中,定义需求规格、设计概念模型/原型界面/API定义/数据模型的同时,测试可以并行进行测试对象分析、测试点分析、测试数据和测试组件设计,并且强调RDT的相互评审;基于这些成果,开发进行编码的同时,测试就可以并行进行测试用例的开发,并且测试用例开始不间断的执行,自动化测试相比传统开发过程大大提前,通过测试尽量提前达到测试驱动开发的目标;090576ce1df3030c0df14d5c80363bbbedfbdf5a自动化测试毕竟不同于手工用例,我们从四个方面定义了自动化测试的设计原则与方法:1)易管理性统一规划、统一版本控制的规范要求;2)易实现性采用分层设计,测试基础服务层、测试能力支撑层、测试组件层、测试用例 层,支持多种技术的测试能力,测试组件复用,用例专注业务逻辑;3)易维护性组件与用例分离、区分变化与不变、测试用例原则上不互相依赖、测试数据 容易维护;4)易定位性测试用例独立、低复杂度、要求断言信息的准确性;5e9ab8900d2bd76148ecd0fb49683b0b545eaa7f自动化测试分层设计对测试团队提出了更高的要求,也就是要求我们必须成为全栈测试团队,具备各层的能力:测试架构师负责总体设计、测试基础服务层,提供统一管理、统一调度的能力;领域技术专家负责测试能力支撑层,对各领域测试技术进行分析和选型,提供测试服务能力以及基础的技术组件;测试专家负责指导测试开发工程师进行测试方案设计、测试组件和用例的实现;b64389ce25b60e90784bb61728946b5395a6b951除了过程、方法、团队,自动化测试的落地最终还是需要依赖各种自动化测试服务的实现,我们也一直在做这方面的努力,并形成了产品化的自动化测试服务能力;除测试基础服务以外,我们没有选择从零开始,而是评估并引入好的开源技术和公司内部其他产品的可用技术,按照我们的自动化测试设计原则和方法进行相应的改造;比如WebUI测试服务,我们选用了Selenium,为了适应我们的用例开发规范和易用性,我们对其接口进行了重新封装,形成我们的WebUI基础组件库;比如CI工具Jenkins1.x,由于我们产品多、每个产品版本也多,使用时间久了之后其任务管理界面简直就是灾难,任务的调用关系也非常不直观、难以维护,所以我们扩展实现了持续集成项目管理、图形化的持续集成任务流管理,以适应我们的需要;另外,像用例开发/调试,除了支持Java以外,我们还复用了普元的逻辑流图形化开发能力、组件库可视化管理能力,用例开发效率更高、更易维护;a688a8bac537f2ee34689365adc71e273c8acacb在企业级应用中,流程服务的测试一直面临诸多的问题,诸如:— 系统内部任何一个微小的变化,要上线测试;— 外部关联系统变化,引起的业务验证测试;— 如果流程作为一个公共的服务,一旦服务升级,所有业务系统都会有影响,所有业务系统全部都要验证。这些都会给测试造成巨大的工作量,不仅消耗过多的时间,还无法很好的保证质量。当这些问题投射到云环境与分布式架构中,所面临的复杂度与解决难度的升级不言而喻。179ad43680f61b005b8e5b89f9d18d4851d6ae87如图所示,在基于微服务架构的数字化企业云平台中,流程是一类重要的微服务。我们正在尝试将流程微服务的测试自动化,并由DevOps平台高效的验证微服务的改变是否影响原先的业务,从而提供高质量的上线保障,让测试人员告别那些让人生无可恋的重复性操作。5a86a1ef61f49affa34213a37e6ae61c275e4b21基于微服务的自动化测试的本质是通过数据的录制记录既有的测试过程,并通过案例固化过程中的全部测试数据,最终通过对案例的调用回放完成流程微服务测试的自动化。572bc49002cfc57e8474f4fcc998070bd5d164cf流程微服务的自动化测试并非完全脱离手工测试,这里的自动化是建立初次手工测试的基础上的。第一次手工测试会在数据库中记录下所有的测试信息,我们将收集这些信息录制形成测试数据文件,根据每条流程实例录制一个测试数据文件。每个文件中包含:该流程实例运行过程中的所有相应请求/相应报文,该流程实例运行过程中的上下文变化,该流程实例的流转路径(活动+连线),该流程实例包含的子流程实例。567b140afbed13978b42502a4bc21fa343d1dbdc在流程微服务的自动化测试里,我们会根据实际的接口调用来设计多个组件,这些组件放置于一个测试组件微服务中提供给测试人员使用,每个简单的组件都对应一个接口的请求报文。这就犹如搭积木,每个积木是一个简单的接口报文,多个积木搭在一起形成一个房子,即多个接口报文固定调用形成一个复杂组件。多个房子、花坛、汽车形成一个小镇,即多个简单组件和复杂组件结合在一起生成的最终一个“流程实例的自动化测试”案例。有了之前收集的数据文件,就是根据每个数据文件,选择积木的问题了,再根据数据文件给每个组件添加必要的参数,这样就形成了测试案例。在案例生成的过程中测试人员不需要编写任何代码!df140c9304297df39009d2fc66db9a56a75e2b89我们将统一测试平台门户设计为一类领域系统,可以上传我们的测试案例部署,选择案例点击执行即可。每个案例的运行其实就是相应手工测试的一次回放。案例执行完成会形成详细的测试报告,包含了成功、错误、异常的详细信息,案例统计图,以及案例执行时间。清晰明了地达成便捷测试。f6876ba7d719172168848a8e23e237d08ef345c23f19f34e9c11a280c5db1800a39ac6e88ef9017c
流程微服务有时也会和其他微服务之间通信,往往测试环境中无法与其他微服务直接交互,这时候我们为了模拟流程微服务引擎与其他微服务交互过程,提供了一个服务挡板功能,服务挡板也是设计中的数字化企业云平台的一类领域系统,由api mock提供挡板能力,即用服务挡板替代生产上的微服务。(未来我们会详细介绍api mock相对于传统mock的优势)cafeb59948ba9ef7e97edf644082e21d66dac417当自动化测试进行到其他微服务交互时,流程微服务引擎向挡板发起请求,挡板响应请求,并动态拼写回调报文,当所有的回调报文完成之后,挡板通知测试引擎,测试引擎向流程引擎发送回调报文。b1175ea3251702c595247f9cf50bdfc7c37f8649
对于测试案例,不仅需要模拟流程流转的服务接口过程,还需要验证流转过程中的参数正确性,所以需要验证组件来完成参数的确认。1e2358315a96bb7f69cfd7a25e7391c4a38dbd3c
  • - 对比服务接口返回报文信息是否一致;
  • - 一个活动完成后循环等待后继活动是否激活;
  • - 一个活动完成后对比当前后继活动与历史测试数据中后继活动是否一致;
  • - 一个活动激活后对比当前活动产生的连线是否与历史测试数据中连线信息一致;
  • - 每当一个可能引起上下文改变的服务接口完成后,对比当前流程实例与历史测试数据中的上下文是否一致。
88a7eeb4a6875a3f3d63ad36f50629f201a56725
最后总结回顾一下,我们的测试理念:测试一切、测试驱动开发、测试自动化,以及为了实现这三点所需的四个要素:敏捷协作的过程、测试设计方法、全栈测试团队、自动化测试服务。有了适合自己的过程、方法、团队、工具的保障,自动化测试的实践自然能够水到渠成。以上就是本次分享的全部内容,感谢大家。

Q&A

Q1:自动化测试在非微服务架构和微服务架构的本质区别是?

A1 微服务自动化测试重要的一点就是服务间的交互。我们提供mock组件来模拟服务间调用,而传统的整体架构没有这种问题


Q2:有没有数据支撑,做自动化的数据度量?

A2 数据支撑指的是什么?我们在项目中跑4000的用例是没有问题的


Q3:哪些场景下不应该做自动化呢?

A3 做不做自动化测试主要看你的用例数量,重复执行率,以及自动化测试难度。当你觉得测试用例少,或者难度过大的时候不建议用


Q4:数据录制是采用什么方式存储和标识的呢?如何做到后续的复用和扩展?

A4 数据录制是用数据库记录初次手工测试产生的数据,以流程实例id为标识。我们开发的工具会根据流程实例id取出这些数据形成文件,即使数据库被清,根据文件可以再次生成用例。扩展了新的服务接口我们只要开发新的组件即可。


Q5:自动化测试有压力测试的模拟吗?

A5 暂时我们没有提供压力测试的自动化测试


Q6:请问提到的中间mock组件和美团技术博客分享的mock组件类似的功能吗,可以推荐下相关的mock开源组件吗?

A6:我们这里的mock组件就是用mock server模拟数据来进行服务间调用。这个组件是我们测试组件的概念。就是自己将mock调用方法封装成的一个组件。


分享者简介:叶婉婷,普元信息SOA产品部高级软件工程师,现为普元微服务应用平台项目开发团队一员。在过去的两年参与了流程平台项目,主要负责Eclipse插件开发及自动化测试平台开发。爱好:旅游、电影、美食、游泳。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SharePoint自动化系列——通过PowerShell创建SharePoint Web
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PSSnapin Microsoft.
632 0
SharePoint自动化系列——通过PowerShell创建SharePoint Site Collection
通过PowerShell创建SharePoint Site Collection,代码如下: Add-PSSnapin microsoft.sharepoint.powershell function CreateTeamSite() { $webApps = Get-SPWebApplication $webAppsUrl = $webApps.
720 0
阿里云RPA(机器人流程自动化)干货系列之二:认识RPA(下)
导读:本文是阿里云RPA(机器人流程自动化)干货系列之二,主要介绍了RPA的发展齐纳经和主要使用场景有哪些,目前国内外主流的RPA厂商以及RPA的未来在哪。 一、RPA的发展前景 根据Gartner的最新研究,2018年全球机器人流程自动化(RPA)软件的开支预计将达到6.8亿美元,同比增长57%,到2022年支出达到24亿美元。
8215 0
阿里云RPA(机器人流程自动化)干货系列之一:认识RPA(上)
导读:本文是阿里云RPA(机器人流程自动化)干货系列的开山之作,全面、详细的剖析了RPA的基本概念、给企业带来的价值点以及RPA的优劣势分析。 一、什么是RPA? 人类社会进入21世纪的第一个十年之后,全球企业大都面临着两个严峻的挑战:一是人力成本的不断飙升带来了企业经营成本的不断增加;二是业务的快速发展导致企业内部流程纷繁复杂,工作效率的提升跟不上业务的发展速度。
15886 0
阿里云服务器备案流程(ICP备案)
阿里云服务器备案流程(ICP备案)
867 0
【转】自动实时监控Windows2003服务器终端登录并发邮件和发短信通知
记得以前管理的一批windows服务器,一些开源程序做的web站点总会遭到入侵。然而就想找找看有没有办法可以知道服务器有没有被入侵。服务器在什么时候登陆过,如果登陆马上发邮件通知,感觉这种问题肯定有人处理过,于是网上搜罗了一下。
1117 0
SharePoint自动化系列——通过PowerShell创建SharePoint List Items
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PSSnapin microsoft.
711 0
微服务与网关技术(SIA-GateWay)
微服务治理是微服务架构的难点,SIA-GATEWAY作为微服务基础设施充分考虑到了与业务系统的兼容性和相关技术生态的成熟度。
3912 0
+关注
jurassic_1
中生代技术,一群技术人在每周三晚上的技术分享 微信公众号:中生代技术
120
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载