技术应用丨混沌工程在用户体验测试中的应用研究

学术   2025-01-07 11:37   北京  

文 / 中国农业银行研发中心 王宪刚  涂锐  刘文杰

随着银行分布式核心系统建设不断深入,分布式架构特点对系统运行稳定性带来较大挑战。业界通过混沌工程方法解决系统韧性问题,但在系统处于不稳定状态时如何改善用户体验方面尚未形成有效的方法。为此我们提出并开展基于混沌工程的用户体验测试研究和实践,规范、统一系统处于不稳定状态时故障场景分析方法和模拟手段,明确客户端在响应提示、用户行为引导方面遵循的原则,从用户全链路角度验证并改善用户体验,避免对企业造成更大的经济和声誉损失。


基于混沌工程的用户体验测试方法

传统的用户体验测试指标体系涵盖信息展示、交互提示、用户引导的相关原则,但当系统处于不稳定状态时在用户体验性场景设计和测试执行方面缺乏较为详细、完整的方法和流程。例如在服务端系统处于不稳定状态时存在哪些故障场景类型,不同故障场景发生时对用户使用哪些业务场景时的体验产生影响,如何友好提示避免用户产生负面情绪,如何引导用户操作行为避免加剧系统不稳定状态。本文侧重于阐述在系统不稳定状态时开展用户体验测试的流程和方法。


1.依赖关系梳理。当前信息系统多采用前后端分离的架构,客户端面向客户提供功能操作界面,操作是否完整、体验是否良好依赖于服务端系统的稳定运行。特别对于复杂的银行核心系统,服务端系统模块数量繁多,前后端系统的关联关系更加复杂,服务端系统运行不稳定严重影响用户体验。


开展基于混沌工程的用户体验测试首先从客户端视角梳理其所依赖的服务端全景视图,形成所依赖的服务端系统和业务场景列表。在当前分布式架构下,可从管理态和运行态两个维度梳理系统关系视图。管理态视图是基于组织管理需要而履行相应审批流程实现对系统间的消费关系进行明确的过程,一般通过架构管理系统落地管控;运行态视图是基于真实的生产业务场景的调用关系数据绘制的系统关系视图,可通过运维监控平台抓取全链路监控数据生成消费关系全景视图。管理态视图一般大于运行态视图,可按照运行态生产调用数据量,并结合业务场景重要性,对所依赖的服务端系统和场景进行权重打分,按照得分情况排出优先级,最后根据业务场景优先级顺序开展用户体验测试。


2.故障场景设计。客户端系统业务成功办理依赖于服务端系统稳定运行,那么服务端系统可能发生何种故障类型,进而对用户使用客户端系统的体验造成负面影响呢?可基于混沌工程的理论和方法开展服务端系统的故障场景设计。


从客户端视角来看,其调用的服务端系统处于不稳定状态时可能出现三类故障场景,即服务不可用、响应缓慢、返回错误。服务不可用可能是由于大规模服务器宕机等故障导致服务完全中断,此时无法处理客户端发来的任何请求,客户端也无法收到返回报文,需要客户端设置超时时间,达到超时时间后,客户端对用户操作进行报错响应。验证该类故障场景,可通过网络中断的手段来模拟此类异常。响应缓慢一般是因内存泄漏、系统容量不足等原因导致服务执行缓慢,此时响应时间较长但尚未达到超时时间,表现为用户操作后较长时间方能获得反馈。验证该类故障场景,可通过网络延迟的手段来模拟此类异常。返回错误一般是由于服务资源不可用、业务逻辑错误等原因导致请求没有成功执行而返回错误。例如服务器找不到请求资源返回HTTP 404,错误码种类繁多,可以划分为系统级错误码和业务逻辑错误码,客户端系统在收到服务端系统返回的错误信息后,需进行识别并加工后再提示给用户,避免对用户体验造成不良影响。验证该类故障场景,可通过工具在程序方法内注入故障抛出异常来模拟。


3.影响性分析。服务端系统异常发生后,对用户体验的影响依赖于客户端系统的处理方式。客户端处理方式可划分为两类:服务降级和服务中断。服务降级是指当服务端异常时,客户端忽略该异常,继续后续的业务处理,但此时业务流程可能存在不完整,对用户体验造成负面影响。例如掌银调用资产视图服务获取客户名下资产列表,资产视图服务异常时,掌银可通过展示占位图实现降级处理,但此时用户无法查看自己名下资产列表。服务中断处理是指当服务方异常时,客户端终止当前业务流程,并向用户提示错误信息。例如用户在网银进行转账业务,当服务端个人业务系统异常时,网银客户端系统终止当前业务并进行报错提示,以便用户明确知道当前服务不可用,可选择其他时段办理业务。服务降级时,用户仍能使用部分核心功能完成主要业务办理,但需要损失部分非核心功能;服务中断时,用户完全无法使用相关功能,无法正常办理业务。在上述两种方式选择上,需由业务方依据业务规定最终确定客户端异常处理方式。


