0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何有效分拣测试中遇到的bug?

自动驾驶说 来源:自动驾驶说 2020-08-10 15:59 次阅读

研发自动驾驶的核心就是开发新的驾驶技能,然后测试该技能。测试中如果发现了问题,再逐一攻克。

而问题是,工程师们往往只擅长写代码,却忽视了通过测试找到代码中的问题。花一个月时间做好了一个新的驾驶技能,就以为万事大吉了。车一旦上路,问题(bug)却层出不穷。

其实,出了bug没关系,最重要的是要充分利用发现的bug,挖掘bug的根源,才能有效修复,避免再犯。

这就涉及到triage的学问。Triage字面意思是指对问题进行分拣,其实也泛指对问题寻根溯源(root-causing),也包括分拣时所需的工具。

传统互联网的triage过程相对比较简单,代码的层级不会太深。比如,一个对外链接断了,八成是因为那个链接已经挪了地方。

而自动驾驶则复杂很多。肉眼可见的只有那辆车以及坐在车里可以体验到的乘坐感受。背后却有成百上千个代码组成部分,每一个组成部分内部又有多层分级。一旦自动驾驶车出现问题,很难马上判断出到底是哪里需要修改。

比如,肉眼所看到的是,自动驾驶车没能及时躲避一位正在过马路的行人。这可能是摄像头的问题,可能是雷达的问题,可能是行为预测的问题,可能是定位的问题,也可能是高精地图的问题,等等。因此,我们需要一个高效、严谨的过程,快速找到bug根源。

我们可以将triage分为三个阶段。

1. Bug识别

2. Bug分拣

3. Bug追根溯源

第一阶段:Bug识别

发现bug的最直接方式就是在路上测试,然后将错误标注出来。准确的标注可以让工程师更快了解bug的类别。比如使用“突然刹车”、“偏离车道”这些关键词。

然而,大部分的bug很难通过驾驶直接体现出来。如果代码里有100个bug,很可能在驾驶中只能体现出两三个。有的bug只能在特定情境下才会被触发,平时不会被发现。而且有的bug可以被重现,有的则不能。今天在某个地方突然刹车,明天这个问题可能又没了。

因此,必须首先尽量将减少测试中的变量,不要等到上路测试才发现bug。比如,如果利用仿真进行测试,就可以对变量进行有效地控制,快速确认bug。

Bug识别的工具也有很多,比如可以通过指标报表,某项指标一旦发生变化,就报错。也可以通过各种前端工具,将车的探测结果进行可视化,错误就能一目了然。

让系统自动报错虽然省时省力,但问题是,报错的数据中往往有很多杂音(noise),报告100个bug,其中也许只有几个是真正有价值的bug。因此,报错系统必须不断提升,才能提高信噪比(signal-to-noise ratio)。

第二阶段:Bug分拣

团队越大,bug分拣就越困难。假设一家公司里同时有二十个团队在过去一个月里碰过代码,那么如果出现了问题,这二十个团队就都有可能承担责任。如果不去对bug进行分拣,每遇到一个bug就让所有团队研究一次bug,会浪费很多工程师的宝贵时间。

因此,负责分拣bug的人必须对各个团队的业务了如指掌,帮助工程师对bug进行分拣。至少做到将bug及时分发到对应的小组手上,从而节省各个团队的的时间。

分拣bug时往往需要一些基本的决策树,比如,如果看到了某种现象,那么bug的原因就一定是A或B。再根据另一种现象,可以推断出一定是B。随着代码不断更新,这个决策树也需要不断更新。

Bug分拣之后,要对bug的重要等级进行排序。并不是所有的bug都需要马上被修正。根据团队在当下阶段的主要目标,比如该季度中自动驾驶车左转的bug最为重要,就要把和左转有关的bug找出来,视为priority 1。

第三阶段:Bug追根溯源

Bug分配到正确的团队的手上之后,就需要被追根溯源,看看根本问题到底出现在哪里。越复杂的bug牵扯出来的问题就会越多,根本原因也埋得越深,修正所需要的时间也越长。

针对相对容易的bug,效率就是一切。如果容易的bug都修复不了,就会拖其他复杂bug的后腿,bug越积越多,最终造成恶性循环。因此,团队必须在控制代码质量的基础上,遵守定时修复bug的流程。

因为一些bug修正起来太困难,所以很多团队会选择进行“热修复”,即hotfix,而不去从根本上解决问题。Hotfix什么时候该用,什么时候不该用,也需要各个团队做到统一。否则代码的核心质量无法保证。

其实,很多bug的根本问题不在于技术本身,而在于公司团队的组织架构设计不合理,或是高层的技术决策出现失误。团队的领导者要认清事实,敢于及时止损。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4536

    浏览量

    66497
  • BUG
    BUG
    +关注

    关注

    0

    文章

    154

    浏览量

    15577
  • 自动驾驶
    +关注

    关注

    773

    文章

    12894

    浏览量

    162926

原文标题:如何有效分拣测试中遇到的bug?

