本发明涉及通信技术领域,尤其涉及一种移动终端的测试代理方法及装置、计算机可读存储介质。
背景技术:
目前移动终端用户界面(User Interface,UI)自动化测试在测试覆盖面上带有不少局限性,如,只能检查一般的业务逻辑,对于复杂的UI表现如列表类数据的检查显得较为吃力和低效。无法针对开关值、状态值等没有UI的内容进行校验,典型的有:运营开关,用户状态等。另外,因场景构造难度较大,很难针对重点区域业务进行组合测试,典型的组合有:stock,size_id,sku等。无法证明应用(App)正确发出具备特定字段的请求,典型的有:埋点,公参等。只能就展现的内容进行检查,无法证明App把接收到的内容都正确的展现出来。当用例发现问题后,无法给开发提供有效的信息进行问题排查,典型的问题有:出问题时接口返回什么内容。
目前在移动测试领域,缺乏针对移动终端(Android,IOS)设计的自动化测试代理。而移动终端手工测试常用代理Fiddler和Charles因操作偏UI和语言特性差异等原因无法很好在自动化测试中配套使用。
技术实现要素:
本发明的主要目的在于提供一种移动终端的测试代理方法及装置、计算机可读存储介质,旨在解决移动终端自动化测试无法控制网络层数据、无法回溯的问题,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环的技术问题。
为实现上述目的,本发明提供一种移动终端的测试代理方法,移动终端的测试代理方法包括以下步骤:与应用的网络层建立连接并传输数据;根据预设规则对模拟数据进行模拟测试;根据预设规则对未进行模拟测试的数据进行代理测试。
优选地,与应用的网络层建立连接并传输数据的步骤,包括:判断数据是否为应用的网络层数据;如果是,则对应用的网络层数据进行解密;如果否,则直接透传数据。
优选地,根据预设规则对模拟数据进行模拟测试的步骤之后,包括:将经过模拟测试的数据直接传输至应用的网络层。
优选地,根据预设规则对未进行模拟测试的数据进行代理测试的步骤,包括:根据预设规则分别对向服务器发出请求之前的数据和接收服务器响应之后的数据进行代理测试。
此外,为实现上述目的,本发明还提供一种移动终端的测试代理装置,移动终端的测试代理装置包括:连接建立模块,用于与应用的网络层建立连接并传输数据;模拟测试模块,与连接建立模块连接,用于根据预设规则对模拟数据进行模拟测试;代理测试模块,与模拟测试模块连接,用于根据预设规则对未进行模拟测试的数据进行代理测试。
优选地,移动终端的测试代理装置还包括:规则设置模块,与模拟测试模块以及代理测试模块连接,用于采用设置列表管理规则,支持模拟测试模块以及代理测试模块运行时动态添加、删除和编辑规则。
优选地,模拟测试模块还用于将经过模拟测试的数据直接传输至应用的网络层。
优选地,代理测试模块用于:根据预设规则分别对向服务器发出请求之前的数据和接收服务器响应之后的数据进行代理测试。
此外,为实现上述目的,本发明还提供一种移动终端的测试代理装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现移动终端的测试代理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现前述的移动终端的测试代理方法的步骤。
本发明实施例提出的一种移动终端的测试代理方法及装置、计算机可读存储介质,通过与应用的网络层建立连接并传输数据;根据预设规则对模拟数据进行模拟测试;根据预设规则对未进行模拟测试的数据进行代理测试,能够解决移动终端自动化测试无法控制网络层数据、无法回溯的问题,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环。
附图说明
图1是本发明实施例方案涉及的移动终端的测试代理系统结构示意图;
图2是本发明实施例方案涉及的硬件运行环境的移动终端的测试代理装置结构示意图;
图3是本发明移动终端的测试代理方法实施例的流程示意图;
图4是本发明移动终端的测试代理方法实施例的规则处理示意图;
图5是本发明移动终端的测试代理装置第一实施例的结构示意图;
图6是本发明移动终端的测试代理装置测试代理示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:解决移动端自动化测试无法控制网络层数据、无法回溯的问题,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环的技术问题。
由于现有技术移动终端UI自动化测试在测试覆盖面上带有不少局限性,缺乏针对移动终端设计的自动化测试代理,移动终端手工测试常用代理Fiddler和Charles因操作偏UI和语言特性差异等原因无法很好在自动化测试中配套使用等问题,本发明提供一种解决方案,使得移动终端自动化测试能够控制网络层数据、能够回溯,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环的技术问题。
如图1所示,图1是本发明实施例方案涉及的移动终端的测试代理系统的结构示意图。移动终端的测试代理系统1包括:测试代理装置10、应用的网络层20、服务器30、仓库40、日志50以及自动化测试装置60构成。自动化测试装置60开始进行自动化测试,对应用的网络层20进行用户界面断言(UI Assert);应用的网络层20向测试代理装置10发出请求(Request);测试代理装置10可以对向服务器30发出请求(Handled Request)之前的数据进行代理测试,也可以对服务器30响应(Response)之后的数据也进行代理测试;服务器30还将响应传输至应用的网络层20。测试代理装置10将进行代理测试后的数据存储在仓库40中进行管理,同时交给日志模块50进行打印。本发明实施例通过测试代理装置10对向服务器30发出请求(Handled Request)之前的数据以及对服务器30响应(Response)之后的数据进行代理测试,使得移动终端自动化测试能够控制网络层数据、能够回溯,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环。
其中,服务器30可以为智能手机、平板电脑、便携计算机等的终端设备。
如图2所示,图2是本发明第一实施例方案涉及的移动终端的测试代理装置的结构示意图。
本发明实施例移动终端可以是PC,也可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。
如图2所示,该测试代理装置10可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的测试代理装置10结构并不构成对测试代理装置10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图2所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及计算机程序。
在图2所示的移动终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001同时与用户端以及服务器建立连接,进行双向传输数据,并执行以下操作:
与应用的网络层建立连接并传输数据;
根据预设规则对模拟数据进行模拟测试;
根据预设规则对未进行模拟测试的数据进行代理测试。
其中,预设规则采用列表管理,支持测试代理装置运行时动态添加,删除和编辑规则。预设规则支持单个规则对多接口生效,只要规则匹配成功。支持多个规则针对单个接口叠加生效。支持临时挂起规则,即该规则暂时不生效。
本发明实施例的移动终端的测试代理装置(App Proxy)基于Java的servlet容器Jetty开发,可以无缝契合移动终端自动化测试的技术特点(移动端自动化多使用java语言开发),极大降低学习成本,无需承担开发语言切换带来的额外开销。测试代理装置(App Proxy)采用嵌入式服务器设计,轻量灵活,可实现基于用例级别的服务端控制,支持在客户端进行服务端数据的实时调试,支持在用例执行过程中,动态变更服务端的规则处理逻辑,支持灵活多变的自定义规则,如:可定义多个规则作用于同一接口,可实现根据接口A数据动态修改接口B数据。测试代理装置(App Proxy)还支持http和https协议的数据修改和Mock,支持接口数据持久化,也支持把数据缓存在内存,配合UI自动化测试,实现UI层和网络层的组合断言。测试代理装置(App Proxy)还支持网络层数据监控,并记录日志,在自动化用例执行失败时,能够有效帮助开发判断和重现问题。
参照图3,本发明实施例提供一种移动终端的测试代理方法,包括:
步骤S10,与应用的网络层建立连接并传输数据。
在步骤S10中,判断数据是否为应用的网络层数据;如果是,则对应用的网络层数据进行解密;如果否,则直接透传数据。具体地,在本发明实施例中,主要处理https层握手(connect handshake)和解包(decrytion)过程,解密后的数据再进行下一步处理。如果是非https层数据,则相当于透传。基于性能考虑,此处并不是所有https的数据都会解包,本发明实施例提供接口指定需要解包的主域(host),符合条件的域才会进行解包。没有解包的数据相当于透传,无法进行修改。
步骤S11,根据预设规则对模拟数据进行模拟测试。
在本发明实施例中,主要处理模拟数据(mock数据)过程。在步骤S11之后,将经过模拟测试的数据直接传输至应用的网络层。即经过模块测试(mock)处理后的数据不会经过真正的服务器,将直接返回响应给应用(App)。如果没有做mock处理的数据会直接下传以进行后续处理。
步骤S12,根据预设规则对未进行模拟测试的数据进行代理测试。
在步骤S12中,根据预设规则分别对向服务器发出请求之前的数据和接收服务器响应之后的数据进行代理测试,如此能够解决移动终端自动化测试无法控制网络层数据、无法回溯的问题,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环。
在本发明实施例中,在步骤S11和步骤S12中,将会进行具体预设规则的处理,预设规则叠加生效,流程参见图4:建立连接,具体指与App建立连接;管理预设规则列表,只要规则匹配成功,则进行处理;处理后控制与预设规则列表的连接。在本发明实施例中,支持代理测试运行时动态添加,删除和编辑规则;可以支持单个规则对多接口生效,只要规则匹配成功;支持多个规则针对单个接口叠加生效;支持临时挂起规则,即该规则暂时不生效。
参照图5,本发明实施例提供一种移动终端的测试代理装置,基于上述图2所示的实施例,所述移动终端的测试代理装置(App Proxy)包括:连接建立模块11、模拟测试模块12以及代理测试模块13。连接建立模块11用于与应用的网络层建立连接并传输数据。模拟测试模块12与连接建立模块11连接,用于根据预设规则对模拟数据进行模拟测试。代理测试模块13与模拟测试模块12连接,用于根据预设规则对未进行模拟测试的数据进行代理测试。
在本实施例中,连接建立模块11在与应用的网络层建立连接并传输数据时,判断数据是否为应用的网络层数据;如果是,则对应用的网络层数据进行解密;如果否,则直接透传数据。具体地,主要处理https层握手(connect handshake)和解包(decrytion)过程,解密后的数据再进行下一步处理。如果是非https层数据,则相当于透传。基于性能考虑,此处并不是所有https的数据都会解包,本发明实施例提供接口指定需要解包的主域(host),符合条件的域才会进行解包。没有解包的数据相当于透传,无法进行修改。
在本实施例中,模拟测试模块12主要处理模拟数据(mock数据)过程。在模拟测试完成之后,还将经过模拟测试的数据直接传输至应用的网络层。即经过模块测试(mock)处理后的数据不会经过真正的服务器,将直接返回响应给应用(App)。如果没有做mock处理的数据会直接下传以进行后续处理。
代理测试模块13根据预设规则分别对向服务器发出请求之前的数据和接收服务器响应之后的数据进行代理测试,如此能够解决移动终端自动化测试无法控制网络层数据、无法回溯的问题,使自动化测试方案更全面更严谨,实现应用端自动化测试的闭环。
移动终端的测试代理装置还包括:规则设置模块14。与模拟测试模块12以及代理测试模块13连接,用于采用设置列表管理规则,支持模拟测试模块12以及代理测试模块13运行时动态添加、删除和编辑规则。在本发明实施例中,规则设置模块14支持代理测试运行时动态添加,删除和编辑规则;可以支持单个规则对多接口生效,只要规则匹配成功;支持多个规则针对单个接口叠加生效;支持临时挂起规则,即该规则暂时不生效。
在本实施例中,模拟测试模块12对根据预设规则对模拟数据进行模拟测试,以及代理测试模块13根据预设规则对未进行模拟测试的数据进行代理测试时,将会进行具体预设规则的处理,预设规则叠加生效。
更具体地,移动终端的测试代理装置的具体操作过程如图6所示。连接建立模块11建立与应用的网络层的连接,应用连接完成之后,对应用的网络层数据进行解包,其中解包即为对应用的网络层数据进行解密,然后模拟测试模块12对解密后的数据根据预设规则进行模拟测试,并将进行模块测试后的数据直接传输至应用的网络层,而没有进行模块测试的数据则传输至代理测试模块13。代理测试模块13根据预设规则对未进行模块测试的数据在向服务器发出请求之前进行代理测试,并且还可以对服务器响应之后的数据进行代理测试。服务器还将响应传输至应用的网络层。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下操作:
与应用的网络层建立连接并传输数据;
根据预设规则对模拟数据进行模拟测试;
根据预设规则对未进行模拟测试的数据进行代理测试。
其中,预设规则采用列表管理,支持测试代理装置运行时动态添加,删除和编辑规则。预设规则支持单个规则对多接口生效,只要规则匹配成功。支持多个规则针对单个接口叠加生效。支持临时挂起规则,即该规则暂时不生效。
进一步地,所述计算机程序被处理器执行时还实现如下操作:
与应用的网络层建立连接并传输数据时,判断数据是否为应用的网络层数据;如果是,则对应用的网络层数据进行解密;如果否,则直接透传数据。
进一步地,所述计算机程序被处理器执行时还实现如下操作:
根据预设规则对模拟数据进行模拟测试的步骤之后,将经过模拟测试的数据直接传输至应用的网络层。
进一步地,所述计算机程序被处理器执行时还实现如下操作:
根据预设规则对未进行模拟测试的数据进行代理测试时,根据预设规则分别对向服务器发出请求之前的数据和接收服务器响应之后的数据进行代理测试。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。