在项目管理流程中,有几个关键阶段:
需求阶段、开发阶段、测试阶段、上线阶段
其中的需求阶段和开发阶段是最为重要的,一个是设计,定义这个功能如何运作,一个是执行与实现,这两个阶段把控好了,往下走就会顺利很多。下面重点讲一下开发阶段中的提测步骤,在提测前应该准备什么东西,以保证提测的质量。
首先关于提测这个动作,我自己是这么理解的:
提测了,就说明开发人员认为功能就长这样了,已经完全按照产品
PRD
完整的实现了,是个严谨、负责、认真的动作。
理论上,研发人员一旦提测,就可以开始处理其他需求任务了的。
在刚才提到几个项目管理阶段中,越早认真越好,早发现问题早解决,如果到了测试阶段,还出现各种各样的问题,基本都是要付出惨痛的代价的。
你有没有遇到过,功能提测后,还出现如下情况:
功能跟产品
PRD
里的不一样,走偏了; 前端BUG
几百个; 严重阻塞性BUG
几十个; 测试环境极度不稳定,测试人员一直来让开发人员定位。
这些问题都会造成极大的沟通成本、执行成本,也会占用很多资源,直接影响了整个部门对需求处理的吞吐量,而这些本身是可以尽量避免的。解决的办法就是狠抓提测这个步骤。下面列一下我自己实战过且发挥了作用的一些手法。
注意:这里着重强调的是,提测这个动作执行前,要做的事情,关注的是,测试人员接手后,是否能顺利走下去,像架构方案、技术设计、压测、回滚方案呀,这些是另外的动作,是必做的,不会在文章里强调。
自己负责的部分再完美也是没用的,端到端一联调,可能就出问题。
// 泛化版本 template
struct _ {}; // 这个版本的特殊之处在于:仅当两个类型一样的时候,才会且一定会使用此版本 template struct _ {}; // 这个版本的特殊之处在于:仅当两个类型都是指针的时候,才会且一定会使用此版本 template struct _ {}; // 这个版本“换汤不换药”,没有任何特别之处,所以不是一个特化,而是错误的重复定义 template struct _ {}; 由此可见,“更特殊”是一个十分宽泛的语义,这赋予了模板极大的表意能力,我们将在下面的章节中不断的见到特化所带来的各种技巧。
1.4 惰性实例化
函数模板不是函数,而是一个可以生成函数的语法组分;同理,类模板也不是类,而是一个可以生成类的语法组分。我们称通过函数模板生成函数,或通过类模板生成类的过程为模板实例化。
模板实例化具有一个非常重要的特征:惰性。这种惰性主要体现在类模板上。请看以下示例:
template www.jujinyule.com
struct Test { void www.baihuayl7.cn Plus(const www.jintianxuesha.com &val) { val + val; } void Minus(www.lcx528.cn c onst T &val) {www.leguojizc.cn val - val; } }; int main(www.laiyuefeng.com) { Test (www.hongtupt528.cn).Plus("abc"); Test (www.shentuylgw.cn).Minus(www.chuancenpt.com);
端到端联调的重要性再怎么强调都不为过,它可以整体性的验证功能模块是否符合产品预期。像UI
问题、体验问题、后端接口数据问题、兼容性问题等,都可以在这个阶段发现。
另外有两个小技巧可以用上:
PRD
里提的点,逐个验证,那当然更好了。测试人员在需求评审完后,就需要开始进行测试用例设计了,其中的冒烟用例是一个子集,是基础的用例,这些用例如果无法通过,测试人员就可以将提测的模块打回(会有一封大大的同时又抄送老板的主题为xxx功能冒烟不通过,打回
的邮件发出来),因此开发人员需要认真的执行冒烟用例。
另外测试人员提供的冒烟用例必须要有质量,能准确覆盖基础的重要的功能点。
这里的改动点,说的是,你当前开发的模块,改动了哪些已有的且在线上稳定运行的模块。你需要列出来,让测试人员更有目的性更有效率的去做回归测试。
像配置文件变更、数据库变更,MQ
配置,这些在提测前,都需要准备好,要不然就可能出现功能模块在测试环境或者回归环境无法顺利运行的情况,缺胳膊少腿的,像大一些的模块,涉及到的服务很多,每个服务都有自己变更,不及时
记录起来,很容易忘记。这样会极大的降低功能测试的效率。
我之前遇到过好几次,一个功能模块周一晚上提测,隔天测试人员开始介入,但是直到隔天下午功能模块才顺利的在测试环境里运行,这是多么的不应该,浪费开发人员和测试人员的时间,严重一些的,还可能导致项目延期。
像大一些的功能模块,涉及到的点非常多,这个时候,如果产品经理有时间的话,可以让其在功能提测前验收一把,这样可以及早发现功能模块是否走偏了,也可以发现很多的前端体验问题,及时让开发人员解决掉。
我是遇到过,一个项目,提测后,测试人员提了几百个
前端体验或者UI
问题,单单是测试人员写BUG
描述,就花费了很长时间,然后还需要让开发流转BUG
,这些都需要时间。
如果开发提测前,上文提到的那些动作没有准备好,测试人员是可以不进行测试的,因为提交给测试人员的,是一个极度不稳定的东西,一旦进入测试环节,就开始坑
测试人员了。因此宁愿按住它
,不开始。另外这也是保护测试人员的一种方式,毕竟队列就这么长,别随便给测试扔一些不靠谱的功能。
另外,测试人员可以理直气壮挑战开发人员的,其实只有一处,就是提测质量
,如果功能模块都上线了,但是出问题了,那么老板第一个找的就是测试人员,因为功能是否能上线,是测试人员决定的,相当于跟老板说:
功能经过严格的测试了,可以交付了。
而事实上,上线后却是一堆问题。因此测试人员一定要死磕开发人员的提测质量
,冒烟不过的,打回,再冒烟不过,严肃警告,还是冒烟不过,那就狠一点,可以直接不测试某些开发组提测过来的模块,因为一提测过来,进入到测试环节后,就又开始各种不顺利,各种浪费。
流程有了,就要开始考验执行力了,这是个难题,一开始的话,比较建议的方式是,项目指定一个懂项目管理流程的技术负责人,授予他/她临时权力,由它全程统筹,到处督战,谁不配合,可以直接指出。按照这种方式,实施几个项目后,大家就会开始慢慢适应。