統(tǒng)計覆蓋率(Statistical coverage, SCOV)應(yīng)該是Arm公司提出來的一種方法,它是一種利用統(tǒng)計可視化從回歸中提出和分析激勵質(zhì)量的方法。SCOV可以深入挖掘激勵數(shù)據(jù),以工程師易于理解的方式提取和呈現(xiàn)被統(tǒng)計事件的信息,并有明確的改進方向。
我前幾年就接觸了SCOV的一些實現(xiàn),但一直都不是很重視它,也沒有深入思考它的潛在價值。所以我大部分情況下可能只是應(yīng)付任務(wù)的方式,實現(xiàn)一些激勵或DUT的統(tǒng)計事件,在跑完驗證回歸后,也沒有仔細去分析這些統(tǒng)計事件的數(shù)值背后隱含的邏輯關(guān)系和可能提升激勵質(zhì)量的方向。
最近這一個月,在復(fù)現(xiàn)一個bug的過程中,我算是真正見識到SCOV的威力。當時要復(fù)現(xiàn)這個bug涉及到的隨機激勵約束太多,方向太多,剛開始是憑經(jīng)驗去調(diào)整約束,然后回歸看是否可以復(fù)現(xiàn)。經(jīng)過多輪嘗試,浪費了些時間,仍然毫無進展。我的領(lǐng)導(dǎo)就抓取了bug出現(xiàn)場景的一些關(guān)鍵特征作為統(tǒng)計事件,然后調(diào)整激勵組合,看在哪一種情況下,統(tǒng)計事件的值更大,那么就說明該激勵組合下復(fù)現(xiàn)bug的可能性越高。果不其然,根據(jù)回歸SCOV結(jié)果,在極短的時間內(nèi)就找出比較合適的激勵組合,而且也復(fù)現(xiàn)出bug了。
經(jīng)過此役,我打算以后每個項目一定要深入思考和實現(xiàn)一些有價值的統(tǒng)計事件,并經(jīng)常從回歸收集的SCOV結(jié)果中去分析和優(yōu)化激勵。SCOV像其它統(tǒng)計方法一樣,需要對統(tǒng)計事件要有一定的了解,才能提出有價值的改進方向。
典型的SCOV流程是由三個階段組成的循環(huán)——數(shù)據(jù)收集、分析和激勵改進。Arm提出SCOV是因為隨機激勵在發(fā)現(xiàn)難以想象漏洞上很有幫助,但它們往往效率很低,在發(fā)現(xiàn)錯誤之間運行數(shù)十億個周期并不罕見,這表明激勵花費了大部分時間來探索相同的驗證狀態(tài)空間。為了提高回歸效率,必須增加激勵的壓力和唯一性。就必須搞清在這數(shù)十億個周期中究竟發(fā)生了什么,這是一件很難的事情。FCOV可以提供對激勵方案的一個大致了解,但它提供了一個相對簡單化的視角。SCOV可以對事件信息進行分組和可視化,并從事件組合上提供即時反饋。而且SCOV的仿真開銷通常比CCOV和FCOV低得多,允許環(huán)境更頻繁地收集和分析,也可以進行更大的回歸。
圖1 典型SCOV循環(huán)流程
那么統(tǒng)計覆蓋率是怎么實現(xiàn)的呢?既然統(tǒng)計覆蓋率是由一些事件組成,并且統(tǒng)計這些事件發(fā)生的次數(shù)、分布情況等,就說明在驗證環(huán)境中,可以定義一組計數(shù)器來代表這些事件,如果發(fā)生了A事件,那么A的計數(shù)器就加1,等所有用例仿真結(jié)束后,把所有用例中A事件的計數(shù)器值加起來,就可以得到在該次回歸中,A事件發(fā)生的次數(shù)。當然,想要花樣搞得多的話,可以統(tǒng)計一些二維或三維信息,比如隨著仿真時間的變化,A事件發(fā)生的情況,然后用圖表形式展示出來,這樣就很直觀了。也可以統(tǒng)計事件A和事件B之間的相關(guān)性等。
有機會可以多探索探索,收益還是很大。
文章來源于 專芯致志er ,作者 谷公子
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.