联调
最后更新于:2022-04-01 20:47:05
2013.6.12
联调有3个目的:
1、将项目组的代码整合起来,这点在好的项目管理中编码阶段已经完成了大部分的集成工作。
2、保证系统的质量,避免后期的大改动,之后转集成阶段
3、进行质量评定以调整测试策略
按项目管理的五要素分解如下:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-09-06_57ce8452becdd.jpg)
**1、干系人期望-目标**
编码阶段干系人的影响已经很小,先不讨论。
**2、沙盘-思路**
1) 代码覆盖率
只有被跑过的代码才是安全的,之前的任何假设只有通过验证才能得到结果。代码覆盖率是保证质量的一个基本指标,通常这个指标在85%左右。而更加严厉的指标是代码的分支覆盖率。当我们发现代码覆盖率不够时,可以使用调试单步执行,新的单元测试案例,新的测试案例来增加覆盖率。
2) 执行BVT
BVT是指系统、模块的基本功能案例,在联调阶段执行通过这些案例的意义在于:控制集成测试阶段的改动并防止测试阻塞。正常情况下,转测试后,每次bug的修复改动代码应在100行以内,改动太大会导致回归测试成本增大。
3) 性能测试达标
如果一个系统的性能指标不达标,那么及有可能会导致集成测试阶段的代码/方案改动不可控,因此性能测试达标应是系统进入集成测试的一道关卡。
4)冒烟自动化测试
联调阶段正是合适的时机准备和启动冒烟自动化测试,冒烟自动化的案例至少包含系统主要的BVT案例,当冒烟环境搭建成功后,每次重新打包后,这些自动化案例将自动执行。这样能够保证每次新包的基本质量,且能很快发现问题,而问题引入通常是当前包的改动导致,所以也缩小了代码的排查范围。
**3、计划制定**
1) 联调计划
根据编码阶段的情况,我们有可能需要适时调整联调计划,例如:模块案例执行的先后,个别模块要晚点集成到系统里等。
**4、风险管理**
1) 核心/基础模块阻塞
联调时当出现核心或基础模块完成进度延期,会导致其他很多关联模块无法继续调整,这时要立刻安排接口桩(接口可返回固定值),以便其他受阻塞的模块能够按计划联调。
2) 仓促转测试
项目当前的质量和进度是需要平衡的,项目经理对此要做到心中有数。这时候项目有两个因素需要考虑:
a、已经准备好的测试案例要执行一遍,如果风险可控,可以在这个过程中控制质量
b、bug的修复成本越到后期,修复越高。如果有大的质量问题导致返工,那么回归测试的工作量更大
新的版本经理往往迫于进度压力,会选择忽略当前质量风险,进入测试阶段,如此项目组将在测试阶段将承担很大的风险压力。而过于谨慎的项目经理计划在联调阶段消除所有的质量风险,这样会导致后期的案例执行压力很大。此时合适的做法是分析出高风险的地方,进行质量加强,例如:做专项审核,走读,加大测试力度等,将风险控制在可控范围则进入测试阶段。
3) 识别出风险模块
虽然管理上我们尽量消除所有风险, 但当精力受到制约时,我们也只能关注高风险区。世界不是完美的,项目中我们总是有机会遇到风险模块,在联调阶段要将他们识别出来,并制定改进方法,并辅以测试策略进行改善和控制。
**5、团队管理**
1) 项目组阶段总结
联调阶段是项目组的一个重要里程碑,意味着项目组已经完成初品,此时项目的质量、进度情况已经比较明朗。同时这个阶段也是一个转折点,联调之前的工作计划以开发计划为主,测试辅以缺陷预防,之后的工作将以测试计划为主,开发要进行积极配合。此时总结应分为两部分:
a、项目组总结
这部分通常由项目经理讲述,包括但不限于:项目整体的进度、质量情况、之前阶段的沙盘落实情况、下一步的计划与工作思路。
b、个人总结
个人总结的目的在于:总结之前的经验,听取其他人的经验教训,整理出下一阶段的具体工作思路。好的经验总结的内容应该包括但不限于以下点:
1、总结需求阶段,设计阶段,编码阶段,好的经验,坏的教训。
2、罗列出当前自己工作的风险,并给出措施,包括测试建议
3、整理出自己可以提高的地方
4、给项目组提出改进意见
**虽然愿望是好的,但是程序员很多时候不擅长总结此类经验,或是有总结习惯的不擅长表达出来,这里是执行的难题,后续会有章节专门分享如何让此措施更有效果**。
2) 里程碑庆祝点
如上第一点所说联调是个非常重要的里程碑,那么里程碑时进行庆祝及颁奖就是很必要的了。一个不会庆祝的团队是不会有战斗力的,这是激励的作用。在此时落实之前的对团队的各种奖项约定就是非常合适的,同时在颁奖之后可以设置后续阶段的奖项。至于团队庆祝方法可以选择喝酒,吃饭等,依照公司及部门文化而定。
**关于团队的奖项,很多时候项目经理苦于经费有限,无法开展此活动,因此放过了大好的团队建设机会。后面的章节计划分享下”如何以手头的有限资源最大化的激励组员“这个话题。**
';