4.友好性提示。服务端系统发生异常后,客户端有降级和中断两种处理方式,这两种处理必然会对用户体验产生负面影响。为提升用户体验,上述两种处理方式均应给出友好性提示,让用户明确知道当前系统状态和当前操作的结果。


友好性提示可从四个方面提升用户体验。一是个性化提示,根据用户的行为历史和上下文信息提供更加个性化的错误提示。例如,如果一个用户经常使用某个功能,当该功能出现问题时,可以提供更详细的诊断信息或快速修复指南。二是情景化反馈,提供与用户当前操作紧密相关的反馈信息,而不是通用的错误代码或技术术语,从而帮助用户更好的理解问题所在,并采取适当的行动。三是多渠道支持,在提示中包含多种支持选项,如在线帮助文档链接、客服联系方式等,方便用户根据自己的偏好选择解决问题的方式。四是情感化设计,使用轻松幽默的语言或图标来缓和用户的挫败感,比如使用有趣的插图或俏皮的文案来解释问题。在开展用户体验测试时,可依据前述方法梳理的业务场景,使用故障模拟手段,验证服务端异常后,客户端的处理方式和错误提示是否符合上述友好性提示原则。


5.用户行为引导。用户无法完成预期业务功能时,应对用户后续行为进行合理化引导,避免频繁重试对系统造成更大压力,并积极引导用户采用其他方式办理业务,最终帮助用户完成预期目标。


用户行为引导可遵循的原则可参考如下四个方面。一是明确下一步行动,明确告诉用户接下来应该做什么,比如“请稍后再试”“点击这里刷新页面”等具体指导。二是简化恢复流程,如果可能的话,提供一键式解决方案,帮助用户快速回到正常状态。例如,在某些情况下,可以尝试自动重试。三是智能诊断工具,实现内置诊断工具或助手,能够自动识别问题并提出解决方案,可以减少用户查找问题根源的时间。四是教育性反馈,利用错误作为教育机会,向用户提供有关如何避免类似问题的信息。


实践案例

我们将本方法在某客户端的用户体验测试中进行实践应用。首先按照消费关系梳理客户端所依赖的服务端系统和业务场景列表,并结合生产交易量和业务重要性明确优先级,本次选取某信贷领域的“查询我的贷款”业务场景开展实践试点。其次将信贷服务端异常类型可划分为服务不可用、返回错误、响应缓慢三类,本次使用混沌工程故障注入手段模拟上述三类故障:通过网络中断方式模拟服务不可用,通过提高客户端请求并发数直到触发服务端预先配置的流控规则模拟返回错误,通过网络延迟模拟服务响应缓慢(如表所示)。


表  混沌工程在用户体验测试中的

应用实践示例


当服务端不可用时,客户端的超时机制识别出信贷系统服务异常并进行报错提示:“EXXXX,返回报文读超时,java.net.SocketTimeoutException,Read timed out”,该提示为通用的错误代码和技术术语,不符合友好性提示的原则,也未积极引导用户行为。因此将该异常提示优化为:“当前服务暂不可用,您可通过其他渠道办理,如需帮助,您可以联系在线客服或拨打XXXXX”,并提供在线客服链接。当客户端请求并发数较高触发流控规则时,服务端快速返回:“EXXXX”,客户端系统直接提示该错误码,同样不符合友好性提示和用户行为引导的原则。因此将该异常提示优化为:“当前服务繁忙,请稍后再试,如需帮助,您可以联系在线客服或拨打XXXXX”,并提供在线客服链接。当服务端因网络抖动、资源使用率高等原因导致响应缓慢,部分请求仍能成功,此时客户可成功办理业务,部分请求响应缓慢达到设置的超时时间,此时会触发客户端报错提示,该报错提示与服务不可用场景类似,在此不做赘述。


(此文刊发于《金融电子化》2024年11月上半月刊)




滑动查看公告详情




新媒体中心

主任 / 邝源

编辑 / 姚亮宇  傅甜甜  张珺  邰思琪

金融电子化
面向金融界科技人员、业务人员,在金融信息化建设中,为领导决策提供参考,为科技人员和业务人员提供交流的园地以及了解科技应用的窗口,为读者提供金融信息化发展最前沿的各类知识和信息。
 最新文章