精準(zhǔn)測(cè)試二三談 | IDCF

來(lái)源:Thoughtworks洞見(jiàn)
作者:齊磊 前Thoughtworks高級(jí)質(zhì)量分析師,現(xiàn)任HSBC測(cè)試咨詢專家,擅長(zhǎng)敏捷測(cè)試,測(cè)試開(kāi)發(fā),DevOps等領(lǐng)域。
我們都在使用敏捷開(kāi)發(fā)、敏捷測(cè)試,維護(hù)著我們的項(xiàng)目,我們寫(xiě)著少量的test case,甚至不寫(xiě)一條case,敏捷宣言其中一條原則是工作的軟件 “高于” 詳盡的文檔,詳解文檔包括各種計(jì)劃書(shū)、總結(jié)報(bào)告、詳盡測(cè)試用例等,我們將大量時(shí)間用在自動(dòng)化測(cè)試以及手工探索性測(cè)試上面,而我們的用例則以BDD形式存在于代碼之中,這樣來(lái)幫助盡可能早的發(fā)現(xiàn)問(wèn)題。
但最近我發(fā)現(xiàn)幾個(gè)客戶在質(zhì)量問(wèn)題,存在一些共性,這些基于黑盒測(cè)試的項(xiàng)目在測(cè)試過(guò)程中存在以下幾個(gè)共同的問(wèn)題:
大量的黑盒測(cè)試用例,有的項(xiàng)目甚至用例數(shù)超過(guò)5w,測(cè)試工作大都是手工為主,受主觀人為因素影響太大:每次版本發(fā)布,QA全憑個(gè)人經(jīng)驗(yàn)來(lái)確定改動(dòng)對(duì)系統(tǒng)影響范圍,通常情況,要么測(cè)試范圍定小了,造成漏測(cè),要么測(cè)試范圍過(guò)大,付出的代價(jià)過(guò)高,造成項(xiàng)目不能如期按時(shí)交付。 代碼與測(cè)試沒(méi)有數(shù)據(jù)可衡量:沒(méi)有單元測(cè)試,其他類型測(cè)試對(duì)代碼覆蓋程度,質(zhì)量高低,沒(méi)有數(shù)據(jù)能夠衡量,例如我們說(shuō)api測(cè)試覆蓋率是100%,這個(gè)數(shù)據(jù)大多都是根據(jù)用例業(yè)務(wù)場(chǎng)景估算出的。QA只能增加更多的黑盒測(cè)試,而實(shí)際功能測(cè)試覆蓋率隨著時(shí)間和用例增多,便會(huì)觸達(dá)覆蓋率的天花板,更多的是重復(fù)的無(wú)效測(cè)試。 自動(dòng)化測(cè)試無(wú)法發(fā)揮作用:對(duì)于web/api或app 后端服務(wù)系統(tǒng),測(cè)試人員對(duì)除手工測(cè)試外,我們將大量的時(shí)間與精力投放在api接口測(cè)試的實(shí)現(xiàn)上,隨著項(xiàng)目的迭代,自動(dòng)化用例積累越來(lái)越多,從幾百到上千,這時(shí)候我們需要考慮測(cè)試穩(wěn)定性,運(yùn)行時(shí)長(zhǎng),大量重復(fù)測(cè)試場(chǎng)景與代碼,整個(gè)測(cè)試ROI并不是隨著用例數(shù)增多而上升,反而維護(hù)和排查問(wèn)題成為QA日常工作的重?fù)?dān),疲于應(yīng)付,沒(méi)有精力將時(shí)間投入到更有用的探索性測(cè)試和分析工作中,進(jìn)而造成bug頻出,整個(gè)團(tuán)隊(duì)便對(duì)自動(dòng)化失去信任,直至廢棄,這也是很多傳統(tǒng)行業(yè)無(wú)法規(guī)模化實(shí)施敏捷測(cè)試原因之一。
一、先來(lái)談?wù)勈裁词蔷珳?zhǔn)測(cè)試?

正向追溯,開(kāi)發(fā)人員可以看到QA執(zhí)行用例的代碼細(xì)節(jié),例如用例執(zhí)行過(guò)程中,調(diào)用具體方法與實(shí)現(xiàn)類,方便進(jìn)行缺陷的修復(fù)與定位。 逆向追溯,測(cè)試人員通過(guò)release前的增量代碼快速確定測(cè)試用例的范圍,極大減少回歸測(cè)試的盲目性和工作量,提升ROI,達(dá)到測(cè)試覆蓋率最大化。
二、精準(zhǔn)測(cè)試原理

建立用例與代碼覆蓋率之間的映射關(guān)系; 影響面評(píng)估,分析識(shí)別增量與變更代碼; 測(cè)試范圍評(píng)估,用例篩選,鏈路分析。
功能測(cè)試關(guān)聯(lián)方案
自動(dòng)化測(cè)試關(guān)聯(lián)方案
運(yùn)行環(huán)境不支持java agent; 部署環(huán)境不允許設(shè)置JVM參數(shù); 字節(jié)碼需要被轉(zhuǎn)換成其他虛擬機(jī)字節(jié)碼,如Android Dalvik VM; 動(dòng)態(tài)修改字節(jié)碼過(guò)程中和其他agent沖突; 無(wú)法自定義用戶加載類。
三、總結(jié)精準(zhǔn)測(cè)試的優(yōu)點(diǎn)
四、精準(zhǔn)測(cè)試存在的問(wèn)題
基于手工測(cè)試的精準(zhǔn)測(cè)試建立映射關(guān)系繁雜,如果需求改變頻繁,用例維護(hù)以及之間的關(guān)系維護(hù)需要耗費(fèi)大量時(shí)間精力。
精準(zhǔn)測(cè)試需要一定的自動(dòng)化測(cè)試的覆蓋,這樣做起來(lái)更有意義,例如api自動(dòng)化測(cè)試,如果本身用例過(guò)少,與代碼之間關(guān)聯(lián)關(guān)系不多時(shí),變更代碼后可能不會(huì)得出什么結(jié)果。
最好有對(duì)應(yīng)的用例管理系統(tǒng),能夠方便的幫助我們建立與代碼之間的關(guān)系。
需要投入開(kāi)發(fā)能力強(qiáng)的QA或者測(cè)試開(kāi)發(fā)建立整套系統(tǒng)環(huán)境,但長(zhǎng)遠(yuǎn)考慮,將精準(zhǔn)測(cè)試嵌入整個(gè)公司的質(zhì)量平臺(tái)中,不管對(duì)于新項(xiàng)目還說(shuō)維護(hù)項(xiàng)目來(lái)說(shuō)都是一種提升。
項(xiàng)目生命周期需要較長(zhǎng),短期項(xiàng)目花費(fèi)巨大精力開(kāi)發(fā)和維護(hù)整套精準(zhǔn)測(cè)試系統(tǒng)得不償失。短期項(xiàng)目可以利用精準(zhǔn)測(cè)試以api測(cè)試覆蓋率作為衡量標(biāo)準(zhǔn)。不去建立繁雜的關(guān)系,只監(jiān)控UI API測(cè)試覆蓋率迭代時(shí)的變更來(lái)達(dá)到目的。



