谈到开发产品,我们都会看到有一(yī)个交付的设(shè)计,包(bāo)括代码、硬件电路图设计、PCB设计、外(wài)观设计(jì)等。工厂根据这(zhè)些设计(jì)生产出可以直接给客户使用(yòng)的产品;谈到测试的时(shí)候,只会认为它是产品开发过程(chéng)中的一项工(gōng)作,每(měi)个产品(pǐn)的开发过程,都是(shì)一样(yàng)的(de)测试。对于测试的交付,认(rèn)为(wéi)测(cè)试用例和最终的测试报告就是(shì)全部(bù)了,大不了,加上测试过程中发现的(de)缺陷(xiàn)。
同时,每家企业都会要求(qiú)测试在每个项目都(dōu)做到(dào)尽可能好,尽可能将所有的缺陷都找出来,不会像产品那样,设立有(yǒu)产品路标(biāo),可以这个版本交付(fù)一些功能,而下个版本(běn)再交(jiāo)付(fù)其他功能(néng)。这也就是说,企业一般会要求测试(shì)从一(yī)开始就必须提供最好的质量,并自始至(zhì)终维持最(zuì)好。实(shí)际上,面对复杂的(de)产品,对大多(duō)数(shù)测试(shì)团队来说,这是无论他们(men)怎(zěn)么努力都几乎不(bú)可能完成的任务。于是,我们往往会看(kàn)到,产品在经过多轮测试之后(hòu),缺(quē)陷还是会存在,导致最终交(jiāo)货时间已经一拖再拖,到最后没办(bàn)法,只(zhī)好在质量上让步进行交付。
可能有人会(huì)问:“难道,测(cè)试不是找个(gè)好(hǎo)的(de)团队(duì),就可(kě)以做(zuò)到最好吗?”
《孙子兵法》有云“上兵伐谋,其次伐交,其次伐兵,其(qí)下(xià)攻城”。同理,在产品开发中,将产品质量(liàng)寄托在测试最后的把关上是不妥(tuǒ)当的,即使你找到(dào)很(hěn)好的测试工程师,也不能保证(zhèng)绝对完美无瑕(xiá)的产品质量。做(zuò)产品,把产品质量完全“托付”给测(cè)试,让测试去发现问题,最终(zhōng)做到(dào)缺陷找(zhǎo)无可找,再交付给(gěi)客(kè)户,这是“攻城”的做法(fǎ)。产品(pǐn)质量完全由测试工程师的能力(lì)和责任心来保(bǎo)证,将测试工程师(shī)放在(zài)一个只(zhī)能拼细(xì)心的艰难境地上,最(zuì)后的结果只能(néng)是你找了很(hěn)优秀(xiù)的测(cè)试工程师,支付了(le)不(bú)菲的报酬(chóu),看到他们的拼搏努力非常感动,然(rán)后(hòu),得到一个质量一般的(de),甚至有瑕(xiá)疵的产品。这并不是谁的过错,只是一开(kāi)始将质量依赖于测试之上,就已然是将自己放在了必(bì)然失败的环境中(zhōng)。
当然,也有些企业的(de)流程定义(yì)得很完善(shàn),产品质量保证(zhèng)活(huó)动从一开始就投入(rù)了,那这下子应该不(bú)会(huì)掉进注(zhù)定失败(bài)的陷阱了吧?是的,从源(yuán)头处开始进(jìn)行(háng)质(zhì)量保证(zhèng)活动,会极(jí)大(dà)地提高获得高(gāo)质量产品的(de)概率。因为测试有个特点,就是在产品还(hái)不是很复杂的(de)时(shí)候去提高它(tā)的(de)质(zhì)量,最(zuì)终就(jiù)容易获得高(gāo)质量的(de)产品(pǐn)。若再辅之以质量度量等手段(duàn),来发现产品各(gè)模块之间质量的参(cān)差,并调整(zhěng)测试力量有针对性地深入测试缺陷率高(gāo)的模块,会更(gèng)有效地发(fā)挥测试的作用。
但是,很多企业在有完善(shàn)的(de)流程时,同样还是会被产品质量折磨得痛苦(kǔ)不堪(kān)。原(yuán)因有很多,一是有(yǒu)流程、执行差。毕(bì)竟开发人员的任务也(yě)挺重(chóng)的,让他们在开发(fā)产(chǎn)品(pǐn)特性之(zhī)余,还要测试(shì)自己开发的代码(mǎ),会增加工作量,在没(méi)有监管或者监管(guǎn)认(rèn)为自测试(shì)不(bú)重(chóng)要的时(shí)候,这种靠自觉的质量保证(zhèng)活动就会(huì)流于形式。更重要的是(shì),不少企业(yè)在开发产品时图新、图颠覆性,极大增(zēng)加了(le)产品(pǐn)的不确(què)定性,再(zài)加上市场机会(huì)窗的压力,要求项目组尽快(kuài)出(chū)产品(pǐn),整个项目从一开(kāi)始就处于(yú)赶工的状(zhuàng)态,这(zhè)样还是回到不断出(chū)版本,不(bú)断测试,缺陷依旧不收敛的(de)状态。
要改变这种状态,需创造一个易于胜利(lì)的(de)条件。在IPD流程中,会对产品需求进行有效的管理(lǐ),以控(kòng)制产品开发(fā)时新技术和新模块(kuài)的引入量,让(ràng)一个产品开发过程中重用(yòng)的比例得到大幅(fú)度的提高,这样新(xīn)技术和新模块带来的风险就(jiù)少了。重用模块的质(zhì)量一般来(lái)说都是可以得到保证的,毕竟(jìng)这些(xiē)模块经历了那么多(duō)的测(cè)试验(yàn)证,易于发现(xiàn)的问题都已经被(bèi)解决了(le)。在(zài)项目的测试(shì)过程中,这(zhè)些模(mó)块可以只(zhī)做(zuò)回归测试,测试(shì)力(lì)量(liàng)就可以(yǐ)更集中地投入到新开发的模块中,这样项目的(de)测试投(tóu)入就变得很充(chōng)裕,自(zì)然就可以测试得更细致深入,更好地(dì)保证质量了(le)。而(ér)且,需(xū)求管理和控制减少(shǎo)了高风(fēng)险的模块,降低系统的(de)复(fù)杂(zá)度,从根本上(shàng)提高了(le)项目成功的机会。这是“伐交”的做法。
那么,什(shí)么是“伐(fá)谋”的方法呢?打仗(zhàng)的时(shí)候军队不能总(zǒng)是(shì)小米加步枪,为了胜(shèng)利,一个国家会努力提高军队(duì)的装备水平,会参考各国的(de)战例,做各种军事(shì)演习(xí),让自己(jǐ)的军队适应(yīng)新情况,提高战(zhàn)略、战术(shù)水(shuǐ)平(píng),做(zuò)到开战时(shí)有备而来,保(bǎo)证自己(jǐ)有(yǒu)必胜的条件再和(hé)敌国开战,甚至(zhì)让敌(dí)国知难而退(tuì),避免战火。测试也一样,它(tā)是一个系统的工程,需要为提高产品质量做各种各样的(de)前期工作。
首先,案例库是必须有的(de),它(tā)相当于国家的(de)武器库,不能(néng)等(děng)要(yào)打仗了,才临时开动兵工(gōng)厂。案例库保证了重用(yòng)的这些功能有相应的测试用例(lì)去检查。同时,很多(duō)企业也(yě)会做自动测试,通过自动测(cè)试将测(cè)试的速度提高(gāo),这就(jiù)相当于(yú)建设机械(xiè)化部队了。
其次,需要让测试具备看清楚产品(pǐn)质量状况和缺陷(xiàn)分(fèn)布的(de)千里眼。在(zài)企业(yè)内部(bù)开展产品质(zhì)量(liàng)分析活(huó)动,对缺陷进行度量和统计分析,是让自己具备千里眼(yǎn)的手段(duàn)。在(zài)这(zhè)个基础上(shàng)开展根(gēn)因分析等缺陷预(yù)防活动,就能更好(hǎo)地减少缺陷的(de)发生。
最后,战争归根到底是由人来决定胜负的,不能忽(hū)视了测试工程师的培养(yǎng)。通过流(liú)程学习和审计(jì),让(ràng)工程师们学会规范的工作方(fāng)法,和别(bié)的团队协同工(gōng)作;通过产品知识的学习,以及典型缺陷发现过程的(de)经验共享,提高测试工(gōng)程师发现缺陷的能力。各家企业(yè)还有很多自己独创(chuàng)的提高队伍水平的做法,这些手段,都对(duì)产品质量的保证起到了关键作用。
产品质量(liàng)保证不是一时一地(dì)的活动,它是(shì)一个逐渐积(jī)累提高的过(guò)程,通过每(měi)个项目的锻炼,以及成果的归档重用,测试(shì)团(tuán)队会具备越来越好的条件和能力,让企(qǐ)业在开发产品时,再(zài)也不用担心掉到不断重复测试的陷阱中。