原创:任学娟
项目中的挑战
负责公司ToB方向质量保障是一个非常大的挑战,挑战的根源在于ToB项目本身需要协作双方在目标、技术实现上、进度节奏上保持一致,然而协作双方公司本身都是迅速发展的创业公司,既没有固化好的业务架构也没有百试不爽的技术实现,因此在项目中经常会出现质量和效率的挑战:
1.很难按照预期进度推进项目,双方都会抱怨对方不能按照预期进度进行建设,项目进度经常一拖再拖。
2.进入联调和测试阶段后发现各种与自己预期不一致的实现,甚至超过50%的实现需要重新调整和实现。
3.测试和调试难度大,很多关键测试场景需要对方配合,但是对方在配合时经常很难按照预期计划提供帮助。
4.在项目生产过程中其中一方一个看似微小的升级可能带来崩溃性结果。
除了大家都在骂对方不专业之外,还能做些什么来改善这种状况呢?在后续工作中我和团队同学进行了一系列的调整与尝试,虽然算不上从根源上解决但是质量和效率有了很大的改进。
提效与保障质量的目标
我们对外合作项目有自己的特点——首先,项目周期都比较短,一个新流量方在商务谈判完成后一般希望在3周内完成上线并开放流量;其次,就是接入项目量很大,有时并行存在2~3家同时接入的状况;另外,虽然有大致的接入流程但是具体项目接入可以根据各自的状态调整,技术实现差异很大。
在这种高频的接入项目中质量和效率同等重要,因此在整体接入周期上我们将接入的周期设定在2.5周,质量保障上按照影响预定了如下的目标:
1.核心资金流和数据流保证线上0事故。
2.业务展示流错误率<0.1‰,为预演和业务调整留出一点灰度验证的空间。
为实现以上的质量和效率目标陆续进行了以下尝试:
1.协作流程优化,重点解决信息不一致、需要协作时支持效率低等协作问题;
2.工具与环境建设,保证在开发与内部测试阶段隔离对外依赖,同时提高研发效率;
3.建设在线的质量观察与监控系统;
协作流优化
对协作流程优化放在两个要点上:首先,要保证信息流是顺畅的即是流通的;其次,保证合作中团队内外职责明确。
根据之前此类型项目的观测在此类快速迭代、短期协作的合作团队间存在天然的屏障,这种屏障非自然的将协作的两个团队隔离成“我们”和“他们”,进一步在具体做事情上就会出现“我们”做的都是对的,至少是有理可依的。这种团队隔膜自然的也会导致信息流传递的阻塞。在流程上我们尝试了在两道屏障之间开辟一道可以连通协作的大门——协作的两个团队分别提供一个全面负责的接口人,接口人有一向重要职责是将当天进度以及实现过程中与原协商接口不一致的地方及时汇总给对方。由双方接口人承担信息同步和沟通事项,因此在沟通过程中可以暂时摆脱团队的屏障,从以往项目中看,加上信息沟通的两个同学后,至少可以减少70%信息不同步的问题。
负责信息接口的两个同学还有另外一个任务——组织团队进行周级别的沟通。在每天汇总各自的变更以及将对方状况同步后,每周需要进行一次团队级别的沟通,以防止偏离最初的路线越来越远。在周级别的沟通中包含以下事项需要明确
1.双方进度与问题沟通
2.双方变更点确认
3.下一步节点时间点确认(节点包括:需求确认、接口确认、接口联通、贯穿测试)周会沟通过程很紧凑,一般在15分钟左右就可以完成。其中有一向明确不在周会上沟通的就是关于项目进度事项,当进度出现不符合双方预期的时候,由双方项目负责同学独立与自己团队和对方沟通。
协作优化的另外一个重要事情是关键节点的优化。问题比较严重的有联调节点和贯穿测试节点,在这些节点很容易造成本来人力已经准备好完成一件事情,但是一经尝试就总能发现无法进行的问题。所以在关键节点前需要对部分关键接口的同学单独进行小规模调试尝试。关键节点另外一个遵循的原则是留一定的Buffer,2天左右的Buffer可以保证出现异常问题时及时解决。
另外为了保证自己团队内部质量和进度尽量可控并尽早为对方提供可供开发用的验证接口我们投入了一定精力建设了工具与环境系统。工具的目标是保证流程按照预期顺利进行,且尽早发现各自内部的问题。
工具与环境建设
工具和环境系统建设的重点包括以下几点:
1.在双方确定好接口方案后实现模拟对方请求的Driver系统,再开发接通模拟对方的请求行为。
2.实现可以模拟自身响应的MOCK,我们通过统一可配置的MOCK实现;MOCK实现后开放给对方供开发阶段使用。
3.在联调开始前为上游提供可以DIY的环境管理平台——主要功能是业务数据状态变更及历史数据的清理工作。
模拟对方请求的行为在我们环境平台上统一集成,由于请求数据存在业务上的关联,因此Driver在每个业务行为的准备阶段会将数据统一生成,Drvier的行为如下:
MOCK系统我们结合Yapi系统实现,在早期开发阶段Yapi既是双方协定接口的重要工具同时又是为对方提供早期MOCK非常便捷的工具。
最后基于环境提供的DIY的业务管理接口和Driver接口基于公共的平台开发,方便合作方进行独立调试验证。例如当用户申请订单时提供的接口支持两种功能:申请订单通过和申请订单拒绝。
工具系统配合流程对协作的提升非常显著。在协作流和工具打通后整体的协作周期有了将近30%的优化,双方在协作中的感受也有了非常明显的提升。
在线质量建设
由于协作双方的系统免不了要进行升级,很多时候升级时并未考虑到对对方的影响。因此时不时会出现由于小规模升级导致对方出现大问题的状况。除了提供环境工具为支持对方联调外,我们建设了主动防控线上问题的在线质量工具。工具包含两部分功能,第一部分功能是当某项功能上线后能快速验证新进入系统的订单是否符合预期,第二部分功能是快速定时收集线上订单等维度数据以验证当前系统是否正常。
存在的问题与未来的思考
当然协作中的问题依然存在,包括进度管理等一些列的问题。未来在信息流及时传递的基础上我们会建设更多更有效的支持双方开发验证的快速工具系统,不断通过优化完善流程提供规范,以及使用工具提高效率的方向改进。