15年开发与测试领域经验,从CS/BS架构到微服务,从传统软件到ToC互联网,目前在ToB领域,经历过不同时期、各种类型软件的质量挑战,总结和实践出自己的一套质量保障方法论。
曾任:盛大,负责盛大TV盒子发布流水线与性能测试;微软,MSN测试自动化框架,项目自动化测试实施与管理;阿里,本地生活会员业务质量负责人,负责业务测试与团队管理;
现任:华为,流程IT首席测试架构师,负责华为流程管理软件/CRM/SCM等系统的整体测试能力提升。
擅长领域:
微服务系统测试 - 擅长复杂微服务体系后端服务的质量保障,尤其是自动化测试从平台工具的研发到具体落地的实施;
测试自动化平台 - 构建过各个时代的自动化框架与平台,也负责过自动化落地过程,既有测试平台的架构视角,也有平台用户视角,从而设计出符合业务特点、技术架构与人员能力模型的自动化实施过程;
测试领域架构与建模 - 基于对业务流程与开发架构的理解,对测试领域代码进行设计与建模,提高测试代码复用度、可维护性,并有效控制复杂度的上限,在有限人力资源与高质量要求中寻找最佳平衡。
自2018年华为被美国技术封锁后走上了自主研发的道路,流程管理软件作为华为公司最核心的业务支撑系统面临去Q(Oracle)的巨大挑战,相比互联网的去IOE,华为不仅面临数据的更换,更面临使用了20余年积累了无数复杂业务规则的流程系统的逐步替换,华为公司的业务从网络基础设施到数字能源,从云计算服务到消费者终端,从服务器制造到车联网均深有涉猎,这些领域的采购、供应、制造、分销、服务交错构筑了全世界最复杂的业务场景。
在华为流程管理软件系统最重要的三个业务流程,PTP/OTC/PTM分别涉及数百个异构的业务系统,并纵横交错的形成了网状的复杂业务路径,结合20余年积累下来的数不清业务规则,对此我们曾经招募上百名测试人员进行手工流程拉通测试,华为流程IT部门在一直在思考如何应对在去O的的道路上,通过自主研发替换的方案所面临的巨大挑战:
· 历经数百个系统的超长业务链路测试该如何提升效率与质量
· 如何针对三大业务流程近600个关键业务场景链路及其分支进行合理建模,以提高上线前的测试覆盖度
· 如何在构建业务链路自动化测试时高效的定位与调试问题,形成异步链路跟踪定位的工具与最佳实践
· 如何破解在复杂异构的测试环境中服务经常重启、部署造成对超长链路测试效率的折损
针对华为流程管理软件在去O的背景下所面临的技术挑战,我们通过针对超长异步业务流程系统的特点有针对性的设计了全链路自动化测试平台,通过场景建模、组件复用、流程复用、规则复用等构件思维逐层搭建解决方案级别的自动化测试流程,平台定位无代码平台,使业务代表与行管等真正精通业务规则的人可以轻松使用自动化平台构建充分有效的自动化:
· 测试流程建模 - 通过对测试流程建模(参考BPM流程建模)合理拆分测试段、领域流程、产品组件,通过构件模式逐级拼装出解决方案测试,底层通过复用低代码测试组件实现从产品到领域到方案的测试代码复用模式,提升整体测试效率 。
· 业务数据流水线 - 通过多级数据流水线架构在同一业务场景构造多条业务语义相同的业务数据,通过领域分割测试段使每段测试可以即时获取所需业务数据进行测试,以应对测试环境个别业务系统不可用的挑战 。
· 业务规则引擎 - 通过建立统一数据接入层(汇集多领域对象的落库数据)并与规则引擎打通,通过复用产品级、领域级和方案级的规则包实现断言的一次编写、各处复用。
· 业务链路可视 - 通过异步链路Tracing系统(通过领域对象ID,如发票号)汇集各个领域系统对领域对象的处理过程,形成异步业务链路可视化平台,帮助测试人员打破黑盒测试习惯,快速开发测试代码。
· 对ToB企业软件,尤其是长流程、规则多的业务系统要充分理解业务语义(包括流程、规则),借助流程建模方法合理切分测试段,形成可以异步处理并拼接的测试段,对于复杂的业务规则要注重抽象并形成可以重复使用的断言集。
· 与互联网软件(同步长链路)的挑战相比,企业流程软件测试团队要建立业务流程的APM系统,理解流程软件是通过领域对象(数据)向下游传递信息,帮助企业做出决策(业务规则),而流程中每个节点是在不同的时间做出对应业务规则的处理,所以通过业务链路可视化平台可以有效提高流程测试的效率 。
· ToB企业软件在上线前质量的诉求比互联网相对要高,企业内部用户难以接受灰度上线方法论,在测试阶段就需要做到充分的测试验证,包括对非互斥场景因子的随机排列组合,对长流程中逆向流程的用例设计,对生产数据引流测试中的齐套要求(多个领域间保留数据关联性),均是在企业软件测试领域需要长期深耕定制有针对性的质量保障方案。
· 针对复杂的业务系统测试,到底该建立低代码平台还是无代码平台,低代码平台的用户是自动化测试人员,在华为IT这种世界级的复杂企业软件中,自动化人员难以消化理解大量的业务知识,在自动化落地的效果上并不理想,我们建议搭建无代码平台(基础构件由开发与测试共同编写),使真正理解业务的人(在华为专门有区别于IT测试团队的业务测试团队)来使用,才能真正确保上线后的业务连续性。