聊聊测试的右移

这是鼎叔的第九十九篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。

欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》已出版(机械工业出版社)。

完成端到端测试(也可以称为系统测试)阶段后,进入灰度发布或正式发布阶段,测试人员除了采集和分析缺陷外,也需要抽出一定精力,持续进行高价值的质量保障活动,它们包括:

1)参与/组织可用性测试。

2)关注持续部署和发布。

3)压力测试与混沌工程。

4)服务质量监控。

5)用户行为埋点与用例优化

与其全身而退(立刻投入下个新版本的测试准备),不如花一些精力对当前发布版本多做一些高价值的质量活动,获得宝贵技能,再通过问题反思不足,验证测试策略的有效性,以便在下一个发布周期做得更好。

参与/组织可用性测试

可用性测试,让一群有代表性的用户对待发布产品做典型的操作,产品或观察人员在一旁观察,聆听,记录,得出改进结论。

可用性测试来源于人因工程(human factor),又称为工效学,是一门涉及多个领域的学科,包括心理学,人体健康,环境医学,工程学,工业设计等等。ISO将“可用性(Usability)”定义为“特定使用情景下,软件产品能够被用户理解、学习、使用、能够吸引用户的能力。”

可用性测试在团队中通常由交互设计/用户调研组来组织,也可以是产品经理来组织,项目成员可以参与观察,测试人员从中亦可以获得意料之外的收获,学习真实用户如何使用和认知产品的。

通常的可用性测试做法,是找5-6个典型用户,花费30-50分钟,自由使用5-8个基本功能点,组织者会给一定的使用目的(但不会很详细),激发用户自行使用,不会给具体的操作要求。因此,用户其实并不是在刻意做测试。

在该过程中,观察者除了利用专业设备(如眼动仪)记录用户视线和行动步骤,察看使用过程中的交互步骤和视觉路线是否合理,离开主界面和主流程的时间是否异常,并搜集用户的优化建议。参考用户体验的模型,分析可用性有五个递进层次:能用,有用,易用,好用,爱用

基于同样的思路,我们可以定制产品可用性调查问卷,特别适合参与灰度体验或者众包体验的用户来填写,问卷的核心是获取下面四个评价:

  • 高参与:能否完成既定目标,如工作需求,或满足娱乐需求。

  • 低门槛:学习曲线是否足够低,在多短时间内能掌握新功能。

  • 高效率:操作流程是否足够短,完成任务耗时是否足够短,导航是否快捷。

  • 强稳定:用户感受有安稳感,甚至满足感,下次使用产品时无需记忆,手到擒来。

完成可用性测试后,测试人员可以反思一下目前的测试策略和覆盖场景,验收条件,是否已关注到用户容易不爽的地方,有什么改善的空间?

关注持续部署和发布

关于持续部署和发布,这篇文章主要从三个方面展开介绍。

一 关注持续部署

DevOps时代的部署应该是持续进行的,这个过程高度自动化,为了做到这一点,配置部署的流水线,能够快速反馈部署的问题,去除手动配置的成本和风险。我们可以在日常环境、预发环境和生产环境分别部署流水线,也就可以把相应的测试检查内容纳入到部署流水线门禁中,真正做到测试右看。

为了提高部署的成功率,也就是提高交付效率,我们应该维护一个单一源的仓库,把测试脚本、属性文件、数据库概要、安装文件和第三方库放置在一起,即所有用来构建产品的东西都放到版本控制系统里,一旦其中某个对象发生了变更,那么依赖它的所有对象都需要被重新构建。为了缩短部署和发布的耗时,测试可以关注应用的瘦身大小,把它作为专项改进目标。

二 灰度发布的测试活动

灰度发布,就是导入一定比例的真实用户,研发和产品团队观察用户使用的效果,如果没有异常再进行更大范围的灰度或者全量发布。灰度发布也可以仅仅只是获得关于新试验功能的结论(用户是否喜欢)。灰度发布可以在大规模推向用户之前,尽可能地发现并修正严重问题。同时降低发布压力,避免产品团队闭门造车,用低风险收集用户使用的反馈。

