測試策略是什么?在團(tuán)隊(duì)開發(fā)過程中如何落地?
一、測試策略是什么?
引自查字典:
策略:
基本含義:指為達(dá)到某種目的而制定的行動方案或計(jì)劃。
詳細(xì)解釋:策略是指在特定情況下為達(dá)到某種目的而采取的有系統(tǒng)性的行動方案或計(jì)劃。它通常包括分析、決策和執(zhí)行三個(gè)階段。策略的制定需要綜合考慮各種因素,包括目標(biāo)、資源、環(huán)境和競爭等。策略的好壞直接關(guān)系到目標(biāo)的實(shí)現(xiàn)效果。
策略是為目的/目標(biāo)服務(wù)的,且策略是自帶背景/特定情況的,一定要識別到背景形勢的發(fā)展和變化,然后才能制定針對性的謀略、計(jì)策。
測試策略有兩層背景疊加:業(yè)務(wù)大背景和項(xiàng)目小背景。下文提到的測試策略有時(shí)指代業(yè)務(wù)級測試策略,有時(shí)指代項(xiàng)目級測試策略,如果無特指強(qiáng)調(diào),則是在探討兩類測試策略的共同特點(diǎn)。
1.1 什么前提下開始探討測試策略呢?
當(dāng)你有多種測試方案時(shí)。如果你只有一個(gè)測試方案一條路,那就沒什么選擇余地;只有當(dāng)多種測試方案都滿足基本要求,但又各有優(yōu)劣時(shí),才會涉及到如何選擇、取舍。每一次的選擇取舍,抽象出的方法論,就是策略。就像棋類大師在每一步棋的選擇上各有理由,但背后都有著同一套分析和決策思路,那套思路就是策略。
1.2 什么時(shí)候迫切需要測試策略呢?
當(dāng)你的測試方案差異比較大的時(shí)候。測試方案有三個(gè)方向的指標(biāo):質(zhì)量、效率、成本,這三者同時(shí)也是一個(gè)不可能三角:
質(zhì)量,先結(jié)合業(yè)務(wù)發(fā)展和研發(fā)模式綜合制定質(zhì)量標(biāo)準(zhǔn),再以多維度指標(biāo)衡量質(zhì)量結(jié)果。(敲黑板:質(zhì)量是被定義出來的。)
效率和成本,要放在人工和機(jī)器兩個(gè)視角下同時(shí)看:
效率通常以項(xiàng)目為衡量單位,即人工效率和機(jī)器執(zhí)行效率雙重影響下的項(xiàng)目交付/發(fā)布效率。除此之外,效率也包括了自動化研發(fā)效率、自動化運(yùn)行效率、協(xié)同效率等局部效率。
成本則包括了項(xiàng)目內(nèi)成本和項(xiàng)目外成本,效率驅(qū)動下,質(zhì)量同學(xué)大多會追求自動化率,自動化率就體現(xiàn)了項(xiàng)目內(nèi)成本從人工轉(zhuǎn)化到機(jī)器的程度。從人成本看,項(xiàng)目外的成本主要是平臺工具的開發(fā)運(yùn)維投入,這部分成本會大幅高于單次項(xiàng)目使用時(shí)的人力成本,從機(jī)器成本看,則涉及多次多方使用的平攤,追求環(huán)境利用率也就是盡可能攤薄單次使用成本。另外,成本還有時(shí)間因素,初期建設(shè)成本要在后面多次使用中逐步攤平。大家吐槽的重復(fù)造輪子,問題不是輪子不好用,而是反復(fù)付出的建設(shè)成本和使用者的學(xué)習(xí)成本太多。
圖片
不可能三角的相互影響舉例:
1)提升質(zhì)量=>提高測試覆蓋率=>增加測試點(diǎn),其他條件相同情況下,會導(dǎo)致效率降低,增加成本
2)提升效率=>提升執(zhí)行效率=>提升自動化程度,其他條件相同情況下,會導(dǎo)致項(xiàng)目外的自動化建設(shè)成本增加。
3)降低成本=>降低人成本或降低機(jī)器成本,兩種方式通常都會對質(zhì)量產(chǎn)生負(fù)向影響,效率有可能提升也可能下降。
以上例子可以看到,三角的任一角正向提升時(shí),都對另外一角或兩角產(chǎn)生了負(fù)向影響,工作中,我們需要讓三角關(guān)系處于平衡狀態(tài),每一角的表現(xiàn)都保持在可接受范圍。
綜上,當(dāng)你具備多種測試方案/路徑,且他們的質(zhì)量、效率、成本三角指標(biāo)表現(xiàn)差異明顯時(shí),你需要分析并決策測試策略,使三角保持在適當(dāng)?shù)钠胶鈶B(tài)。
1.3 測試策略和測試方案的關(guān)系是怎樣的?
前文提到,測試策略是用來選擇測試方案的,那么是現(xiàn)有測試方案,再抽象出選擇原則作為測試策略?還是先有測試策略,再生成測試方案?
我們先把測試策略和測試方案拆分到業(yè)務(wù)級和項(xiàng)目級兩個(gè)語境之下,探討業(yè)務(wù)級測試策略、業(yè)務(wù)級測試方案(業(yè)務(wù)級測試方案這個(gè)概念不常用,可以等同于日常工作中講的業(yè)務(wù)質(zhì)量體系)、項(xiàng)目級測試策略、項(xiàng)目級測試方案四者的關(guān)系。
以我的個(gè)人經(jīng)驗(yàn)來看,在新業(yè)務(wù)(新產(chǎn)品或新技術(shù)棧)初始期、發(fā)展期、成熟期:這四者的關(guān)系分別對應(yīng)下面三張圖:
圖片
圖片
如果是成熟質(zhì)量團(tuán)隊(duì)承接新業(yè)務(wù),就可以直接進(jìn)入下圖四象限循環(huán)、螺旋式上升狀態(tài)。這也是大公司在新開業(yè)務(wù)時(shí),都會主動調(diào)撥一些經(jīng)驗(yàn)豐富同學(xué)的原因,這時(shí)候,個(gè)體經(jīng)驗(yàn)需要從項(xiàng)目抽象到業(yè)務(wù),從測試方案抽象到測試策略,才能更快的做遷移復(fù)用。
圖片
小結(jié):測試策略是測試方案的抽象,測試策略又指導(dǎo)了測試方案的具象化。兩者就是雞生蛋,蛋生雞的關(guān)系。
1.4 測試策略的要素包括哪些?
測試策略包括的維度很廣,核心要素是測什么:即測試范圍、測試目標(biāo);向內(nèi)細(xì)分怎么測,即測試工作的時(shí)空分布,什么時(shí)候,以什么測試方法測;向外要求測試基礎(chǔ)設(shè)施支撐:環(huán)境、工具、數(shù)據(jù);
測什么、怎么測、測試基礎(chǔ)設(shè)施支撐、這三個(gè)要素都和質(zhì)量、效率、成本三目標(biāo)有相關(guān)性,但側(cè)重點(diǎn)有所區(qū)分:測什么和質(zhì)量強(qiáng)相關(guān),怎么測,目標(biāo)是為了質(zhì)量,同時(shí)也影響了效率成本的表現(xiàn)。測試基礎(chǔ)設(shè)施則同時(shí)關(guān)聯(lián)三個(gè)維度,能不能測(質(zhì)量),測的快不快(效率),測的費(fèi)不費(fèi)勁(成本)。
說到這,測試策略的全景就呼之欲出了:
先從質(zhì)量維度,定義測什么(測試范圍、測試目標(biāo)),同時(shí)也就定義了不測什么(極端異常測不測?用戶體驗(yàn)是不是目標(biāo)?)質(zhì)量維度要求越高,測試范圍越大,測試目標(biāo)越高。放在業(yè)務(wù)背景下:如金融業(yè)務(wù)和搜索業(yè)務(wù)相比,質(zhì)量要求高,測試覆蓋率要求高,測試精準(zhǔn)度要求也更高。
從質(zhì)量目標(biāo)和當(dāng)下能力確定怎么測(從多種方案中選擇)之后,再從效率成本角度,進(jìn)行平衡評估。同樣考慮到背景信息:如果當(dāng)下業(yè)務(wù)對效率要求更高,那么可以增大成本提高并發(fā)執(zhí)行效率,如果成本有上限,那么為了效率可以對質(zhì)量目標(biāo)打一點(diǎn)小折扣,或者為了質(zhì)量可以接受一定程度的低效率,把三者調(diào)整成符合業(yè)務(wù)需求的平衡狀態(tài)。
測試基礎(chǔ)設(shè)施呢?測試基礎(chǔ)設(shè)施為了同時(shí)支撐質(zhì)量效率成本三目標(biāo),以技術(shù)的方式,綜合提升三目標(biāo)的整體表現(xiàn),即用技術(shù)做到:質(zhì)量更好,效率更高,同時(shí)成本持平甚至更低。這也是為什么對測試團(tuán)隊(duì)考核時(shí),測試工程能力的權(quán)重會日益增加。就是因?yàn)榭咳酥荒茏龅饺繕?biāo)的相對平衡,靠工程(測試基礎(chǔ)設(shè)施)才能做到三目標(biāo)絕對總分的提升。
細(xì)心的同學(xué)可能會看出,三角指標(biāo)中,我總是會把質(zhì)量放在最前面。因?yàn)橘|(zhì)量是測試的首要職責(zé),是測試工作存在的基礎(chǔ)前提。也更因?yàn)橘|(zhì)量是業(yè)務(wù)存活以及發(fā)展的前提。大家日常可能會吐槽說某某團(tuán)隊(duì)不重視質(zhì)量,仔細(xì)回想下,這個(gè)團(tuán)隊(duì)能接受質(zhì)量極差,天天故障的狀態(tài)嗎?不可能的。換句話說,有什么業(yè)務(wù)會嫌棄質(zhì)量太好嗎?。。。如果你感知到你的主管或業(yè)務(wù)方對質(zhì)量的要求不高,和你標(biāo)準(zhǔn)不一致,可以細(xì)細(xì)分析下,是不是高質(zhì)量標(biāo)準(zhǔn)帶來的效率、成本,有點(diǎn)拖后腿了?如果我們能解決效率成本問題,高質(zhì)量絕對是我們的一貫追求。所以在三角指標(biāo)中,我會把質(zhì)量放在引領(lǐng)地位。
最后,測試策略還有一個(gè)非常重要的要素:組織協(xié)同:什么角色測,其他角色如何協(xié)作。
可能有讀者看到“什么角色測”,會覺得多此一問:不就是因?yàn)闇y試人員負(fù)責(zé)測試,我們才來探討測試策略么?這個(gè)問題的答案太顯而易見了吧。注意,如果有這種想法,可以把此處作為一個(gè)提醒,要先練習(xí)跳出測試角色看測試工作。
業(yè)務(wù)級測試策略是為業(yè)務(wù)服務(wù)的,項(xiàng)目級測試策略是為項(xiàng)目服務(wù)的。既然測試策略是服務(wù)于業(yè)務(wù)、項(xiàng)目的,那么所有業(yè)務(wù)、項(xiàng)目的干系人,都有責(zé)任和義務(wù)支持最優(yōu)的測試策略落地應(yīng)用,那么“什么角色測”,取決于各角色知識、技能、工作流程的最優(yōu)匹配,而不應(yīng)被已有分工所限定。
比如單元測試,為什么通常是開發(fā)在測?不是因?yàn)闇y試做不了單元測試,而是測試負(fù)責(zé)單元測試的信息成本太高(開發(fā)寫代碼自然知道代碼的設(shè)計(jì)細(xì)節(jié),而測試需要額外付出了解成本)。
再比如為什么要有pd/業(yè)務(wù)驗(yàn)收環(huán)節(jié)?是因?yàn)轵?yàn)收過程不僅能驗(yàn)證產(chǎn)品實(shí)現(xiàn)是否符合prd設(shè)計(jì),還能兼顧prd沒有覆蓋的用戶體驗(yàn)部分,pd/業(yè)務(wù)在這方面也比技術(shù)角色更擅長。
最后還有開發(fā)自測項(xiàng)目這個(gè)經(jīng)典場景。我個(gè)人始終如一的支持部分項(xiàng)目由開發(fā)自測,原因是,對于改動小,風(fēng)險(xiǎn)小的項(xiàng)目,開發(fā)、測試完全能夠達(dá)成一致的質(zhì)量結(jié)果,且如果測試方法明確,測試工具易用,開發(fā)也能夠做到和測試持平的效率表現(xiàn),兩角表現(xiàn)相等情況下,開發(fā)還能夠節(jié)省一份溝通協(xié)作成本(類似單元測試,節(jié)省自我溝通成本),那么這部分協(xié)作成本就是開發(fā)自測在不可能三角的正向收益。那么什么樣的項(xiàng)目不適合開發(fā)自測?從上文可以看出,適合的項(xiàng)目前提是兩個(gè)角色在質(zhì)量、效率表現(xiàn)相同,如果這個(gè)前提被打破(由于崗位職責(zé)、專業(yè)能力差異,測試比開發(fā)表現(xiàn)更優(yōu)),這類項(xiàng)目就需要做取舍:成本的正向收益 Vs 質(zhì)量效率的負(fù)向收益。這也就是為什么:復(fù)雜、大體量業(yè)務(wù)中只有部分項(xiàng)目能夠開發(fā)自測,高風(fēng)險(xiǎn)項(xiàng)目一定需要專職測試團(tuán)隊(duì)承接。(有些外部公司據(jù)說是沒有專職測試團(tuán)隊(duì)的,那么需要確認(rèn)業(yè)務(wù)風(fēng)險(xiǎn)類型,以及是否有專職保障此類風(fēng)險(xiǎn)的團(tuán)隊(duì)。)
小結(jié):測試策略的四大要素:測什么,怎么測,測試基礎(chǔ)設(shè)施支撐,組織協(xié)同,共同服務(wù)業(yè)務(wù)、項(xiàng)目的三角指標(biāo)(質(zhì)量、效率、成本)
二、測試策略背后的boss:三角指標(biāo)
2.1 測試策略如何保持三角平衡?
既然測試策略是服務(wù)于三角指標(biāo),那么三角指標(biāo)的整體表現(xiàn)就是測試策略的評價(jià)標(biāo)準(zhǔn)。好的測試策略能做到三角表現(xiàn)平衡,特別是業(yè)務(wù)級測試策略,它能持續(xù)作用于業(yè)務(wù)發(fā)展各階段,跨越周期更長。在這個(gè)過程中,外部壓力或內(nèi)部發(fā)展變化都會擾動三角的平衡態(tài)。我們要做的是先感知到失衡,并且判斷具體失衡位置和程度,再通過測試策略進(jìn)行調(diào)整,回歸平衡。
質(zhì)量維度:如果線上出現(xiàn)重大質(zhì)量問題,即質(zhì)量表現(xiàn)嚴(yán)重偏離預(yù)期時(shí),需要以質(zhì)量為牽引,先要讓質(zhì)量回歸到穩(wěn)定態(tài),這時(shí)候通常組織會投入更多成本(包括不限于人、組織、機(jī)器資源),不論是手工測試還是自動化測試,都以增加質(zhì)量覆蓋率為目的,同時(shí)容忍效率的降低。
效率維度:當(dāng)研發(fā)效率或業(yè)務(wù)發(fā)布效率被頻繁提及時(shí),說明效率維度偏離了組織預(yù)期,可能是預(yù)期提高了,也可能是效率表現(xiàn)降低了,在重新明確效率預(yù)期后,不可能三角要圍繞效率做再平衡。這時(shí)候先通過增加成本,即增加人或機(jī)器的并發(fā)工作來提高執(zhí)行效率,如果還不能達(dá)到要求,則需慎重考慮質(zhì)量預(yù)期是否可調(diào),以減少執(zhí)行時(shí)間,提高效率。注意,如果要下調(diào)質(zhì)量預(yù)期,一定要得在所有角色層面達(dá)成一致。
成本維度:如果質(zhì)量效率都表現(xiàn)ok,成本就是默認(rèn)的內(nèi)在驅(qū)動力。由于成本可以細(xì)分為人、機(jī)器兩個(gè)視角,組織期望降低人成本或降低機(jī)器成本時(shí),都需要調(diào)整測試策略,進(jìn)行再平衡。
總結(jié)來說,當(dāng)組織內(nèi)部的聲音開始在三角的某一角上逐步聚集時(shí),特別是有一些badcase出現(xiàn)時(shí),就說明三角開始失衡,需要我們主動去做再平衡。而再平衡的策略也很簡單:質(zhì)量優(yōu)先,效率其次,最后由成本作為持續(xù)驅(qū)動。
還有一個(gè)反向小技巧:如果在某一個(gè)角上頻繁獲獎(jiǎng)或獲得高度評價(jià),說明此處表現(xiàn)已經(jīng)顯著超出預(yù)期,需要適當(dāng)多考慮一下其他兩個(gè)角。
2.2 不可能三角真的不可能嗎?
三角指標(biāo)真的不可能一起提升嗎?其實(shí)從前面分析已經(jīng)提供了線索:技術(shù)。只有通過技術(shù)創(chuàng)新,才有可能整體性提升質(zhì)量、效率、成本表現(xiàn)。技術(shù)的成本收益的規(guī)律如圖所示:
圖片
新技術(shù)在初期付出研發(fā)成本,在后期應(yīng)用時(shí)收回收益,質(zhì)量領(lǐng)域的技術(shù)不論是質(zhì)量收益(不可測變可測),還是效率收益(同等交付下效率更快),都遵循上述投入、回本、持續(xù)收益三大階段的規(guī)律,如果我們能到持續(xù)收益期,那么不可能三角就可以全局性提升。如何在長周期變化情況下,選擇正確的技術(shù)方案,在未來的某日能夠通過質(zhì)量效率收益收回技術(shù)投入成本,進(jìn)入持續(xù)收益期,這就是測試負(fù)責(zé)人的終極考驗(yàn)。反之,如果技術(shù)無用或技術(shù)本身投入或維護(hù)成本過大,要么平白增加投入成本,要么回收期就會很長,而且很可能碰到業(yè)務(wù)變化,等不到回本的那一天。
從上圖可以看出:成本相比質(zhì)量效率,需要更長的周期才能全面衡量,同時(shí)成本有項(xiàng)目內(nèi)和項(xiàng)目外兩種成本(類似表內(nèi)和表外),最典型的測試工具平臺開發(fā)、技術(shù)架構(gòu)改造,這類工作有時(shí)會包含在某一個(gè)業(yè)務(wù)項(xiàng)目內(nèi)完成,有時(shí)獨(dú)立為技術(shù)項(xiàng)目自運(yùn)作,更多時(shí)候,這類成本會散落在項(xiàng)目間隙中,比如工具維護(hù),排查,答疑等等。
對于測試負(fù)責(zé)人,除了關(guān)注項(xiàng)目內(nèi)成本,更要關(guān)注整體性成本。一是長周期下收益的變化,一些技術(shù)效果會逐步腐化削弱,是否還能提供足夠的收益沖抵成本,需要持續(xù)關(guān)注,二是成本積累效應(yīng),散落成本會隨時(shí)間逐步積累到一定規(guī)模,要考慮歷史積累到現(xiàn)在的維護(hù)成本,組織是否還能支撐。
2.3 有沒有成本減少后,質(zhì)量效率降低的情況?
這種情況可接受嗎?
有。
舉兩個(gè)質(zhì)量表現(xiàn)降低的例子:一種情況是某種原因?qū)е聹y試投入被動減少(比如出現(xiàn)測試人員離職轉(zhuǎn)崗),線上問題有增加,但沒有出嚴(yán)重故障。另一種情況是業(yè)務(wù)發(fā)生變化,如業(yè)務(wù)量下降,線上問題的嚴(yán)重程度下降,組織主動減少了測試投入,線上問題有增加。這兩種情況都出現(xiàn)了投入成本的降低和質(zhì)量表現(xiàn)的下降,唯一區(qū)別是因果順序,主動被動之分),兩種情況的共同點(diǎn)是,質(zhì)量表現(xiàn)仍在業(yè)務(wù)允許范圍內(nèi)。請注意:質(zhì)量指標(biāo)是多維度指標(biāo),問題數(shù)量、問題影響面(時(shí)長、用戶量)、問題對客表現(xiàn)等質(zhì)量子指標(biāo)都是獨(dú)立變動的。如果有某個(gè)質(zhì)量子指標(biāo)下降時(shí),就需要考慮這個(gè)子指標(biāo)對全局質(zhì)量影響的權(quán)重,以及具體下降程度,來判斷質(zhì)量整體表現(xiàn)是否可接受。畢竟我們的質(zhì)量表現(xiàn)不是每天都在生死存亡線上勉強(qiáng)維持,所以總有一部分空間是可以接受波動的。這個(gè)話題更適合總結(jié)為“業(yè)務(wù)質(zhì)量標(biāo)準(zhǔn)制定”, 本文不做過多展開。
成本降低時(shí),如果原本資源就很緊張,那效率一定會體現(xiàn)出降低,而且更容易體現(xiàn)在主觀體感上:不論是投訴測試太慢的聲音變多,或是測試排期開始變得困難,或是大家感覺測試周期比預(yù)期長了,這些都是短期效率下降的信號。注意:主觀體感和客觀指標(biāo)的差異在于,主觀體感對個(gè)別異常case會感受強(qiáng)烈,放大短期表現(xiàn),而客觀指標(biāo)觀察的是一段時(shí)間周期內(nèi)的均值表現(xiàn),通常不會劇烈變化,如發(fā)布周期、測試周期、回歸周期、測試開發(fā)周期比等指標(biāo),也就更適合做中長期評價(jià)。那么短期效率表現(xiàn)降低時(shí),是否一定要解決呢?是否一定要補(bǔ)充資源(增加投入成本)來解決呢?我個(gè)人的思路是,先觀察分析當(dāng)下成本結(jié)構(gòu)(人、機(jī)器)和效率要求的沖突點(diǎn)在哪里,未來發(fā)展趨勢是什么,是短期波動還是長期影響,客觀效率指標(biāo)變化趨勢如何,整體效率表現(xiàn)(主觀+客觀)是否仍在大組織可接受范圍內(nèi),再決策是否解決以及如何解決。對解決方法的探討更適合總結(jié)為“測試模式與測試梯隊(duì)能力建設(shè)”,本文也不做過多展開。
從以上的探討可以看出,對質(zhì)量、效率來說,都沒有絕對客觀的衡量標(biāo)準(zhǔn),即使各個(gè)維度都有客觀指標(biāo),最終也需要有一個(gè)主觀定義的目標(biāo)值。而目標(biāo)值的設(shè)定和業(yè)務(wù)發(fā)展、組織要求息息相關(guān),有時(shí)還要參考同行表現(xiàn),以保持團(tuán)隊(duì)競爭力。
三、測試策略怎么落地?
就像把大象關(guān)進(jìn)冰箱一樣,三個(gè)步驟:
1.打開冰箱門=瞄準(zhǔn)目標(biāo):確定三角指標(biāo)的具體衡量指標(biāo)和目標(biāo)值。這一步是在制定質(zhì)量標(biāo)準(zhǔn)、團(tuán)隊(duì)kpi/OKR時(shí)就應(yīng)該已經(jīng)完成的。重點(diǎn)是冰箱(業(yè)務(wù))本身。
2.評估測試策略在三角指標(biāo)的表現(xiàn)。這個(gè)步驟就是“把大象放進(jìn)去”,即問題的本質(zhì)步驟。上文講了很多測試策略和三角指標(biāo)的聯(lián)動關(guān)系、觀測信號、調(diào)優(yōu)方式等,但每個(gè)測試策略的實(shí)際表現(xiàn)必須放在具體的業(yè)務(wù)、技術(shù)、團(tuán)隊(duì)中衡量,即對應(yīng)到具體的大象、冰箱實(shí)例場景中。
3.選擇匹配度最高的測試策略。像關(guān)冰箱門一樣簡單直接。如果這一步?jīng)]法對比匹配度,請回到上一步。
舉幾個(gè)場景:
1. 大體量業(yè)務(wù)上新啟動了一個(gè)戰(zhàn)略項(xiàng)目,如何制定項(xiàng)目級測試策略?
先解題,幾個(gè)關(guān)鍵詞:大體量、新、戰(zhàn)略項(xiàng)目。
業(yè)務(wù)體量大=業(yè)務(wù)質(zhì)量要求高,并且一定已經(jīng)有了一些基礎(chǔ)測試體系,新啟動,代表有新功能新特性甚至新產(chǎn)品新業(yè)務(wù)模式出現(xiàn)。戰(zhàn)略項(xiàng)目說明重要程度,也代表了對質(zhì)量、效率(交付進(jìn)度)的高標(biāo)準(zhǔn)要求。
接下來就是先明確項(xiàng)目質(zhì)量目標(biāo)和發(fā)布時(shí)間目標(biāo),再參考目前團(tuán)隊(duì)人員,初步判斷是否能以現(xiàn)行業(yè)務(wù)級測試策略支撐。如果新功能部分所需要的人員技能是目前人員技能無法支撐的,那么招聘、借調(diào)、培訓(xùn)都需要盡快做起來,如果以現(xiàn)有人員配置能夠支撐質(zhì)量工作,但效率目標(biāo)和質(zhì)量目標(biāo)有沖突,那么一定要確認(rèn)成本、效率、質(zhì)量三角權(quán)重關(guān)系。對戰(zhàn)略項(xiàng)目而言,優(yōu)選增加成本投入,保障質(zhì)量效率目標(biāo),其次選擇微調(diào)質(zhì)量或效率目標(biāo)。微調(diào)質(zhì)量效率目標(biāo)都需要以質(zhì)量為key:按照功能或按照質(zhì)量風(fēng)險(xiǎn)的表現(xiàn)型,區(qū)分出重大風(fēng)險(xiǎn)和小風(fēng)險(xiǎn),優(yōu)先保障重大風(fēng)險(xiǎn),小風(fēng)險(xiǎn)則可以進(jìn)行風(fēng)險(xiǎn)報(bào)備、風(fēng)險(xiǎn)緩釋(灰度觀察)、延后保障(發(fā)布后補(bǔ)測)等。
實(shí)際上,戰(zhàn)略項(xiàng)目的重要程度,通常值得團(tuán)隊(duì)做一些前置工作,比如在開發(fā)階段同步做自動化測試用例開發(fā),或提前開發(fā)測試工具,都可以提升測試階段的執(zhí)行效率。本質(zhì)是把一部分測試階段的工作量折疊到開發(fā)階段同步進(jìn)行,減小測試階段質(zhì)量效率目標(biāo)的沖突程度。
2. 新啟動的業(yè)務(wù),如何制定初始期業(yè)務(wù)級測試策略?
新啟動業(yè)務(wù),如果完全沒有可繼承的三角目標(biāo)、標(biāo)準(zhǔn)、質(zhì)量體系積累,甚至團(tuán)隊(duì)都還在組建過程,那么先恭喜你,這是一個(gè)沒有技術(shù)負(fù)債的場景。沒有歷史包袱,就大膽的追求完美吧!
首先基于業(yè)務(wù)形態(tài),分析業(yè)務(wù)質(zhì)量表現(xiàn)維度,定義指標(biāo)和目標(biāo)值,可以參考同類業(yè)務(wù)的現(xiàn)行指標(biāo)和目標(biāo)值,然后和業(yè)務(wù)、研發(fā)團(tuán)隊(duì)探討業(yè)務(wù)研發(fā)模式,確定效率目標(biāo),如項(xiàng)目制、班車制、獨(dú)立發(fā)布o(jì)r全局發(fā)布。最后參考技術(shù)棧和業(yè)務(wù)經(jīng)驗(yàn)兩類能力要求搭建測試梯隊(duì)。
定好了目標(biāo),就在實(shí)踐中進(jìn)行迭代優(yōu)化。每一個(gè)項(xiàng)目的測試方案都是我們迭代的基礎(chǔ),每一個(gè)bug都是我們優(yōu)化的線索。項(xiàng)目測試方案不僅是為了保障單個(gè)項(xiàng)目,還要在項(xiàng)目后復(fù)盤總結(jié)測試方案的優(yōu)劣,從質(zhì)量、效率、成本三個(gè)角度綜合評價(jià)。漏測指標(biāo)是質(zhì)量的抓手,重復(fù)性的工作量是效率的抓手,測試方案優(yōu)化后也不僅是用于當(dāng)下的項(xiàng)目測試,還可以用過往的項(xiàng)目做回溯分析,時(shí)刻記住,除了當(dāng)下的項(xiàng)目,更重要是面向未來交付業(yè)務(wù)級測試策略。參考業(yè)務(wù)復(fù)雜度和人員經(jīng)驗(yàn),一般3-6個(gè)月內(nèi)就可以完成初版業(yè)務(wù)測試策略了。
3. 成熟業(yè)務(wù)順利運(yùn)轉(zhuǎn)中,如何定期刷新業(yè)務(wù)級測試策略?
既然是成熟業(yè)務(wù),潛臺詞是目前三角表現(xiàn)平衡,那么此時(shí)需要分析未來半年、一年甚至三年期間,業(yè)務(wù)會面臨什么樣的變化,質(zhì)量效率目標(biāo)會有什么變化。比如市場中出現(xiàn)了新的強(qiáng)大競對,競爭態(tài)勢會對迭代效率提出更高要求;比如業(yè)務(wù)進(jìn)入高增長期,用戶量業(yè)務(wù)量急遽增加,此時(shí)會對穩(wěn)定性、性能提出更高要求;再比如產(chǎn)品形態(tài)發(fā)生變化,從原本異步交互轉(zhuǎn)為實(shí)時(shí)交互,這也是對質(zhì)量的挑戰(zhàn)。識別到三角目標(biāo)的變化趨勢,才能提前布局,建設(shè)技術(shù)能力,在業(yè)務(wù)需要時(shí)就能直接落地應(yīng)用,產(chǎn)生收益。
在預(yù)判未來趨勢過程中,尤其要注意業(yè)務(wù)模式或產(chǎn)品形態(tài)的變化,它們通常會帶來風(fēng)險(xiǎn)類型的變化。如原本獨(dú)立經(jīng)營的金融業(yè)務(wù),引入了合作機(jī)構(gòu),轉(zhuǎn)變?yōu)槠脚_生態(tài)型時(shí),風(fēng)險(xiǎn)引入和風(fēng)險(xiǎn)表現(xiàn)都增加了機(jī)構(gòu)端,會對三角指標(biāo)都帶來顯著影響。再比如原本免費(fèi)的業(yè)務(wù)開始對某些場景進(jìn)行收費(fèi),或營銷活動增加了現(xiàn)金類優(yōu)惠,這些業(yè)務(wù)變化都代表著業(yè)務(wù)有了資金屬性,那么相應(yīng)的資金類風(fēng)險(xiǎn)也應(yīng)全盤考慮。
除了分析未來變化趨勢,還需要對現(xiàn)狀有更全面細(xì)致的了解,雖然是三角平衡,但三角不可能都是完美表現(xiàn),針對每一角的具體表現(xiàn)提出更高要求,分析現(xiàn)狀的差距,也能夠指明我們的提升方向:質(zhì)量優(yōu)先、效率其次、成本持續(xù)驅(qū)動。
這個(gè)場景說來簡單,實(shí)操最難。因?yàn)槌墒鞓I(yè)務(wù)下,從業(yè)務(wù)團(tuán)隊(duì)、研發(fā)團(tuán)隊(duì)傳導(dǎo)到質(zhì)量團(tuán)隊(duì)的壓力相對可控,如果質(zhì)量負(fù)責(zé)人自驅(qū)力不足,很容易陷入戰(zhàn)術(shù)性的忙碌中,畢竟項(xiàng)目一個(gè)接一個(gè),peer只關(guān)心我們交付的結(jié)果,對測試策略難以感知、也很少提出建議和要求。質(zhì)量負(fù)責(zé)人必須要持續(xù)跟蹤質(zhì)量、效率、成本表現(xiàn),定期回溯分析質(zhì)量策略執(zhí)行情況,主動刷新測試策略,調(diào)優(yōu)三角表現(xiàn)。
4. 再舉一個(gè)極端場景,有一個(gè)大項(xiàng)目(開發(fā)+測試工時(shí)>1000人日),因?yàn)榉N種原因需要倒排發(fā)布,倒排后只有正常周期的一半,怎樣保證發(fā)布質(zhì)量和發(fā)布時(shí)間?
這個(gè)場景的問題本質(zhì)是效率和質(zhì)量的明確沖突,最簡單方案是調(diào)整第三角 -- 成本目標(biāo),也就是加人/加班增加投入時(shí)間來解決。此處極端場景強(qiáng)調(diào)了倒排只有一半周期,基本已經(jīng)無法通過單純加班解決(個(gè)人經(jīng)驗(yàn)值:加班極限是同等自然日內(nèi)增加50%工作量,很難做到增加100%)。加人也有可能無人可加,或即使有其他項(xiàng)目人員可以借調(diào),如果沒有匹配的經(jīng)驗(yàn)積累,加人并不能等比例提高效率,還會因?yàn)樾录映蓡T需要有經(jīng)驗(yàn)成員的傳幫帶,更加占用原有項(xiàng)目人員的投入。
所以如果增加成本不能解決效率和質(zhì)量沖突時(shí),我們還有哪些策略可做?
倒排等同于效率目標(biāo)中的交付日期鎖定。那么效率目標(biāo)的其他目標(biāo)是否有可調(diào)空間?列舉幾個(gè)可調(diào)整角度:
1)提測日期提前,把測試周期盡可能拉長。分批提測也是類似思路,都是把實(shí)際測試工作執(zhí)行的時(shí)間盡可能往前提。把測試時(shí)間窗口拉長,以容納工作量。
2)在開發(fā)階段提前準(zhǔn)備測試工具,提高測試執(zhí)行階段效率。
3)在開發(fā)階段提前準(zhǔn)備測試自動化用例,提高測試case并發(fā)效率。還能充分利用夜間時(shí)間,擴(kuò)展case執(zhí)行周期。
以上兩條的測試工具和自動化用例就不用再遵從默認(rèn)的成本收益回收策略,而是專注于解決此次項(xiàng)目交付要求,增加執(zhí)行并行度。這也是通過增加投入解決效率問題,只不過不是增加新人,而是用項(xiàng)目原有測試人員,在研發(fā)階段進(jìn)行提前投入。
如果調(diào)整成本、效率,都不能解決,就需要慎重考慮質(zhì)量目標(biāo)這個(gè)角了。同樣列舉幾個(gè)可調(diào)整角度:
1)部分功能延后發(fā)布。如理財(cái)業(yè)務(wù)中,有一種最低持有期的理財(cái)產(chǎn)品,申購后一定日期后才能贖回,那么可以和業(yè)務(wù)技術(shù)協(xié)商,先保證申購功能的測試覆蓋,再在項(xiàng)目發(fā)布后,贖回功能尚未打開這個(gè)短短的小窗口內(nèi),補(bǔ)充保證贖回功能的測試覆蓋。這樣可以把一些功能的質(zhì)量保證工作后置,減少倒排周期的影響。
2)評估后裁剪部分回歸測試用例集。回歸用例顧名思義是此次變更不涉及修改,仍應(yīng)保持原有功能的用例,如果時(shí)間充裕,回歸用例需要實(shí)際執(zhí)行并確認(rèn)結(jié)果,但如果時(shí)間非常緊張,且沒有過往成熟的回歸自動化快速執(zhí)行,那么可以通過評估系統(tǒng)實(shí)現(xiàn)方案+CR后確認(rèn)是否有部分回歸功能不受此次變更影響,然后裁剪該部分回歸測試用例。
特別提醒!!評估后裁剪部分回歸用例集,能顯著減小工作量,但評估不全(系統(tǒng)歷史設(shè)計(jì)未考慮到,CR不全等)導(dǎo)致這部分回歸用例產(chǎn)生漏測的案例也比比皆是。所以這個(gè)策略風(fēng)險(xiǎn)極高,對核心回歸功能不建議采用該策略。對非核心回歸功能也要謹(jǐn)慎進(jìn)行。
3)對核心回歸功能,更建議做功能場景覆蓋調(diào)整。一個(gè)功能的用例集可以細(xì)分為多種觸發(fā)場景條件的具體用例(case),這里也基本遵循二八原理:80%的用戶場景(用戶操作流量或業(yè)務(wù)數(shù)據(jù)等價(jià)類)密集落在20%的場景上,而剩下80%的場景,流量分布更稀疏,觸發(fā)概率更小。舉例某個(gè)業(yè)務(wù)功能用例集涉及150個(gè)用例:
用戶操作流量或業(yè)務(wù)數(shù)據(jù)等價(jià)類占比 | 場景用例數(shù) | 實(shí)際執(zhí)行用例占比 |
100% | 150 | 150/150=100% |
99.9% | 130 | 130/150=87% |
99% | 80 | 80/150=53% |
80% | 30 | 30/150=20% |
這種情況下,從150個(gè)場景用例中,優(yōu)先選擇用戶操作流量占比最大的用例(如選擇80個(gè)用例,可覆蓋99%流量),即可大幅減少測試時(shí)間。這樣可以保證大范圍業(yè)務(wù)沒問題,讓可能遺漏的問題只表現(xiàn)在小范圍業(yè)務(wù)流量上,減小影響面。未選擇的用例,是發(fā)布后觀察線上表現(xiàn),還是在發(fā)布后驗(yàn)證或補(bǔ)測,也可以根據(jù)具體業(yè)務(wù)情況進(jìn)行策略再確認(rèn)。
灰度也是類似道理,通過灰度比例控制新代碼生效的業(yè)務(wù)流量占比,以此控制可能問題的影響面。
特別提醒!!該策略僅能用于問題影響在業(yè)務(wù)上可接受的情況,如果是高風(fēng)險(xiǎn)場景,如高客單業(yè)務(wù)的資損風(fēng)險(xiǎn),一筆操作可能就會觸發(fā)一個(gè)P1,仍然不建議采用該策略。
4)發(fā)布后進(jìn)行線上驗(yàn)證。和第一條延后發(fā)布不同,如果存在線下測試成本極高,線上測試成本很低的情況(如一些歷史數(shù)據(jù)構(gòu)造成本大,使用線上數(shù)據(jù)成本小),可以基于效率考慮,在發(fā)布后在線上進(jìn)行驗(yàn)證。由于項(xiàng)目已發(fā)布,那么一定要同步發(fā)布線上監(jiān)控核對觀察線上表現(xiàn),且第一時(shí)間進(jìn)行線上驗(yàn)證,把可能的問題影響面控制到最小。
5)以上除了第一條延后發(fā)布不會帶來實(shí)際質(zhì)量風(fēng)險(xiǎn)外,2,3,4都有質(zhì)量風(fēng)險(xiǎn),那么要補(bǔ)充兩點(diǎn):
a)已知線下測試裁剪或未覆蓋的場景,必須要有線上主動發(fā)現(xiàn)能力。
b)已知會產(chǎn)生線上問題可能的場景,必須要測算線上風(fēng)險(xiǎn)敞口(線上pv *時(shí)長 * 影響表現(xiàn),如果涉及客訴的,要計(jì)算客訴轉(zhuǎn)化率),并進(jìn)行相應(yīng)業(yè)務(wù)報(bào)備。
以上是比較簡化的幾個(gè)場景。其實(shí)業(yè)務(wù)的變化時(shí)刻在發(fā)生,每個(gè)團(tuán)隊(duì)也一直以專業(yè)能力見招拆招,是著眼于一個(gè)月的變化,還是預(yù)判一年的變化?對業(yè)務(wù)級測試負(fù)責(zé)人而言,需要把視野拉到業(yè)務(wù)全局,把目標(biāo)放到三角整體,每一個(gè)測試策略的決策,要兼顧當(dāng)下和未來,避免只見樹木不見森林。更重要的是,如果沒有明顯的當(dāng)下的問題,要把成本作為默認(rèn)驅(qū)動,用技術(shù)的方法持續(xù)優(yōu)化三角表現(xiàn)。
總結(jié):測試策略對測試中長期布局有著非常重要的意義,對測試負(fù)責(zé)人來說,解決問題只是基礎(chǔ)要求,在多種有效方案中選擇最優(yōu)解,才是更大的挑戰(zhàn)。通過三角目標(biāo)做牽引,對業(yè)務(wù)做預(yù)判,刷新目標(biāo),主動規(guī)劃,時(shí)刻調(diào)整,和業(yè)務(wù)共同應(yīng)對不確定的未來,才能持續(xù)為業(yè)務(wù)保駕護(hù)航。