防错设计——阿里测试之道(15)

发表于:2022-5-06 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:阿里巴巴技术质量小组    来源:51Testing软件测试网原创

  1.8.1防错设计
  测试的最终目的是让服务在线上不出问题、少出问题。人为错误是线上问题的一个主要来源。例如,某大型云计算服务在2010—2014年最严重的10个线上故障中有4个故障和人为错误有关:
  2011年9月,一个网络配置多了一个斜杠,引发大面积的DNS宕机。
  2012年1月,应业务人员要求,一个技术人员在生产环境里执行了一个脚本,清理过期账号。但由于业务人员给的数据有问题,导致这个脚本删除了一批真实用户的账号。
  2013年2月,SSL证书忘记更新,证书过期导致存储服务大面积不可用。
  2014年7月,在一个IaaSVMAgent的紧急发布中,工程师为了省时间,用了一个非常规的方法,结果IaaSVMAgent被当成PaaSAgent发布,引起大量用户的服务中断。
  所以,向以下列举的三个精益制造案例学习,做好“防错设计”,能从根源上杜绝一大批故障和线上问题,达到“上医治未病”的效果。

  1.Poka-yoke
  Poka-yoke是精益制造(LeanManufacturing)领域的一个概念,意思是“防错”。Poka-yoke的概念最早是新乡重夫在丰田汽车引入的。
  例如,笔者在欧洲国家自驾的时候,因为看不懂加油机器的文字,所以担心加错油,但马上发现,如果搞错了,那么加油管是插不进去的。柴油的加油管是插不进汽油车的加油口里的,汽油的加油管也插不进柴油车的加油口里。当时就觉得这个设计很好、很安全,能够防止出错。这就是一种典型的行为塑造约束(Behavior-ShapingConstraint)。
  Poka-yoke的反面案例也有。美版初代XBox刚刚出来的时候,只支持110V的电源,插到国内的220V的电源上,就烧掉了。这就是防错设计没做好的后果。如果110V和220V的电源插座的形状是不一样的,那么就能避免这种问题了。

  2.软件开发的Poka-yoke
  软件开发也有Poka-yoke。拿支付系统来说,在预发环境做验证的人员在用小键盘输入“3”的时候,不小心触碰到了回车键,于是页面表单被提交了,放款成功。不巧的是,表单里面的手机号码是上一次操作填写的,虽然是一个测试账号的手机号,但有对应的线上真实用户。于是造成了一次资损。
  这个故障的场景和汽车的一个Poka-yoke是类似的。很多自动挡汽车在行进中无法更换档位,这样就避免了在行进过程中,由于不小心碰了一下操纵杆档从D当变成了N档甚至是R档,造成事故。

  3.支付系统防错设计的六类常见问题
  防错设计的核心思想是:人总是会犯错的。人会手抖、会忘记事情、会看错……怎么针对这些问题在系统设计时进行加固,减少人犯错的可能,或者减少人犯错的后果严重性。防错设计和容错设计(FaultTolerance)不一样,容错设计更关注系统的错误,如网络问题、硬件问题等,而防错设计更关注人的错误。

查看《阿里测试之道》全部连载章节
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号