灰度发布阶段,测试可以做哪些事?

首先,要明确自己的灰度阶段测试(观测)目标。是观察性能问题,新版本体验问题,还是新旧功能的指标对比?注意关注已发布的机器是否有流量打进来,避免表面上启动成功,实际上服务并没有生效。

其次,参与灰度用户的选择策略,和产品及开发沟通,灰度策略对于测试目标是否有代表性和准确性。比如:是否覆盖了重要的终端类型,是否覆盖了指定的角色特征,是否能针对特定场景采集测试结果。

最后,灰度测试报告的输出,明确灰度发现的问题及严重性,能够给产品一定的改进意见,判断是否达到全量发布的质量标准,或者明确给出灰度“实验”的观测结论。

注意,如果针对灰度版本发起众包测试,在搜集灰度反馈方面有很高的效益。

三 主干开发和主干发布

参考硅谷Meta等大公司的经验,高度敏捷的研发团队应该追求单主干开发,其好处是巨大的,可以尽可能降低分支开发带来的版本冲突,以及长生命分支合入主干带来的高评审成本。但是想要实施单主干开发及发布,团队的各项质量及效率实践需要足够成熟,如可靠的持续构建门禁和代码审查门禁,TDD的良好习惯,高度的自动化测试覆盖率,每次提高变更的颗粒度足够小,以及未实现功能可以用开关统一控制。

当团队在单主干上进行日常开发和发布时,质量负责人可以联合团队确立合并代码的质量要求,包括前置要求(满足什么测试结果才能合入主干)和后置要求(合入代码后应该立刻启动保障型测试,确保红线标准不被破坏,一旦被破坏需要采用相应优先级的处理手段)。

此外,如果大量工程师在单主干提交了大量代码,那么如此复杂逻辑的产品在运行中可能会产生很多不稳定的测试结果,我们称之为Flaky Test,这类问题会降低团队持续交付的信心,但是小团队对此的解决手段非常有限。开发和测试团队需要逐步建立治理Flaky Test的方案,包括消除各种外部依赖和用例依赖关系,做好并发处理和异步等待,尽可能减少随机行为,最后对本轮测试产生的Flaky test进行标记,并在持续测试中隔离处理。参考:聊聊持续测试的进阶

压力演习与混沌工程

对于复杂逻辑链条和海量用户的互联网业务,不论日常花多少精力做接口测试和性能测试,都不能保证真实用户场景的充分覆盖。尤其是分布式系统,一旦遇到大量用户的集中访问和各色操作,经常会暴露意想不到的问题,甚至会形成雪崩效应,造成核心服务的瘫痪。因此,光有敬畏之心是不足够的。

测试团队作为质量保障的核心角色,可以和业务负责人及开发团队一起实施压力演习(或称现网演练),针对特定的海量用户使用场景,在预发布环境实施,尽可能模拟真实活动的全过程,测试所处的环境数据库及配置,使用和线上一致的备份。施加压力的大小、时间、被压接口、变化过程,都是事先设计好的压测模型脚本,同时对复杂的后端服务链条做全链路监控。

压测前做好充分准备,尽可能不影响真实的线上用户;压测后对性能数据问题做复盘分析,找到性能瓶颈,给出改进措施,优化下一次演练的方案。

为了避免压测产生的脏数据不对真实用户的数据库产生影响,被测系统在保持线上环境的一致性的前提下,需要具备精准识别测试流量的能力(比如,依赖整个压测链路的流量标签),把产生的测试脏数据隔离保存到特定数据库里。

