本發(fā)明涉及測試領(lǐng)域,更具體地說,涉及一種終端測試裝置、終端測試設(shè)備及變量維護方法。
背景技術(shù):
當前無線終端測試工具,一般使用C/C++開發(fā),由于其開發(fā)語言本身的特性,在軟件開發(fā)過程中都會或多或少使用全局變量,特別是對于開發(fā)規(guī)模越大(上百萬行代碼)的開發(fā)項目,幾乎不可避免地會使用全局變量。而當其所開發(fā)的工具軟件用在無線終端測試環(huán)境中時,其所面向的又涉及到各種的測試設(shè)備和終端,如給儀器發(fā)送命令的GPIB指令的設(shè)備句柄,終端端口的操作接口指針,特定平臺的各封裝庫的接口對象等全局變量。全局變量效率高效,但是對于全局變量繁多且沒有統(tǒng)一有效的管理時,在不同開發(fā)者中使用的時候,很容易出現(xiàn)某些全局變量被無意篡改或被重復(fù)定義,導(dǎo)致全局變量調(diào)用出錯,因而現(xiàn)實情況中由于全局變量使用不正確而導(dǎo)致軟件Bug甚至測試失敗的情況屢見不鮮。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于:解決現(xiàn)有全局變量調(diào)用容易出錯的問題,針對該技術(shù)問題,提供一種終端測試裝置、終端測試設(shè)備及變量維護方法。
為解決上述技術(shù)問題,本發(fā)明提供一種終端測試裝置,包括:
變量設(shè)置模塊,用于接收到設(shè)置變量請求時,獲取請求設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容,根據(jù)所述變量類型從轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù),通過所述設(shè)置轉(zhuǎn)換函數(shù)將所述變量內(nèi)容轉(zhuǎn)換成預(yù)設(shè)的目標格式后,調(diào)用預(yù)設(shè)變量設(shè)置接口,將轉(zhuǎn)換后的變量內(nèi)容與所述變量標識綁定存儲到變量數(shù)據(jù)庫中;
變量清單管理模塊,用于接收設(shè)置的全局變量的變量名和變量標識并寫入變量聲明頭文件中,所述變量聲明頭文件中各全局變量的變量名和變量標識各不相同。
可選地,終端測試裝置還包括:
變量導(dǎo)出模塊,用于接收到變量導(dǎo)出請求時,獲取請求導(dǎo)出的全局變量的變量標識和變量類型,將所述變量標識作為索引在所述變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,并根據(jù)所述變量類型從所述轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的導(dǎo)出轉(zhuǎn)換函數(shù),調(diào)用所述導(dǎo)出轉(zhuǎn)換函數(shù)將所述變量內(nèi)容由所述目標格式轉(zhuǎn)換為所述變量類型對應(yīng)的原格式后,調(diào)用預(yù)設(shè)變量輸出接口將得到的變量內(nèi)容輸出。
可選地,所述目標格式包括字符串和字節(jié)串,所述變量設(shè)置模塊包括:
設(shè)置信息獲取單元,用于設(shè)置變量請求時,獲取請求設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容;
設(shè)置類型判斷單元,用于判斷所述變量類型包含的類型種數(shù)是否小于等于預(yù)設(shè)N值,所述N大于等于1;
設(shè)置轉(zhuǎn)換控制單元,用于在所述判斷結(jié)果為是時,從所述轉(zhuǎn)換函數(shù)庫中調(diào)用與所述變量類型匹配的字符串設(shè)置轉(zhuǎn)換函數(shù),將所述變量內(nèi)容轉(zhuǎn)換成字符串;否則,從所述轉(zhuǎn)換函數(shù)庫中調(diào)用字節(jié)串設(shè)置轉(zhuǎn)換函數(shù),將所述變量內(nèi)容轉(zhuǎn)換成字節(jié)串。
可選地,所述變量導(dǎo)出模塊包括:
導(dǎo)出信息獲取單元,用于根據(jù)所述變量導(dǎo)出請求獲取請求導(dǎo)出的全局變量的變量標識和變量類型;
導(dǎo)出類型判斷單元,用于判斷所述變量類型包含的類型種數(shù)是否小于等于所述N值;
導(dǎo)出轉(zhuǎn)換控制單元,用于在所述判斷結(jié)果為是時,從所述轉(zhuǎn)換函數(shù)庫中調(diào)用與所述變量類型匹配的字符串導(dǎo)出轉(zhuǎn)換函數(shù),將所述變量內(nèi)容由字符串格式轉(zhuǎn)換為所述變量類型對應(yīng)的原格式;否則,從所述轉(zhuǎn)換函數(shù)庫中調(diào)用字節(jié)串導(dǎo)出轉(zhuǎn)換函數(shù),將所述變量內(nèi)容由字節(jié)串格式轉(zhuǎn)換為所述變量類型對應(yīng)的原格式。
可選地,還包括變量移除模塊,用于接收到變量移除請求時,獲取請求移除的全局變量的變量標識,根據(jù)所述變量標識在所述變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,將查找到的所述變量內(nèi)容刪除;
所述變量清單管理模塊還用于將所述變量聲明頭文件中待移除的全局變量的變量名和變量標識刪除。
可選地,本發(fā)明還提供一種終端測試設(shè)備,包括如上所述的終端測試裝置。
可選地,本發(fā)明還提供一種變量維護方法,包括:
接收到設(shè)置變量請求,獲取請求設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容;
根據(jù)所述變量類型從轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù);
通過所述設(shè)置轉(zhuǎn)換函數(shù)將所述變量內(nèi)容轉(zhuǎn)換成預(yù)設(shè)的目標格式后,調(diào)用預(yù)設(shè)變量設(shè)置接口,將轉(zhuǎn)換后的變量內(nèi)容與所述變量標識綁定存儲到變量數(shù)據(jù)庫中;
以及還包括將設(shè)置的全局變量的變量名和變量標識并寫入變量聲明頭文件中,所述變量聲明頭文件中各全局變量的變量名和變量標識各不相同。
可選地,所述方法還包括:
接收變量導(dǎo)出請求,獲取請求導(dǎo)出的全局變量的變量標識和變量類型;
將所述變量標識作為索引在所述變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,并根據(jù)所述變量類型從所述轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的導(dǎo)出轉(zhuǎn)換函數(shù);
調(diào)用所述導(dǎo)出轉(zhuǎn)換函數(shù)將所述變量內(nèi)容由所述目標格式轉(zhuǎn)換為所述變量類型對應(yīng)的原格式后,調(diào)用預(yù)設(shè)變量輸出接口將得到的變量內(nèi)容輸出。
可選地,所述方法還包括:
接收變量移除請求,獲取請求移除的全局變量的變量標識;
調(diào)動變量移除接口將所述變量標識作為索引在所述變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,將查找到的所述變量內(nèi)容刪除;
以及還包括將所述變量聲明頭文件中所述請求移除的全局變量的變量名和變量標識刪除。
可選地,所述變量聲明頭文件中的全局變量包含用于硬件控制的硬件全局變量和用于軟件控制的軟件全局變量。
有益效果
本發(fā)明提供的終端測試裝置、終端測試設(shè)備及變量維護方法,變量維護方法,在對全局變量進行管理時,當有新全局變量需要設(shè)置加入時,根據(jù)該全局變量的變量類型從預(yù)設(shè)的轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù),進而通過該設(shè)置轉(zhuǎn)換函數(shù)將該全局變量的變量內(nèi)容轉(zhuǎn)換成預(yù)設(shè)的目標格式后,調(diào)用預(yù)設(shè)的變量設(shè)置接口,將轉(zhuǎn)換后的變量內(nèi)容以該全局變量的變量標識為索引進行存儲,并將該全局變量的變量名和變量標識并寫入一份變量聲明頭文件中,且本發(fā)明變量聲明頭文件中各全局變量的變量名和變量標識各不相同。本發(fā)明將各全局變量轉(zhuǎn)換成預(yù)設(shè)目標格式通過統(tǒng)一的設(shè)置接口以變量標識為索引進行統(tǒng)一存儲。這樣使用者在使用全局變量時只需從變量聲明頭文件查找到與變量標識具有一一對應(yīng)關(guān)系的變量名輸入,即可索引到對應(yīng)的變量標識進而索引到對應(yīng)的變量內(nèi)容,而并不需要關(guān)心具體的變量類型,對于統(tǒng)一變量也就不要去對齊進行修改或重新定義,能盡可能避免全局變量調(diào)用出錯,進而降低在對終端測試過程中,由于全局變量使用不正確而導(dǎo)致軟件Bug甚至測試失敗的情況發(fā)生,提升用戶體驗的滿意度。
附圖說明
下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中:
圖1為實現(xiàn)本發(fā)明各個實施例一個可選的計算機的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例一提供的全局變量設(shè)置過程流程示意圖;
圖3為本發(fā)明實施例一提供的全局變量設(shè)置時的轉(zhuǎn)換過程流程示意圖;
圖4為本發(fā)明實施例二提供的全局變量獲取過程流程示意圖;
圖5為本發(fā)明實施例二提供的全局變量獲取時的轉(zhuǎn)換過程流程示意圖;
圖6為本發(fā)明實施例二提供的全局變量移除過程流程示意圖;
圖7為本發(fā)明實施例三提供的終端測試設(shè)備結(jié)構(gòu)示意圖;
圖8為本發(fā)明實施例三提供的終端測試裝置結(jié)構(gòu)示意圖;
圖9為圖8中變量設(shè)置模塊的結(jié)構(gòu)示意圖;
圖10為本發(fā)明實施例三提供的另一終端測試裝置結(jié)構(gòu)示意圖;
圖11為圖10中變量導(dǎo)出模塊的結(jié)構(gòu)示意圖;
圖12為本發(fā)明實施例三提供的含變量移除功能的終端測試裝置結(jié)構(gòu)示意圖。
具體實施方式
應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)在將參考附圖描述實現(xiàn)本發(fā)明各個實施例的移動終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。
如圖1所示,為實現(xiàn)本發(fā)明各個實施例一個可選的計算機的結(jié)構(gòu)示意圖,該計算機至少在不同的應(yīng)用場景可以作為服務(wù)器、測試設(shè)備使用,參見圖1所示,包括:輸入輸出(IO)總線11、處理器12、存儲器13、內(nèi)存14、通信裝置15。其中,
輸入輸出(IO)總線11分別與自身所屬的計算機的其它部件(處理器12、存儲器13、內(nèi)存14和通信裝置15)連接,并且為其它部件提供傳送線路。
處理器12通??刂谱陨硭鶎俚挠嬎銠C的總體操作。例如,處理器12執(zhí)行計算和確認等操作。其中,處理器12可以是中央處理器(CPU)。
存儲器13存儲處理器可讀、處理器可執(zhí)行的軟件代碼,其包含用于控制處理器12執(zhí)行本文描述的功能的指令(即軟件執(zhí)行功能)。
其中,本發(fā)明提供的消息訂閱管理裝置中,實現(xiàn)接收模塊、第一確定模塊、第二確定模塊、存儲模塊、生成模塊、查找子模塊、創(chuàng)建模塊、監(jiān)控模塊和刪除模塊的功能的軟件代碼可存儲在存儲器13中,并由處理器12執(zhí)行或編譯后執(zhí)行。
內(nèi)存14,一般采用半導(dǎo)體存儲單元,包括隨機存儲器(RAM),只讀存儲器(ROM),以及高速緩存(CACHE),RAM是其中最重要的存儲器。內(nèi)存14是計算機中重要的部件之一,它是與CPU12進行溝通的橋梁,計算機中所有程序的運行都是在內(nèi)存中進行的,其作用是用于暫時存放CPU12中的運算數(shù)據(jù),以及與硬盤等外部存儲器交換的數(shù)據(jù),只要計算機在運行中,CPU12就會把需要運算的數(shù)據(jù)調(diào)到內(nèi)存中進行運算,當運算完成后CPU12再將結(jié)果傳送出來。
通信裝置15,通常包括一個或多個組件,其允許自身所屬的計算機與無線通信系統(tǒng)或網(wǎng)絡(luò)之間的無線電通信。
以下通過具體實施例進行詳細說明。
第一實施例
本實施例中,對于各全局變量的設(shè)置、獲取以及移除等操作都可以通過設(shè)置的統(tǒng)一的接口實現(xiàn),且在全局變量設(shè)置時,將其通過對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù)轉(zhuǎn)換成預(yù)設(shè)的目標格式,并有變量標識為索引進行統(tǒng)一存儲,并在聲明文件中對各變量進行唯一聲明,以便于后續(xù)使用過程中的查找和調(diào)用。通過本實施例提供的統(tǒng)一設(shè)置、獲取等維護管理,可以盡可能避免在全局變量類型繁多的情況下,全局變量使用出錯的問題。為了更好的理解本發(fā)明,本實施例分別對全局變量的設(shè)置進行示例說明。
參見圖2所示,圖2所示為本發(fā)明第一實施例提供的全局變量設(shè)置過程流程示意圖,包括:
S201:接收設(shè)置變量請求,獲取該設(shè)置變量請求所請求設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容;
S202:根據(jù)獲取的變量類型從轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù);
S203:通過匹配到的設(shè)置轉(zhuǎn)換函數(shù)將變量內(nèi)容轉(zhuǎn)換成預(yù)設(shè)的目標格式;
S204:調(diào)用預(yù)設(shè)的變量設(shè)置接口,將轉(zhuǎn)換后的變量內(nèi)容以變量標識為索引存儲到變量數(shù)據(jù)庫中。
在變量設(shè)置過程中,還包括將設(shè)置的全局變量的變量名和變量標識并寫入變量聲明頭文件中。該步驟可以在上述步驟中的任意步驟之前、之后或同時執(zhí)行。
本實施例中的變量聲明頭文件中各全局變量的變量名和變量標識各不相同,也即本實施例中的各全局變量在聲明文件中的變量名和變量標識一一對應(yīng)。本實施例中的變量名可以攜帶變量類型,也可以不攜帶。且本實施例中的變量名中可以體現(xiàn)全局變量的用途,以便于后續(xù)維護、查詢或調(diào)用。在本實施例中的變量聲明頭文件中,不允許出現(xiàn)相同的變量名或變量標識。
傳統(tǒng)的C/C++代碼實現(xiàn)時,是在某個.h頭文件中進行變量聲明,然后在某個然后在某個.cpp文件中進行定義實現(xiàn)。本發(fā)明實施例在進行全局變量聲明是,在一個獨立的頭文件中,定義一個全局變量的枚舉類型,當需要一個時,也即需要設(shè)置一個全局變量時,就添加一個,也即添加該全局變量對應(yīng)的變量名+變量標識。本實施例中的全局變量的聲明可以不必關(guān)注變量的實際類型。例如,全局變量的枚舉名字可以自行定義格式,如<前綴>+<變量用途>+<實際類型(可選)>+變量標識。
本實施例中各全局變量的變量標識只要可以唯一識別各全局變量即可,對于各變量標識的具體值可以自定義,也可以按照測試設(shè)備給出的一些既定規(guī)則(例如依次遞增規(guī)則)按序設(shè)置。
另外,在終端測試環(huán)境所具有的變量類型與純軟件所面對的變量類型相比,會多出許多終端測試相關(guān)的硬件設(shè)備類型,如測試儀器,連接卡,無線終端,輔助測試電子設(shè)備等。此時本實施例中的全局變量就包含用于硬件控制的硬件全局變量和用于軟件控制的軟件全局變量。在本實施例中,不管是硬件全局變量,還是軟件全局變量,在聲明文件中全部按照上述規(guī)則進行統(tǒng)一的抽象和歸類,實現(xiàn)統(tǒng)一管理,提升管理效率以及提升資源利用效率。基于上述抽象和分類,測試設(shè)備在運行測試工具軟件時,就可以根據(jù)實際測試需求揉合各種的硬件設(shè)備變量類型和軟件變量類型,協(xié)調(diào)進行相互通訊和調(diào)用,實現(xiàn)對應(yīng)功能的測試。
本實施例中,可以是測試人員或編譯人員發(fā)起變量設(shè)置請求,且在一個變量設(shè)置請求中,可以對一個全局變量進行設(shè)置,也可以同時對兩個以上的全局變量進行設(shè)置。
本實施例中設(shè)置的全局變量可以是各種內(nèi)置類型,例如C#語言、C/C++語言、VB語言、JAVA語言等語言的內(nèi)置類型,也可以是測試人員或編譯人員自定義類型。
本實施例中,轉(zhuǎn)換函數(shù)庫中的設(shè)置轉(zhuǎn)換函數(shù)可以預(yù)先設(shè)置好,也可以在使用過程中動態(tài)添加更新。設(shè)置轉(zhuǎn)換函數(shù)的作用是將對應(yīng)的變量內(nèi)容統(tǒng)一轉(zhuǎn)換為預(yù)設(shè)的目標格式,以便后續(xù)統(tǒng)一存儲、管理。本實施例中,對于各中類型的全局變量的設(shè)置轉(zhuǎn)換函數(shù)的設(shè)置可以根據(jù)全局變量的實際類型靈活設(shè)置。例如,對于當前自身系統(tǒng)支持的各種變量類型,可以直接采用系統(tǒng)默認的轉(zhuǎn)換方式轉(zhuǎn)換成對應(yīng)的目標格式。對于當前系統(tǒng)自身并不支持的變量類型,則需要進行偏特化處理,也即需要設(shè)置對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù),例如對于變量類型為str ing的全局變量,則可專門設(shè)置一個設(shè)置轉(zhuǎn)換函數(shù)對這類變量設(shè)置進行轉(zhuǎn)換。又例如對于byte類型也可以對齊設(shè)置一個轉(zhuǎn)換函數(shù)進行格式轉(zhuǎn)換,轉(zhuǎn)換成目標格式。應(yīng)當理解的得是,本實施例中偏特化處理的設(shè)置轉(zhuǎn)換函數(shù)的設(shè)置,可以是一個轉(zhuǎn)換函數(shù)對應(yīng)一種變量類型,也可以是一個轉(zhuǎn)換函數(shù)對應(yīng)多種變量類型。
另外,應(yīng)當理解的是,本實施例中的目標格式可以僅包含一種格式,也可以根據(jù)具體應(yīng)用場景需求等因素靈活設(shè)置為包含多種格式。例如,本實施例中的目標格式可以包含字符串和字節(jié)串(也即二進制碼)。其中字符串主要是針對全局變量結(jié)構(gòu)中包含的類型種數(shù)較少的全局變量,這部分全局變量一般是內(nèi)置全局變量。而字節(jié)串主要是針對全局變量結(jié)構(gòu)中包含的類型種數(shù)較多的全局變量,這部分全局變量一般那些有固定大小的自定義的結(jié)構(gòu)類型的全局變量。當然,應(yīng)當理解的是,除了上述示例的兩種目標格式外,本實施例中的目標格式的數(shù)量還可以根據(jù)實際需求進行靈活增加、刪減,目標格式的類型也可以靈活的替換。下面以目標格式包括字符串和字節(jié)串為示例,對所述變量設(shè)置的轉(zhuǎn)換過程進行示例說明,參見圖3所示,包括:
S301:獲取待設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容;
S302:判斷變量類型包含的類型種數(shù)是否小于等于預(yù)設(shè)N值,N大于等于1;本實施例中可以設(shè)置N=1,或者等于2;如是,轉(zhuǎn)至S303;否則,轉(zhuǎn)至S304;
S303:從轉(zhuǎn)換函數(shù)庫中調(diào)用與變量類型匹配的字符串設(shè)置轉(zhuǎn)換函數(shù),將變量內(nèi)容轉(zhuǎn)換成字符串。
S304:從轉(zhuǎn)換函數(shù)庫中調(diào)用字節(jié)串設(shè)置轉(zhuǎn)換函數(shù),將變量內(nèi)容轉(zhuǎn)換成字節(jié)串。
本實施例中,對于轉(zhuǎn)換后得到的字符串變量內(nèi)容或字節(jié)串變量內(nèi)容,通過變量設(shè)置接口調(diào)用相應(yīng)的字符保存容器或字節(jié)保存容器進行存儲,且將變量標識作為索引,以便以后續(xù)調(diào)用或更新。在存儲時,對于轉(zhuǎn)換得到的字符串和字節(jié)串,都嚴格按照轉(zhuǎn)換時的順序依次存儲。
本實施例在設(shè)置全局變量時,根據(jù)該全局變量的變量類型從預(yù)設(shè)的轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù),將該全局變量的變量內(nèi)容轉(zhuǎn)換成預(yù)設(shè)的目標格式后,通過變量設(shè)置接口將轉(zhuǎn)換后的變量內(nèi)容以該變量標識為索引進行存儲,并將該全局變量的變量名和變量標識并寫入變量聲明頭文件中。通過將全局變量轉(zhuǎn)換成預(yù)設(shè)目標格式通過統(tǒng)一的設(shè)置接口以變量標識為索引進行統(tǒng)一存儲。使用者在使用全局變量時只需從變量聲明頭文件查找到與變量標識具有一一對應(yīng)關(guān)系的變量名輸入即可索引到變量內(nèi)容,能盡可能避免全局變量調(diào)用出錯,提升用戶體驗的滿意度。本實施例提供的上述方案至少具備以下優(yōu)點:
1、對應(yīng)在終端測試的環(huán)境中所碰到的分硬件、軟件變量類型,進行了統(tǒng)一的抽象和歸類;
2、統(tǒng)一了全局變量的設(shè)置接口;
3、使用語言特性強制開發(fā)者添加刪減全局變量的聲明定義在一個相同地方(相同文件);
4、可支持各種語言(C/C++、VB、JAVA等)的所有內(nèi)置類型,也可以通過自行擴展支持自定義類型;
5、使用變量時只需關(guān)注或包含自身所使用到類型,而無需額外包含其他的全局變量類型的定義。
通過上面所述,可以使在終端測試環(huán)境中各種全局變量的使用能集中管理,便于使用和修改,提高開發(fā)效率和代碼質(zhì)量。
第二實施例
本實施例在第一實施例的基礎(chǔ)上,對全局變量的獲取過程以及移除更新過程進行示例說明。
參見圖4所示,本實施例中在第一實施例的基礎(chǔ)上,獲取一個全局變量的過程包括:
S401:接收變量導(dǎo)出請求,獲取請求導(dǎo)出的全局變量的變量標識和變量類型;對于變量標識以及對應(yīng)的變量類型測試設(shè)備可以根據(jù)變量名通過內(nèi)部的對應(yīng)轉(zhuǎn)換關(guān)系得到對應(yīng)的變量標識,在變量導(dǎo)出請求中也可以直接包含該變量標識;
S402:將得到的變量標識為索引在變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容;
S403:根據(jù)得到的變量類型從所述轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的導(dǎo)出轉(zhuǎn)換函數(shù);應(yīng)當理解的是,該導(dǎo)出轉(zhuǎn)換函數(shù)進行的轉(zhuǎn)換與設(shè)置該全局變量時使用的設(shè)置轉(zhuǎn)換函數(shù)所做的轉(zhuǎn)換相反;
S404:調(diào)用匹配到的導(dǎo)出轉(zhuǎn)換函數(shù)將變量內(nèi)容由目標格式轉(zhuǎn)換為變量類型對應(yīng)的原格式后,調(diào)用預(yù)設(shè)變量輸出接口將得到的變量內(nèi)容輸出。本實施例中對于各全局變量的獲取都統(tǒng)一使用該變量輸出接口進行輸出。
對應(yīng)第一實施例的設(shè)置全局變量時示例的目標格式,本實施例仍以目標格式包含字符串和字節(jié)串兩種格式,對全局變量的具體獲取過程進行示例說明。參見圖5所示,包括:
S501:根據(jù)變量導(dǎo)出請求獲取請求導(dǎo)出的全局變量的變量標識和變量類型;
S502:以得到的變量標識作為索引在變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容;
S503:判斷變量類型包含的類型種數(shù)是否小于等于N值,如是,轉(zhuǎn)至S504,否則,轉(zhuǎn)至S505;
S504:從轉(zhuǎn)換函數(shù)庫中調(diào)用與變量類型匹配的字符串導(dǎo)出轉(zhuǎn)換函數(shù),將變量內(nèi)容由字符串格式轉(zhuǎn)換為變量類型對應(yīng)的原格式,這部分主要針對內(nèi)置全局變量的情況。
S505:從轉(zhuǎn)換函數(shù)庫中調(diào)用字節(jié)串導(dǎo)出轉(zhuǎn)換函數(shù),將變量內(nèi)容由字節(jié)串格式轉(zhuǎn)換為變量類型對應(yīng)的原格式。這部分主要針對具有固定大小的自定義的結(jié)構(gòu)類型的全局變量的情況。
本實施例中,在對字節(jié)串和字符串進行轉(zhuǎn)換時,按照設(shè)置變量時的轉(zhuǎn)換順序依次轉(zhuǎn)換。調(diào)用變量輸出接口輸出轉(zhuǎn)換后的內(nèi)容也是依次輸出。
本實施例中,除了可以設(shè)置和獲取全局變量外,還可以對全局變量進行刪除更新。該過程參見圖6所示,包括:
S601:接收變量移除請求,獲取請求移除的全局變量的變量標識;
S602:根據(jù)獲取的變量標識在變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,調(diào)用變量移除接口將查找到的變量內(nèi)容刪除,當然,作為索引存儲的變量標識也就被一并刪除;
S603:將變量聲明頭文件中請求移除的全局變量的變量名和變量標識刪除。
應(yīng)當理解的是,上述S603可以在S601和S602的任意步驟之前或之后或同時執(zhí)行。
本實施例中,對于測試設(shè)備的上述變量設(shè)置接口、變量輸出接口以及變量移除接口的調(diào)用可以通過統(tǒng)一的接口進入執(zhí)行。
本實施例在第一實施例的基礎(chǔ)上,實現(xiàn)了全局變量的統(tǒng)一獲取以及刪除更新,使得在測試過程中,可以對對應(yīng)在終端測試的環(huán)境中所碰到的分硬件、軟件變量類型進行很好的揉合使用。統(tǒng)一了全局變量的獲取接口以及移除接口,同時支持各種語言(C/C++、VB、JAVA等)的所有內(nèi)置類型,也支持通過自行擴展支持自定義類型;同時使得使用變量時只需關(guān)注或包含自身所使用到類型,而無需額外包含其他的全局變量類型的定義。可以使在終端測試環(huán)境中各種全局變量的使用能集中管理,便于使用和修改,提高開發(fā)效率和代碼質(zhì)量。
第三實施例
參見圖7所示,該圖所示為本發(fā)明第三實施例提供的終端測試設(shè)備,包含終端測試裝置,該終端測試設(shè)備具有各種編譯器的功能,且具體可采用圖1所示的計算機硬件結(jié)構(gòu)。但應(yīng)當理解的是,本實施例中的終端測試設(shè)備并不限于是計算機,也可以其他任意能實現(xiàn)編譯、測試的設(shè)備。本實施例中的終端測試設(shè)備可以對無線終端(例如各種移動終端)或者其他有線通信類型終端或設(shè)備進行測試。
參見圖8所示,本實施例中的終端測試裝置包括:
變量設(shè)置模塊81,用于接收到設(shè)置變量請求時,獲取請求設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容,根據(jù)變量類型從轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的設(shè)置轉(zhuǎn)換函數(shù),通過設(shè)置轉(zhuǎn)換函數(shù)將變量內(nèi)容轉(zhuǎn)換成預(yù)設(shè)的目標格式后,調(diào)用預(yù)設(shè)變量設(shè)置接口,將轉(zhuǎn)換后的變量內(nèi)容以變量標識為索引存儲到變量數(shù)據(jù)庫中;
變量清單管理模塊82,用于接收設(shè)置的全局變量的變量名和變量標識并寫入變量聲明頭文件中,變量聲明頭文件中各全局變量的變量名和變量標識各不相同,也即本實施例中的各全局變量在聲明文件中的變量名和變量標識一一對應(yīng)。本實施例中的變量名可以攜帶變量類型,也可以不攜帶。且本實施例中的變量名中可以體現(xiàn)全局變量的用途,以便于后續(xù)維護、查詢或調(diào)用。在本實施例中的變量聲明頭文件中,不允許出現(xiàn)相同的變量名或變量標識。
本實施例中各全局變量的變量標識只要可以唯一識別各全局變量即可,對于各變量標識的具體值可以自定義,也可以按照終端測試設(shè)備給出的一些既定規(guī)則(例如依次遞增規(guī)則)按序設(shè)置。
在終端測試環(huán)境所具有的變量類型與純軟件所面對的變量類型相比,會多出用于硬件控制的硬件全局變量。在本實施例中,不管是硬件全局變量,還是軟件全局變量,變量清單管理模塊82在聲明文件中全部按照上述規(guī)則進行統(tǒng)一的抽象和歸類,實現(xiàn)統(tǒng)一管理,提升管理效率以及提升資源利用效率。基于上述抽象和分類,測試設(shè)備在運行測試工具軟件時,就可以根據(jù)實際測試需求揉合各種的硬件設(shè)備變量類型和軟件變量類型,協(xié)調(diào)進行相互通訊和調(diào)用,實現(xiàn)對應(yīng)功能的測試。
本實施例中設(shè)置的全局變量可以是各種內(nèi)置類型,例如C#語言、C/C++語言、VB語言、JAVA語言等語言的內(nèi)置類型,也可以是測試人員或編譯人員自定義類型。轉(zhuǎn)換函數(shù)庫中的設(shè)置轉(zhuǎn)換函數(shù)可以預(yù)先設(shè)置好,也可以在使用過程中動態(tài)添加更新。設(shè)置轉(zhuǎn)換函數(shù)的作用是將對應(yīng)的變量內(nèi)容統(tǒng)一轉(zhuǎn)換為預(yù)設(shè)的目標格式,以便后續(xù)統(tǒng)一存儲、管理。應(yīng)當理解的得是,本實施例中偏特化處理的設(shè)置轉(zhuǎn)換函數(shù)的設(shè)置,可以是一個轉(zhuǎn)換函數(shù)對應(yīng)一種變量類型,也可以是一個轉(zhuǎn)換函數(shù)對應(yīng)多種變量類型。
另外,應(yīng)當理解的是,本實施例中的目標格式可以僅包含一種格式,也可以根據(jù)具體應(yīng)用場景需求等因素靈活設(shè)置為包含多種格式。例如,本實施例中的目標格式可以包含字符串和字節(jié)串(也即二進制碼)。其中字符串主要是針對全局變量結(jié)構(gòu)中包含的類型種數(shù)較少的全局變量,這部分全局變量一般是內(nèi)置全局變量。而字節(jié)串主要是針對全局變量結(jié)構(gòu)中包含的類型種數(shù)較多的全局變量,這部分全局變量一般那些有固定大小的自定義的結(jié)構(gòu)類型的全局變量。當然,應(yīng)當理解的是,除了上述示例的兩種目標格式外,本實施例中的目標格式的數(shù)量還可以根據(jù)實際需求進行靈活增加、刪減,目標格式的類型也可以靈活的替換。下面以目標格式包括字符串和字節(jié)串為示例,對所述變量設(shè)置的轉(zhuǎn)換過程進行示例說明。
參見圖9所示,變量設(shè)置模塊81包括:
設(shè)置信息獲取單元811,用于設(shè)置變量請求時,獲取請求設(shè)置的全局變量的變量標識、變量類型以及變量內(nèi)容;
設(shè)置類型判斷單元812,用于判斷獲取的變量類型包含的類型種數(shù)是否小于等于預(yù)設(shè)N值,N大于等于1;本實施例中設(shè)置N等于2。
設(shè)置轉(zhuǎn)換控制單元813,用于在設(shè)置類型判斷單元812的判斷結(jié)果為是時,從轉(zhuǎn)換函數(shù)庫中調(diào)用與變量類型匹配的字符串設(shè)置轉(zhuǎn)換函數(shù),將變量內(nèi)容轉(zhuǎn)換成字符串;否則,從轉(zhuǎn)換函數(shù)庫中調(diào)用字節(jié)串設(shè)置轉(zhuǎn)換函數(shù),將變量內(nèi)容轉(zhuǎn)換成字節(jié)串。
對于轉(zhuǎn)換后得到的字符串變量內(nèi)容或字節(jié)串變量內(nèi)容,通過變量設(shè)置接口調(diào)用相應(yīng)的字符保存容器或字節(jié)保存容器進行存儲,且將變量標識作為索引,以便以后續(xù)調(diào)用或更新。在存儲時,對于轉(zhuǎn)換得到的字符串和字節(jié)串,都嚴格按照轉(zhuǎn)換時的順序依次存儲。
參見圖10所示,本實施例中的終端測試裝置還包括:
變量導(dǎo)出模塊83,用于接收到變量導(dǎo)出請求時,獲取請求導(dǎo)出的全局變量的變量標識和變量類型,將變量標識作為索引在所述變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,并根據(jù)變量類型從轉(zhuǎn)換函數(shù)庫中匹配出對應(yīng)的導(dǎo)出轉(zhuǎn)換函數(shù)(應(yīng)當理解的是,該導(dǎo)出轉(zhuǎn)換函數(shù)進行的轉(zhuǎn)換與設(shè)置該全局變量時使用的設(shè)置轉(zhuǎn)換函數(shù)所做的轉(zhuǎn)換相反),調(diào)用導(dǎo)出轉(zhuǎn)換函數(shù)將變量內(nèi)容由所述目標格式轉(zhuǎn)換為變量類型對應(yīng)的原格式后,調(diào)用預(yù)設(shè)變量輸出接口將得到的變量內(nèi)容輸出。
具體的,參見圖11所示,變量導(dǎo)出模塊83包括:
導(dǎo)出信息獲取單元831,用于根據(jù)變量導(dǎo)出請求獲取請求導(dǎo)出的全局變量的變量標識和變量類型;
查找單元832,用于將變量標識作為索引在變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容;
導(dǎo)出類型判斷單元833,用于判斷變量類型包含的類型種數(shù)是否小于等于所述N值;
導(dǎo)出轉(zhuǎn)換控制單元834,用于在導(dǎo)出類型判斷單元833判斷結(jié)果為是時,從轉(zhuǎn)換函數(shù)庫中調(diào)用與變量類型匹配的字符串導(dǎo)出轉(zhuǎn)換函數(shù),將變量內(nèi)容由字符串格式轉(zhuǎn)換為變量類型對應(yīng)的原格式;否則,從轉(zhuǎn)換函數(shù)庫中調(diào)用字節(jié)串導(dǎo)出轉(zhuǎn)換函數(shù),將變量內(nèi)容由字節(jié)串格式轉(zhuǎn)換為變量類型對應(yīng)的原格式。本實施例中,在對字節(jié)串和字符串進行轉(zhuǎn)換時,按照設(shè)置變量時的轉(zhuǎn)換順序依次轉(zhuǎn)換。調(diào)用變量輸出接口輸出轉(zhuǎn)換后的內(nèi)容也是依次輸出。
本實施例中,除了可以設(shè)置和獲取全局變量外,還可以對全局變量進行刪除更新。參見圖12所示,本實施例中的終端測試裝置還包括:
變量移除模塊84,用于接收到變量移除請求時,獲取請求移除的全局變量的變量標識,根據(jù)變量標識在變量數(shù)據(jù)庫中查找對應(yīng)的變量內(nèi)容,將查找到的變量內(nèi)容刪除,當然,作為索引存儲的變量標識也就被一并刪除;
變量清單管理模塊82還用于將變量聲明頭文件中待移除的全局變量的變量名和變量標識刪除。
本實施例中,對于測試設(shè)備的上述變量設(shè)置接口、變量輸出接口以及變量移除接口的調(diào)用可以通過統(tǒng)一的接口進入執(zhí)行。且應(yīng)當理解的是,本實施例中的變量設(shè)置模塊81、變量清單管理模塊82、變量導(dǎo)出模塊83以及變量移除模塊84的功能可以由終端測試設(shè)備內(nèi)的處理器實現(xiàn),各模塊可以構(gòu)造于處理器內(nèi),也可以單獨的構(gòu)造于處理器之外。
本實施例提供的終端測試裝置可以對在終端測試的環(huán)境中所碰到的分硬件、軟件變量類型,進行統(tǒng)一的抽象和歸類,并統(tǒng)一了全局變量的設(shè)置接口,獲取接口以及移除接口,使用語言特性強制開發(fā)者添加刪減全局變量的聲明定義在一個相同地方(相同文件);同時支持各種語言(C/C++、VB、JAVA等)的所有內(nèi)置類型,也支持開發(fā)者通過自行擴展支持自定義類型。使用變量時只需關(guān)注或包含自身所使用到類型,而無需額外包含其他的全局變量類型的定義,可以使在終端測試環(huán)境中各種全局變量的使用能集中管理,便于使用和修改,提高開發(fā)效率和代碼質(zhì)量。
第四實施例
為了更好的理解本發(fā)明,下面以終端測試設(shè)備使用C/C++語言,對無線終端進行測試過程的全局變量的管理過程這一具體應(yīng)用場景為示例,對本發(fā)明做進一步示例說明。
本實施例所涉及的內(nèi)容主要包括:無線終端測試環(huán)境所具有的變量類型,即硬件全局變量和軟件全局變量,無線終端測試的全局變量聲明,無線終端測試的全局變量訪問接口(包含設(shè)置、獲取以及移除)類定義,無線終端測試的接口內(nèi)部的實際全局變量值(全局變量內(nèi)容轉(zhuǎn)換前的內(nèi)容)與保存值(全局變量內(nèi)容轉(zhuǎn)換后的內(nèi)容)的轉(zhuǎn)換(通過設(shè)置轉(zhuǎn)換函數(shù)以及對應(yīng)的導(dǎo)出轉(zhuǎn)換函數(shù)實現(xiàn))。
對于無線終端測試環(huán)境所具有的變量類型與全局變量聲明。無線終端測試環(huán)境所具有的變量類型與純軟件所面對的變量類型相比,其會多出許多無線終端測試相關(guān)的硬件設(shè)備類型,如測試儀器,連接卡,無線終端,輔助測試電子設(shè)備等。無線終端測試工具軟件,需要揉合各種的硬件全局變量類型和軟全局變量類型,協(xié)調(diào)進行相互通訊和調(diào)用。另外,傳統(tǒng)的C/C++代碼實現(xiàn)是在某個.h頭文件中進行變量的聲明,然后在某個.cpp文件中進行定義實現(xiàn)。而本實施例全局變量聲明方法做了改進。具體方法是在一個獨立的頭文件中,定義一個全局變量的枚舉類型,當需要一個,就添加一個,在這里全局變量的聲明可以無需關(guān)注變量的實際類型。將硬件全局變量和軟件全局變量進行統(tǒng)一的抽象和歸類。例如,對于每一全局變量在聲明文件中的定義包括:<前綴>+<實際類型(可選,如整型INT,字符串STR,指針PTR等)>+<變量用途>+變量標識,其中前綴+實際類型+變量用途可以組成變量名。如下面的聲明示例,“=”左邊為變量名,右邊為變量標識。
無線終端測試的全局變量訪問接口類定義。本實施例一基于運行于同一進程的內(nèi)部的全局變量管理來進行說明。全局變量訪問接口類定義如下,即GetVarsString(變量輸出接口,用于獲取變量所對應(yīng)的字符串或字節(jié)傳值),SetVarsString(變量設(shè)置接口,用于設(shè)置變量所對應(yīng)的字符串或字節(jié)串值)和RemoveVar(變量移除接口,用于在接口內(nèi)部移除變量),本實施例中的上述接口定義為純虛函數(shù)類。
對于轉(zhuǎn)換函數(shù),都是自定義的模板函數(shù)或是模板特化(偏特化)函數(shù)(模板函數(shù)和模板函數(shù)特化是C++模板編程中的術(shù)語,表示對所有類型或某一特定類型的值特定函數(shù)處理)。模板函數(shù)是開發(fā)者根據(jù)當前開發(fā)編譯環(huán)境,全局變量所涉及到數(shù)值類型進行自定義處理的。模板函數(shù)通過對特定類型轉(zhuǎn)換后,調(diào)用基礎(chǔ)接口進行值的保存或讀出。
設(shè)置轉(zhuǎn)換函數(shù)將全局變量由原格式轉(zhuǎn)換為字符串格式或字節(jié)串格式的原理如下:
對于內(nèi)置類型全局變量,由于其結(jié)構(gòu)體包含的類型種數(shù)一般很少,這類全局變量的數(shù)值(內(nèi)容)都是可以用字符串來表示和保存。因為整型和浮點數(shù)可以,做格式化輸出就可以了,而對應(yīng)個設(shè)備儀器的操作指針,芯片平臺的基礎(chǔ)庫的操作對象接口或測試終端的端口操作指針等全局變量,其本質(zhì)也就是一個整型數(shù)。所以設(shè)置對應(yīng)的特化模板函數(shù)也即轉(zhuǎn)換函數(shù)(包括設(shè)置方向的轉(zhuǎn)換和導(dǎo)出方向的轉(zhuǎn)換)即可實現(xiàn)上述工作。而基礎(chǔ)接口內(nèi)部實現(xiàn),是使用一個保存字符的容器來保存變量。例如m_GlobalVars是一個C++的STL類型容器map,其以上面定義變量枚舉名對應(yīng)的變量標識來做索引。
針對這類全局變量,基于上述函數(shù)定義進行全局變量的設(shè)置和獲取的過程,以使示例的程序代碼如下:
應(yīng)當理解的是,上述程序代碼中所示的幾個具體的導(dǎo)出轉(zhuǎn)換函數(shù)以及設(shè)置轉(zhuǎn)換函數(shù)都僅僅是一種便于理解的示例,本實施例中的轉(zhuǎn)換函數(shù)遠不限于上述示例的幾種。
存儲時,以m_GlobalVars作為C++的STL類型容器map進行存儲時,其以上面定義變量枚舉名對應(yīng)的變量標識來做索引:
結(jié)合上述基礎(chǔ)接口的實現(xiàn)為:
導(dǎo)出時,可以利用導(dǎo)出函數(shù)GetInst接口,返回是一個單體(或叫單件,C++術(shù)語),如下:
本實施例其內(nèi)部通過靜態(tài)變量的技術(shù)來實現(xiàn)一個進程內(nèi)只存一個全局的接口類實體,保證全局變量的唯一性。另外兩個基礎(chǔ)接口實現(xiàn)如下:
對于那些有固定大小的自定義的結(jié)構(gòu)類型的全局變量,這類變量結(jié)構(gòu)體中包含的類型種數(shù)一般比較多,因此可以則可以通過另外的接口(也即另外的轉(zhuǎn)換函數(shù)),保存到map_BytesContainer,其原理是將這類全局變量的結(jié)構(gòu)按照順序的字節(jié)串行地保存到C++的STL容器:vector<BYTE>容器中,然后再將這個vector容器保存到最終的大容器:map_BytesContainer中。讀取時則根據(jù)名字先從map_BytesContainer容器中將對應(yīng)的vector<BYTE>子容器中的所有BYTE全部讀取,再根據(jù)結(jié)構(gòu)大小直接通過內(nèi)存拷貝到對應(yīng)結(jié)構(gòu)類型的變量的首地址即可,其一種示例的實現(xiàn)代碼片段如下:
設(shè)置過程(也即保存過程):
獲取過程(也即讀取過程):
這個全局變量管理接口,可以DLL導(dǎo)出接口形式來實現(xiàn),如下:
基于上述方案,對于進程內(nèi)的其他模塊,簡單如下基本即可實現(xiàn)全局變量的設(shè)置和獲取(也即讀值):
本發(fā)明實施例提供的全局變量管理方案可以對無線終端測試環(huán)境中各開發(fā)子工程里面(執(zhí)行時為同一進程)使用到的全局變量進行統(tǒng)一的管理,無需在各模塊中各自聲明,定義。使全局變量代碼清晰,便于維護。同時,自定義的接口偏特化的方法使接口可以適應(yīng)各種變量類型,使用便捷。也即本發(fā)明可以有效提高無線終端測試環(huán)境中對全局變量的使用的便捷性,減少全局變量重復(fù)定義或隱藏定義,并可以做統(tǒng)一的訪問控制,減少代碼冗余,提高代碼的健壯性,實現(xiàn)對無線終端測試環(huán)境中軟件和硬件各全局變量的無縫揉合,協(xié)調(diào)提高對軟硬件的相互通訊和調(diào)用,提高無線終端測試工具的開發(fā)速度和實際的執(zhí)行效率。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
上面結(jié)合附圖對本發(fā)明的實施例進行了描述,但是本發(fā)明并不局限于上述的具體實施方式,上述的具體實施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護之內(nèi)。