網(wǎng)絡(luò)類(lèi)型的模擬方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)一種網(wǎng)絡(luò)類(lèi)型的模擬方法及裝置,本發(fā)明實(shí)施例接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì)象;讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令映射的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng)的第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作;相較于現(xiàn)有技術(shù)中,尋找測(cè)試所需的實(shí)際物理網(wǎng)絡(luò)類(lèi)型的測(cè)試環(huán)境,本發(fā)明實(shí)施例具有通過(guò)軟件模擬測(cè)試環(huán)境所需的不同的網(wǎng)絡(luò)類(lèi)型的有益效果,且網(wǎng)絡(luò)類(lèi)型切換方便,同時(shí)節(jié)約了配置實(shí)際測(cè)試所需的不同物理網(wǎng)絡(luò)類(lèi)型的成本。
【專(zhuān)利說(shuō)明】網(wǎng)絡(luò)類(lèi)型的模擬方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)類(lèi)型的模擬方法及裝置。
【背景技術(shù)】
[0002] 在與網(wǎng)絡(luò)類(lèi)型相關(guān)的智能終端的測(cè)試中,需要覆蓋各類(lèi)不同的網(wǎng)絡(luò)類(lèi)型比如WiFi (Wireless Fidelity,無(wú)線局域網(wǎng))、3G (The3rd Generation Telecommunication,第 3 代 移動(dòng)通信技術(shù))、Edge (Enhanced Data Rates for GSM Evolution,改進(jìn)數(shù)據(jù)率 GSM 服務(wù))、 WAP (Wireless Application Protocol,無(wú)線應(yīng)用協(xié)議)等,現(xiàn)有的測(cè)試方案通常是基于實(shí) 際的物理終端實(shí)體比如手機(jī)和對(duì)應(yīng)的手機(jī)卡在真實(shí)的物理環(huán)境下進(jìn)行測(cè)試。
[0003] 目前這種基于實(shí)際的物理終端實(shí)體來(lái)覆蓋各種網(wǎng)絡(luò)類(lèi)型的測(cè)試方案,在實(shí)際測(cè)試 時(shí)一些網(wǎng)絡(luò)場(chǎng)景很難自由切換和覆蓋到,比如從3G模式變更到Edge模式時(shí),需要尋找到3G 信號(hào)較弱的場(chǎng)所,這給測(cè)試帶來(lái)了不必要的麻煩;且尋找到測(cè)試環(huán)境通常也不能很好地滿 足實(shí)際的測(cè)試需求。
【發(fā)明內(nèi)容】
[0004] 鑒于以上內(nèi)容,有必要提供一種網(wǎng)絡(luò)類(lèi)型的模擬方法及裝置,使得能夠通過(guò)軟件 測(cè)試平臺(tái)來(lái)模擬測(cè)試環(huán)境所需的不同的網(wǎng)絡(luò)類(lèi)型。
[0005] 本發(fā)明實(shí)施例公開(kāi)了一種網(wǎng)絡(luò)類(lèi)型的模擬方法,包括以下步驟:
[0006] 接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì)象;所述切 換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)所處的第一網(wǎng)絡(luò)類(lèi)型切 換至所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令指向的第二網(wǎng)絡(luò)類(lèi)型;
[0007] 讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì) 應(yīng)的所述第二網(wǎng)絡(luò)類(lèi)型;
[0008] 觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛 擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作。
[0009] 本發(fā)明實(shí)施例還公開(kāi)了一種網(wǎng)絡(luò)類(lèi)型的模擬裝置,包括:
[0010] 變更通知模塊,用于接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息 至被測(cè)對(duì)象;所述切換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)所 處的第一網(wǎng)絡(luò)類(lèi)型切換至所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令指向的第二網(wǎng)絡(luò)類(lèi)型;
[0011] 虛擬切換模塊,用于讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件,獲取 所述網(wǎng)絡(luò)配置文件對(duì)應(yīng)的所述第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi)型 切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的 所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作。
[0012] 本發(fā)明實(shí)施例接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè) 對(duì)象;讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令映射的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng) 的第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng) 的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操 作;相較于現(xiàn)有技術(shù)中,尋找測(cè)試所需的實(shí)際物理網(wǎng)絡(luò)類(lèi)型的測(cè)試環(huán)境,本發(fā)明實(shí)施例具有 通過(guò)軟件模擬測(cè)試環(huán)境所需的不同的網(wǎng)絡(luò)類(lèi)型的有益效果,且網(wǎng)絡(luò)類(lèi)型切換方便,同時(shí)節(jié) 約了配置實(shí)際測(cè)試所需的不同物理網(wǎng)絡(luò)類(lèi)型的成本。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0013] 圖1是本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬方法第一實(shí)施例流程示意圖;
[0014] 圖2是本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬方法第二實(shí)施例流程示意圖;
[0015] 圖3是本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬裝置第一實(shí)施例功能模塊示意圖;
[0016] 圖4是本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬裝置第二實(shí)施例功能模塊示意圖;
[0017] 圖5是本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬裝置在android操作系統(tǒng)中運(yùn)行時(shí)的系統(tǒng)構(gòu)示意 圖;
[0018] 圖6是本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬裝置一實(shí)施例硬件架構(gòu)示意圖。
[0019] 本發(fā)明實(shí)施例目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō) 明。
【具體實(shí)施方式】
[0020] 以下結(jié)合說(shuō)明書(shū)附圖及具體實(shí)施例進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。應(yīng)當(dāng)理解,此 處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0021] 本發(fā)明提供了一種網(wǎng)絡(luò)類(lèi)型的模擬方法第一實(shí)施例;如圖1所示,本發(fā)明網(wǎng)絡(luò)類(lèi) 型的模擬方法包括以下步驟:
[0022] 步驟S11、接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì) 象;
[0023] 當(dāng)測(cè)試人員手動(dòng)觸發(fā)終端的網(wǎng)絡(luò)類(lèi)型變更時(shí),比如將Wifi網(wǎng)絡(luò)更改為3G網(wǎng)絡(luò)時(shí), 終端接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,主動(dòng)發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至各個(gè)被測(cè)對(duì)象;上 述切換網(wǎng)絡(luò)類(lèi)型的通知信息只能由終端發(fā)出,終端上各應(yīng)用類(lèi)軟件均沒(méi)有權(quán)限發(fā)出上述通 知信息,若應(yīng)用類(lèi)軟件強(qiáng)行發(fā)送則會(huì)導(dǎo)致該應(yīng)用軟件運(yùn)行失敗。在一具體的應(yīng)用場(chǎng)景中,t匕 如針對(duì)android操作系統(tǒng)的終端,當(dāng)測(cè)試人員通過(guò)修改網(wǎng)絡(luò)類(lèi)型配置文件觸發(fā)網(wǎng)絡(luò)類(lèi)型虛 擬變更指令時(shí),插樁腳本會(huì)主動(dòng)發(fā)送com. tencent. scream, intents. fake_nettype的通知 信息至各個(gè)被測(cè)對(duì)象。
[0024] 本實(shí)施例中,定義終端接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)被測(cè)對(duì)象所認(rèn)為的當(dāng)前 所使用的網(wǎng)絡(luò)類(lèi)型為第一網(wǎng)絡(luò)類(lèi)型,所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令所指向的網(wǎng)絡(luò)類(lèi)型為第二 網(wǎng)絡(luò)類(lèi)型;其中,上述被測(cè)對(duì)象所認(rèn)為的當(dāng)前所使用的網(wǎng)絡(luò)類(lèi)型包括:被測(cè)對(duì)象所使用的 實(shí)際物理網(wǎng)絡(luò)類(lèi)型以及模擬網(wǎng)絡(luò)類(lèi)型。所述切換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng) 絡(luò)類(lèi)型虛擬變更指令時(shí)被測(cè)對(duì)象所處的網(wǎng)絡(luò)類(lèi)型即第一網(wǎng)絡(luò)類(lèi)型切換至該網(wǎng)絡(luò)類(lèi)型虛擬 變更指令所指向的網(wǎng)絡(luò)類(lèi)型即第二網(wǎng)絡(luò)類(lèi)型。
[0025] 步驟S12、讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配 置文件對(duì)應(yīng)的所述第二網(wǎng)絡(luò)類(lèi)型;
[0026] 本實(shí)施例中,上述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件中存儲(chǔ)了測(cè)試人員 所期望的網(wǎng)絡(luò)類(lèi)型參數(shù),比如Wifi、3G、Edge等;且在實(shí)際操作中,若需要模擬切換網(wǎng)絡(luò)類(lèi) 型,只需修改該網(wǎng)絡(luò)配置文件即可;因此,通過(guò)讀取該網(wǎng)絡(luò)配置文件,便可獲取到該網(wǎng)絡(luò)配 置文件對(duì)應(yīng)的第二網(wǎng)絡(luò)類(lèi)型。
[0027] 步驟S13、觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型 對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì) 應(yīng)操作。
[0028] 獲取到所需切換的第二網(wǎng)絡(luò)類(lèi)型后,終端觸發(fā)被測(cè)對(duì)象執(zhí)行將第一網(wǎng)絡(luò)類(lèi)型切換 至第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件;被測(cè)對(duì)象執(zhí)行上述第一網(wǎng)絡(luò)類(lèi)型切換至第二網(wǎng) 絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,比如,被測(cè)對(duì)象將某一應(yīng)用模式由第一網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的 模式一切換至第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的模式二,并基于虛擬切換后的第二網(wǎng)絡(luò)類(lèi)型執(zhí)行用戶觸 發(fā)的其他操作事件。比如,測(cè)試人員需要測(cè)試上述被測(cè)對(duì)象中的瀏覽器在3G網(wǎng)絡(luò)下的運(yùn)行 情況,并在模擬切換后的3G網(wǎng)絡(luò)下打開(kāi)瀏覽器;則瀏覽器響應(yīng)用戶觸發(fā)的打開(kāi)這一操作事 件,并基于3G網(wǎng)絡(luò),瀏覽器加載開(kāi)啟后默認(rèn)的網(wǎng)頁(yè)頁(yè)面。
[0029] 本發(fā)明實(shí)施例接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè) 對(duì)象;讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令映射的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng) 的第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng) 的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操 作;相較于現(xiàn)有技術(shù)中,尋找測(cè)試所需的實(shí)際物理網(wǎng)絡(luò)類(lèi)型的測(cè)試環(huán)境,本發(fā)明實(shí)施例具有 通過(guò)軟件模擬測(cè)試環(huán)境所需的不同的網(wǎng)絡(luò)類(lèi)型的有益效果,且網(wǎng)絡(luò)類(lèi)型切換方便,同時(shí)節(jié) 約了配置實(shí)際測(cè)試所需的不同物理網(wǎng)絡(luò)類(lèi)型的成本。
[0030] 本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)類(lèi)型的模擬方法第二實(shí)施例;本實(shí)施例與圖1所 述實(shí)施例的區(qū)別是,本發(fā)明實(shí)施例描述的是,在運(yùn)行被測(cè)對(duì)象之前,編譯被測(cè)應(yīng)用程序,得 到上述被測(cè)對(duì)象。
[0031] 基于圖1所述實(shí)施例的描述,如圖2所示,本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬方法在步驟S11、 接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì)象,之前還包括:
[0032] 步驟S01、編譯被測(cè)應(yīng)用程序,得到編譯后的被測(cè)對(duì)象;
[0033] 編譯被測(cè)應(yīng)用程序的過(guò)程主要是完成對(duì)被測(cè)應(yīng)用程序的編譯插樁;由于并非所有 的被測(cè)應(yīng)用程序均能夠支持本發(fā)明實(shí)施例所描述的網(wǎng)絡(luò)類(lèi)型的模擬方法,因此,需要對(duì)被 測(cè)應(yīng)用程序進(jìn)行篩選和過(guò)濾,找出能夠支持網(wǎng)絡(luò)類(lèi)型的模擬方法并符合條件的被測(cè)應(yīng)用程 序;比如,通過(guò)一定的過(guò)濾規(guī)則,在指定系統(tǒng)API被調(diào)用處插入插樁腳本,并對(duì)插入插樁腳 本后的被測(cè)應(yīng)用程序進(jìn)行編譯,得到編譯后的被測(cè)對(duì)象。以android操作系統(tǒng)為例,本實(shí)施 例中,編譯后的被測(cè)對(duì)象可以理解為Android上被測(cè)應(yīng)用程序被編譯成的java class這類(lèi) 中間文件;若編譯后的被測(cè)對(duì)象不是class文件,則可以將其轉(zhuǎn)換為class文件;比如,如 果是源碼可以用javac進(jìn)行編譯;如果是android的apk包,也可以將apk轉(zhuǎn)換為class文 件。
[0034] 在本發(fā)明一優(yōu)選實(shí)施例中,終端實(shí)時(shí)監(jiān)控被測(cè)應(yīng)用程序的操作事件;當(dāng)監(jiān)控到被 測(cè)應(yīng)用程序訪問(wèn)預(yù)設(shè)類(lèi)型應(yīng)用程序接口的訪問(wèn)事件,加載虛擬變更網(wǎng)絡(luò)類(lèi)型的插樁腳本, 生成插樁后的被測(cè)對(duì)象。比如,對(duì)于android操作系統(tǒng),可以通過(guò)編寫(xiě)插樁規(guī)則,基于Α0Ρ (Aspect Oriented Programming,面向切面編程)技術(shù)比如利用AspectJ (面向方面編程) 工具對(duì)被測(cè)應(yīng)用程序訪問(wèn)特定的API (Application Programming Interface,應(yīng)用程序接 口)代碼進(jìn)行截獲,插入插樁腳本進(jìn)而生成插樁后的被測(cè)對(duì)象;上述特定的API可以理解為 查詢網(wǎng)絡(luò)類(lèi)型API ;在android操作系統(tǒng)中,查詢網(wǎng)絡(luò)類(lèi)型API主要有:
[0035] android, net. Networklnfo. getTypeO > android, net. Networklnfo. getSubTypeO 和 android, net. Networklnfo. getExtralnfoO 等?;趫D 1 所述實(shí)施例的 描述,當(dāng)插樁腳本在上述這類(lèi)API被調(diào)用執(zhí)行時(shí),不是返回系統(tǒng)API的執(zhí)行結(jié)果,而是返回 從網(wǎng)絡(luò)配置文件中讀取的內(nèi)容,返回執(zhí)行的網(wǎng)絡(luò)類(lèi)型,而不是終端當(dāng)前使用的真實(shí)的物理 網(wǎng)絡(luò)類(lèi)型,從而達(dá)到模擬網(wǎng)絡(luò)類(lèi)型的目的。
[0036] 步驟S02、定義虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件,注冊(cè)被測(cè)對(duì)象, 使已注冊(cè)的被測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變 更事件。
[0037] 終端基于上述插樁腳本,自定義一個(gè)虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事 件,同時(shí)注冊(cè)被測(cè)對(duì)象;所述注冊(cè)被測(cè)對(duì)象可以理解為,通過(guò)對(duì)上述編譯后的被測(cè)對(duì)象進(jìn)行 注冊(cè),將虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件強(qiáng)加給被測(cè)對(duì)象,使得已注冊(cè)的 被測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變更事件。
[0038] 比如,對(duì)于android操作系統(tǒng)的終端,基于上述插樁腳本,終端自定義一個(gè)虛擬 切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,比如定義的該虛擬網(wǎng)絡(luò)變更事件com. tencent. scream, intents. fake_nettype,并將上述虛擬網(wǎng)絡(luò)變更事件強(qiáng)加給各個(gè)311(11'〇丨(1.1161:· conn. CONNECT!VITY_CHANGE事件接收者,即注冊(cè)后的被測(cè)對(duì)象;則在接收到網(wǎng)絡(luò)類(lèi)型 變更通知時(shí),廣播該虛擬網(wǎng)絡(luò)變更事件,從而觸發(fā)被測(cè)對(duì)象如各個(gè)android, net. conn. C0NNECTIVITY_CHANGE事件接收者處理函數(shù)onReceiveO,比如處理接收到的虛擬網(wǎng)絡(luò)變 更事件。
[0039] 本發(fā)明實(shí)施例中,可以采用靜態(tài)注冊(cè)方式和/或動(dòng)態(tài)注冊(cè)方式對(duì)接收所述虛擬網(wǎng) 絡(luò)變更事件的被測(cè)對(duì)象進(jìn)行注冊(cè)。
[0040] 對(duì)于采用靜態(tài)注冊(cè)方式注冊(cè)的被測(cè)對(duì)象,可以通過(guò)修改編譯前被測(cè)對(duì)象的配置文 件來(lái)追加一條過(guò)濾規(guī)則,從而完成對(duì)被測(cè)對(duì)象的靜態(tài)注冊(cè)。以android操作系統(tǒng)為例,可 以在編譯前被測(cè)對(duì)象的配置文件AndroidManifest. xml中顯示聲明android, net. conn. C0NNECTIVITY_CHANGE事件的接收者;比如修改該xml文件,追加一條過(guò)濾規(guī)如上述的com. tencent. scream, intents, fake-nettype。
[0041] 對(duì)于動(dòng)態(tài)注冊(cè)方式注冊(cè)的被測(cè)對(duì)象,根據(jù)預(yù)設(shè)過(guò)濾規(guī)則,獲取滿足上述過(guò)濾規(guī)則 的被測(cè)對(duì)象,比如過(guò)濾出對(duì)系統(tǒng)注冊(cè)函數(shù)進(jìn)行調(diào)用的被測(cè)對(duì)象;判斷過(guò)濾出的被測(cè)對(duì)象基 于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)所注冊(cè)的操作事件是否為所述虛擬網(wǎng)絡(luò)變更事件;若是所述虛 擬網(wǎng)絡(luò)變更事件,則對(duì)所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件。仍android操作系統(tǒng)為例, 首先過(guò)濾出對(duì)系統(tǒng)注冊(cè)函數(shù)registerReceiver ()函數(shù)進(jìn)行調(diào)用的被測(cè)對(duì)象,然后判斷過(guò) 濾出的被測(cè)對(duì)象基于調(diào)用的系統(tǒng)注冊(cè)函數(shù)registerReceiver ()所執(zhí)行的操作事件類(lèi)型是 否為虛擬網(wǎng)絡(luò)變更事件android, net. conn. C0NNECTIVITY_CHANGE,若上述操作事件的類(lèi)型 為虛擬網(wǎng)絡(luò)變更事件android, net. conn. C0NNECTIVITY_CHANGE,則追加注冊(cè)虛假消息事件 com. tencent. scream, intents. fake_nettype,完成對(duì)被測(cè)對(duì)象的注冊(cè)。
[0042] 本發(fā)明實(shí)施例通過(guò)對(duì)被測(cè)應(yīng)用程序進(jìn)行編譯和注冊(cè),得到注冊(cè)后的被測(cè)對(duì)象,使 得在上述被測(cè)對(duì)象在后續(xù)測(cè)試運(yùn)行時(shí)達(dá)到和真實(shí)網(wǎng)絡(luò)類(lèi)型切換相同的技術(shù)效果,節(jié)約了配 置真實(shí)網(wǎng)絡(luò)類(lèi)型切換所需的硬件成本。
[0043] 本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)類(lèi)型的模擬裝置第一實(shí)施例;如圖3所示,本發(fā) 明網(wǎng)絡(luò)類(lèi)型的模擬裝置包括:變更通知模塊01和虛擬切換模塊02。
[0044] 變更通知模塊01,用于接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信 息至被測(cè)對(duì)象;所述切換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí) 所處的第一網(wǎng)絡(luò)類(lèi)型切換至所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令指向的第二網(wǎng)絡(luò)類(lèi)型;
[0045] 當(dāng)測(cè)試人員手動(dòng)觸發(fā)終端的網(wǎng)絡(luò)類(lèi)型變更時(shí),比如將Wifi網(wǎng)絡(luò)更改為3G網(wǎng)絡(luò)時(shí), 終端的變更通知模塊01接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,主動(dòng)發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息 至各個(gè)被測(cè)對(duì)象;上述切換網(wǎng)絡(luò)類(lèi)型的通知信息只能由終端發(fā)出,終端上各應(yīng)用類(lèi)軟件均 沒(méi)有權(quán)限發(fā)出上述通知信息,若應(yīng)用類(lèi)軟件強(qiáng)行發(fā)送則會(huì)導(dǎo)致該應(yīng)用軟件運(yùn)行失敗。在一 具體的應(yīng)用場(chǎng)景中,比如針對(duì)android操作系統(tǒng)的終端,當(dāng)測(cè)試人員通過(guò)修改網(wǎng)絡(luò)類(lèi)型配 置文件觸發(fā)網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí),變更通知模塊01會(huì)主動(dòng)發(fā)送com. tencent. scream, intents. fake_nettype的通知信息至各個(gè)被測(cè)對(duì)象。
[0046] 本實(shí)施例中,定義終端接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)被測(cè)對(duì)象所認(rèn)為的當(dāng)前 所使用的網(wǎng)絡(luò)類(lèi)型為第一網(wǎng)絡(luò)類(lèi)型,所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令所指向的網(wǎng)絡(luò)類(lèi)型為第二 網(wǎng)絡(luò)類(lèi)型;其中,上述被測(cè)對(duì)象所認(rèn)為的當(dāng)前所使用的網(wǎng)絡(luò)類(lèi)型包括:被測(cè)對(duì)象所使用的 實(shí)際物理網(wǎng)絡(luò)類(lèi)型以及模擬網(wǎng)絡(luò)類(lèi)型。所述切換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng) 絡(luò)類(lèi)型虛擬變更指令時(shí)被測(cè)對(duì)象所處的網(wǎng)絡(luò)類(lèi)型即第一網(wǎng)絡(luò)類(lèi)型切換至該網(wǎng)絡(luò)類(lèi)型虛擬 變更指令所指向的網(wǎng)絡(luò)類(lèi)型即第二網(wǎng)絡(luò)類(lèi)型。
[0047] 虛擬切換模塊02,用于讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件,獲 取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng)的所述第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi) 型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后 的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作。
[0048] 本實(shí)施例中,上述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件中存儲(chǔ)了測(cè)試人員 所期望的網(wǎng)絡(luò)類(lèi)型參數(shù),比如Wifi、3G、Edge等;且在實(shí)際操作中,若需要模擬切換網(wǎng)絡(luò)類(lèi) 型,只需修改該網(wǎng)絡(luò)配置文件即可;因此,虛擬切換模塊02通過(guò)讀取該網(wǎng)絡(luò)配置文件,便可 獲取到該網(wǎng)絡(luò)配置文件對(duì)應(yīng)的第二網(wǎng)絡(luò)類(lèi)型。
[0049] 虛擬切換模塊02獲取到所需切換的第二網(wǎng)絡(luò)類(lèi)型后,虛擬切換模塊02觸發(fā)被測(cè) 對(duì)象執(zhí)行將第一網(wǎng)絡(luò)類(lèi)型切換至第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件;被測(cè)對(duì)象執(zhí)行上 述第一網(wǎng)絡(luò)類(lèi)型切換至第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,比如,被測(cè)對(duì)象將某一應(yīng) 用模式由第一網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的模式一切換至第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的模式二,并基于虛擬切換 后的第二網(wǎng)絡(luò)類(lèi)型執(zhí)行用戶觸發(fā)的其他操作事件。以被測(cè)對(duì)象是瀏覽器為例,比如,測(cè)試人 員需要測(cè)試上述被測(cè)對(duì)象中的瀏覽器在3G網(wǎng)絡(luò)下的運(yùn)行情況,并在模擬切換后的3G網(wǎng)絡(luò) 下打開(kāi)瀏覽器;則瀏覽器響應(yīng)用戶觸發(fā)的打開(kāi)這一操作事件,并基于3G網(wǎng)絡(luò),瀏覽器加載 開(kāi)啟后默認(rèn)的網(wǎng)頁(yè)頁(yè)面。
[0050] 本發(fā)明實(shí)施例接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè) 對(duì)象;讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令映射的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng) 的第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng) 的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操 作;相較于現(xiàn)有技術(shù)中,尋找測(cè)試所需的實(shí)際物理網(wǎng)絡(luò)類(lèi)型的測(cè)試環(huán)境,本發(fā)明實(shí)施例具有 通過(guò)軟件模擬測(cè)試環(huán)境所需的不同的網(wǎng)絡(luò)類(lèi)型的有益效果,且網(wǎng)絡(luò)類(lèi)型切換方便,同時(shí)節(jié) 約了配置實(shí)際測(cè)試所需的不同物理網(wǎng)絡(luò)類(lèi)型的成本。
[0051] 本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)類(lèi)型的模擬裝置第二實(shí)施例;本實(shí)施例與圖3所 述實(shí)施例的區(qū)別是,本發(fā)明實(shí)施例還包括編譯插樁模塊03,編譯插樁模塊03在運(yùn)行被測(cè)對(duì) 象之前,編譯被測(cè)應(yīng)用程序,得到上述被測(cè)對(duì)象。
[0052] 如圖4所示,本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬裝置還包括:
[0053] 編譯插樁模塊03,用于:編譯被測(cè)應(yīng)用程序,得到編譯后的被測(cè)對(duì)象;定義虛擬切 換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件,注冊(cè)被測(cè)對(duì)象,使已注冊(cè)的被測(cè)對(duì)象在接收到 切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變更事件。
[0054] 編譯插樁模塊03編譯被測(cè)應(yīng)用程序的過(guò)程主要是完成對(duì)被測(cè)應(yīng)用程序的編譯插 樁;由于并非所有的被測(cè)應(yīng)用程序均能夠支持本發(fā)明實(shí)施例所描述的網(wǎng)絡(luò)類(lèi)型的模擬方 法,因此,編譯插樁模塊03需要對(duì)被測(cè)應(yīng)用程序進(jìn)行篩選和過(guò)濾,找出能夠支持網(wǎng)絡(luò)類(lèi)型 的模擬方法并符合條件的被測(cè)應(yīng)用程序;比如,編譯插樁模塊03通過(guò)一定的過(guò)濾規(guī)則,在 指定系統(tǒng)API被調(diào)用處插入插樁腳本,并對(duì)插入插樁腳本后的被測(cè)應(yīng)用程序進(jìn)行編譯,得 到編譯后的被測(cè)對(duì)象;上述指定系統(tǒng)API可以理解為查詢網(wǎng)絡(luò)類(lèi)型API。以android操作 系統(tǒng)為例,本實(shí)施例中,編譯插樁模塊03編譯后的被測(cè)對(duì)象可以理解為Android上被測(cè)應(yīng) 用程序被編譯成的java class這類(lèi)中間文件;若編譯后的被測(cè)對(duì)象不是class文件,則編 譯插樁模塊03可以將其轉(zhuǎn)換為class文件;比如,如果是源碼可以用javac進(jìn)行編譯;如果 是android的apk包,編譯插樁模塊03也可以將apk轉(zhuǎn)換為class文件。
[0055] 在本發(fā)明一優(yōu)選實(shí)施例中,編譯插樁模塊03實(shí)時(shí)監(jiān)控被測(cè)應(yīng)用程序的操作事件; 當(dāng)監(jiān)控到被測(cè)應(yīng)用程序訪問(wèn)預(yù)設(shè)類(lèi)型應(yīng)用程序接口的訪問(wèn)事件,編譯插樁模塊03加載虛 擬變更網(wǎng)絡(luò)類(lèi)型的插樁腳本,生成插樁后的被測(cè)對(duì)象。比如,對(duì)于android操作系統(tǒng),編譯 插樁模塊03可以通過(guò)編寫(xiě)插樁規(guī)則,基于Α0Ρ技術(shù)比如利用AspectJ工具對(duì)被測(cè)應(yīng)用程序 訪問(wèn)特定的API代碼進(jìn)行截獲,插入插樁腳本進(jìn)而生成插樁后的被測(cè)對(duì)象;上述特定的API 可以理解為查詢網(wǎng)絡(luò)類(lèi)型API ;在android操作系統(tǒng)中,查詢網(wǎng)絡(luò)類(lèi)型API主要有:
[0056] android, net. Networklnfo. getTypeO > android, net. Networklnfo. getSubType ()和 android, net. Networklnfo. getExtralnfo ()等。基于圖 3 所述實(shí)施例的 描述,當(dāng)插樁腳本在上述這類(lèi)API被調(diào)用執(zhí)行時(shí),不是返回系統(tǒng)API的執(zhí)行結(jié)果,而是返回 從網(wǎng)絡(luò)配置文件中讀取的內(nèi)容,返回執(zhí)行的網(wǎng)絡(luò)類(lèi)型,而不是終端當(dāng)前使用的真實(shí)的物理 網(wǎng)絡(luò)類(lèi)型,從而達(dá)到模擬網(wǎng)絡(luò)類(lèi)型的目的。
[0057] 編譯插樁模塊03基于上述插樁腳本,自定義一個(gè)虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬 網(wǎng)絡(luò)變更事件,同時(shí)注冊(cè)被測(cè)對(duì)象;所述注冊(cè)被測(cè)對(duì)象可以理解為,通過(guò)對(duì)上述編譯后的被 測(cè)對(duì)象進(jìn)行注冊(cè),將虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件強(qiáng)加給被測(cè)對(duì)象,使 得已注冊(cè)的被測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變 更事件。
[0058] 比如,對(duì)于android操作系統(tǒng)的終端,基于上述插樁腳本,編譯插樁模塊03自 定義一個(gè)虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,比如定義的該虛擬網(wǎng)絡(luò)變更事件 com. tencent. scream, intents. fake_nettype,并將上述虛擬網(wǎng)絡(luò)變更事件強(qiáng)加給各個(gè) android, net. conn. CONNECTIVITY_CHANGE事件接收者,即注冊(cè)后的被測(cè)對(duì)象;則在接收 到網(wǎng)絡(luò)類(lèi)型變更通知時(shí),變更通知模塊01廣播該虛擬網(wǎng)絡(luò)變更事件,從而虛擬切換模塊 02觸發(fā)被測(cè)對(duì)象如各個(gè)android, net. conn. CONNECTIVITY_CHANGE事件接收者處理函數(shù) onReceive (),比如處理接收到的虛擬網(wǎng)絡(luò)變更事件。
[0059] 本發(fā)明實(shí)施例中,編譯插樁模塊03可以采用靜態(tài)注冊(cè)方式和/或動(dòng)態(tài)注冊(cè)方式對(duì) 接收所述虛擬網(wǎng)絡(luò)變更事件的被測(cè)對(duì)象進(jìn)行注冊(cè)。
[0060] 對(duì)于采用靜態(tài)注冊(cè)方式注冊(cè)的被測(cè)對(duì)象,編譯插樁模塊03可以通過(guò)修改編譯前 被測(cè)對(duì)象的配置文件來(lái)追加一條過(guò)濾規(guī)則,從而完成對(duì)被測(cè)對(duì)象的靜態(tài)注冊(cè)。以android 操作系統(tǒng)為例,可以在編譯前被測(cè)對(duì)象的配置文件AndroidManifest. xml中顯示聲明 android, net. conn. C0NNECTIVITY_CHANGE事件的接收者;比如修改該xml文件,追加一條 過(guò)濾規(guī)如上述的 com. tencent. scream, intents. fake_nettype〇
[0061] 對(duì)于動(dòng)態(tài)注冊(cè)方式注冊(cè)的被測(cè)對(duì)象,編譯插樁模塊03根據(jù)預(yù)設(shè)過(guò)濾規(guī)則,獲取 滿足上述過(guò)濾規(guī)則的被測(cè)對(duì)象,比如過(guò)濾出對(duì)系統(tǒng)注冊(cè)函數(shù)進(jìn)行調(diào)用的被測(cè)對(duì)象;判斷 過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)所注冊(cè)的操作事件是否為所述虛擬網(wǎng) 絡(luò)變更事件;若是所述虛擬網(wǎng)絡(luò)變更事件,編譯插樁模塊03則對(duì)所述被測(cè)對(duì)象追加注冊(cè) 虛假消息事件。仍android操作系統(tǒng)為例,編譯插樁模塊03首先過(guò)濾出對(duì)系統(tǒng)注冊(cè)函 數(shù)registerReceiver ()進(jìn)行調(diào)用的被測(cè)對(duì)象,判斷過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的系統(tǒng) 注冊(cè)函數(shù)registerReceiver ()所執(zhí)行的操作事件的事件類(lèi)型是否為虛擬網(wǎng)絡(luò)變更事 件android, net. conn. C0NNECTIVITY_CHANGE,若上述操作事件的類(lèi)型為虛擬網(wǎng)絡(luò)變更事 件 android, net. conn. C0NNECTIVITY_CHANGE,則追加注冊(cè)虛假消息事件 com. tencent. scream, intents. fake_nettype,完成對(duì)被測(cè)對(duì)象的注冊(cè)。
[0062] 本發(fā)明實(shí)施例通過(guò)對(duì)被測(cè)應(yīng)用程序進(jìn)行編譯和注冊(cè),得到注冊(cè)后的被測(cè)對(duì)象,使 得在上述被測(cè)對(duì)象在后續(xù)測(cè)試運(yùn)行時(shí)達(dá)到和真實(shí)網(wǎng)絡(luò)類(lèi)型切換相同的技術(shù)效果,節(jié)約了配 置真實(shí)網(wǎng)絡(luò)類(lèi)型切換所需的硬件成本。
[0063] 本發(fā)明實(shí)施例還提供了網(wǎng)絡(luò)類(lèi)型的模擬裝置對(duì)應(yīng)的系統(tǒng)架構(gòu)實(shí)施例;基于圖1、 圖2、圖3和圖4所述實(shí)施例的描述,請(qǐng)參照?qǐng)D5,圖5所述的系統(tǒng)架構(gòu)以android操作系統(tǒng) 為例進(jìn)行描述,該系統(tǒng)在運(yùn)行上述網(wǎng)絡(luò)類(lèi)型的模擬方法時(shí),主要分為兩個(gè)階段:編譯階段和 運(yùn)行階段;在編譯階段主要由圖4所述實(shí)施例的編譯插樁模塊03執(zhí)行,在運(yùn)行階段,主要由 圖3和圖4所述實(shí)施例的變更通知模塊01和虛擬切換模塊02執(zhí)行;其中,圖5所示的插樁 編譯器具備上述編譯插樁模塊03的功能。本實(shí)施例以插樁編譯器為例進(jìn)行描述。
[0064] 在被測(cè)應(yīng)用程序的編譯階段,利用插樁腳本的不同功能,將以上實(shí)施例所描述的 插樁腳本分為網(wǎng)絡(luò)類(lèi)型虛擬變更插樁腳本和網(wǎng)絡(luò)類(lèi)型變更通知插樁腳本,利用插樁編譯器 將編譯后的被測(cè)應(yīng)用程序與上述網(wǎng)絡(luò)類(lèi)型虛擬變更插樁腳本和網(wǎng)絡(luò)類(lèi)型變更通知插樁腳 本進(jìn)行編譯,得到插樁后的被測(cè)對(duì)象;其中,在android操作系統(tǒng)中,上述網(wǎng)絡(luò)類(lèi)型虛擬變 更插樁腳本和網(wǎng)絡(luò)類(lèi)型變更通知插樁腳本可以為AspectJ文件,編譯后的被測(cè)應(yīng)用程序可 以為java class文件,編譯插樁后得到的被測(cè)對(duì)象可以為android apk文件。編譯階段主 要完成對(duì)被測(cè)應(yīng)用程序進(jìn)行編譯插樁,通過(guò)預(yù)設(shè)插樁規(guī)則,在Android平臺(tái)利用Α0Ρ技術(shù)對(duì) 被測(cè)應(yīng)用程序訪問(wèn)特定API的代碼進(jìn)行截獲,插入插樁腳本進(jìn)而生成插樁后的被測(cè)對(duì)象, 并對(duì)上述被測(cè)對(duì)象進(jìn)行注冊(cè),使得注冊(cè)后的被測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信 息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變更事件。
[0065] 上述編譯階段對(duì)圖5所示的網(wǎng)絡(luò)類(lèi)型虛擬變更插樁腳本進(jìn)行編譯后,邏輯上會(huì)成 為運(yùn)行階段的虛擬切換模塊02,對(duì)圖5所示的網(wǎng)絡(luò)類(lèi)型變更通知插樁腳本進(jìn)行編譯后,邏 輯上會(huì)成為運(yùn)行階段的變更通知模塊01。如圖5所示,基于上述注冊(cè)后的被測(cè)對(duì)象,當(dāng)系 統(tǒng)接收到測(cè)試人員觸發(fā)的網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí),比如監(jiān)測(cè)到網(wǎng)絡(luò)類(lèi)型配置文件被修改 時(shí),系統(tǒng)會(huì)主動(dòng)發(fā)出對(duì)應(yīng)的com. tencent. scream, intents. fake_nettype通知,該通知的 接收者同時(shí)也是注冊(cè)過(guò)android, net. conn. CONNECTIVITY_CHANGE的接收者即注冊(cè)后的被 測(cè)對(duì)象,從而也被觸發(fā);此時(shí)虛擬切換模塊02會(huì)監(jiān)聽(tīng)各個(gè)已注冊(cè)的被測(cè)對(duì)象即上述的com. tencent. scream, intents. fake_nettype 的接收者的 onReceive 函數(shù),并在觸發(fā)前修改 action 參數(shù)類(lèi)型,將其從 com. tencent. scream, intents. fake_nettype 修改為 android, net. conn. C0NNECTIVITY_CHANGE,同時(shí),變更通知模塊01在網(wǎng)絡(luò)類(lèi)型變更時(shí)會(huì)主動(dòng)通知插 樁后的被測(cè)對(duì)象,從而達(dá)到和終端發(fā)出網(wǎng)絡(luò)變更通知相同的效果?;蛘撸谶\(yùn)行階段,插樁 后的被測(cè)對(duì)象在執(zhí)行過(guò)程中,當(dāng)網(wǎng)絡(luò)類(lèi)型查詢API被調(diào)用時(shí),虛擬切換模塊02會(huì)讀取網(wǎng)絡(luò) 配置文件,返回指定的網(wǎng)絡(luò)類(lèi)型,而不是終端當(dāng)前的真實(shí)網(wǎng)絡(luò)類(lèi)型,從而達(dá)到網(wǎng)絡(luò)類(lèi)型模擬 切換的目的,同時(shí)變更通知模塊01在網(wǎng)絡(luò)類(lèi)型變更時(shí)會(huì)主動(dòng)通知插樁后的被測(cè)對(duì)象,達(dá)到 和真實(shí)網(wǎng)絡(luò)切換相同的效果。
[0066] 本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)類(lèi)型的模擬裝置一實(shí)施例硬件架構(gòu)示意圖;如圖 6所示,該網(wǎng)絡(luò)類(lèi)型的模擬裝置包括:處理器101、存儲(chǔ)器102、用戶接口 103、網(wǎng)絡(luò)接口 104 以及通信總線105。通信總線105用于網(wǎng)絡(luò)類(lèi)型的模擬裝置(以下簡(jiǎn)稱(chēng)"終端")中各組成部 件之間的通信,用戶接口 103用于接收用戶輸入的信息,該用戶接口可以為有線接口及無(wú) 線接口,例如鍵盤(pán)、鼠標(biāo)等。網(wǎng)絡(luò)接口 104用于驗(yàn)證終端與外部進(jìn)行互相通信,該網(wǎng)絡(luò)接口 也可以包括有線接口及無(wú)線接口。存儲(chǔ)器102可以包括一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì),而且其不但包括內(nèi)部存儲(chǔ)器,還包括外部存儲(chǔ)器。該存儲(chǔ)器中存儲(chǔ)有操作系統(tǒng)及網(wǎng)絡(luò)類(lèi) 型模擬應(yīng)用程序等等。處理器101用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí) 行以下操作:
[0067] 處理器101通過(guò)用戶接口 103或者網(wǎng)絡(luò)接口 104檢測(cè)到網(wǎng)絡(luò)類(lèi)型虛擬變更指令, 發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì)象;所述切換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所 述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)所處的第一網(wǎng)絡(luò)類(lèi)型切換至所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令指向 的第二網(wǎng)絡(luò)類(lèi)型;
[0068] 處理器101通過(guò)所述通信總線105讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配 置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng)的所述第二網(wǎng)絡(luò)類(lèi)型;
[0069] 觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛 擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作。
[0070] 由于終端提供了模擬切換網(wǎng)絡(luò)類(lèi)型的功能,使得被測(cè)對(duì)象誤認(rèn)為自身的運(yùn)行的網(wǎng) 絡(luò)為模擬切換后的網(wǎng)絡(luò),實(shí)現(xiàn)了通過(guò)軟件模擬測(cè)試環(huán)境所需的不同的網(wǎng)絡(luò)類(lèi)型的有益效 果,節(jié)約了配置實(shí)際測(cè)試所需的不同物理網(wǎng)絡(luò)類(lèi)型的成本。
[0071] 進(jìn)一步地,處理器101還用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí)行 以下操作:
[0072] 編譯被測(cè)應(yīng)用程序,得到編譯后的被測(cè)對(duì)象;
[0073] 定義虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件,注冊(cè)被測(cè)對(duì)象,使已注冊(cè) 的被測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變更事件。
[0074] 進(jìn)一步地,處理器101還用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí)行 以下操作:
[0075] 利用通信總線105監(jiān)控到被測(cè)應(yīng)用程序訪問(wèn)預(yù)設(shè)類(lèi)型應(yīng)用程序接口的訪問(wèn)事件, 加載虛擬變更網(wǎng)絡(luò)類(lèi)型的插樁腳本,生成插樁后的被測(cè)對(duì)象。
[0076] 進(jìn)一步地,所述預(yù)設(shè)類(lèi)型應(yīng)用程序接口為網(wǎng)絡(luò)類(lèi)型查詢對(duì)應(yīng)的應(yīng)用程序接口。
[0077] 進(jìn)一步地,處理器101還用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí)行 以下操作:
[0078] 采用靜態(tài)注冊(cè)方式和/或動(dòng)態(tài)注冊(cè)方式對(duì)接收所述虛擬網(wǎng)絡(luò)變更事件的被測(cè)對(duì) 象進(jìn)行注冊(cè)。
[0079] 進(jìn)一步地,處理器101還用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí)行 以下操作:
[0080] 修改編譯前被測(cè)對(duì)象的配置文件,對(duì)所述被測(cè)對(duì)象進(jìn)行注冊(cè)。
[0081] 進(jìn)一步地,處理器101還用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí)行 以下操作:
[0082] 根據(jù)預(yù)設(shè)過(guò)濾規(guī)則,過(guò)濾出對(duì)系統(tǒng)注冊(cè)函數(shù)進(jìn)行調(diào)用的被測(cè)對(duì)象;
[0083] 在過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)注冊(cè)所述虛擬網(wǎng)絡(luò)變更事件 時(shí),對(duì)所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件,完成對(duì)所述被測(cè)對(duì)象的注冊(cè)。
[0084] 進(jìn)一步地,處理器101還用于調(diào)用存儲(chǔ)器102中的網(wǎng)絡(luò)類(lèi)型模擬應(yīng)用程序,以執(zhí)行 以下操作:
[0085] 判斷過(guò)濾出的所述被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)所注冊(cè)的操作事件是 否為所述虛擬網(wǎng)絡(luò)變更事件;
[0086] 若是所述虛擬網(wǎng)絡(luò)變更事件,則對(duì)所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件。
[0087] 本發(fā)明網(wǎng)絡(luò)類(lèi)型的模擬裝置能夠模擬測(cè)試環(huán)境所需要的網(wǎng)絡(luò)類(lèi)型,使得在上述被 測(cè)對(duì)象在后續(xù)測(cè)試運(yùn)行時(shí)達(dá)到和真實(shí)網(wǎng)絡(luò)類(lèi)型切換相同的技術(shù)效果,節(jié)約了配置真實(shí)網(wǎng)絡(luò) 類(lèi)型切換所需的硬件成本,且在模擬的網(wǎng)絡(luò)類(lèi)型之間切換時(shí)操作簡(jiǎn)單、便捷,提高了人機(jī)的 可交互性和模擬裝置的智能性。
[0088] 需要說(shuō)明的是,在本文中,術(shù)語(yǔ)"包括"、"包含"或者其任何其他變體意在涵蓋非排 他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而 且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有 的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句"包括一個(gè)……"限定的要素,并不排除在包括 該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
[0089] 上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0090] 通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方 法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下 前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做 出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì) (如ROM/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),月艮 務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0091] 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制其專(zhuān)利范圍,凡是利用本發(fā)明 說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng) 域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。
【權(quán)利要求】
1. 一種網(wǎng)絡(luò)類(lèi)型的模擬方法,其特征在于,包括以下步驟: 接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì)象;所述切換網(wǎng) 絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)所處的第一網(wǎng)絡(luò)類(lèi)型切換至 所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令指向的第二網(wǎng)絡(luò)類(lèi)型; 讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件,獲取所述網(wǎng)絡(luò)配置文件對(duì)應(yīng)的 所述第二網(wǎng)絡(luò)類(lèi)型; 觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi)型切換至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng) 絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作。
2. 如權(quán)利要求1所述的方法,其特征在于,所述接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換 網(wǎng)絡(luò)類(lèi)型的通知信息至被測(cè)對(duì)象,之前還包括: 編譯被測(cè)應(yīng)用程序,得到編譯后的被測(cè)對(duì)象; 定義虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件,注冊(cè)被測(cè)對(duì)象,使已注冊(cè)的被 測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變更事件。
3. 如權(quán)利要求2所述的方法,其特征在于,所述編譯被測(cè)應(yīng)用程序,得到編譯后的被測(cè) 對(duì)象,包括: 監(jiān)控到被測(cè)應(yīng)用程序訪問(wèn)預(yù)設(shè)類(lèi)型應(yīng)用程序接口的訪問(wèn)事件,加載虛擬變更網(wǎng)絡(luò)類(lèi)型 的插樁腳本,生成插樁后的被測(cè)對(duì)象。
4. 如權(quán)利要求3所述的方法,其特征在于,所述預(yù)設(shè)類(lèi)型應(yīng)用程序接口為網(wǎng)絡(luò)類(lèi)型查 詢對(duì)應(yīng)的應(yīng)用程序接口。
5. 如權(quán)利要求2?4中任意一項(xiàng)所述的方法,其特征在于,所述注冊(cè)被測(cè)對(duì)象包括: 采用靜態(tài)注冊(cè)方式和/或動(dòng)態(tài)注冊(cè)方式對(duì)接收所述虛擬網(wǎng)絡(luò)變更事件的被測(cè)對(duì)象進(jìn) 行注冊(cè)。
6. 如權(quán)利要求5所述的方法,其特征在于,所述采用靜態(tài)注冊(cè)方式對(duì)接收所述虛擬網(wǎng) 絡(luò)變更事件的被測(cè)對(duì)象進(jìn)行注冊(cè),包括: 修改編譯前被測(cè)對(duì)象的配置文件,對(duì)所述被測(cè)對(duì)象進(jìn)行注冊(cè)。
7. 如權(quán)利要求5所述的方法,其特征在于,所述采用動(dòng)態(tài)注冊(cè)方式對(duì)接收所述虛擬網(wǎng) 絡(luò)變更事件的被測(cè)對(duì)象進(jìn)行注冊(cè),包括: 根據(jù)預(yù)設(shè)過(guò)濾規(guī)則,過(guò)濾出對(duì)系統(tǒng)注冊(cè)函數(shù)進(jìn)行調(diào)用的被測(cè)對(duì)象; 在過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)注冊(cè)所述虛擬網(wǎng)絡(luò)變更事件時(shí),對(duì) 所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件,完成對(duì)所述被測(cè)對(duì)象的注冊(cè)。
8. 如權(quán)利要求7所述的方法,其特征在于,所述在過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述 系統(tǒng)注冊(cè)函數(shù)注冊(cè)所述虛擬網(wǎng)絡(luò)變更事件時(shí),對(duì)所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件,包 括: 判斷過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)所注冊(cè)的操作事件是否為所述 虛擬網(wǎng)絡(luò)變更事件; 若是所述虛擬網(wǎng)絡(luò)變更事件,則對(duì)所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件。
9. 一種網(wǎng)絡(luò)類(lèi)型的模擬裝置,其特征在于,包括: 變更通知模塊,用于接收網(wǎng)絡(luò)類(lèi)型虛擬變更指令,發(fā)送切換網(wǎng)絡(luò)類(lèi)型的通知信息至被 測(cè)對(duì)象;所述切換網(wǎng)絡(luò)類(lèi)型的通知信息包括:將接收所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令時(shí)所處的 第一網(wǎng)絡(luò)類(lèi)型切換至所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令指向的第二網(wǎng)絡(luò)類(lèi)型; 虛擬切換模塊,用于讀取所述網(wǎng)絡(luò)類(lèi)型虛擬變更指令對(duì)應(yīng)的網(wǎng)絡(luò)配置文件,獲取所述 網(wǎng)絡(luò)配置文件對(duì)應(yīng)的所述第二網(wǎng)絡(luò)類(lèi)型;觸發(fā)所述被測(cè)對(duì)象執(zhí)行將所述第一網(wǎng)絡(luò)類(lèi)型切換 至所述第二網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的虛擬網(wǎng)絡(luò)變更事件,使得所述被測(cè)對(duì)象基于虛擬切換后的所述 第二網(wǎng)絡(luò)類(lèi)型執(zhí)行對(duì)應(yīng)操作。
10. 如權(quán)利要求9所述的裝置,其特征在于,還包括: 編譯插樁模塊,用于: 編譯被測(cè)應(yīng)用程序,得到編譯后的被測(cè)對(duì)象; 定義虛擬切換網(wǎng)絡(luò)類(lèi)型對(duì)應(yīng)的所述虛擬網(wǎng)絡(luò)變更事件,注冊(cè)被測(cè)對(duì)象,使已注冊(cè)的被 測(cè)對(duì)象在接收到切換網(wǎng)絡(luò)類(lèi)型的所述通知信息時(shí)強(qiáng)制執(zhí)行所述虛擬網(wǎng)絡(luò)變更事件。
11. 如權(quán)利要求10所述的裝置,其特征在于,所述編譯插樁模塊還用于: 監(jiān)控到被測(cè)應(yīng)用程序訪問(wèn)預(yù)設(shè)類(lèi)型應(yīng)用程序接口的訪問(wèn)事件,加載虛擬變更網(wǎng)絡(luò)類(lèi)型 的插樁腳本,生成插樁后的被測(cè)對(duì)象。
12. 如權(quán)利要求11所述的裝置,其特征在于,所述預(yù)設(shè)類(lèi)型應(yīng)用程序接口為網(wǎng)絡(luò)類(lèi)型 查詢對(duì)應(yīng)的應(yīng)用程序接口。
13. 如權(quán)利要求10?12中任意一項(xiàng)所述的裝置,其特征在于,所述編譯插樁模塊還用 于: 采用靜態(tài)注冊(cè)方式和/或動(dòng)態(tài)注冊(cè)方式對(duì)接收所述虛擬網(wǎng)絡(luò)變更事件的被測(cè)對(duì)象進(jìn) 行注冊(cè)。
14. 如權(quán)利要求13所述的裝置,其特征在于,所述編譯插樁模塊還用于: 修改編譯前被測(cè)對(duì)象的配置文件,對(duì)所述被測(cè)對(duì)象進(jìn)行注冊(cè)。
15. 如權(quán)利要求13所述的裝置,其特征在于,所述編譯插樁模塊還用于: 根據(jù)預(yù)設(shè)過(guò)濾規(guī)則,過(guò)濾出對(duì)系統(tǒng)注冊(cè)函數(shù)進(jìn)行調(diào)用的被測(cè)對(duì)象; 在過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)注冊(cè)所述虛擬網(wǎng)絡(luò)變更事件時(shí),對(duì) 所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件,完成對(duì)所述被測(cè)對(duì)象的注冊(cè)。
16. 如權(quán)利要求15所述的裝置,其特征在于,所述編譯插樁模塊還用于: 判斷過(guò)濾出的被測(cè)對(duì)象基于調(diào)用的所述系統(tǒng)注冊(cè)函數(shù)所注冊(cè)的操作事件是否為所述 虛擬網(wǎng)絡(luò)變更事件; 若是所述虛擬網(wǎng)絡(luò)變更事件,則對(duì)所述被測(cè)對(duì)象追加注冊(cè)虛假消息事件。
【文檔編號(hào)】H04L12/26GK104092579SQ201410049143
【公開(kāi)日】2014年10月8日 申請(qǐng)日期:2014年2月12日 優(yōu)先權(quán)日:2014年2月12日
【發(fā)明者】魯四喜, 鄭輝 申請(qǐng)人:騰訊科技(深圳)有限公司