基于SystemC描述的嵌入式系統(tǒng)的自動化驗(yàn)證
AOP 的核心是分離橫切關(guān)注點(diǎn),并封裝橫切關(guān)注點(diǎn)為方面(aspect) ,然后通過方面編織器或方面編譯器(aspect weaver) ,自動將分離的關(guān)注點(diǎn)植入原代碼中。 簡單地說,AOP 方法是通過定義方面來實(shí)現(xiàn)對原代碼的一種非侵入性改寫,從而增加相應(yīng)的功能。測試代碼的分離、封裝和植入原理如圖3 所示。
方面主要定義切入點(diǎn)( pointcut ) 和通知(advice) 。切入點(diǎn)可以理解為被測系統(tǒng)中關(guān)注的測試點(diǎn),通知是實(shí)現(xiàn)測試點(diǎn)約束檢驗(yàn)或相關(guān)信息采集的具體代碼。由方面編譯器編譯后,測試代碼即被植入到與測體相關(guān)的測試點(diǎn)中。經(jīng)驗(yàn)證修改后的正確設(shè)計可以通過常規(guī)編譯器編譯后交付使用,使得設(shè)計本身不包含任何測試代碼。AOP 語言一般是編程語言的擴(kuò)展,目前應(yīng)用較好的有基于J ava 的AspectJ ,以及基于C ++ 的AspectC ++ 。
將AOP 技術(shù)應(yīng)用到驗(yàn)證過程中,是一個非常有意義的嘗試。因?yàn)樵摲椒ㄊ沟瞄_發(fā)人員可以很容易地更改、插入或除去相關(guān)測試點(diǎn),而不需要重新構(gòu)架系統(tǒng)和作出侵入性的修改,還可以按需要隨時引入新的測試點(diǎn)。設(shè)計時,開發(fā)人員可以忽略不影響其具體活動的測試要求而專注于設(shè)計本身,增強(qiáng)了設(shè)計的可復(fù)用性,減小了開發(fā)的復(fù)雜度。
圖4 給出了采用AOP 技術(shù)的自動化測試方法。整個系統(tǒng)包括4 個部分:被測體,AOP 測試探針以及由它建立的測試通道,測試點(diǎn)收集器,期望與響應(yīng)的自動化測試框架。形象地講,這個方法好比在被測系統(tǒng)中插入了示波器的探針。其中關(guān)鍵的部分是 AOP 建立的測試通道,由這個通道在植入被測體的測試探針和測試點(diǎn)收集器之間建立了聯(lián)系。測試點(diǎn)的變化,可以被測試點(diǎn)收集器所察覺,并收集測試點(diǎn)的數(shù)據(jù)。AOP 探針的植入就使測試代碼與被測對象建立了聯(lián)系;取出植入的過程,就切斷了二者的聯(lián)系,從而實(shí)現(xiàn)了測試代碼的可插拔功能。
評論