现网演习中,有一类特殊的工程实践就是混沌工程,这块已经成为独立的技术学科,最早是来自奈飞公司带来的“混沌猴子”实践。混沌工程是一种生成新信息的实践,包括常见的故障注入手法。例如,引入特定的一类故障,针对被测系统的某个位置引入超时、错误响应、链路不可用等错误状态,在一段时间内观察系统如何处理,能否自动恢复,花费多长时间恢复,以及是否产生链式灾难反应。混沌工程也可以引入激增的流量、特殊的组合消息、激烈的资源竞争等模式。

实践混沌工程的推荐时机是当生产事故的MTTR(故障平均恢复时长)越来越差,故障根因不明的情况逐渐增多之时。正式实施前要和相关团队人员做好预告说明,明确实施动作和时长,给出相应的应对指南,将生产环境中受影响的范围控制到最小,按照现实世界中影响系统的事件发生概率来安排运行混沌实验。整个过程应该尽量自动化执行,具备可快速终止实验的能力,以及实时观测各项指标的能力,能判断系统在混沌实验结束后是否回归稳定状态。

利用混沌工程主动制造“非稳态”,观察系统在压力下的行为,我们通常能发现一系列的系统脆弱性问题。通过探索产生的影响,团队逐步建立了被测系统能够应对生产环境动荡状态的信心。我们鼓励测试人员和开发人员联合进行混沌工程实践,共同获得新的知识。

参考文章:聊聊混沌工程,聊聊混沌工程的企业实践

服务质量监控

对于在线技术服务而言,任何一个时刻发生的严重问题都有可能造成用户的投诉,甚至成为影响公司品牌和收入的严重事故。与其被动地在线上质量事故突然发生后灭火和检讨,不如主动建立线上服务质量监控网,在第一时间觉察出质量风险并采取行动。

测试人员参与这类线上监控技术建设是有自身优势的。业务开发和运维更多是从应用接口、网络系统资源的层面进行底层监控,而测试人员可以利用已有的自动化脚本进行用户基础场景拨测,定时进行。

测试人员在进行质量监控时遇到的主要困惑,就是不清楚如何明确监控指标。监控指标不是越细越好,而是能快速锁定突发问题出现在什么地方,还能通过指标大盘全局了解业务的健康程度,因此指标大盘一定要简洁直观,聚焦核心。

那么,阻碍服务监控产生预期效果的原因有哪些呢?除了本身技术能力不足,还有下列情况值得让集体停下来改进:

  • 破窗效应。监控出了问题没人关注,没有严格的响应处理机制。

  • 告警海洋。告警频繁,数量大,重复,不及时,急需精简。告警监控指标太多,导致监控界面复杂,界面美观可视化对于长期运营非常重要。

  • 告警没有分级,也导致员工不清楚响应告警的时效纪律要求。

  • 误报严重。如何降低告警的噪音,是各大公司的共同痛点。大部分告警数量来自于某些告警的持续性产生,因此我们是可以聚焦其相似性合并告警的。而基于AI的告警处理手段也是热门技术趋势。

  • 定位问题根因的工具效率低,步骤多,准确性不足,严重拖长了MTTR。

  • 服务质量监控系统和研发管理系统没有打通,没有形成线上缺陷单的一键跟进,不便于研发质量分析。

一旦研发团队发现了线上服务异常问题,并处理妥当后,大家可以一起进行复盘分析。思考故障恢复时间能否缩短,技术架构是否有不合理之处,能否完善监控看板的视图,强化日志定位工具的效率等。测试人员还可以从右看中获得有价值的输入,把获得的负面案例转化成性能场景用例或者接口测试用例,让未来的版本测试更完善。

用户行为埋点与用例优化

测试用例的设计、自动化和执行占据了测试团队的巨大精力。如果从用户体验角度出发,这些用例对用户真实使用场景的代表性有多高?排除掉一些难以承担风险的“质量红线”用例,普通用例的执行优先级该怎么确定?

引入触达该用例场景的“用户渗透率”作为挑选用例的权重,则是很自然的思路。

