CN104092579B - 网络类型的模拟方法及装置 - Google Patents

网络类型的模拟方法及装置 Download PDF

Info

Publication number
CN104092579B
CN104092579B CN201410049143.1A CN201410049143A CN104092579B CN 104092579 B CN104092579 B CN 104092579B CN 201410049143 A CN201410049143 A CN 201410049143A CN 104092579 B CN104092579 B CN 104092579B
Authority
CN
China
Prior art keywords
network
network type
measurand
virtual
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410049143.1A
Other languages
English (en)
Other versions
CN104092579A (zh
Inventor
鲁四喜
郑辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410049143.1A priority Critical patent/CN104092579B/zh
Publication of CN104092579A publication Critical patent/CN104092579A/zh
Application granted granted Critical
Publication of CN104092579B publication Critical patent/CN104092579B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开一种网络类型的模拟方法及装置,本发明实施例接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;读取所述网络类型虚拟变更指令映射的网络配置文件,获取所述网络配置文件对应的第二网络类型;触发所述被测对象执行将第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作;相较于现有技术中,寻找测试所需的实际物理网络类型的测试环境,本发明实施例具有通过软件模拟测试环境所需的不同的网络类型的有益效果,且网络类型切换方便,同时节约了配置实际测试所需的不同物理网络类型的成本。

Description

网络类型的模拟方法及装置
技术领域
本发明涉及互联网领域,尤其涉及一种网络类型的模拟方法及装置。
背景技术
在与网络类型相关的智能终端的测试中,需要覆盖各类不同的网络类型比如WiFi(WirelessFidelity,无线局域网)、3G(The3rdGenerationTelecommunication,第3代移动通信技术)、Edge(EnhancedDataRatesforGSMEvolution,改进数据率GSM服务)、WAP(WirelessApplicationProtocol,无线应用协议)等,现有的测试方案通常是基于实际的物理终端实体比如手机和对应的手机卡在真实的物理环境下进行测试。
目前这种基于实际的物理终端实体来覆盖各种网络类型的测试方案,在实际测试时一些网络场景很难自由切换和覆盖到,比如从3G模式变更到Edge模式时,需要寻找到3G信号较弱的场所,这给测试带来了不必要的麻烦;且寻找到测试环境通常也不能很好地满足实际的测试需求。
发明内容
鉴于以上内容,有必要提供一种网络类型的模拟方法及装置,使得能够通过软件测试平台来模拟测试环境所需的不同的网络类型。
本发明实施例公开了一种网络类型的模拟方法,包括以下步骤:
接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时所处的第一网络类型切换至所述网络类型虚拟变更指令指向的第二网络类型;
读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;
触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作。
本发明实施例还公开了一种网络类型的模拟装置,包括:
变更通知模块,用于接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时所处的第一网络类型切换至所述网络类型虚拟变更指令指向的第二网络类型;
虚拟切换模块,用于读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作。
本发明实施例接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;读取所述网络类型虚拟变更指令映射的网络配置文件,获取所述网络配置文件对应的第二网络类型;触发所述被测对象执行将第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作;相较于现有技术中,寻找测试所需的实际物理网络类型的测试环境,本发明实施例具有通过软件模拟测试环境所需的不同的网络类型的有益效果,且网络类型切换方便,同时节约了配置实际测试所需的不同物理网络类型的成本。
附图说明
图1是本发明网络类型的模拟方法第一实施例流程示意图;
图2是本发明网络类型的模拟方法第二实施例流程示意图;
图3是本发明网络类型的模拟装置第一实施例功能模块示意图;
图4是本发明网络类型的模拟装置第二实施例功能模块示意图;
图5是本发明网络类型的模拟装置在android操作系统中运行时的系统构示意图;
图6是本发明网络类型的模拟装置一实施例硬件架构示意图。
本发明实施例目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种网络类型的模拟方法第一实施例;如图1所示,本发明网络类型的模拟方法包括以下步骤:
步骤S11、接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;
当测试人员手动触发终端的网络类型变更时,比如将Wifi网络更改为3G网络时,终端接收网络类型虚拟变更指令,主动发送切换网络类型的通知信息至各个被测对象;上述切换网络类型的通知信息只能由终端发出,终端上各应用类软件均没有权限发出上述通知信息,若应用类软件强行发送则会导致该应用软件运行失败。在一具体的应用场景中,比如针对android操作系统的终端,当测试人员通过修改网络类型配置文件触发网络类型虚拟变更指令时,插桩脚本会主动发送com.tencent.scream.intents.fake_nettype的通知信息至各个被测对象。
本实施例中,定义终端接收所述网络类型虚拟变更指令时被测对象所认为的当前所使用的网络类型为第一网络类型,所述网络类型虚拟变更指令所指向的网络类型为第二网络类型;其中,上述被测对象所认为的当前所使用的网络类型包括:被测对象所使用的实际物理网络类型以及模拟网络类型。所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时被测对象所处的网络类型即第一网络类型切换至该网络类型虚拟变更指令所指向的网络类型即第二网络类型。
步骤S12、读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;
本实施例中,上述网络类型虚拟变更指令对应的网络配置文件中存储了测试人员所期望的网络类型参数,比如Wifi、3G、Edge等;且在实际操作中,若需要模拟切换网络类型,只需修改该网络配置文件即可;因此,通过读取该网络配置文件,便可获取到该网络配置文件对应的第二网络类型。
步骤S13、触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作。
获取到所需切换的第二网络类型后,终端触发被测对象执行将第一网络类型切换至第二网络类型对应的虚拟网络变更事件;被测对象执行上述第一网络类型切换至第二网络类型对应的虚拟网络变更事件,比如,被测对象将某一应用模式由第一网络类型对应的模式一切换至第二网络类型对应的模式二,并基于虚拟切换后的第二网络类型执行用户触发的其他操作事件。比如,测试人员需要测试上述被测对象中的浏览器在3G网络下的运行情况,并在模拟切换后的3G网络下打开浏览器;则浏览器响应用户触发的打开这一操作事件,并基于3G网络,浏览器加载开启后默认的网页页面。
本发明实施例接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;读取所述网络类型虚拟变更指令映射的网络配置文件,获取所述网络配置文件对应的第二网络类型;触发所述被测对象执行将第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作;相较于现有技术中,寻找测试所需的实际物理网络类型的测试环境,本发明实施例具有通过软件模拟测试环境所需的不同的网络类型的有益效果,且网络类型切换方便,同时节约了配置实际测试所需的不同物理网络类型的成本。
本发明实施例还提供了一种网络类型的模拟方法第二实施例;本实施例与图1所述实施例的区别是,本发明实施例描述的是,在运行被测对象之前,编译被测应用程序,得到上述被测对象。
基于图1所述实施例的描述,如图2所示,本发明网络类型的模拟方法在步骤S11、接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象,之前还包括:
步骤S01、编译被测应用程序,得到编译后的被测对象;
编译被测应用程序的过程主要是完成对被测应用程序的编译插桩;由于并非所有的被测应用程序均能够支持本发明实施例所描述的网络类型的模拟方法,因此,需要对被测应用程序进行筛选和过滤,找出能够支持网络类型的模拟方法并符合条件的被测应用程序;比如,通过一定的过滤规则,在指定系统API被调用处插入插桩脚本,并对插入插桩脚本后的被测应用程序进行编译,得到编译后的被测对象。以android操作系统为例,本实施例中,编译后的被测对象可以理解为Android上被测应用程序被编译成的javaclass这类中间文件;若编译后的被测对象不是class文件,则可以将其转换为class文件;比如,如果是源码可以用javac进行编译;如果是android的apk包,也可以将apk转换为class文件。
在本发明一优选实施例中,终端实时监控被测应用程序的操作事件;当监控到被测应用程序访问预设类型应用程序接口的访问事件,加载虚拟变更网络类型的插桩脚本,生成插桩后的被测对象。比如,对于android操作系统,可以通过编写插桩规则,基于AOP(AspectOrientedProgramming,面向切面编程)技术比如利用AspectJ(面向方面编程)工具对被测应用程序访问特定的API(ApplicationProgrammingInterface,应用程序接口)代码进行截获,插入插桩脚本进而生成插桩后的被测对象;上述特定的API可以理解为查询网络类型API;在android操作系统中,查询网络类型API主要有:
android.net.NetworkInfo.getType()、android.net.NetworkInfo.getSubType()和android.net.NetworkInfo.getExtraInfo()等。基于图1所述实施例的描述,当插桩脚本在上述这类API被调用执行时,不是返回系统API的执行结果,而是返回从网络配置文件中读取的内容,返回执行的网络类型,而不是终端当前使用的真实的物理网络类型,从而达到模拟网络类型的目的。
步骤S02、定义虚拟切换网络类型对应的所述虚拟网络变更事件,注册被测对象,使已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
终端基于上述插桩脚本,自定义一个虚拟切换网络类型对应的虚拟网络变更事件,同时注册被测对象;所述注册被测对象可以理解为,通过对上述编译后的被测对象进行注册,将虚拟切换网络类型对应的所述虚拟网络变更事件强加给被测对象,使得已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
比如,对于android操作系统的终端,基于上述插桩脚本,终端自定义一个虚拟切换网络类型对应的虚拟网络变更事件,比如定义的该虚拟网络变更事件com.tencent.scream.intents.fake_nettype,并将上述虚拟网络变更事件强加给各个android.net.conn.CONNECTIVITY_CHANGE事件接收者,即注册后的被测对象;则在接收到网络类型变更通知时,广播该虚拟网络变更事件,从而触发被测对象如各个android.net.conn.CONNECTIVITY_CHANGE事件接收者处理函数onReceive(),比如处理接收到的虚拟网络变更事件。
本发明实施例中,可以采用静态注册方式和/或动态注册方式对接收所述虚拟网络变更事件的被测对象进行注册。
对于采用静态注册方式注册的被测对象,可以通过修改编译前被测对象的配置文件来追加一条过滤规则,从而完成对被测对象的静态注册。以android操作系统为例,可以在编译前被测对象的配置文件AndroidManifest.xml中显示声明android.net.conn.CONNECTIVITY_CHANGE事件的接收者;比如修改该xml文件,追加一条过滤规如上述的com.tencent.scream.intents.fake_nettype。
对于动态注册方式注册的被测对象,根据预设过滤规则,获取满足上述过滤规则的被测对象,比如过滤出对系统注册函数进行调用的被测对象;判断过滤出的被测对象基于调用的所述系统注册函数所注册的操作事件是否为所述虚拟网络变更事件;若是所述虚拟网络变更事件,则对所述被测对象追加注册虚假消息事件。仍android操作系统为例,首先过滤出对系统注册函数registerReceiver()函数进行调用的被测对象,然后判断过滤出的被测对象基于调用的系统注册函数registerReceiver()所执行的操作事件类型是否为虚拟网络变更事件android.net.conn.CONNECTIVITY_CHANGE,若上述操作事件的类型为虚拟网络变更事件android.net.conn.CONNECTIVITY_CHANGE,则追加注册虚假消息事件com.tencent.scream.intents.fake_nettype,完成对被测对象的注册。
本发明实施例通过对被测应用程序进行编译和注册,得到注册后的被测对象,使得在上述被测对象在后续测试运行时达到和真实网络类型切换相同的技术效果,节约了配置真实网络类型切换所需的硬件成本。
本发明实施例还提供了一种网络类型的模拟装置第一实施例;如图3所示,本发明网络类型的模拟装置包括:变更通知模块01和虚拟切换模块02。
变更通知模块01,用于接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时所处的第一网络类型切换至所述网络类型虚拟变更指令指向的第二网络类型;
当测试人员手动触发终端的网络类型变更时,比如将Wifi网络更改为3G网络时,终端的变更通知模块01接收网络类型虚拟变更指令,主动发送切换网络类型的通知信息至各个被测对象;上述切换网络类型的通知信息只能由终端发出,终端上各应用类软件均没有权限发出上述通知信息,若应用类软件强行发送则会导致该应用软件运行失败。在一具体的应用场景中,比如针对android操作系统的终端,当测试人员通过修改网络类型配置文件触发网络类型虚拟变更指令时,变更通知模块01会主动发送com.tencent.scream.intents.fake_nettype的通知信息至各个被测对象。
本实施例中,定义终端接收所述网络类型虚拟变更指令时被测对象所认为的当前所使用的网络类型为第一网络类型,所述网络类型虚拟变更指令所指向的网络类型为第二网络类型;其中,上述被测对象所认为的当前所使用的网络类型包括:被测对象所使用的实际物理网络类型以及模拟网络类型。所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时被测对象所处的网络类型即第一网络类型切换至该网络类型虚拟变更指令所指向的网络类型即第二网络类型。
虚拟切换模块02,用于读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作。
本实施例中,上述网络类型虚拟变更指令对应的网络配置文件中存储了测试人员所期望的网络类型参数,比如Wifi、3G、Edge等;且在实际操作中,若需要模拟切换网络类型,只需修改该网络配置文件即可;因此,虚拟切换模块02通过读取该网络配置文件,便可获取到该网络配置文件对应的第二网络类型。
虚拟切换模块02获取到所需切换的第二网络类型后,虚拟切换模块02触发被测对象执行将第一网络类型切换至第二网络类型对应的虚拟网络变更事件;被测对象执行上述第一网络类型切换至第二网络类型对应的虚拟网络变更事件,比如,被测对象将某一应用模式由第一网络类型对应的模式一切换至第二网络类型对应的模式二,并基于虚拟切换后的第二网络类型执行用户触发的其他操作事件。以被测对象是浏览器为例,比如,测试人员需要测试上述被测对象中的浏览器在3G网络下的运行情况,并在模拟切换后的3G网络下打开浏览器;则浏览器响应用户触发的打开这一操作事件,并基于3G网络,浏览器加载开启后默认的网页页面。
本发明实施例接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;读取所述网络类型虚拟变更指令映射的网络配置文件,获取所述网络配置文件对应的第二网络类型;触发所述被测对象执行将第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作;相较于现有技术中,寻找测试所需的实际物理网络类型的测试环境,本发明实施例具有通过软件模拟测试环境所需的不同的网络类型的有益效果,且网络类型切换方便,同时节约了配置实际测试所需的不同物理网络类型的成本。
本发明实施例还提供了一种网络类型的模拟装置第二实施例;本实施例与图3所述实施例的区别是,本发明实施例还包括编译插桩模块03,编译插桩模块03在运行被测对象之前,编译被测应用程序,得到上述被测对象。
如图4所示,本发明网络类型的模拟装置还包括:
编译插桩模块03,用于:编译被测应用程序,得到编译后的被测对象;定义虚拟切换网络类型对应的所述虚拟网络变更事件,注册被测对象,使已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
编译插桩模块03编译被测应用程序的过程主要是完成对被测应用程序的编译插桩;由于并非所有的被测应用程序均能够支持本发明实施例所描述的网络类型的模拟方法,因此,编译插桩模块03需要对被测应用程序进行筛选和过滤,找出能够支持网络类型的模拟方法并符合条件的被测应用程序;比如,编译插桩模块03通过一定的过滤规则,在指定系统API被调用处插入插桩脚本,并对插入插桩脚本后的被测应用程序进行编译,得到编译后的被测对象;上述指定系统API可以理解为查询网络类型API。以android操作系统为例,本实施例中,编译插桩模块03编译后的被测对象可以理解为Android上被测应用程序被编译成的javaclass这类中间文件;若编译后的被测对象不是class文件,则编译插桩模块03可以将其转换为class文件;比如,如果是源码可以用javac进行编译;如果是android的apk包,编译插桩模块03也可以将apk转换为class文件。
在本发明一优选实施例中,编译插桩模块03实时监控被测应用程序的操作事件;当监控到被测应用程序访问预设类型应用程序接口的访问事件,编译插桩模块03加载虚拟变更网络类型的插桩脚本,生成插桩后的被测对象。比如,对于android操作系统,编译插桩模块03可以通过编写插桩规则,基于AOP技术比如利用AspectJ工具对被测应用程序访问特定的API代码进行截获,插入插桩脚本进而生成插桩后的被测对象;上述特定的API可以理解为查询网络类型API;在android操作系统中,查询网络类型API主要有:
android.net.NetworkInfo.getType()、android.net.NetworkInfo.getSubType()和android.net.NetworkInfo.getExtraInfo()等。基于图3所述实施例的描述,当插桩脚本在上述这类API被调用执行时,不是返回系统API的执行结果,而是返回从网络配置文件中读取的内容,返回执行的网络类型,而不是终端当前使用的真实的物理网络类型,从而达到模拟网络类型的目的。
编译插桩模块03基于上述插桩脚本,自定义一个虚拟切换网络类型对应的虚拟网络变更事件,同时注册被测对象;所述注册被测对象可以理解为,通过对上述编译后的被测对象进行注册,将虚拟切换网络类型对应的所述虚拟网络变更事件强加给被测对象,使得已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
比如,对于android操作系统的终端,基于上述插桩脚本,编译插桩模块03自定义一个虚拟切换网络类型对应的虚拟网络变更事件,比如定义的该虚拟网络变更事件com.tencent.scream.intents.fake_nettype,并将上述虚拟网络变更事件强加给各个android.net.conn.CONNECTIVITY_CHANGE事件接收者,即注册后的被测对象;则在接收到网络类型变更通知时,变更通知模块01广播该虚拟网络变更事件,从而虚拟切换模块02触发被测对象如各个android.net.conn.CONNECTIVITY_CHANGE事件接收者处理函数onReceive(),比如处理接收到的虚拟网络变更事件。
本发明实施例中,编译插桩模块03可以采用静态注册方式和/或动态注册方式对接收所述虚拟网络变更事件的被测对象进行注册。
对于采用静态注册方式注册的被测对象,编译插桩模块03可以通过修改编译前被测对象的配置文件来追加一条过滤规则,从而完成对被测对象的静态注册。以android操作系统为例,可以在编译前被测对象的配置文件AndroidManifest.xml中显示声明android.net.conn.CONNECTIVITY_CHANGE事件的接收者;比如修改该xml文件,追加一条过滤规如上述的com.tencent.scream.intents.fake_nettype。
对于动态注册方式注册的被测对象,编译插桩模块03根据预设过滤规则,获取满足上述过滤规则的被测对象,比如过滤出对系统注册函数进行调用的被测对象;判断过滤出的被测对象基于调用的所述系统注册函数所注册的操作事件是否为所述虚拟网络变更事件;若是所述虚拟网络变更事件,编译插桩模块03则对所述被测对象追加注册虚假消息事件。仍android操作系统为例,编译插桩模块03首先过滤出对系统注册函数registerReceiver()进行调用的被测对象,判断过滤出的被测对象基于调用的系统注册函数registerReceiver()所执行的操作事件的事件类型是否为虚拟网络变更事件android.net.conn.CONNECTIVITY_CHANGE,若上述操作事件的类型为虚拟网络变更事件android.net.conn.CONNECTIVITY_CHANGE,则追加注册虚假消息事件com.tencent.scream.intents.fake_nettype,完成对被测对象的注册。
本发明实施例通过对被测应用程序进行编译和注册,得到注册后的被测对象,使得在上述被测对象在后续测试运行时达到和真实网络类型切换相同的技术效果,节约了配置真实网络类型切换所需的硬件成本。
本发明实施例还提供了网络类型的模拟装置对应的系统架构实施例;基于图1、图2、图3和图4所述实施例的描述,请参照图5,图5所述的系统架构以android操作系统为例进行描述,该系统在运行上述网络类型的模拟方法时,主要分为两个阶段:编译阶段和运行阶段;在编译阶段主要由图4所述实施例的编译插桩模块03执行,在运行阶段,主要由图3和图4所述实施例的变更通知模块01和虚拟切换模块02执行;其中,图5所示的插桩编译器具备上述编译插桩模块03的功能。本实施例以插桩编译器为例进行描述。
在被测应用程序的编译阶段,利用插桩脚本的不同功能,将以上实施例所描述的插桩脚本分为网络类型虚拟变更插桩脚本和网络类型变更通知插桩脚本,利用插桩编译器将编译后的被测应用程序与上述网络类型虚拟变更插桩脚本和网络类型变更通知插桩脚本进行编译,得到插桩后的被测对象;其中,在android操作系统中,上述网络类型虚拟变更插桩脚本和网络类型变更通知插桩脚本可以为AspectJ文件,编译后的被测应用程序可以为javaclass文件,编译插桩后得到的被测对象可以为androidapk文件。编译阶段主要完成对被测应用程序进行编译插桩,通过预设插桩规则,在Android平台利用AOP技术对被测应用程序访问特定API的代码进行截获,插入插桩脚本进而生成插桩后的被测对象,并对上述被测对象进行注册,使得注册后的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
上述编译阶段对图5所示的网络类型虚拟变更插桩脚本进行编译后,逻辑上会成为运行阶段的虚拟切换模块02,对图5所示的网络类型变更通知插桩脚本进行编译后,逻辑上会成为运行阶段的变更通知模块01。如图5所示,基于上述注册后的被测对象,当系统接收到测试人员触发的网络类型虚拟变更指令时,比如监测到网络类型配置文件被修改时,系统会主动发出对应的com.tencent.scream.intents.fake_nettype通知,该通知的接收者同时也是注册过android.net.conn.CONNECTIVITY_CHANGE的接收者即注册后的被测对象,从而也被触发;此时虚拟切换模块02会监听各个已注册的被测对象即上述的com.tencent.scream.intents.fake_nettype的接收者的onReceive函数,并在触发前修改action参数类型,将其从com.tencent.scream.intents.fake_nettype修改为android.net.conn.CONNECTIVITY_CHANGE,同时,变更通知模块01在网络类型变更时会主动通知插桩后的被测对象,从而达到和终端发出网络变更通知相同的效果。或者,在运行阶段,插桩后的被测对象在执行过程中,当网络类型查询API被调用时,虚拟切换模块02会读取网络配置文件,返回指定的网络类型,而不是终端当前的真实网络类型,从而达到网络类型模拟切换的目的,同时变更通知模块01在网络类型变更时会主动通知插桩后的被测对象,达到和真实网络切换相同的效果。
本发明实施例还提供了一种网络类型的模拟装置一实施例硬件架构示意图;如图6所示,该网络类型的模拟装置包括:处理器101、存储器102、用户接口103、网络接口104以及通信总线105。通信总线105用于网络类型的模拟装置(以下简称“终端”)中各组成部件之间的通信,用户接口103用于接收用户输入的信息,该用户接口可以为有线接口及无线接口,例如键盘、鼠标等。网络接口104用于验证终端与外部进行互相通信,该网络接口也可以包括有线接口及无线接口。存储器102可以包括一个或一个以上计算机可读存储介质,而且其不但包括内部存储器,还包括外部存储器。该存储器中存储有操作系统及网络类型模拟应用程序等等。处理器101用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
处理器101通过用户接口103或者网络接口104检测到网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时所处的第一网络类型切换至所述网络类型虚拟变更指令指向的第二网络类型;
处理器101通过所述通信总线105读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;
触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作。
由于终端提供了模拟切换网络类型的功能,使得被测对象误认为自身的运行的网络为模拟切换后的网络,实现了通过软件模拟测试环境所需的不同的网络类型的有益效果,节约了配置实际测试所需的不同物理网络类型的成本。
进一步地,处理器101还用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
编译被测应用程序,得到编译后的被测对象;
定义虚拟切换网络类型对应的所述虚拟网络变更事件,注册被测对象,使已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
进一步地,处理器101还用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
利用通信总线105监控到被测应用程序访问预设类型应用程序接口的访问事件,加载虚拟变更网络类型的插桩脚本,生成插桩后的被测对象。
进一步地,所述预设类型应用程序接口为网络类型查询对应的应用程序接口。
进一步地,处理器101还用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
采用静态注册方式和/或动态注册方式对接收所述虚拟网络变更事件的被测对象进行注册。
进一步地,处理器101还用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
修改编译前被测对象的配置文件,对所述被测对象进行注册。
进一步地,处理器101还用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
根据预设过滤规则,过滤出对系统注册函数进行调用的被测对象;
在过滤出的被测对象基于调用的所述系统注册函数注册所述虚拟网络变更事件时,对所述被测对象追加注册虚假消息事件,完成对所述被测对象的注册。
进一步地,处理器101还用于调用存储器102中的网络类型模拟应用程序,以执行以下操作:
判断过滤出的所述被测对象基于调用的所述系统注册函数所注册的操作事件是否为所述虚拟网络变更事件;
若是所述虚拟网络变更事件,则对所述被测对象追加注册虚假消息事件。
本发明网络类型的模拟装置能够模拟测试环境所需要的网络类型,使得在上述被测对象在后续测试运行时达到和真实网络类型切换相同的技术效果,节约了配置真实网络类型切换所需的硬件成本,且在模拟的网络类型之间切换时操作简单、便捷,提高了人机的可交互性和模拟装置的智能性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (12)

1.一种网络类型的模拟方法,其特征在于,包括以下步骤:
接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时所处的第一网络类型切换至所述网络类型虚拟变更指令指向的第二网络类型;
读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;
触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作;
所述接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象,之前还包括:
编译被测应用程序,得到编译后的被测对象;
所述编译被测应用程序,得到编译后的被测对象,包括:
监控到被测应用程序访问预设类型应用程序接口的访问事件时,加载虚拟变更网络类型的插桩脚本,生成插桩后的被测对象;
定义虚拟切换网络类型对应的所述虚拟网络变更事件,注册被测对象,使已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
2.如权利要求1所述的方法,其特征在于,所述预设类型应用程序接口为网络类型查询对应的应用程序接口。
3.如权利要求1~2中任意一项所述的方法,其特征在于,所述注册被测对象包括:
采用静态注册方式和/或动态注册方式对接收所述虚拟网络变更事件的被测对象进行注册。
4.如权利要求3所述的方法,其特征在于,所述采用静态注册方式对接收所述虚拟网络变更事件的被测对象进行注册,包括:
修改编译前被测对象的配置文件,对所述被测对象进行注册。
5.如权利要求3所述的方法,其特征在于,所述采用动态注册方式对接收所述虚拟网络变更事件的被测对象进行注册,包括:
根据预设过滤规则,过滤出对系统注册函数进行调用的被测对象;
在过滤出的被测对象基于调用的所述系统注册函数注册所述虚拟网络变更事件时,对所述被测对象追加注册虚假消息事件,完成对所述被测对象的注册。
6.如权利要求5所述的方法,其特征在于,所述在过滤出的被测对象基于调用的所述系统注册函数注册所述虚拟网络变更事件时,对所述被测对象追加注册虚假消息事件,包括:
判断过滤出的被测对象基于调用的所述系统注册函数所注册的操作事件是否为所述虚拟网络变更事件;
若是所述虚拟网络变更事件,则对所述被测对象追加注册虚假消息事件。
7.一种网络类型的模拟装置,其特征在于,包括:
变更通知模块,用于接收网络类型虚拟变更指令,发送切换网络类型的通知信息至被测对象;所述切换网络类型的通知信息包括:将接收所述网络类型虚拟变更指令时所处的第一网络类型切换至所述网络类型虚拟变更指令指向的第二网络类型;
虚拟切换模块,用于读取所述网络类型虚拟变更指令对应的网络配置文件,获取所述网络配置文件对应的所述第二网络类型;触发所述被测对象执行将所述第一网络类型切换至所述第二网络类型对应的虚拟网络变更事件,使得所述被测对象基于虚拟切换后的所述第二网络类型执行对应操作;
编译插桩模块,用于:
编译被测应用程序,得到编译后的被测对象;
所述编译插桩模块还用于:
监控到被测应用程序访问预设类型应用程序接口的访问事件,加载虚拟变更网络类型的插桩脚本,生成插桩后的被测对象;
定义虚拟切换网络类型对应的所述虚拟网络变更事件,注册被测对象,使已注册的被测对象在接收到切换网络类型的所述通知信息时强制执行所述虚拟网络变更事件。
8.如权利要求7所述的装置,其特征在于,所述预设类型应用程序接口为网络类型查询对应的应用程序接口。
9.如权利要求7~8中任意一项所述的装置,其特征在于,所述编译插桩模块还用于:
采用静态注册方式和/或动态注册方式对接收所述虚拟网络变更事件的被测对象进行注册。
10.如权利要求9所述的装置,其特征在于,所述编译插桩模块还用于:
修改编译前被测对象的配置文件,对所述被测对象进行注册。
11.如权利要求9所述的装置,其特征在于,所述编译插桩模块还用于:
根据预设过滤规则,过滤出对系统注册函数进行调用的被测对象;
在过滤出的被测对象基于调用的所述系统注册函数注册所述虚拟网络变更事件时,对所述被测对象追加注册虚假消息事件,完成对所述被测对象的注册。
12.如权利要求11所述的装置,其特征在于,所述编译插桩模块还用于:
判断过滤出的被测对象基于调用的所述系统注册函数所注册的操作事件是否为所述虚拟网络变更事件;
若是所述虚拟网络变更事件,则对所述被测对象追加注册虚假消息事件。
CN201410049143.1A 2014-02-12 2014-02-12 网络类型的模拟方法及装置 Active CN104092579B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410049143.1A CN104092579B (zh) 2014-02-12 2014-02-12 网络类型的模拟方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410049143.1A CN104092579B (zh) 2014-02-12 2014-02-12 网络类型的模拟方法及装置

Publications (2)

Publication Number Publication Date
CN104092579A CN104092579A (zh) 2014-10-08
CN104092579B true CN104092579B (zh) 2016-06-08

Family

ID=51640261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410049143.1A Active CN104092579B (zh) 2014-02-12 2014-02-12 网络类型的模拟方法及装置

Country Status (1)

Country Link
CN (1) CN104092579B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106656605B (zh) * 2016-12-26 2020-03-20 腾讯科技(深圳)有限公司 实现网络场景模拟的方法和装置
WO2019061039A1 (zh) * 2017-09-26 2019-04-04 Oppo广东移动通信有限公司 切换网络的方法、终端设备和网络设备
CN109644380B (zh) * 2018-02-12 2020-08-04 Oppo广东移动通信有限公司 无线通信的方法、网络设备和终端设备
CN110855456B (zh) * 2018-08-20 2022-09-30 阿里巴巴集团控股有限公司 网络变更的方法及设备
CN109769100A (zh) * 2019-01-17 2019-05-17 苏州科达科技股份有限公司 视频会议测试方法、装置及存储介质
CN111611140B (zh) * 2020-04-30 2023-05-16 广州华多网络科技有限公司 埋点数据的上报验证方法、装置、电子设备及存储介质
CN114866605B (zh) * 2021-01-19 2024-05-17 北京神州数码云科信息技术有限公司 网络变更代理方法、装置、电子设备和存储介质
CN113891368A (zh) * 2021-10-21 2022-01-04 深圳市腾讯网络信息技术有限公司 网络环境显示方法、装置、存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102802172A (zh) * 2012-07-27 2012-11-28 大唐移动通信设备有限公司 一种基于智能终端的无线通信质量测试方法和装置
CN103207969A (zh) * 2013-04-12 2013-07-17 百度在线网络技术(北京)有限公司 检测Android恶意软件的装置以及方法
CN103248709A (zh) * 2013-05-23 2013-08-14 网宿科技股份有限公司 无线信号自动化仿真方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102802172A (zh) * 2012-07-27 2012-11-28 大唐移动通信设备有限公司 一种基于智能终端的无线通信质量测试方法和装置
CN103207969A (zh) * 2013-04-12 2013-07-17 百度在线网络技术(北京)有限公司 检测Android恶意软件的装置以及方法
CN103248709A (zh) * 2013-05-23 2013-08-14 网宿科技股份有限公司 无线信号自动化仿真方法及系统

Also Published As

Publication number Publication date
CN104092579A (zh) 2014-10-08

Similar Documents

Publication Publication Date Title
CN104092579B (zh) 网络类型的模拟方法及装置
CN110046101B (zh) 页面自动化测试方法、装置及计算机存储介质
CN101902756B (zh) M2m业务平台及其工作方法
CN105303112B (zh) 组件调用漏洞的检测方法及装置
CN102170495A (zh) 手机应用分类管理方法及装置
CN104134041A (zh) 终端模拟器系统的反检测方法和反检测装置
CN104683386A (zh) 可定制响应的桩服务实现方法及装置
CN109683997B (zh) 通过沙箱访问应用程序接口的方法、沙箱及沙箱设备
CN107608609B (zh) 一种事件对象发送方法与装置
CN109062616A (zh) 移动终端的系统自适应方法、移动终端及存储介质
CN105653438A (zh) 安卓设备的跨进程自动化测试方法和装置
CN105404574A (zh) 一种智能卡与移动终端一致性测试方法及装置
CN112541313A (zh) 为逻辑分析态配置触发表达式的方法和装置
CN105182111A (zh) 一种移动终端的性能测试方法及系统
CN110162310B (zh) 插件接口测试方法及装置、计算机设备及存储介质
CN112241362A (zh) 一种测试方法、装置、服务器及存储介质
CN104703197A (zh) 一种基于ttcn-3的终端协议一致性测试平台及方法
CN107239405B (zh) 一种基于Android多浏览器内核的自动化测试方法
CN111459802A (zh) 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备
CN108512882B (zh) 位置信息的修改方法及装置
CN109857374A (zh) 移动应用的开发方法及装置
CN105656519A (zh) 一种信息处理方法及电子设备
CN113691413B (zh) 一种物联网设备兼容多模组的方法和系统
CN106155722A (zh) 一种软件页面更新方法及终端
CN106547686B (zh) 产品测试方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant