漫谈软件系统测试——问题解决

问题解决(problem solving)是由一定的情景引起的,按照一定的目标,应用各种认知活动、技能等,经过一系列的思维操作,使问题得以解决的过程。在[《漫谈软件系统测试——通信节点识别》](https://mp.weixin.qq.com/s/RxqDhFnCa_qdeeI0KZuQ0g)一文中,我们通过识别通信节点发现问题,在[《漫谈软件系统测试——缺陷分析》](https://mp.weixin.qq.com/s/ulqnR0gYq9dzwSabYtzB-w)一文中,我们类比软件系统开发过程和考试过程分析问题,本文想分享的是整个软件系统测试过程中看到的一些解决问题的思路。

一、控制疫情四大策略

在分享解决问题的思路前,我们先回顾下我国抗击新冠肺炎疫情的历程。2020年,从武汉、北京到大连、青岛等,我国相继迎来7波疫情,中国疾病预防控制中心流行病学专家吴尊友总结我国控制疫情最重要的措施为四大策略,即坚持“四早”、 狠抓流行病学调查、核酸检测和及时隔离治疗病人。第一,“四早”,即早发现、早报告、早隔离、早治疗,这是对应对传染病,特别是急性传染病非常重要的策略措施。第二,中国在处理疫情的时候,狠抓病人为中心,以报告的病例为源头,进行流行病学调查。只有把这个传播链弄清楚了,才可以斩断传播链。第三,核酸检测。一开始,中国核酸检测能力不足,尤其是在武汉疫情的早期,不能够胜任临床诊断的需求,随后改进技术,核酸检测能力大幅度地提高,当北京发生第二次疫情的时候,检测能力已大幅度上升,北京很快就确定了疫情的规模,且能够及时发现早期感染的病人。第四,及时隔离治疗病人,而且免费治疗病人,这样就能够把传染的源头控制在医院,减少社区的扩散。 概括来说,坚持“四早”,解决了发现疫情晚的问题;狠抓流行病学调查,解决了疫情源头定位慢的问题;核酸检测,解决了社会环境中疫情再次发生发现晚的问题;及时隔离治疗病人,解决了疫情快速扩散的问题。

二、质量保障四大策略

回到软件系统测试工作中,我们是否也有类似的思想呢?答案是肯定的,伴随互联网行业发展至今,软件测试行业也逐步发展了一套相对成熟的质量保障体系,如图1-1所示,与控制疫情四大措施相对应,软件系统质量保障体系中也包含了以下四种策略:第一,测试左移,做好项目初期的预防和评估工作;第二,数据管理,做好日志、埋点和业务数据等多维度数据管理,辅助快速定位线上缺陷;第三,测试右移,进行线上验证和线上监控,尽早捕获线上缺陷;第四,灰度发布,把风险控制在小范围内,推动系统稳步迭代更新。
图1-1 控制疫情 VS 质量保障
第一,测试左移。最早接触这个词语是阅读到林冰玉的文章《一页纸测试策略》,“测试左移要求在需求分析阶段开始对需求本身的合理性进行验证,不仅要正确的构建产品,更重要的是构建正确的产品,这就需要把好源头需求这一关”。如图2-1所示,为了及早捕获系统缺陷,我们就要在更早的环节提前介入,尽可能地预防潜在的问题,将测试工作从测试环节向左移动。其核心思想还是预防,预防软件系统开发时、预防架构/方案设计时、预防需求分析和设计过程中发生可预见的问题,如果我们在项目初期就捕获问题,防范于未然,就可以极大地减少后期的修复成本。
图2-1 测试左移
第二,数据管理。在一个软件系统中,会产生海量数据,其中就包括日志、埋点和业务数据。其中,系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。埋点数据,一般保存着针对特定用户行为或事件。业务数据,指用户在办理业务过程中产生的存储在数据库中的数据。通过日志数据可以了解故障发生之前的所有事件,通过埋点数据可以辅助重现用户操作场景,通过业务数据可以更准确定位用户进行的业务节点。如图2-2所示,测试过程中我们可以结合这三个维度的数据,辅助开发快速精确定位缺陷。
图2-2 数据管理
第三,测试右移。第一次接触这个词同样来自林冰玉的文章《一页纸测试策略》,“由于软件系统所处生态环境越来越复杂,技术架构的演进、业务复杂度和数据量的增加、基础设施的发展带来更多的不确定性,软件系统的质量保障在测试环境已经搞不定了,我们需要把目光右移到生产环境。这就是测试右移的思想,其实也就是生产环境下的QA(QA in Production)”。 如图2-3所示,为了保障系统发布后在线上正确稳定运行,我们需要持续跟踪线上系统的运行情况。测试右移,其核心思想就是及时线上验证和持续线上监控,一旦线上发生问题,我们能及早发现并及早处理。
图2-3 测试右移
第四,灰度发布。灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,如图2-4所示,让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。有时我们打开App的时候会收到内测邀请,这就是在邀请你加入用户群体B进行体验。灰度发布让小部分线上的用户参与到新系统的测试,并验证了线上新系统的正确性后,逐步让更多直至全量的用户使用新系统的功能。如果在灰度测试期间发现系统存在缺陷,系统缺陷的影响范围只是限制在灰度测试的用户内,避免了问题影响到全部的用户。
图2-4 灰度发布

三、总结

不管是控制疫情中坚持“四早”、狠抓流行病学调查、核酸检测和及时隔离治疗病人,还是质量保障中测试左移、数据管理、测试右移和灰度发布,都为我们提供了解决问题的思路:防控为主,监控为辅,及早发现问题,及早解决问题。 本文借鉴控制疫情的四大策略,总结软件系统质量保障的四大策略,文章所总结的质量保障四大策略应该只能算质量保障体系中的一部分,并不能代表所有。本文暂未分享软件系统测试工作中解决问题的具体工具和技术,本文想分享的笔者看到的解决问题的思路:防控为主,监控为辅,及早发现问题,及早解决问题。希望对大家有一些启发。最后,欢迎大家对本文进行指点纠错。

作者简介:Chaofan,爱测角成员之一,专注探索和分享软件质量保障。

原文地址:《漫谈软件系统测试——问题解决》

posted @ 2021-03-01 22:08  爱测角  阅读(195)  评论(0编辑  收藏  举报