例如:根据每一个交付价值的能力(场景),我们可以进行场景埋点,上线后统计用户使用该功能的渗透率,用深色表示高渗透率功能,浅色表示低渗透率功能,这样就生成了测试策略的优先级提示,在有限的精力下,多挖掘高用户渗透的核心能力相关测试用例,如图所示(以WiFi管家产品为例)。

另外一方面,我们在实验室难以重现的缺陷(包括性能问题),也是需要通过服务后台针对用户的监控,捕获同类缺陷的操作场景上下文、输入日志和性能数据,辅以直接和用户电话沟通,才有更多的机会重现问题,改善产品体验。

但需要指出的是,对用户行为数据监控上报的方法也会带来不小的风险,比如:

1 因为泄漏用户隐私(电话,位置等)而违反隐私合规;

2 因为上报方案不合理导致流量异常增大,或者频繁上报导致耗电异常。可能会引发用户投诉或严重线上事故。

我们对应的优化技巧列举如下。

1 隐私合规:告知用户相关数据采集的必要性,让用户自主选择。

2 隐私数据加密。

3 流量控制,合并上报字段,压缩上报资源,设置为在Wi-Fi环境上传,延迟打包上报。

4 后台可以对是否上报,上报哪些,做配置开关。

5 产品内嵌的上报SDK要提高质量,确保SDK的体积、响应性能,内存/CPU的影响等,对产品性能影响极低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/678543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

体育赛事直播系统开发源码搭建

随着体育产业的蓬勃发展,体育赛事直播已成为广大观众获取赛事信息的重要途径。为了满足观众日益增长的需求,开发一套专业的体育赛事直播系统成为当务之急。本文将围绕体育赛事直播系统开发源码搭建进行深入探讨,从技术选型、系统架构、安全防…

教你一绝招:如何快速提高学习成绩--这样学习,你离考取重点高中或名牌大学很近了

教你一绝招:如何快速提高学习成绩 这样学习,你离考取重点高中或名牌大学很近了 我本来是讲写作的,但回想起过去学习与考试情况,何不把自己的学习经验与绝技告诉如今苦学的孩子,让其尽快进步,早日实现自己的…

面试一个多月,我上岸了!

大家好,我是枫哥,🌟阿里云技术专家、📝资深面试官、🌹Java跳槽网课堂创始人。拥有多年一线研发经验,曾就职过科大讯飞、美团网、平安等公司。目前组建的团队,专注Java技术分享,一对一…

副业兼职不知道做什么,不如先试试这个,一天挣个百八十很简单

在市场上,总是不乏赚钱的机会和各式各样的挣钱项目。许多人往往认为,那些赚得盆满钵满的人纯粹是因为运气好、能力强、条件优越且智商高。然而,事实并非如此简单。 实际上,每一个项目或操作方法的背后,都有其独特的逻…

期刊的分类与级别

在学术界,期刊的分类与级别构成了一个评价学术成果和学者贡献的重要标准,同时也是学术出版与学术交流的基础。然而,对于初涉学者来说,理解期刊的分类与级别可能并不直观。本文旨在提供一个系统性的解释,并阐述为何期刊…

含有嘧啶的光活性阳离子共轭微孔聚合物通过“吸附杀死”抗菌策略促进感染伤口愈合

