終端應(yīng)用的測(cè)試方法及移動(dòng)終端的制作方法
【專利摘要】本發(fā)明提供一種終端應(yīng)用的測(cè)試方法及應(yīng)用該方法的移動(dòng)終端,包括:將自定義的動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中;加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù);利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù);執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。本發(fā)明通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。
【專利說(shuō)明】
終端應(yīng)用的測(cè)試方法及移動(dòng)終端
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于軟件測(cè)試領(lǐng)域,尤其涉及一種終端應(yīng)用的測(cè)試方法及移動(dòng)終端。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)的普及,越來(lái)越多的終端應(yīng)用在生活中起到重要作用,比如微信、微團(tuán)購(gòu)和偷菜游戲等,甚至改變了人們的生活方式。而為了使一款終端應(yīng)用更加的友好和智能化,軟件工程師會(huì)做大量的測(cè)試工作,比如對(duì)于通信協(xié)議、健壯性測(cè)試等。
[0003]終端應(yīng)用所展示的內(nèi)容大都通過(guò)網(wǎng)絡(luò)從服務(wù)器獲取,如果服務(wù)器中的數(shù)據(jù)有偏差,那么終端應(yīng)用中就會(huì)出現(xiàn)錯(cuò)誤。而測(cè)試和修改上述錯(cuò)誤,需要等待錯(cuò)誤返回至服務(wù)器,并積累到一定數(shù)量或等待預(yù)設(shè)時(shí)間后,才會(huì)被解決,大大影響處理效率,為此,現(xiàn)有技術(shù)提出了在終端側(cè)通過(guò)動(dòng)態(tài)調(diào)試或修改源代碼來(lái)構(gòu)造假數(shù)據(jù),并利用該假數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)封包的測(cè)試,從而達(dá)到對(duì)真實(shí)網(wǎng)絡(luò)環(huán)境進(jìn)行模擬測(cè)試的目的。
[0004]然而,現(xiàn)有的方案,通過(guò)動(dòng)態(tài)調(diào)試的測(cè)試方法對(duì)測(cè)試人員代碼能力要求較高,且容易出錯(cuò),耗時(shí)很長(zhǎng);而修改源代碼的測(cè)試方法則僅能在有源代碼的情形下進(jìn)行;而且二者皆會(huì)受網(wǎng)絡(luò)傳輸質(zhì)量的影響,測(cè)試效率難以保證。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的目的在于提供一種終端應(yīng)用的測(cè)試方法及移動(dòng)終端,可以解決現(xiàn)有技術(shù)中對(duì)測(cè)試人員技能要求高、測(cè)試耗時(shí)長(zhǎng)、效率難以保證等技術(shù)問(wèn)題。
[0006]為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種終端應(yīng)用的測(cè)試方法,包括:
[0007]將自定義的動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中;
[0008]加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù);
[0009]利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù);以及
[0010]執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。
[0011]為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例還提供了一種移動(dòng)終端,包括:
[0012]函數(shù)庫(kù),包括用于存放原接收函數(shù)和原發(fā)送函數(shù)的系統(tǒng)庫(kù)、以及用于存放掛鉤函數(shù)的動(dòng)態(tài)傳輸庫(kù);
[0013]加載模塊,用于將所述動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中,并加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù);
[0014]修改模塊,用于利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù);以及
[0015]執(zhí)行模塊,用于執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。
[0016]相對(duì)于現(xiàn)有技術(shù),本發(fā)明通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。【附圖說(shuō)明】
[0017]圖1是本發(fā)明實(shí)施例提供的終端應(yīng)用的測(cè)試方法及移動(dòng)終端的應(yīng)用環(huán)境示意圖;
[0018]圖2是本發(fā)明實(shí)施例一提供的終端應(yīng)用的測(cè)試方法的工作流程示意圖;
[0019]圖3是本發(fā)明實(shí)施例二提供的終端應(yīng)用測(cè)試方法中執(zhí)行第一接收函數(shù)的步驟細(xì)化示意圖;
[0020]圖4是本發(fā)明實(shí)施例三提供的移動(dòng)終端的模塊示意圖;
[0021]圖5是本發(fā)明實(shí)施例四提供的終端應(yīng)用的測(cè)試方法及移動(dòng)終端的時(shí)序示意圖。【具體實(shí)施方式】
[0022]請(qǐng)參照附圖中的圖式,其中相同的組件符號(hào)代表相同的組件,本發(fā)明的原理是以實(shí)施在一適當(dāng)?shù)倪\(yùn)算環(huán)境中來(lái)舉例說(shuō)明。以下的說(shuō)明是基于所示例的本發(fā)明的具體實(shí)施例,其不應(yīng)被視為限制本發(fā)明未在此詳述的其它具體實(shí)施例。
[0023]本發(fā)明原理以上述文字來(lái)說(shuō)明,其并不代表為一種限制,本領(lǐng)域測(cè)試人員將可了解到以下所述的多種步驟及操作亦可實(shí)施在硬件當(dāng)中。本發(fā)明的原理使用許多其它泛用性或特定目的運(yùn)算、通信環(huán)境或組態(tài)來(lái)進(jìn)行操作。
[0024]請(qǐng)參閱圖1,為本發(fā)明中提供的終端應(yīng)用的測(cè)試方法及移動(dòng)終端的應(yīng)用環(huán)境示意圖。所述應(yīng)用環(huán)境,包括服務(wù)器10、移動(dòng)終端20、測(cè)試設(shè)備30以及通信網(wǎng)絡(luò)40。
[0025]可以理解的是:所述服務(wù)器10,用于偵聽(tīng)客戶端的服務(wù)請(qǐng)求,并提供相應(yīng)的服務(wù)。 然而,由于同一服務(wù)器會(huì)服務(wù)各種不同類型的客戶端,如移動(dòng)終端20或個(gè)人電腦等,在健壯性和兼容性上有時(shí)會(huì)出現(xiàn)各類的問(wèn)題,導(dǎo)致客戶端無(wú)法正常獲取服務(wù)。
[0026]尤其是當(dāng)所述客戶端為移動(dòng)終端20時(shí),對(duì)服務(wù)器10所提供的數(shù)據(jù)包進(jìn)行分析和調(diào)試會(huì)非常的不方便,故而通過(guò)將自定義的動(dòng)態(tài)傳輸庫(kù)及其掛鉤函數(shù),使移動(dòng)終端所接收與發(fā)送的數(shù)據(jù)包先行經(jīng)過(guò)測(cè)試設(shè)備的測(cè)試,再返回至目標(biāo)地址,所述目標(biāo)地址為移動(dòng)終端或服務(wù)器。
[0027]其流程概述為:將動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中;加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù),并利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù);執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備30實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。
[0028]測(cè)試設(shè)備30,采用普通的個(gè)人電腦即可,通過(guò)構(gòu)造假數(shù)據(jù)、模擬邊界值和實(shí)施監(jiān)控傳輸數(shù)據(jù)技術(shù)中的一種或組合對(duì)所述移動(dòng)終端20的終端應(yīng)用所接收和轉(zhuǎn)發(fā)的數(shù)據(jù)包進(jìn)行測(cè)試,從而更方便提前發(fā)現(xiàn)漏洞以及及時(shí)進(jìn)行修復(fù)。
[0029]可以理解的是,無(wú)論是各協(xié)議層的不兼容、代碼錯(cuò)誤、程序漏洞或其他可影響終端應(yīng)用正常使用的技術(shù)問(wèn)題,都可以通過(guò)轉(zhuǎn)發(fā)至測(cè)試設(shè)備30進(jìn)行測(cè)試和分析。
[0030]通信網(wǎng)絡(luò)40,包括無(wú)線網(wǎng)絡(luò)及有線網(wǎng)絡(luò)。其中無(wú)線網(wǎng)絡(luò)包括無(wú)線廣域網(wǎng)、無(wú)線局域網(wǎng)、無(wú)線城域網(wǎng)、以及無(wú)線個(gè)人網(wǎng)中的一種或多種的組合。
[0031]其中,通常服務(wù)器10至移動(dòng)終端20的連接方式為無(wú)線網(wǎng)絡(luò),用于模擬真實(shí)的網(wǎng)絡(luò)環(huán)境。移動(dòng)終端20至測(cè)試設(shè)備30之間的連接方式為有線網(wǎng)絡(luò),通過(guò)USB數(shù)據(jù)線等方式進(jìn)行連接,以便測(cè)試設(shè)備30第一時(shí)間獲取移動(dòng)終端20的數(shù)據(jù)封包。
[0032]本案可應(yīng)用于基于各類網(wǎng)絡(luò)協(xié)議的終端應(yīng)用測(cè)試中。請(qǐng)參照以下實(shí)施例,實(shí)施例一、二側(cè)重于終端應(yīng)用的測(cè)試方法,實(shí)施例三側(cè)重于移動(dòng)終端,實(shí)施例四側(cè)重于終端應(yīng)用的測(cè)試方法及移動(dòng)終端的工作時(shí)序??梢岳斫獾氖?雖然各實(shí)施例的側(cè)重不同,但其設(shè)計(jì)思想是一致的。且,在某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)說(shuō)明書全文的詳細(xì)描述,不再贅述。
[0033]實(shí)施例一
[0034]請(qǐng)參閱圖2,所示為終端應(yīng)用的測(cè)試方法的工作流程示意圖。
[0035]在步驟S21中,將自定義的動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中。
[0036]可以理解的是,終端應(yīng)用中包含系統(tǒng)庫(kù),所述系統(tǒng)庫(kù)用于存儲(chǔ)原接收函數(shù)和原發(fā)送函數(shù)。所述動(dòng)態(tài)傳輸庫(kù)用于存儲(chǔ)掛鉤函數(shù)、測(cè)試用數(shù)據(jù)包等。系統(tǒng)庫(kù)與動(dòng)態(tài)傳輸庫(kù)一同構(gòu)成函數(shù)庫(kù)。
[0037]在步驟S22中,加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤(Hook)函數(shù)。
[0038]可以理解的是,掛鉤函數(shù)是一種信息處理機(jī)制,通過(guò)設(shè)置“掛鉤”,終端應(yīng)用可以對(duì)信息和事件進(jìn)行過(guò)濾。通常,掛鉤函數(shù)的架構(gòu)(API Hook)包括兩個(gè)部分,一個(gè)是掛鉤服務(wù)模塊(Hook Server),在Windows系統(tǒng)里體現(xiàn)為EXE形式、在Android系統(tǒng)里體現(xiàn)為APK形式;另一個(gè)是掛鉤驅(qū)動(dòng)模塊(Hook Driver),在Windows系統(tǒng)里體現(xiàn)為DLL形式、在Android或Linux系統(tǒng)里體現(xiàn)為SO形式。
[0039]在步驟S23中,利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù)。
[0040]可以理解的是,在本步驟中,掛鉤函數(shù)通過(guò)修改目標(biāo)進(jìn)程中的地址,即原接收函數(shù)與原發(fā)送函數(shù)中的引用地址,使掛鉤驅(qū)動(dòng)模塊可以實(shí)際負(fù)責(zé)數(shù)據(jù)包的攔截工作。即,無(wú)論是移動(dòng)終端發(fā)送還是接收的數(shù)據(jù)包都會(huì)先經(jīng)過(guò)測(cè)試設(shè)備的攔截,使測(cè)試設(shè)備可以獲取到移動(dòng)終端的真實(shí)數(shù)據(jù)。
[0041 ] 在步驟S24中,執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。
[0042]可以理解的是,執(zhí)行所述第一發(fā)送函數(shù)的步驟具體包括:
[0043](I)將數(shù)據(jù)包通過(guò)抽象套接接口(Socket)進(jìn)行封裝,形成數(shù)據(jù)封包;
[0044](2)利用所述第一發(fā)送函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備;
[0045](3)接收所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包;以及
[0046](4)調(diào)用原發(fā)送函數(shù)將所述修正數(shù)據(jù)包發(fā)送給服務(wù)器。
[0047]執(zhí)行所述第一接收函數(shù)的步驟具體包括:
[0048](I)向服務(wù)器發(fā)送接收請(qǐng)求,并通過(guò)服務(wù)器的查詢回應(yīng)判斷當(dāng)前是否有數(shù)據(jù)可接收;
[0049](2)當(dāng)有數(shù)據(jù)可接收時(shí),調(diào)用原接收函數(shù)接收數(shù)據(jù)包,并將接收到的數(shù)據(jù)包通過(guò)抽象套接接口進(jìn)行封裝,形成數(shù)據(jù)封包;
[0050](3)利用所述第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備;以及
[0051](4)由所述測(cè)試設(shè)備修改完成的修改正數(shù)據(jù)包,即將接收的目標(biāo)地址還原為移動(dòng)終端。
[0052]可以理解的是,測(cè)試設(shè)備30接收由服務(wù)器或移動(dòng)終端為始發(fā)地址的數(shù)據(jù)包,并通過(guò)構(gòu)造假數(shù)據(jù)、模擬邊界值和實(shí)施監(jiān)控傳輸數(shù)據(jù)中處理技術(shù)的一種或組合,對(duì)數(shù)據(jù)包所對(duì)應(yīng)的移動(dòng)終端20運(yùn)行的終端應(yīng)用進(jìn)行測(cè)試,從而更方便提前發(fā)現(xiàn)漏洞以及及時(shí)進(jìn)行修復(fù)。
[0053]本發(fā)明的終端應(yīng)用的測(cè)試方法,通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,使掛鉤函數(shù)將原接收函數(shù)與發(fā)送函數(shù)形成第一接收函數(shù)與第一發(fā)送函數(shù),實(shí)現(xiàn)了將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)包先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。
[0054]實(shí)施例二
[0055]請(qǐng)參閱圖3,所示為終端應(yīng)用的測(cè)試方法中執(zhí)行第一接收函數(shù)的步驟細(xì)化流程示意圖。與實(shí)施例一的區(qū)別在于,本實(shí)施例還特別考慮了當(dāng)移動(dòng)終端所接收的數(shù)據(jù)包為大數(shù)據(jù)包的情況,避免了在數(shù)據(jù)不完全的情形下進(jìn)行封裝、以及內(nèi)存隊(duì)列被誤清除的情形,使測(cè)試數(shù)據(jù)更真實(shí)完整。其具體過(guò)程如下:
[0056]在步驟S241中,分配內(nèi)存地址,并指定最大長(zhǎng)度。以QQ空間進(jìn)程為例,可為其指定最大長(zhǎng)度為5120字節(jié),即5KB的內(nèi)存空間。
[0057]在步驟S242中,接收來(lái)自于服務(wù)器的數(shù)據(jù)包,并判斷數(shù)據(jù)包的長(zhǎng)度是否超過(guò)所述最大長(zhǎng)度。其中,若超過(guò)所述最大長(zhǎng)度即為大數(shù)據(jù)包的情形,執(zhí)行步驟S243 ;若未超過(guò)所述最大長(zhǎng)度即為普通情形,執(zhí)行步驟S247。
[0058]在步驟S243中,當(dāng)所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí),根據(jù)所述數(shù)據(jù)包的大小分次接收所述數(shù)據(jù)包。
[0059]可以理解的是,在本步驟中還包括:(1)使用接收參數(shù)對(duì)系統(tǒng)隊(duì)列進(jìn)行調(diào)整;(2) 判斷所述數(shù)據(jù)包是否接收完成;(3)當(dāng)所述接收完成后,對(duì)系統(tǒng)隊(duì)列進(jìn)行清空。
[0060]在步驟S244中,將分次接收的數(shù)據(jù)包通過(guò)抽象套裝接口進(jìn)行封裝,形成數(shù)據(jù)封包。
[0061]在步驟S245中,利用第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至測(cè)試設(shè)備。
[0062]可以理解的是,上述步驟S243?S245為大數(shù)據(jù)包的情形,而在普通數(shù)據(jù)包時(shí),執(zhí)行步驟S247,利用第一接收函數(shù)將數(shù)據(jù)包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備。
[0063]在步驟S246中,調(diào)用原接收函數(shù)接收由測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包。
[0064]本發(fā)明的終端應(yīng)用的測(cè)試方法,通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,使掛鉤函數(shù)將原接收函數(shù)與發(fā)送函數(shù)形成第一接收函數(shù)與第一發(fā)送函數(shù),將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。此外,還通過(guò)對(duì)超大網(wǎng)絡(luò)包的處理,避免從截獲過(guò)大的網(wǎng)絡(luò)包后因數(shù)據(jù)不全而無(wú)法進(jìn)行測(cè)試與修改。
[0065]實(shí)施例三
[0066]請(qǐng)參閱圖4,所示為本發(fā)明實(shí)施例提供的移動(dòng)終端的模塊示意圖。所述移動(dòng)終端 20為手機(jī)、平板電腦、個(gè)人數(shù)字助理(PDA)、智能眼鏡、智能手表等智慧型終端設(shè)備。
[0067]所述移動(dòng)終端20主要包括:函數(shù)庫(kù)21、加載模塊22、修改模塊23以及執(zhí)行模塊 24。
[0068]函數(shù)庫(kù)21,包括用于存放原接收函數(shù)和原發(fā)送函數(shù)的系統(tǒng)庫(kù)、以及用于存放掛鉤函數(shù)的動(dòng)態(tài)傳輸庫(kù)。此外,動(dòng)態(tài)傳輸庫(kù)還可用于存放測(cè)試用的數(shù)據(jù)包。
[0069]加載模塊22,用于將所述動(dòng)態(tài)傳輸庫(kù)21注入到終端應(yīng)用的進(jìn)程中,并加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù)。
[0070]修改模塊23,用于利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù)。
[0071]可以理解的是,所述修改模塊23包括獲取子模塊231和地址修改子模塊232。其中,所述獲取子模塊231,用于利用所述掛鉤函數(shù)獲取原接收函數(shù)和原發(fā)送函數(shù)的引用地址字段。所述地址修改子模塊232,用于將原接收函數(shù)和原發(fā)送函數(shù)中的引用地址字段修改為測(cè)試設(shè)備,以形成第一接收函數(shù)和第一發(fā)送函數(shù)。
[0072]執(zhí)行模塊24,用于執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。
[0073]可以理解的是:所述執(zhí)行模塊24具體包括:判斷子模塊241、套接子模塊242、轉(zhuǎn)發(fā)子模塊243、以及調(diào)用子模塊244。此外,為了避免大數(shù)據(jù)包可能帶來(lái)的測(cè)試準(zhǔn)確率降低,所述執(zhí)行模塊還可以包括如下子模塊:內(nèi)存子模塊245、長(zhǎng)度分析子模塊246以及隊(duì)列清空子模塊247。
[0074]具體而言,在執(zhí)行第一發(fā)送函數(shù)時(shí),需要套接子模塊242、轉(zhuǎn)發(fā)子模塊243、以及調(diào)用子模塊244的配合。
[0075]其中,套接子模塊242,用于將待發(fā)送的數(shù)據(jù)包通過(guò)抽象套接接口進(jìn)行封裝,形成數(shù)據(jù)封包。轉(zhuǎn)發(fā)子模塊243,用于利用第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備、以及接收所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包。調(diào)用子模塊245,用于調(diào)用原發(fā)送函數(shù)將修正數(shù)據(jù)包發(fā)送給服務(wù)器。
[0076]在執(zhí)行第一接收函數(shù)時(shí),需要判斷子模塊241、套接子模塊242、轉(zhuǎn)發(fā)自模塊、以及調(diào)用子模塊245的配合。
[0077]其中,判斷子模塊241,用于通過(guò)向服務(wù)器發(fā)送查詢請(qǐng)求以判斷所述移動(dòng)終端是否有數(shù)據(jù)可接收。套接子模塊242,用于在所述判斷子模塊241的判斷結(jié)果為沒(méi)有數(shù)據(jù)可接收時(shí),調(diào)用動(dòng)態(tài)傳輸庫(kù)中的測(cè)試數(shù)據(jù)包進(jìn)行封裝;所述套接子模塊242在所述判斷子模塊241判斷結(jié)果為有數(shù)據(jù)可接收時(shí),接收數(shù)據(jù)包并將接收到的數(shù)據(jù)包進(jìn)行封裝。轉(zhuǎn)發(fā)子模塊243,用于利用第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備。所述調(diào)用子模塊245,還用于調(diào)用原接收函數(shù)接收由所述測(cè)試設(shè)備修改完成的修改正數(shù)據(jù)包。
[0078]此外,考慮到數(shù)據(jù)包可能為大數(shù)據(jù)包的情形,為避免在數(shù)據(jù)不完全的情形下進(jìn)行封裝、以及內(nèi)存隊(duì)列被誤清除的情形,使測(cè)試數(shù)據(jù)更真實(shí)完整,在執(zhí)行第一接收函數(shù)時(shí),還需要用到內(nèi)存子模塊245、長(zhǎng)度分析子模塊246、隊(duì)列清空子模塊247、套裝子模塊242、轉(zhuǎn)發(fā)子模塊243、以及調(diào)用子模塊244的配合。
[0079]其中,內(nèi)存子模塊245,用于從存儲(chǔ)器(未標(biāo)示)中分配內(nèi)存地址,并指定最大長(zhǎng)度。長(zhǎng)度分析子模塊246,用于接收數(shù)據(jù)包,并判斷數(shù)據(jù)包的長(zhǎng)度是否超過(guò)所述最大長(zhǎng)度,當(dāng)所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí),根據(jù)所述數(shù)據(jù)包的大小分次接收所述數(shù)據(jù)包。隊(duì)列清空模塊247,用于當(dāng)所述長(zhǎng)度分析模塊判斷所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí),使用接收參數(shù)對(duì)系統(tǒng)隊(duì)列進(jìn)行調(diào)整;并判斷所述數(shù)據(jù)包是否接收完成;當(dāng)所述接收完成后,對(duì)系統(tǒng)隊(duì)列進(jìn)行清空。此夕卜,套裝子模塊242,還用于將所述分次接收的數(shù)據(jù)包通過(guò)抽象套裝接口進(jìn)行封裝,形成數(shù)據(jù)封包。其中,轉(zhuǎn)發(fā)子模塊243與調(diào)用子模塊244的作用與上相同,在此不再贅述。
[0080]本發(fā)明的移動(dòng)終端中通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,使掛鉤函數(shù)將原接收函數(shù)與發(fā)送函數(shù)形成第一接收函數(shù)與第一發(fā)送函數(shù),實(shí)現(xiàn)了將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。
[0081]實(shí)施例四
[0082]請(qǐng)參閱圖5,所示為本發(fā)明實(shí)施例提供的終端應(yīng)用的測(cè)試方法及移動(dòng)終端的時(shí)序示意圖。
[0083]在步驟A中,移動(dòng)終端將自定義的動(dòng)態(tài)傳輸庫(kù)注入到待測(cè)試的終端應(yīng)用的進(jìn)程中。
[0084]可以理解的是,終端應(yīng)用中包含系統(tǒng)庫(kù),所述系統(tǒng)庫(kù)用于存儲(chǔ)原接收函數(shù)和原發(fā)送函數(shù)。所述動(dòng)態(tài)傳輸庫(kù)用于存儲(chǔ)掛鉤函數(shù)、測(cè)試用數(shù)據(jù)包等。系統(tǒng)庫(kù)與動(dòng)態(tài)傳輸庫(kù)一同構(gòu)成函數(shù)庫(kù)。
[0085]在步驟B中,移動(dòng)終端加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤(Hook)函數(shù),并利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù)。
[0086]在步驟C中,移動(dòng)終端分配內(nèi)存地址,并指定最大長(zhǎng)度。
[0087]以下步驟D?H為執(zhí)行第一接收函數(shù)的步驟。
[0088]在步驟D中,移動(dòng)終端通過(guò)原接收函數(shù)接收服務(wù)器發(fā)送的數(shù)據(jù)包。
[0089]在步驟E中,移動(dòng)終端判斷所接收的數(shù)據(jù)包是否超過(guò)上述最大長(zhǎng)度。其中,如果沒(méi)有超過(guò)最大長(zhǎng)度,則直接接收;如果超過(guò)最大長(zhǎng)度,則分次接收數(shù)據(jù)包。
[0090]可以理解的是,在本步驟中,還包括:
[0091](1)使用接收參數(shù)對(duì)系統(tǒng)隊(duì)列進(jìn)行調(diào)整;
[0092](2)判斷所述數(shù)據(jù)包是否接收完成;以及
[0093](3)當(dāng)所述接收完成后,對(duì)系統(tǒng)隊(duì)列進(jìn)行清空。
[0094]在步驟F中,移動(dòng)終端將數(shù)據(jù)包封裝形成數(shù)據(jù)封包,并利用第一接收函數(shù)將數(shù)據(jù)封包轉(zhuǎn)發(fā)至測(cè)試設(shè)備。
[0095]在步驟G中,測(cè)試設(shè)備對(duì)數(shù)據(jù)封包進(jìn)行測(cè)試和修改,形成修正數(shù)據(jù)包。
[0096]在步驟H中,所述測(cè)試設(shè)備將修正數(shù)據(jù)包發(fā)送給所述移動(dòng)終端。
[0097]以下步驟I?M為執(zhí)行第一發(fā)送函數(shù)的步驟。
[0098]在步驟I中,移動(dòng)終端向服務(wù)器發(fā)送數(shù)據(jù)包,并由第一發(fā)送函數(shù)將所述數(shù)據(jù)包轉(zhuǎn)發(fā)至測(cè)試設(shè)備。
[0099]在步驟J中,測(cè)試設(shè)備對(duì)數(shù)據(jù)包進(jìn)行測(cè)試和修改,產(chǎn)生修正數(shù)據(jù)包。
[0100]在步驟K中,測(cè)試設(shè)備將修正數(shù)據(jù)包發(fā)送回給移動(dòng)終端。
[0101]在步驟L中,測(cè)試設(shè)備將利用原發(fā)送函數(shù)將修正數(shù)據(jù)包發(fā)送給服務(wù)器。
[0102]本發(fā)明中的終端應(yīng)用的測(cè)試方法及移動(dòng)終端通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。此外,還通過(guò)對(duì)超大網(wǎng)絡(luò)包的處理,避免從截獲過(guò)大的網(wǎng)絡(luò)包后因數(shù)據(jù)不全而無(wú)法進(jìn)行測(cè)試與修改。
[0103]可以理解的是,在本實(shí)施例中,本發(fā)明中通過(guò)動(dòng)態(tài)傳輸庫(kù)的定義和使用,將移動(dòng)終端所接收與發(fā)送的真實(shí)數(shù)據(jù)先行經(jīng)過(guò)測(cè)試設(shè)備進(jìn)行展示,使測(cè)試設(shè)備可以在真實(shí)網(wǎng)絡(luò)環(huán)境下進(jìn)行終端應(yīng)用的測(cè)試。
[0104]本發(fā)明實(shí)施例提供的終端應(yīng)用的測(cè)試方法及移動(dòng)終端屬于同一構(gòu)思,其具體實(shí)現(xiàn)過(guò)程詳見(jiàn)說(shuō)明書全文,此處不再贅述。
[0105]綜上所述,雖然本發(fā)明已以優(yōu)選實(shí)施例揭露如上,但上述優(yōu)選實(shí)施例并非用以限制本發(fā)明,本領(lǐng)域的普通測(cè)試人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍以權(quán)利要求界定的范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1.一種終端應(yīng)用的測(cè)試方法,其特征在于,包括:將自定義的動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中;加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù);利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與 第一發(fā)送函數(shù);以及執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn) 行測(cè)試和修改。2.如權(quán)利要求1所述的測(cè)試方法,其特征在于,所述執(zhí)行所述第一發(fā)送函數(shù)的步驟具 體包括:將數(shù)據(jù)包通過(guò)抽象套接接口進(jìn)行封裝,形成數(shù)據(jù)封包;利用所述第一發(fā)送函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備;接收所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包;以及 調(diào)用原發(fā)送函數(shù)將所述修正數(shù)據(jù)包發(fā)送給服務(wù)器。3.如權(quán)利要求1所述的測(cè)試方法,其特征在于,所述執(zhí)行所述第一接收函數(shù)的步驟具 體包括:判斷是否有數(shù)據(jù)可接收;當(dāng)有數(shù)據(jù)可接收時(shí),調(diào)用原接收函數(shù)接收數(shù)據(jù)包,并將接收到的數(shù)據(jù)包通過(guò)抽象套接 接口進(jìn)行封裝,形成數(shù)據(jù)封包;利用所述第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備;以及 接收由所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包。4.如權(quán)利要求1所述的測(cè)試方法,其特征在于,所述執(zhí)行所述第一接收函數(shù)的步驟具 體還包括:分配內(nèi)存地址,并指定最大長(zhǎng)度;接收數(shù)據(jù)包,并判斷數(shù)據(jù)包的長(zhǎng)度是否超過(guò)所述最大長(zhǎng)度;當(dāng)所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí),根據(jù)所述數(shù)據(jù)包的大小分次接收所述數(shù)據(jù)包;將所述分次接收的數(shù)據(jù)包通過(guò)抽象套裝接口進(jìn)行封裝,形成數(shù)據(jù)封包;利用所述第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備;以及 調(diào)用原接收函數(shù)接收由所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包。5.如權(quán)利要求4所述的測(cè)試方法,其特征在于,在所述當(dāng)所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí), 根據(jù)所述數(shù)據(jù)包的大小分次接收所述數(shù)據(jù)包的步驟之后,還包括步驟:使用接收參數(shù)對(duì)系統(tǒng)隊(duì)列進(jìn)行調(diào)整;判斷所述數(shù)據(jù)包是否接收完成;以及 當(dāng)所述接收完成后,對(duì)系統(tǒng)隊(duì)列進(jìn)行清空。6.如權(quán)利要求1所述的測(cè)試方法,其特征在于,在所述執(zhí)行所述第一接收函數(shù)和/或執(zhí) 行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備可以實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改的步驟之后,還包 括步驟:所述測(cè)試設(shè)備通過(guò)構(gòu)造假數(shù)據(jù)、模擬邊界值和實(shí)施監(jiān)控傳輸數(shù)據(jù)中的一種或組合對(duì)所 述終端應(yīng)用進(jìn)行測(cè)試和修改。7.—種移動(dòng)終端,其特征在于,包括: 函數(shù)庫(kù),包括用于存放原接收函數(shù)和原發(fā)送函數(shù)的系統(tǒng)庫(kù)、以及用于存放掛鉤函數(shù)的動(dòng)態(tài)傳輸庫(kù); 加載模塊,用于將所述動(dòng)態(tài)傳輸庫(kù)注入到終端應(yīng)用的進(jìn)程中,并加載所述動(dòng)態(tài)傳輸庫(kù)中的掛鉤函數(shù); 修改模塊,用于利用掛鉤函數(shù)對(duì)原接收函數(shù)和原發(fā)送函數(shù)的引用地址進(jìn)行修改,形成第一接收函數(shù)與第一發(fā)送函數(shù);以及 執(zhí)行模塊,用于執(zhí)行所述第一接收函數(shù)和/或執(zhí)行所述第一發(fā)送函數(shù),使測(cè)試設(shè)備實(shí)時(shí)對(duì)終端應(yīng)用進(jìn)行測(cè)試和修改。8.如權(quán)利要求7所述的移動(dòng)終端,其特征在于,所述執(zhí)行模塊包括如下模塊以執(zhí)行所述第一發(fā)送模塊: 套接子模塊,用于將數(shù)據(jù)包通過(guò)抽象套接接口進(jìn)行封裝,形成數(shù)據(jù)封包; 轉(zhuǎn)發(fā)子模塊,用于利用所述第一發(fā)送函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備、以及接收所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包;以及 調(diào)用子模塊,用于調(diào)用原發(fā)送函數(shù)將所述修正數(shù)據(jù)包發(fā)送給服務(wù)器。9.如權(quán)利要求8所述的移動(dòng)終端,其特征在于,所述執(zhí)行模塊還包括以下子模塊以執(zhí)行所述第一接收函數(shù): 判斷子模塊,用于判斷是否有數(shù)據(jù)可接收; 所述套裝子模塊,還用于當(dāng)有數(shù)據(jù)可接收時(shí),調(diào)用原接收函數(shù)接收數(shù)據(jù)包,并將接收到的數(shù)據(jù)包通過(guò)抽象套接接口進(jìn)行封裝,以形成數(shù)據(jù)封包; 所述轉(zhuǎn)發(fā)子模塊,還用于利用所述第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備;以及 所述調(diào)用子模塊,還用于接收由所述測(cè)試設(shè)備修改完成的修改正數(shù)據(jù)包。10.如權(quán)利要求8所述的移動(dòng)終端,其特征在于,所述執(zhí)行模塊還包括以下子模塊以執(zhí)行所述第一接收函數(shù): 內(nèi)存子模塊,用于分配內(nèi)存地址,并指定最大長(zhǎng)度; 長(zhǎng)度分析子模塊,用于接收數(shù)據(jù)包,并判斷數(shù)據(jù)包的長(zhǎng)度是否超過(guò)所述最大長(zhǎng)度,當(dāng)所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí),根據(jù)所述數(shù)據(jù)包的大小分次接收所述數(shù)據(jù)包; 所述套裝子模塊,還用于將所述分次接收的數(shù)據(jù)包通過(guò)抽象套裝接口進(jìn)行封裝,形成數(shù)據(jù)封包; 所述轉(zhuǎn)發(fā)子模塊,還用于利用所述第一接收函數(shù)將所述數(shù)據(jù)封包轉(zhuǎn)發(fā)至所述測(cè)試設(shè)備、以及接收所述測(cè)試設(shè)備修改完成的修正數(shù)據(jù)包; 所述調(diào)用子模塊,還用于調(diào)用原發(fā)送函數(shù)將所述修正數(shù)據(jù)包發(fā)送給服務(wù)器。11.如權(quán)利要求10所述的移動(dòng)終端,其特征在于,所述執(zhí)行模塊還包括如下子模塊以執(zhí)行所述第一接收函數(shù): 隊(duì)列清空模塊,用于當(dāng)所述長(zhǎng)度分析模塊判斷所述數(shù)據(jù)包超過(guò)最大長(zhǎng)度時(shí),使用接收參數(shù)對(duì)系統(tǒng)隊(duì)列進(jìn)行調(diào)整;并判斷所述數(shù)據(jù)包是否接收完成;當(dāng)所述接收完成后,對(duì)系統(tǒng)隊(duì)列進(jìn)行清空。
【文檔編號(hào)】G06F9/48GK105988928SQ201510092478
【公開(kāi)日】2016年10月5日
【申請(qǐng)日】2015年3月2日
【發(fā)明人】龍祖苑, 韓逢源
【申請(qǐng)人】騰訊科技(深圳)有限公司