文章出处:【微信号:zidongjiashishuo,微信公众号:自动驾驶说】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    变频器在自动化分拣系统中的关键作用与应用

    自动分拣系统一般由控制装置、分类装置、输送装置及分拣道口组成。 控制装置的作用是识别、接收和处理分拣信号,根据分拣信号的要求指示分类装置、按商品品种、按商品送达地点或按货主的类别对商品
    发表于 02-26 11:15 116次阅读
    变频器在自动化<b class='flag-5'>分拣</b>系统中的关键作用与应用

    基于OpenCV的机器人分拣系统设计

    随着各大电商的快速发展,我国快递行业的整体规模迅速壮大,包裹数量逐年增多,快递的错派、丢件等问题也日渐凸显,传统人工分拣已经无法适应当前的分拣需求,亟需一种用于自动检验、工件加工和装配自动化以及
    的头像 发表于 01-23 14:06 1293次阅读
    基于OpenCV的机器人<b class='flag-5'>分拣</b>系统设计

    物通博联工业网关助力物流分拣系统智能运维,提升物流系统稳定性!

    在当今快速发展的物联网时代,智能物流分拣系统成为了提高物流效率和准确性的关键。对于物流分拣中心来说,每天处理千万级包裹,有可能面临输送履带运行情况不可控,发生异常停止或拥塞等情况后处理不及时,运维保障效率低下的情况,如何保障分拣
    的头像 发表于 12-08 17:18 303次阅读
    物通博联工业网关助力物流<b class='flag-5'>分拣</b>系统智能运维,提升物流系统稳定性!

    无符号整型能产生哪些bug

    为什么不建议使用无符号整型,无符号整型能产生哪些bug
    的头像 发表于 11-09 17:09 212次阅读
    无符号整型能产生哪些<b class='flag-5'>bug</b>?

    某些bug正常运行时会出现,当打开串口log时又不再复现怎么办?

    某些bug正常运行时会出现,当打开串口log时又不再复现怎么办? 在开发过程中,我们经常会遇到一些bug。这些bug会对我们的开发造成一定程度的困扰,有时候甚至会让我们的软件崩溃或无法
    的头像 发表于 10-31 14:37 157次阅读

    常见的PLC系统BUG有哪些?如何减少这些BUG的产生?

    PLC系统可能会遇到各种不同类型的BUG,以下是一些常见的PLC系统BUG以及如何减少这些BUG的产生的建议: (1)逻辑错误:逻辑错误是最常见的PLC系统
    的头像 发表于 10-31 11:30 377次阅读
    常见的PLC系统<b class='flag-5'>BUG</b>有哪些?如何减少这些<b class='flag-5'>BUG</b>的产生?

    常见的PLC系统BUG有哪些?如何减少BUG的产生呢?

    PLC系统可能会遇到各种不同类型的BUG,以下是一些常见的PLC系统BUG以及如何减少这些BUG的产生的建议
    的头像 发表于 10-31 11:29 467次阅读

    如何解决电压测试遇到的问题

    ,而且都是其主要性能参数。另外,也有很多其他的参数都是通过电压的测量来间接得到的,如增益(Gain)、电源电压抑制比(PSRR)、共模抑制比(CMRR)等。工程师们在调试中也经常会遇到电压测的不精确或者不稳定的现象,对于测试不精确的
    的头像 发表于 10-30 11:39 433次阅读
    如何解决电压<b class='flag-5'>测试</b><b class='flag-5'>遇到</b>的问题

    ECU的安全车辆网络有效测试解决方案

      小结   上车辆现在有许多外部接口,需要安全机制。   只有当测试工具支持oem特定的安全性时,才有可能进行有效测试。   安全限制访问,不区分测试人员和黑客   安全数
    的头像 发表于 10-25 15:23 174次阅读
    ECU的安全车辆网络<b class='flag-5'>有效</b><b class='flag-5'>测试</b>解决方案

    FPGA时序Bug分析

    Bug的现象是这样的,假设我们跑一次test,结果正确为T,结果不正确为F。
    发表于 07-30 14:23 322次阅读

    浅谈RTL中常见的bug

    在你们的工作中都遇到过哪些bug呢?下面这些你见过没?
    的头像 发表于 07-15 14:08 536次阅读
    浅谈RTL中常见的<b class='flag-5'>bug</b>

    一个冗余电路导致的BUG

      昨天解了一个BUG,一个低级错误导致的BUG,一个冗余电路导致的BUG,写写做个记录。
    的头像 发表于 05-14 15:28 556次阅读
    一个冗余电路导致的<b class='flag-5'>BUG</b>

    嵌入式C语言史上最愚蠢的一个BUG

    我相信这样的bug,就算你是高手你也会犯的,你来看看作者犯的这个Bug吧。。
    的头像 发表于 04-27 17:34 501次阅读

    智能化仓储自动分拣解决方案

                                                         智能分拣货架、自动化分拣系统主要是面向仓储电商等企业提供快速的自动分拣、配送和流程追溯
    发表于 04-12 14:34 0次下载

    智能化仓储,自动分拣解决方案

    智能分拣货架、自动化分拣系统主要是面向仓储电商等企业提供快速的自动分拣、配送和流程追溯的解决方案,系统由检测控制装置、分类指示装置、条码识别、自动计件等装置组成。控制装置的作用是识别、接收和处理
    的头像 发表于 04-12 09:19 921次阅读