引用信息: 文 章:Photoactive cationic conjugated microporous polymers containing pyrimidine with an adsorption-killantibacterial strategy for infected wound healing. 期 刊:Chemical Engineering Journal(影响因子…

2024最全软件测试面试八股文(答案+文档+视频讲解)

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…

Python语言在地球科学交叉领域中的技术应用

Python是功能强大、免费、开源,实现面向对象的编程语言,Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台(x86和arm),Python简洁的语法和对动态输入的支持,再加上解释性语言的本质&…

【微信支付】获取微信开发信息(全网最详细!!!)

前言 1、申请商户号 申请流程与资料 详细申请步骤 申请开通接入微信支付步骤 2、申请微信小程序 申请小程序步骤 查看小程序AppID 3、微信支付普通商户与AppID账号关联 4、获取开发中需要的密钥和证书 4.1、申请证书 4.2、下载证书工具 4.3、证书工具—填写商户信息…

七大战略性新兴产业崭露头角:新能源电燃灶或将成为未来厨房新宠

近日,在国家发布的七大战略性新兴产业名单中,新能源产业赫然在列,作为其中的重要组成部分,华火新能源电燃灶凭借其独特的优势,正逐渐走进人们的视野,有望成为未来厨房的新宠。 华火新能源电燃灶作为清洁能源…

实验笔记之——DPVO(Deep Patch Visual Odometry)

本博文记录本文测试DPVO的过程,本博文仅供本人学习记录用~ 《Deep Patch Visual Odometry》 代码链接:GitHub - princeton-vl/DPVO: Deep Patch Visual Odometry 目录 配置过程 测试记录 参考资料 配置过程 首先下载代码以及创建conda环境 git clo…

吴恩达深度学习笔记:机器学习(ML)策略(1)(ML strategy(1))1.3-1.4

目录 第三门课 结构化机器学习项目(Structuring Machine Learning Projects)第一周 机器学习(ML)策略(1)(ML strategy(1))1.3 单一数字评估指标(S…

PDF编辑流程,另附5款好用的PDF编辑器

pdf作为一个用来定稿打印的格式,偏偏许多时候需要事后去编辑它。而它格式复杂、混乱,解码困难,再好的编辑器也难免乱码。这里就从目前的pdf编辑流程上给大家稍微科普下。 首先,PDF编辑软件读取需要编辑的PDF文件,解析PDF文件的内…

被踢指数高!这本8.8分双1区“毕业神刊”,2个月可录!虽备受国人喜爱,但需谨慎投稿!

【欧亚科睿学术】 近期,经查询,小编发现ELSEVIER旗下一本热门顶刊竟在JCAR官网上显示被踢指数高。 图片来源:JCAR KNOWLEDGE-BASED SYSTEMS(ISSN :0950-7051)是人工智能领域的一本国际性、跨学科期刊。目前,该期刊影响…

Qt实用技能-必看系列

注:所有qt项目不能放到含中文的目录中 如何将material库添加进项目 1.构建运行项目 2.切换到debug目录,复制.a文件 3.粘贴到新建的libs目录 4.新建include目录存放头文件,将原项目所有头文件一并复制粘贴到include。 5.将文件与我们的项目产生联系。在pro文件将编译依赖的…

Linux线程 -- 互斥锁 和 条件变量

在多线程编程中,互斥量(mutex)是用于保护共享资源的同步机制,确保在任一时刻只有一个线程能够访问共享资源。互斥量用于防止竞态条件(race conditions),确保数据一致性。 基本概念 互斥量&…

计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算…

图论:倍增求解最近公共祖先LCA

说明:CSDN和公众号文章同步发布,需要第一时间收到最新内容,请关注公众号【比特正传】。 最近公共祖先LCA是NOI大纲中指定的提高组的图论部分的知识点,难度系数为6,提高组考察难度为5~8。 引入 树是一种特殊的图&…

6 -力扣高频 SQL 50 题(基础版)

6. 使用唯一标识码替换员工ID -- MySQL中的left join是一种连接方式 -- 它以左表为基准,返回左表中所有的行,同时返回右表中与左表匹配的行。 -- 如果右表中没有匹配的行,则用NULL填充。 select unique_id,name from Employees e left join …

告别繁琐,Xinstall一键解决App代理结算难题!

在移动互联网的浪潮中,App的推广和运营成为了众多企业和开发者关注的焦点。然而,随着App市场的日益竞争,代理结算的复杂性和繁琐性成为了许多推广者头疼的问题。为了解决这个问题,Xinstall凭借其专业的技术和丰富的服务经验&#…