本公開涉及計算機應用領域,特別涉及一種實現網絡場景模擬的方法和裝置。
背景技術:
終端中網絡場景往往較為復雜,比如,存在著有網切換至無網、無網切換至有網的狀況,在有網條件下還存在多種網絡類型的相互切換,并且隨著用戶的不同,所發生與網絡相關的切換也各不相同。
而終端中應用的很多功能都涉及網絡,而這些功能在開發過程中,往往由于未考慮終端中的復雜網絡場景,因此即便進行了嚴格的應用測試,仍然會在后續的正常運行中由于復雜網絡而引發各種問題。
具體而言,應用的測試,即開發過程中應用的內部測試階段,并無法覆蓋終端中的復雜網絡場景。也就是說,執行應用測試所在的網絡場景,與終端中真實存在的復雜網絡場景并不相符,進而必然導致應用測試中無法發現由于復雜網絡場景而引發的各種問題。
因此,亟待解決應用測試中網絡場景與終端中復雜網絡場景不相符的缺陷,即亟待實現網絡場景的模擬。
技術實現要素:
為了解決相關技術中應用測試所在網絡場景與真實存在的復雜網絡場景不相符的技術問題,本公開提供了一種實現網絡場景模擬的方法和裝置。
一種實現網絡場景模擬的方法,所述方法包括:
按照配置的限定值進行隨機數生成,得到處于所述限定值限定范圍的隨機數;
在處于已連接網絡狀態時,根據所述隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令;
根據所述網絡連接修改指令修改與網絡連接相關的返回值,通過所述返回值的修改模擬網絡場景。
一種實現網絡場景模擬的裝置,所述裝置包括:
隨機數生成模塊,用于按照配置的限定值進行隨機數生成,得到處于所述限定值限定范圍的隨機數;
指令生成模塊,用于在處于已連接網絡狀態時,根據所述隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令;
返回值修改模塊,用于根據所述網絡連接修改指令修改與網絡連接相關的返回值,通過所述返回值的修改模擬網絡場景。
本公開的實施例提供的技術方案可以包括以下有益效果:
為實現真實存在的復雜網絡場景的模擬,按照配置的限定值進行隨機數的生成,得到處于限定值限定范圍的隨機數,在處于已連接狀態時,根據隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令,根據網絡連接修改指令修改與網絡連接相關的返回值,此時通過返回值的修改便模擬了網絡場景,與網絡連接相關返回值的修改,便隨之模擬了網絡連接相關的切換,因此,所模擬的網絡場景,是在隨機數和網絡切換概率的控制下進行網絡連接相關的切換,與真實存在的網絡連接相關的切換是相類似,進而使得所模擬的網絡場景是與真實存在的復雜網絡場景相符的,保證了網絡場景模擬的真實性。
應當理解的是,以上的一般描述和后文的細節描述僅是示例性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發明的實施例,并于說明書一起用于解釋本發明的原理。
圖1是根據一示例性實施例示出的一種實現網絡場景模擬的方法的流程圖;
圖2是另一示例性實施例示出的一種實現網絡場景模擬的方法的流程圖;
圖3是根據圖1對應實施例示出的對在處于已連接網絡狀態時,根據隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令步驟的細節在一個示例性實施例進行描述的流程圖;
圖4是根據圖1對應實施例示出的對在處于已連接網絡狀態時,根據隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令步驟的細節在另一個示例性實施例進行描述的流程圖;
圖5是根據一示例性實施例示出的一應用測試覆蓋復雜網絡場景的流程圖;
圖6是根據一示例性實施例示出的一種實現網絡場景模擬的裝置的框圖;
圖7是根據另一示例性實施例示出的一種實現網絡場景模擬的裝置的框圖;
圖8是根據圖6對應示例性實施例示出的對指令生成模塊的細節在一個示例性實施例進行描述的框圖;
圖9是根據圖6對應示例性實施例示出的對指令生成模塊的細節在一個示例性實施例進行描述的框圖;
圖10是根據一示例性實施例示出的一種裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例執行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發明相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發明的一些方面相一致的裝置和方法的例子。
圖1是根據一示例性實施例示出的一種實現網絡場景模擬的方法的流程圖。該實現網絡場景模擬的方法,如圖1所示,可以包括以下步驟。
在步驟110中,按照配置的限定值進行隨機數生成,得到處于限定值限定范圍的隨機數。
其中,限定值,是一預先配置的數值,用于指定生成隨機數的范圍。按照限定值所執行的隨機數生成所得到的隨機數,必然是在0到限定值這一范圍的。在一個示例性實施例的具體實現中,限定值可以是100,以方便運算。此時,所運算得到的隨機數是一個100以內的數值。
在一個示例性實施例中,可以為應用的測試執行此步驟,進而為應用的測試模擬網絡場景,以使得應用測試是在模擬的網絡場景中進行的,應用的測試中能夠通過模擬的網絡場景模擬網絡切換。
在步驟130中,在處于已連接網絡狀態時,根據隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令。
其中,已連接網絡狀態,是指當前處于存在可用網絡并已連接至可用網絡的狀態。預先配置了網絡切換概率,網絡切換概率指示了所進行的網絡場景模擬中執行與網絡連接相關的切換操作的概率。
由于網絡連接所相關的切換是非常多的,比如,有網至無網的切換、無網至有網的切換、在有網條件下多種網絡類型相互之間的切換等等,與網絡連接相關的切換操作的執行,是用于實現某一網絡連接所相關的切換的。因此,與網絡連接相關的切換操作,非常多,并且在實際情況下,與網絡連接相關的切換操作的執行是具備隨機性的。
比如,在實際情況下,網絡連接所相關的切換,是隨著用戶的需求、或者終端所能夠連接網絡的情況以及應用中需要訪問網絡的功能等因素的存在而發生的,而這些因素本身就是隨機存在的,因此,必然導致了實際情況下網絡連接所相關的切換是隨機進行的,從而才會導致實際存在的網絡場景復雜。
基于此,在隨機數和網絡切換概率的控制下所生成的網絡連接修改指令,將使得后續所進行的與網絡連接相關的返回值的修改具備隨機性,進而保證了其是與真實存在的網絡相關的切換相適應。
在此應當說明的是,網絡切換概率對應的范圍,是由網絡切換概率和配置的限定值確定的。網絡切換概率和限定值在數值上的乘積便構成了網絡切換概率對應范圍中的上限值,即網絡切換概率對應的范圍,是在0至前述所指的上限值之間的數值范圍。
通過隨機數和網絡切換概率對應的范圍,在數值上對模擬的網絡場景劃分其所隨機對應的網絡連接狀況,進而生成相應的網絡連接修改指令。
在步驟150中,根據網絡連接修改指令修改與網絡連接相關的返回值,通過返回值的修改模擬網絡場景。
其中,網絡連接修改指令,指示了當前所執行的網絡連接相關的切換。而對于此網絡連接相關的切換,其通過對應的與網絡連接相關的返回值修改實現的。因此,網絡連接修改指令,指示了所需要修改的返回值。
例如,可以通過修改NetworkInfo.isConnected方法的返回值,將其由true修改為false,即可模擬由有網絡切換無網絡的網絡場景;也可以修改ConnectivityManager.getActiveNetworkInfo方法的返回值為空,便也能夠模擬由有網絡切換無網絡的網絡場景;還可以修改NetworkInfo.getType方法的返回值來切換至其它網絡類型,進而模擬發生了網絡類型切換的網絡場景,在此不進行一一列舉。
通過如上的過程,在隨機數和網絡切換概率的作用下,實現了網絡場景的模擬,并在這一網絡場景的模擬中隨機進行了一次與網絡切換概率相符合的網絡連接相關的切換,因此,其是與真實存在的網絡連接相關的切換相符的。
在此,可以通過反復執行的隨機數生成來不斷模擬網絡場景中隨機進行的多種網絡相關的切換,進而實現與真實存在的復雜網絡場景相符合的網絡場景模擬。
圖2是另一示例性實施例示出的一種實現網絡場景模擬的方法的流程圖。該步驟130之前,如圖2所示,該實現網絡場景模擬的方法,還可以包括以下步驟。
在步驟210中,觸發進行連網狀態的獲取,得到指示連網狀態的返回值。
其中,連網狀態,包括已連接網絡狀態和未連接網絡狀態。指示連網狀態的返回值,在一個示例性實施例的具體實現中,NetworkInfo對象為空,且NetworkInfo.isConnected方法返回的true。
具體的,所觸發進行的連網狀態的獲取,包括兩個層面。一是首先確認是否存在可用網絡;二是在確認存在可用網絡情況下獲得已連接網絡狀態或未連接網絡狀態。
在一個示例性實施例的具體實現中,將首先通過hook系統方法ConnectivityManager.getActiveNetworkInfo,來獲得返回值NetworkInfo對象,判斷返回值NetworkInfo對象是否為空,如果為空,則說明無可用網絡,如果不為空,則進一步通過hook系統方法NetworkInfo.isConnected獲得相應的返回值,并判斷此返回值是否為true,如果為true,則判定當前處于已連接網絡狀態。
在步驟230中,根據指示連網狀態的返回值判定處于已連接網絡狀態。
通過如上的過程,為圖1對應實施例中確認處于已連接網絡狀態提供了具體實現,進而使得網絡場景的模擬是在能夠連接網絡的基礎上進行的,以保證網絡場景模擬的可實施。
圖3是根據圖1對應實施例示出的對步驟130的細節在一個示例性實施例進行描述的流程圖。網絡切換概率包括有無連網切換概率,該步驟130,如圖3所示,可以包括以下步驟。
在步驟131中,在處于已連接網絡狀態時,判斷隨機數是否處于有無連網切換概率對應的范圍,如果為是,則執行步驟132,如果為否,則可不作處理。
其中,在通過圖2對應實施例,確認當前處于已連接網絡狀態之后,即可在隨機數和有無連網切換概率的作用下實現網絡場景的模擬,模擬的網絡場景中,進行了有網至無網的切換。
有無連網切換概率,用于指示網絡場景中有網至無網的切換概率。
與前述描述相類似的,有無連網切換概率對應的范圍,是指有無連網切換概率和限定值在數值上的乘積所限定的范圍,即0至有無連網切換概率和限定值在數值上的乘積所構成的數值范圍。
當前的網絡場景下,正處于已連接網絡狀態,如果隨機數處于有無連網切換概率對應的范圍,則執行步驟132,即通過生成網絡連接修改指令,以此來實現相應返回值的修改,進而由有網隨機切換至無網,實現發生了有網切換至無網的網絡場景模擬。
在步驟132中,生成對指示連網狀態的返回值進行修改的網絡連接修改指令。
其中,所生成的網絡連接修改指令,用于修改指示連網狀態的返回值,例如,前述所說的hook系統方法NetworkInfo.isConnected所對應的返回值,將其由true修改為false;或者,將前述hook系統方法ConnectivityManager.getActiveNetworkInfo返回的NetworkInfo對象修改為空,這些返回值的修改,都可實現有網至無網的切換,進而使得模擬的網絡場景能夠模擬真實存在的隨機切換為有網至無網的狀況。
通過如上所述的過程,實現了網絡場景中有網至無網的隨機模擬,進而能夠模擬真實存在的有網切換至無網的網絡場景,進而使應用的測試中能夠檢查應用在無網絡時是否會發生異常。
圖4是根據圖1對應實施例示出的對步驟130的細節在另一個示例性實施例進行描述的流程圖。該網絡切換概率還包括網絡類型切換概率,則步驟130,如圖4所示,還可以包括以下步驟。
在步驟133中,進一步判斷隨機數是否處于網絡切換概率對應的范圍,如果為是,則執行步驟134,如果為否,則執行步驟136。
其中,在圖3對應實施例所實現的有網切換至無網的網絡場景模擬基礎上,還可在網絡類型切換概率的作用下實現多種網絡類型切換的網絡場景模擬。
網絡類型切換概率,用于指示任意網絡類型之間發生切換的概率。在隨機數和網絡類型切換概率的作用下,實現網絡類型之間與網絡類型切換概率相符合的隨機切換。
網絡切換概率對應的范圍,是在有無連網切換概率對應的范圍之上由網絡切換概率延伸出來的范圍,即獲取有無連網切換概率與網絡切換概率之和,在此基礎上獲取與限定值之間的乘積,即為網絡切換概率對應范圍的上限值。0至這一上限值便構成了網絡切換概率對應的范圍。
在步驟134中,觸發進行網絡類型的獲取,得到指示網絡類型的返回值。
其中,觸發進行網絡類型的獲取也將是通過獲取相應的返回值實現的。例如,可以通過NetworkInfo.getType()方法獲得此返回值。
可以理解的,網絡類型,包括移動網絡、WiFi網絡等。返回值中指示的數值,是對應于一網絡類型的,因此,能夠通過獲取的返回值獲知網絡類型。
通過前述步驟判斷到隨機數據處于網絡切換概率對應的范圍,則說明可進行網絡類型的隨機切換,因此,需要執行當前步驟獲得指示網絡類型的返回值,以便于基于此返回值來生成相應的網絡連接修改指令。
在步驟135中,生成對指示網絡類型的返回值進行修改的網絡連接修改指令。
其中,根據返回值指示的網絡類型,生成將網絡類型切換為其它另一網絡類型的網絡連接修改指令,在執行此網絡修改指令進行返回值的修改之后,即可使得當前進行測試的應用認為網絡場景中發生了網絡類型的切換,進而檢查此應用在發生網絡類型的切換時是否發生異常。
在步驟136中,保持網絡場景。
通過如上所述的過程,模擬了網絡場景中網絡類型的隨機切換,使得網絡場景的模擬與真實存在的復雜網絡場景相符,與真實存在的復雜網絡場景相類似的,也會發生網絡類型的隨機切換。
通過如上所述的網絡場景模擬,使得應用的測試,能夠覆蓋復雜網絡場景,進而提高應用測試中發現網絡問題的概率,即提高應用的運行中網絡切換導致問題的概率,有助于幫助開發人員定位問題。
以一應用測試的過程為例,結合具體應用場景,描述該實現網絡場景模擬的方法。例如,圖5是根據一示例性實施例示出的一應用測試覆蓋復雜網絡場景的流程圖。
為此應用的測試,將設定網絡切換概率,此網絡切換概率,包括兩種概率值,一為有無連網切換概率P1,二為網絡類型切換概率P2,并配置限定值為110。
則如圖5所示的,計算一個100以內的隨機數,即執行步驟310。此隨機數,將用于為應用的測試模擬網絡場景中的一次網絡切換,這一網絡切換,根據隨機數的大小,可能是有網至無網的切換,也可以是網絡類型的切換。
執行步驟320至330,調用hook系統方法ConnectivityManager.getActiveNetworkInfo得到返回值NetworkInfo對象,判斷NetworkInfo對象是否為空,如果為空,則說明無網絡,此時,可結束整個流程。
如果NetworkInfo對象不為空,則執行步驟340,判斷hook系統方法NetworkInfo.isConnected的返回值是否為true,如果為true,則說明當前是處于已連接網絡狀態的。
在處于已連接網絡狀態時,即可進行網絡切換。在此應當說明的是,如果網絡切換概率僅有有無連網切換概率,則模擬有網至無網的切換;如果網絡切換概率還包括了網絡類型切換概率,則也可隨機模擬網絡類型的切換。
在圖5中,通過步驟350,判斷隨機數是否落在100*P1范圍內,來確定是隨機進行有網至無網的切換,還是隨機進行網絡類型的切換。
在隨機數是否落在100*P1范圍時,執行步驟360,通過修改返回值來模擬網絡場景中發生了有網至無網的切換,進而能夠在這一網絡場景中確認應用是否會由于有網至無網的切換產生問題。
如果隨機數未落在100*P1范圍,則執行步驟370,進一步判斷隨機數是否落在100*(P1+P2)范圍內,如果是,則可在網絡場景中模擬網絡類型的切換,即執行步驟380,進而在此網絡場景中確認應用是否會由于網絡類型的切換產生問題。
至此,便實現了復雜網絡場景的模擬,并具備非常高的真實性,進而使得在此基礎上應用測試的實現覆蓋復雜網絡場景。
下述為本公開裝置實施例,可以用于執行本公開上述實現網絡場景模擬的方法實施例。對于本公開裝置實施例中未披露的細節,請參照本公開實現網絡場景模擬的方法實施例。
圖6是根據一示例性實施例示出的一種實現網絡場景模擬的裝置的框圖。該實現網絡場景模擬的裝置,執行圖1所示的實現網絡場景模擬的方法的全部步驟。如圖6所示,該實現網絡場景模擬的裝置包括但不限于:隨機數生成模塊510、指令生成模塊530和返回值修改模塊550。
隨機數生成模塊510,用于按照配置的限定值進行隨機數生成,得到處于限定值限定范圍的隨機數。
指令生成模塊530,用于在處于已連接網絡狀態時,根據隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令。
返回值修改模塊550,用于根據網絡連接修改指令修改與網絡連接相關的返回值,通過返回值的修改模擬網絡場景。
圖7是根據另一示例性實施例示出的一種實現網絡場景模擬的裝置的框圖。該實現網絡場景模擬的裝置,如圖7所示,還包括但不限于:連網返回值獲得模塊610和連網狀態判定模塊630。
連網返回值獲得模塊610,用于觸發進行連網狀態的獲取,得到指示連網狀態的返回值。
連網狀態判定模塊630,用于根據指示連網狀態的返回值判定處于已連接網絡狀態。
圖8是根據圖6對應示例性實施例示出的對指令生成模塊的細節在一個示例性實施例進行描述的框圖。該指令生成模塊530,如圖8所示,可以包括但不限于:連網切換范圍判斷單元531和連網指令生成單元532。
連網切換范圍判斷單元531,用于在處于已連接網絡狀態時,判斷隨機數是否處于有無連網切換概率對應的范圍,如果為是,則觸發連網返回值修改單元532。
連網指令生成單元532用于生成對指示連網狀態的返回值進行修改的網絡連接修改指令。
圖9是根據圖6對應示例性實施例示出的對指令生成模塊的細節在一個示例性實施例進行描述的框圖。網絡切換概率包括網絡類型切換概率,該指令生成模塊530,如圖9所示,還可以包括但不限于:類型切換范圍判斷單元533、類型返回值獲得單元534和類型指令生成單元535。
類型切換范圍判斷單元533,用于如果隨機數未處于有無連網切換概率對應的范圍,則進一步判斷隨機數是否處于網絡切換概率對應的范圍,如果為是,則觸發類型返回值獲得單元534,如果為否,則保持網絡場景。
類型返回值獲得單元534用于觸發進行網絡類型的獲取,得到指示網絡類型的返回值。
類型指令生成單元535,用于生成對指示網絡類型的返回值進行修改的網絡連接修改指令。
圖10是根據一示例性實施例示出的一種裝置700的框圖。例如,700可以是各種終端。
參照圖10,裝置700可以包括以下一個或多個組件:處理組件702,存儲器704,電源組件706,多媒體組件708,音頻組件710,傳感器組件714以及通信組件716。
處理組件702通??刂蒲b置700的整體操作,諸如與顯示,電話呼叫,數據通信,相機操作以及記錄操作相關聯的操作等。處理組件702可以包括一個或多個處理器718來執行指令,以完成下述的方法的全部或部分步驟。此外,處理組件702可以包括一個或多個模塊,便于處理組件702和其他組件之間的交互。例如,處理組件702可以包括多媒體模塊,以方便多媒體組件708和處理組件702之間的交互。
存儲器704被配置為存儲各種類型的數據以支持在裝置700的操作。這些數據的示例包括用于在裝置700上操作的任何應用程序或方法的指令。存儲器704可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如靜態隨機存取存儲器(SRAM),電可擦除可編程只讀存儲器(EEPROM),可擦除可編程只讀存儲器(EPROM),可編程只讀存儲器(PROM),只讀存儲器(ROM),磁存儲器,快閃存儲器,磁盤或光盤。存儲器704中還存儲有一個或多個模塊,該一個或多個模塊被配置成由該一個或多個處理器718執行,以完成下述圖3、4和圖5任一所示方法中的全部或者部分步驟。
電源組件706為裝置700的各種組件提供電力。電源組件706可以包括電源管理系統,一個或多個電源,及其他與為裝置700生成、管理和分配電力相關聯的組件。
多媒體組件708包括在所述裝置700和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括液晶顯示器(LCD)和觸摸面板(TP)。如果屏幕包括觸摸面板,屏幕可以被實現為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關的持續時間和壓力。屏幕還可以包括有機電致發光顯示器(OLED)。
音頻組件710被配置為輸出和/或輸入音頻信號。例如,音頻組件710包括一個麥克風(MIC),當裝置700處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器704或經由通信組件716發送。在一些實施例中,音頻組件710還包括一個揚聲器,用于輸出音頻信號。
傳感器組件714包括一個或多個傳感器,用于為裝置700提供各個方面的狀態評估。例如,傳感器組件714可以檢測到裝置700的打開/關閉狀態,組件的相對定位,傳感器組件714還可以檢測裝置700或裝置700一個組件的位置改變以及裝置700的溫度變化。在一些實施例中,該傳感器組件714還可以包括磁傳感器,壓力傳感器或溫度傳感器。
通信組件716被配置為便于裝置700和其他設備之間有線或無線方式的通信。裝置700可以接入基于通信標準的無線網絡,如WiFi。在一個示例性實施例中,通信組件716經由廣播信道接收來自外部廣播管理系統的廣播信號或廣播相關信息。在一個示例性實施例中,所述通信組件716還包括近場通信(NFC)模塊,以促進短程通信。例如,在NFC模塊可基于射頻識別(RFID)技術,紅外數據協會(IrDA)技術,超寬帶(UWB)技術,藍牙(BT)技術和其他技術來實現。
在示例性實施例中,裝置700可以被一個或多個應用專用集成電路(ASIC)、數字信號處理器(DSP)、數字信號處理設備(DSPD)、可編程邏輯器件(PLD)、現場可編程門陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實現,用于執行下述方法。
可選的,本公開還提供一種終端,該終端可以執行圖1、圖2、圖3和圖4任一所示的實現網絡場景模擬的方法的全部或者部分步驟。所述裝置包括:
處理器;
用于存儲處理器可執行指令的存儲器;
其中,所述處理器被配置為執行:
按照配置的限定值進行隨機數生成,得到處于所述限定值限定范圍的隨機數;
在處于已連接網絡狀態時,根據所述隨機數與網絡切換概率對應范圍二者之間的關系生成網絡連接修改指令;
根據所述網絡連接修改指令修改與網絡連接相關的返回值,通過所述返回值的修改模擬網絡場景。
該實施例中的裝置的處理器執行操作的具體方式已經在有關該實現網絡場景模擬的方法的實施例中執行了詳細描述,此處將不做詳細闡述說明。
在示例性實施例中,還提供了一種存儲介質,該存儲介質為計算機可讀存儲介質,例如可以為包括指令的臨時性和非臨時性計算機可讀存儲介質。該存儲介指例如包括指令的存儲器704,上述指令可由裝置700的處理器718執行以完成上述實現網絡場景模擬的方法方法。
應當理解的是,本發明并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍執行各種修改和改變。本發明的范圍僅由所附的權利要求來限制。