CN112187585B - 网络协议测试方法及装置 - Google Patents

网络协议测试方法及装置 Download PDF

Info

Publication number
CN112187585B
CN112187585B CN202011062913.8A CN202011062913A CN112187585B CN 112187585 B CN112187585 B CN 112187585B CN 202011062913 A CN202011062913 A CN 202011062913A CN 112187585 B CN112187585 B CN 112187585B
Authority
CN
China
Prior art keywords
simulation test
test case
network protocol
test
test cases
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
CN202011062913.8A
Other languages
English (en)
Other versions
CN112187585A (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 CN202011062913.8A priority Critical patent/CN112187585B/zh
Publication of CN112187585A publication Critical patent/CN112187585A/zh
Application granted granted Critical
Publication of CN112187585B publication Critical patent/CN112187585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

本申请提供了一种网络协议测试方法、装置、电子设备及计算机可读存储介质;涉及云技术的安全,方法包括:获取目标客户端接收的网络协议数据包;响应于生成模拟测试用例的触发操作,对原始测试用例进行变异操作,以生成至少一条模拟测试用例;所述原始测试用例是基于所述网络协议数据包生成的;所述模拟测试用例是具有真实含义的协议数据;基于所述至少一条模拟测试用例,对所述目标客户端进行测试。通过本申请,能够高效地对客户端进行网络协议自动化测试,及时发现客户端存在的问题,从而提高客户端的容错性,保证了客户端的安全。

Description

网络协议测试方法及装置
技术领域
本申请涉及互联网技术领域,尤其涉及一种网络协议测试方法、装置、电子设备及计算机可读存储介质。
背景技术
在互联网行业中,网络协议(下文中简称为协议)是客户端和服务器之间沟通的桥梁,尤其是对于即时通讯客户端来说,协议在其中扮演了重要的角色。在正常情况下,服务器发过来的数据包能够触发客户端正确响应。但在日益复杂的网络环境下,数据包不可避免地发生丢失、抖动、甚至在黑客的攻击下可能被篡改内容。面对以上不可靠的数据源,客户端能否始终保持稳定地运行,是评价客户端质量的重要因素。也就是说,为了保证客户端的正常运行,需要全方位检测客户端面临异常数据的容错能力。
然而,针对上述技术问题,相关技术缺乏有效的解决方案。
发明内容
本申请实施例提供一种网络协议测试方法、装置、电子设备及计算机可读存储介质,能够高效地对客户端进行网络协议自动化测试。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种网络协议测试方法,包括:
获取目标客户端接收的网络协议数据包;
响应于生成模拟测试用例的触发操作,对原始测试用例进行变异操作,以生成至少一条模拟测试用例;所述原始测试用例是基于所述网络协议数据包生成的;所述模拟测试用例是具有真实含义的协议数据;
基于所述至少一条模拟测试用例,对所述目标客户端进行测试。
本申请实施例提供一种网络协议测试装置,包括:
获取模块,用于获取目标客户端接收的网络协议数据包;
生成模块,用于响应于生成模拟测试用例的触发操作,对原始测试用例进行变异操作,以生成至少一条模拟测试用例;所述原始测试用例是基于所述网络协议数据包生成的;所述模拟测试用例是具有真实含义的协议数据;
测试模块,用于基于所述至少一条模拟测试用例的触发操作,对所述目标客户端进行测试。
上述方案中,所述装置还包括存储模块,用于将所述至少一条模拟测试用例存入预先创建的模拟测试用例集合中;所述模拟测试用例集合是基于关系数据库管理系统创建的。
上述方案中,所述生成模块,还用于针对每条所述原始测试用例,执行以下操作:对所述原始测试用例进行分解处理,得到多个字段;针对每个所述字段,生成与所述字段对应的多个字段值;对每个所述字段分别对应的多个字段值进行重组处理,得到与所述原始测试用例对应的至少一条模拟测试用例。
上述方案中,所述生成模块,还用于针对每个所述字段,执行以下操作:对所述字段的名称进行分词处理,并从分词结果中识别出有效词汇;将所述有效词汇与预设的词库进行匹配,并根据匹配结果得到与所述字段对应的多个字段值;其中,所述字段值包括:正常字段值和异常字段值。
上述方案中,所述获取模块,还用于获取所述目标客户端接收的网络协议缓冲区文件;其中,所述网络协议缓冲区文件中定义有所述网络协议的格式;所述生成模块,还用于响应于根据所述格式提交的重新编辑操作,针对所述不满足测试需求的至少一条模拟测试用例,生成一一对应的至少一条新模拟测试用例。
上述方案中,所述获取模块,还用于向所述目标客户端发送跨进程通信请求,以创建与所述目标客户端之间的通信通道,并通过所述通信通道从所述目标客户端中获取所述网络协议数据包。
上述方案中,所述测试模块,还用于针对每条所述模拟测试用例,执行以下操作:监测所述目标客户端在执行所述模拟测试用例过程中的运行状态,以根据所述运行状态确定对应的执行结果;其中,所述执行结果包括以下至少之一:正常、卡顿、崩溃。
上述方案中,所述测试模块,还用于当监测到所述目标客户端在执行所述模拟测试用例的过程中发生崩溃时,重新唤起所述目标客户端,并将所述多条模拟测试用例中未执行的模拟测试用例重新注入所述目标客户端,以使所述目标客户端继续执行所述未执行的模拟测试用例。
上述方案中,所述装置还包括呈现模块,用于对所述多条模拟测试用例中执行结果为卡顿、或者崩溃的模拟测试用例进行标记,并在显示执行结果时,针对被标记的模拟测试用例显示相应的标记信息。
上述方案中,所述呈现模块,还用于在完成测试之后,在人机交互界面中呈现以下内容至少之一:当前执行的模拟测试用例的总条数;当前执行的模拟测试用例中执行结果为正常的模拟测试用例的条数;当前执行的模拟测试用例中执行结果为卡顿的模拟测试用例的条数;当前执行的模拟测试用例中执行结果为崩溃的模拟测试用例的条数。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的网络协议测试方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的网络协议测试方法。
本申请实施例具有以下有益效果:
通过获取目标客户端(即被测客户端)接收的网络协议数据包,并对基于所获取的网络协议数据包生成的原始测试用例进行变异操作,以生成至少一条模拟测试用例,如此,由于模拟测试用例是直接基于网络协议数据包生成的原始测试用例进行变异操作得到的,一方面,保证了生成的模拟测试用例的有效性和随机性;另一方面,也提高了生成模拟测试用例的效率。
附图说明
图1是本申请实施例提供的网络协议测试系统的架构示意图;
图2是本申请实施例提供的测试终端的结构示意图;
图3A是本申请实施例提供的网络协议测试方法的流程示意图;
图3B是本申请实施例提供的网络协议测试方法的流程示意图;
图4A是本申请实施例提供的网络协议测试方法的流程示意图;
图4B是本申请实施例提供的网络协议测试方法的流程示意图;
图5是本申请实施例提供的测试程序的界面示意图;
图6是本申请实施例提供的测试用例编辑器的界面示意图;
图7是本申请实施例提供的测试程序的模块结构示意图;
图8是本申请实施例提供的模拟测试用例自动化构造流程示意图;
图9是本申请实施例提供的模拟测试用例自动化执行流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释:
1)网络协议,简称为协议,是通信程序双方必须共同遵从的一组约定。为了使数据在网络上可以从源头到达目的地,网络通信的参与方必须遵循相同的规则,这套规则称为网络协议,它最终体现为在网络上传输的数据包的格式。示例的,常见的网络协议包括:传输控制协议(TCP,Transmission Control Protocol)、用户数据包协议(UDP,UserDatagram Protocol)等。
2)即时通讯(IM,Instant Message),又称实时通讯,它可以允许两人或者多人使用网络实时地传递文字信息、文件、语音、以及视频信息,从而促进双方或者多方的交流。即时通讯一般是基于TCP/IP和UDP进行通讯的,其中,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。即时通讯是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而TCP/IP和UDP是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。
3)白盒测试,又称结构测试、或者透明盒测试,能够全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
4)黑盒测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。也就是说,在测试中,完全不了解程序的内部结构,只管输入输出。
5)协议缓冲区(Protobuf,Protocol Buffer),一种语言无关、平台无关、可扩展的序列化结构化数据存储方式,可用于通信协议、数据存储等。
6)测试用例,是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
7)注入,是一种在某个单独的实时进程的地址空间中执行任意代码的方法,包括:动态链接库注入、线程劫持注入、通过修改注册的方法进行注入等。
在互联网行业中,网络协议(下文中简称为协议)是客户端和服务器之间沟通的桥梁,尤其是对于即时通讯客户端来说,协议在其中扮演了重要的角色。正常情况下,服务器发过来的数据包能够触发客户端正确响应,但在日益复杂的网络环境下,数据包不可避免地发生丢失、抖动、甚至在黑客的攻击下可能被篡改内容。面对以上不可靠的数据源,客户端能否始终保持稳定地运行,是评价客户端质量的重要因素。
针对上述技术问题,相关技术提供了以下几种协议测试方案:
1)协议自动化测试,目前存在的协议自动化测试工具,例如Apache Jmeter,都是面向服务器的。
2)白盒测试,在客户端的开发阶段,协议模块主要靠开发人员进行单元自测,但是,由于白盒测试的耗时比较多,在开发任务较重时难以同时兼顾效率和质量。
3)黑盒测试,在客户端的测试阶段,测试人员对客户端进行黑盒测试,例如通过手动操作用户界面(UI,User Interface)触发相关模块来调用协议,进而根据客户端的响应结果来判断协议开发是否正确,其缺点是由于客户端的封闭性,测试人员难以构造出完备的和有效的测试用例。
也就是说,相关技术提供的协议测试方案存在以下问题:
1)由于协议层处于客户端的内核,测试人员无法直接接触和操作,测试过程具有一定的盲目性。例如,通过手动UI点击生成的数据,基本上无法覆盖到所有协议数据异常的场景。
2)设计测试用例的过程严重依赖于测试人员的经验和对模块的熟悉程度,且设计测试用例的过程非自动化,测试用例的生成阶段人力成本较高。
3)通过UI操作来手动触发,并肉眼观测执行结果的方式,测试用例的执行效率较低,整个测试流程难以批量和自动化实现。
鉴于此,本申请实施例提供一种网络协议测试方法、装置、电子设备和计算机可读存储介质,能够高效地对客户端进行网络协议自动化测试,以及时发现客户端存在的问题,从而提高客户端的容错性。
下面说明本申请实施例提供的应用网络协议测试方法的电子设备的示例性应用,本申请实施例提供的应用网络协议测试方法的电子设备可以实施为笔记本电脑、平板电脑、台式计算机、机顶盒、移动设备(例如,移动电话、便携式音乐播放器、个人数字助理、专用消息设备、便携式游戏设备)等各种类型的用户终端,也可以实施为服务器,例如独立的物理服务器,多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。下面,将结合图1说明应用网络协议测试方法的电子设备实施为用户终端时的示例性应用。
参见图1,图1是本申请实施例提供的网络协议测试系统100的架构示意图。其中,网络协议测试系统100包括:服务器200、网络300、被测终端400和测试终端500,下面分别进行说明。
服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。被测终端400和测试终端500可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等各种类型的用户终端,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。
服务器200是被测程序410的后台服务器,用于通过网络300向被测终端400推送网络协议数据包。
网络300,用于连接服务器200和被测终端400,网络300可以是广域网或者是局域网,又或者是二者的组合。
被测终端400上运行有被测程序410,被测程序410可以是各种类型的客户端,例如社交应用客户端、视频播放客户端、音频播放客户端、或者游戏客户端等。被测程序410用于接收服务器200通过网络300发送的网络协议数据包。
测试终端500上运行有测试程序510,用于从被测程序410中获取服务器200发送的网络协议数据包,以及用于响应于生成模拟测试用例的触发操作,对基于网络协议数据包生成的原始测试用例进行变异操作(将在下文具体说明变异操作的过程),以生成多条模拟测试用例。接着,测试程序510响应于执行多条模拟测试用例的触发操作,将生成的多条模拟测试用例注入被测程序410中,以使被测程序410执行多条模拟测试用例。同时,测试程序510还会记录被测程序410在执行每条模拟测试用例时分别对应的执行结果。最后,测试程序510在人机交互界面中呈现根据执行结果生成的测试报告,以供测试人员进行后续的回溯和分析。
在另一些实施例中,被测程序410和测试程序510可以是运行于同一终端上的,例如测试程序510可以是运行在被测终端400上的。此外,本申请实施例提供的用于实现网络协议测试方法的测试程序可以是独立的程序,例如测试程序510,还可以是操作系统中集成的功能模块,又或者可以是集成到任意程序中的应用编程接口(API,ApplicationProgramming Interface),用于供其他客户端进行调用。
需要说明的是,本申请实施例提供的网络协议测试方法除了可以由终端独立实施外,还可以由服务器独立实施,或者由服务器和终端协同实施,例如测试服务器可以从被测程序中获取被测程序的后台服务器推送的网络协议数据包,并对基于所获取的网络协议数据包生成的原始测试用例进行变异操作,生成多条模拟测试用例。接着,测试服务器将所生成的多条模拟测试用例注入被测程序中,并记录被测程序在执行每条模拟测试用例时分别对应的执行结果,随后,测试服务器通过网络将得到的执行结果发送给测试人员所关联的终端上。
下面对图1中的测试终端500的结构进行说明。参见图2,图2是本申请实施例提供的测试终端500的结构示意图,图2所示的测试终端500包括:至少一个处理器560、存储器550、至少一个网络接口520和用户接口530。测试终端500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器560可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器550可选地包括在物理位置上远离处理器560的一个或多个存储设备。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。
在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的网络协议测试装置可以采用软件方式实现,图2示出了存储在存储器550中的网络协议测试装置555,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块5551、生成模块5552、测试模块5553、存储模块5554和呈现模块5555,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
下面结合附图具体说明本申请实施例提供的网络协议测试方法,可以理解的,下文所述的网络协议测试方法可以由上文所述的终端或者服务器等各种类型的电子设备执行,更具体的,是由终端上或者服务器上运行的测试程序执行。接下去,以被测程序为客户端为例,对本申请实施例提供的网络协议测试方法进行具体说明。参见图3A,图3A是本申请实施例提供的网络协议测试方法的流程示意图,将结合图3A示出的步骤进行说明。
在步骤S301中,获取目标客户端接收的网络协议数据包。
在一些实施例中,当测试程序(例如可以是与目标客户端(即被测客户端,下文中对目标客户端和被测客户端不作具体区别)运行于同一终端上的测试程序,测试程序的实现形式可以包括独立的测试客户端、网站、或者平台等,也可以是运行于其他终端上的测试程序,又或者是运行于服务器中的测试程序)初始化时,通过跨进程通信的方式从目标客户端(即被测客户端)中获取网络协议数据包;其中,网络协议数据包可以是由目标客户端的后台服务器推送给目标客户端的,其定义了目标客户端与后台服务器之间进行通信的规则。
示例的,以目标客户端为即时通讯客户端为例,当即时通讯客户端接收到后台服务器推送的网络协议数据包时,测试程序通过内置的输入输出(IO,input/output)模块,向被测的即时通讯客户端发起跨进程通信请求,以建立起与被测即时通讯客户端之间的通信通道,并通过所建立的通信通道从被测即时通讯客户端中获取网络协议数据包。其中,跨进程通信的方式可以包括:管道通信、信号、消息队列和共享内存等。管道通信又可以进一步分为:匿名管道、命名管道和高级管道。其中,匿名管道是一个未命名的单向管道,通过父进程和一个子进程之间传输数据,只能实现本地机器上两个进程之间的通信,而不能实现跨网络的通信,其适用于测试程序和被测客户端运行于同一终端上的场景。命名管道是进程间单向或者双向管道,建立时指定一个名字,任何进程都可以通过该名字打开管道的另一端,可实现跨网络通信。高级管道是将一个程序在另一个进程中打开,作为它的子进程,从而实现管道通信。也就是说,命名管道和高级管道适用于测试程序和被测客户端运行于不同终端上的场景。
本申请实施例通过跨进程通信的方式从客户端中获取客户端的后台服务器推送的网络协议数据包,从而让测试人员可以接触到客户端的协议层,提供给测试人员任意构造测试用例的机会,以尽可能地覆盖到所有的场景。
在步骤S302中,响应于生成模拟测试用例的触发操作,对原始测试用例进行变异操作,以生成至少一条模拟测试用例;其中,原始测试用例是基于网络协议数据包生成的;模拟测试用例是具有真实含义的协议数据。
在一些实施例中,在执行步骤S302之前,还可以首先执行图3B示出的步骤S304至步骤S306,将结合图3B示出的步骤进行说明。
在步骤S304中,对网络协议数据包进行转换处理,以生成多条原始测试用例。
在一些实施例中,当测试程序从目标客户端中获取到网络协议数据包后,对所获取的网络协议数据包进行解析、以及转换处理,并从经过转换处理后的网络协议数据包中提取出初始化的协议数据,接着,根据所提取的初始化协议数据构造出多条原始测试用例。
示例的,以测试程序的实现形式为独立的测试程序为例,测试程序可以根据测试人员输入的测试目标、测试环境、测试步骤、预期结果、以及测试脚本等信息,并结合从经过转换处理后的网络协议数据包中提取出的初始化协议数据,构造出多条原始测试用例。
在步骤S305中,在人机交互界面中呈现多条原始测试用例。
在一些实施例中,当测试程序根据从网络协议数据包中提取的初始化协议数据构造出多条原始测试用例后,可以调用相应的人机交互界面进行呈现,以供测试人员进行后续的操作。
示例的,当测试程序是运行于用户终端上的测试程序时,测试程序可以调用终端的人机交互界面来呈现所生成的多条原始测试用例。
示例的,当测试程序是运行于测试服务器上的功能模块时,测试服务器可以将生成的多条原始测试用例下发给测试人员所关联的终端上,以调用测试人员所关联的终端的人机交互界面进行呈现。
在步骤S306中,响应于针对多条原始测试用例的选取操作,在人机交互界面中呈现被选取的多条原始测试用例。
在一些实施例中,当测试程序在调用相应的人机交互界面呈现所生成的多条原始测试用例后,还可以响应于测试人员针对所呈现的多条原始测试用例的选取操作,并在人机交互界面中呈现被测试人员所选取的多条原始测试用例。
示例的,假设测试程序根据从网络协议数据包中提取的初始化协议数据总共构造出10条原始测试用例,并人机交互界面的“可选区”中呈现了这10条原始测试用例。接着,测试人员可以针对“可选区”中呈现的这10条原始测试用例进行选取操作,例如测试人员在“可选区”呈现的这10条原始测试用例中选中了第3、5、7条原始测试用例,以作为后续需要执行的测试用例,并点击了“添加”按钮,此时,被测试人员选中的第3、5、7条原始测试用例将呈现在人机交互界面的“选中区”中。其中,“可选区”和“选中区”位于人机交互界面的不同位置,例如“可选区”位于人机交互界面的左侧,“选中区”位于人机交互界面的右上侧。
本申请实施例在人机交互界面中呈现多条原始测试用例后,还提供了针对多条原始测试用例的选取操作,即测试人员可以根据测试需求选择相应的原始测试用例进行后续的操作,从而实现了不同测试人员的个性化需求。
在一些实施例中,图3A示出的步骤S302可以通过图4A示出的步骤S3021至步骤S3023实现,将结合图4A示出的步骤进行说明。
在步骤S3021中,对原始测试用例进行分解处理,得到多个字段。
在一些实施例中,当测试程序接收到生成模拟测试用例的触发请求时,响应于触发操作,对原始测试用例包含的数据进行分解处理,以得到多个字段。
示例的,假设原始测试用例A中包含的数据为“code=0、male=true、name=Eric”,测试程序在接收到生成模拟测试用例的触发请求后进行响应,对原始测试用例A中包含的数据进行分解,从而得到“code”、“male”和“name”三个字段。
需要说明的是,当测试人员没有针对生成的多条原始测试用例进行选取时,测试程序在接收到生成模拟测试用例的触发操作时,可以是对所有的原始测试用例进行分解处理;当测试人员针对生成的多条原始测试用例进行选取操作后,测试程序在接收到生成模拟测试用例的触发操作时,可以是对被测试人员选取的多条原始测试用例进行分解处理。
在步骤S3022中,针对每个字段,派生出与字段对应的多个字段值。
在一些实施例中,图4A示出的步骤S3022可以通过图4B示出的步骤S30221至步骤S30222实现,将结合图4B示出的步骤进行说明。
在步骤S30221中,对字段的名称进行分词处理,并从分词结果中识别出有效词汇。
在一些实施例中,当测试程序对原始测试用例进行分解处理,得到多个字段后,后续可以针对每个字段,对字段的名称进行分词处理,并从分词结果中识别出有效词汇;其中,有效词汇是指具有特定意义或者具有指代性的词汇,例如人名、地名、联系方式、专有名词等。
在步骤S30222中,将有效词汇与预设的词库进行匹配,并根据匹配结果得到与字段对应的多个字段值;其中,字段值包括:正常字段值和异常字段值。
在一些实施例中,当测试程序从分词结果中识别出有效词汇后,可以将有效词汇与预设的词库进行匹配,以根据匹配结果确定出有效词汇的含义,进而派生出与字段对应的多个字段值,其中,派生出的多个字段值的类型可以包括:正常字段值和异常字段值。正常字段值是指与确定出的有效词汇的含义对应的具体数据,异常字段值是指边界异常数据。例如,当确定出的有效词汇的含义为手机号码时,对应的正常字段值可以是例如132XXXXXX11的真实号码,而对应的异常字段值可以是0,-1等边界异常数据。
示例的,假设测试程序对原始测试用例A进行分解处理后,得到多个字段,其中,字段A的名称为“uint32_user_phone”,接着,测试程序对字段A的名称进行分词处理,得到的分词结果为“unit32”、“user”和“phone”。随后,测试程序对分词结果进行识别,确定出其中的有效词汇为{“unit32”,“phone”}。在确定出有效词汇后,测试程序可以进一步通过模式匹配等方式智能识别出有效词汇的含义,例如测试程序将识别出的有效词汇{“unit32”,“phone”}与预设的词库进行匹配后得知,字段A表示的含义是32位无符号整型的电话号码,此时,测试程序一方面可以派生出字段A对应的多个正常字段值,例如131XXXXXX11、181XXXXXX76等真实的手机号码;另一方面还可以派生出字段A对应的异常字段值,例如-1、0等边界异常数据。如此,由于派生出的字段值包括了正常字段值和异常字段值,从而保证了后续生成的模拟测试用例兼顾了有效性和随机性。
在步骤S3023中,对每个字段分别对应的多个字段值进行重组处理,得到与原始测试用例对应的至少一条模拟测试用例。
在一些实施例中,当测试程序针对原始测试用例进行分解处理,得到多个字段,并且派生出与每个字段分别对应的多个字段值后,可以针对每个字段分别对应的多个字段值进行重组处理,进而根据重组结果构造出与原始测试用例对应的多条模拟测试用例。
示例的,以原始测试用例A为例,假设原始测试用例A中包含的数据为{“code=0、male=true、name=Eric”},测试程序对原始测试用例A进行分解处理后,可以得到三个字段,分别为“code”、“male”和“name”。接着,测试程序针对分解后得到的每个字段,分别派生出与每个字段分别对应的多个字段值。例如,对于字段“code”,可以派生出“0,-1”等字段值;对于字段“male”,可以派生出“true,false”等字段值;对于字段“name”,可以派生出“Eric,Jane”等字段值。随后,测试程序对每个字段分别对应的多个字段值进行重组处理,以得到多组模拟数据,例如测试程序针对上述“code”、“male”和“name”字段分别对应的多个字段值进行重组处理后,可以得到如下的多组模拟数据,包括:{“code=0、male=true、name=Eric”}、{“code=0、male=true、name=Jane”}、{“code=0、male=false、name=Eric”}、{“code=0、male=false、name=Eric”}、{“code=-1、male=true、name=Eric”}等。在得到多组模拟数据后,测试程序可以根据测试人员输入的测试目标、测试环境、测试步骤、预期结果、以及测试脚本等信息,并结合得到的多组模拟数据,构造出多条模拟测试用例。
在另一些实施例中,当根据上述变异操作生成的多条模拟测试用例不满足测试需求时,测试程序还可以执行以下操作:获取客户端从网络中接收的网络协议缓冲区文件;其中,网络协议缓冲区文件中定义有网络协议的格式;响应于根据网络协议缓冲区文件中定义的格式提交的重新编辑操作,针对不满足测试需求的多条模拟测试用例,生成一一对应的多条新模拟测试用例。
示例的,以原始测试用例A为例,当测试程序针对原始测试用例A进行变异操作得到的多条模拟测试用例不符合测试人员的测试需求时,测试程序可以从被测客户端中获取网络协议缓冲区文件(Protobuf)。Protobuf全称是Google Protocol Buffer,是一种高效轻便的结构化数据存储方式,可用于通信协议、数据存储等。也就是说,Protobuf文件是用于描述网络协议的一个文件,前端后端都是通过这个文件来规定数据包的格式,即Protobuf文件描述了协议数据包的内容和格式。如此,在测试程序从被测客户端中获取到Protobuf文件后,测试人员可以根据Protobuf文件定义的格式对不满足测试需求的模拟测试用例进行重新编辑,从而测试程序可以响应于测试人员根据Protobuf文件定义的格式提交的重新编辑操作,针对不满足测试需求的多条模拟测试用例,生成一一对应的多条新模拟测试用例。如此,通过将自动化变异和人工编辑进行结合,兼顾了自动化变异效率高的优点和人工编辑更加准确和更具有针对性的优势,后者补充前者,使得在保证效率的基础上,又确保了生成的模拟测试用例的准确性。
在一些实施例中,在生成至少一条模拟测试用例后,测试程序还可以针对所生成的至少一条模拟测试用例进行存储,例如测试程序可以通过SQLite技术在本地存储多条模拟测试用例。其中,SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。如此,当后续目标客户端在执行模拟测试用例的过程中出现崩溃时,测试程序可以将目标客户端重新唤起,例如测试程序可以通过目标客户端的存储路径找到目标客户端,并通过预先构建的点击操作控件对找到的目标客户端执行点击操作,来模拟用户通过点击操作唤起目标客户端的过程,从而实现目标客户端的重新唤起,并根据预先存储的模拟测试用例重新加载数据并恢复到崩溃前的现场环境,以使目标客户端重新执行剩余的模拟测试用例。
本申请实施例通过对基于网络协议数据包生成的原始测试用例进行变异操作,以生成多条模拟测试用例,由于生成的多条模拟测试用例是基于真实服务器推送的网络协议数据包为基础进行变异得到的,生成的模拟测试用例具有针对性,且生成模拟测试用例的过程自动化实现,节省了人力成本。
在步骤S303中,基于至少一条模拟测试用例,对目标客户端进行测试。
在一些实施例中,在得到至少一条模拟测试用例后,测试程序响应于执行至少一条模拟测试用例的触发操作,通过上述内置的IO模块将生成的至少一条模拟测试用例注入目标客户端中,以使目标客户端执行至少一条模拟测试用例。
示例的,以目标客户端为即时通讯客户端为例,在得到多条模拟测试用例后,测试程序响应于执行所生成的多条模拟测试用例的触发操作,例如当测试人员在人机交互界面中点击“批量执行”按钮后,测试程序通过内置的IO模块将所生成的多条模拟测试用例注入被测即时通讯客户端中,以使被测即时通讯客户端执行注入的多条模拟测试用例。
需要说明的是,注入被测客户端执行的测试用例除了可以是上述的多条模拟测试用例,还可以是基于网络协议数据包生成的多条原始测试用例;又或者是原始测试用例和模拟测试用例的组合,例如测试人员可以从基于网络协议数据包生成的多条原始测试用例中选取出若干条原始测试用例,并从经过变异操作生成的多条模拟测试用例中选取出若干条模拟测试用例,随后将所选取的原始测试用例和模拟测试用例注入被测客户端中进行执行。也就是说,测试人员可以根据实际测试需求选取相应的测试用例注入被测客户端中进行测试,对于测试用例的选取,本申请实施例不作具体限定。
在一些实施例中,当测试程序在通过内置的IO模块将多条模拟测试用例注入被测客户端后,对被测客户端的运行状态进行监测,以记录被测客户端在执行每条模拟测试用例时分别对应的执行结果;其中,执行结果包括:正常、卡顿和崩溃。
示例的,以被测客户端为即时通讯客户端为例,测试程序响应于执行模拟测试用例的触发请求,从存储模块中读取需要执行的模拟测试用例,然后将所读取的模拟测试用例注入被测即时通讯客户端中,在注入的同时开启对被测即时通讯客户端的性能监测,以实时记录被测即时通讯客户端在执行每条模拟测试用例时分别对应的执行结果。特别的,当检测到被测即时通讯客户端出现诸如卡顿、内存泄露、以及崩溃等异常情况时,对导致被测即时通讯客户端出现异常情况的模拟测试用例进行标记,并在后续显示执行结果时,针对被标记的模拟测试用例显示相应的标记信息,以供开发人员后续进行回溯和分析原因。此外,当监测到被测即时通讯客户端出现崩溃(Crash)时,测试程序可以通过UI对其进行重新唤起,恢复现场并继续执行剩余的模拟测试用例。
在一些实施例中,测试程序可以根据执行结果在人机交互界面中呈现以下内容至少之一:当前执行的模拟测试用例的总条数;当前执行的模拟测试用例中执行结果为正常的模拟测试用例的条数;当前执行的模拟测试用例中执行结果为卡顿的模拟测试用例的条数;当前执行的模拟测试用例中执行结果为崩溃的模拟测试用例的条数。
示例的,以被测客户端为即时通讯客户端为例,假设本次测试注入被测即时通讯客户端的模拟测试用例的总条数为30条,在被测即时通讯客户端执行这30条模拟测试用例的过程中,测试程序监测到20条模拟测试用例的执行结果为正常,7条模拟测试用例对应的执行结果为卡顿,3条模拟测试用例对应的执行结果为崩溃,则根据最终的执行结果,测试程序可以在人机交互界面中呈现如下内容:{测试用例执行结果统计:总数:30正常:20卡顿:7崩溃:3}。特别的,对于导致被测即时通讯客户端出现卡顿或者崩溃的模拟测试用例,测试程序还可以进行标记,从而在最终显示执行结果时,对于被标记的测试用例还可以进一步显示标记信息,如此,可以与执行结果为正常的模拟测试用例进行区分,方便测试人员进行后续的分析。
本申请实施例提供了一种网络协议测试方法,通过获取目标客户端从网络中接收的网络协议数据包,可以让测试人员接触到客户端的协议层,从而提供给测试人员任意构造模拟测试用例的机会,以尽可能地覆盖到所有场景;同时,对基于网络协议数据包生成的原始测试用例进行变异操作,保证了生成的模拟测试用例具有针对性,且模拟测试用例的生成过程自动化,节省了人力成本;进一步地,通过记录每条模拟测试用例分别对应的执行结果,并根据执行结果生成测试报告,方便了测试人员或者开发人员后续可以根据测试报告进行回溯和分析。
下面继续说明本申请实施例提供的网络协议测试装置555实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器550的网络协议测试装置555中的软件模块可以包括:获取模块5551、生成模块5552、测试模块5553、存储模块5554和呈现模块5555。
获取模块5551,用于获取目标客户端接收的网络协议数据包;生成模块5552,用于响应于生成模拟测试用例的触发操作,对原始测试用例进行变异操作,以生成至少一条模拟测试用例;原始测试用例是基于网络协议数据包生成的;模拟测试用例是具有真实含义的协议数据;测试模块5553,用于基于至少一条模拟测试用例,对目标客户端进行测试。
在一些实施例中,网络协议测试装置555还包括存储模块5554,用于将至少一条模拟测试用例存入预先创建的模拟测试用例集合中;模拟测试用例集合是基于关系数据库管理系统创建的。
在一些实施例中,生成模块5552,还用于针对每条原始测试用例,执行以下操作:对原始测试用例进行分解处理,得到多个字段;针对每个字段,生成与字段对应的多个字段值;对每个字段分别对应的多个字段值进行重组处理,得到与原始测试用例对应的至少一条模拟测试用例。
在一些实施例中,生成模块5552,还用于针对每个字段,执行以下操作:对字段的名称进行分词处理,并从分词结果中识别出有效词汇;将有效词汇与预设的词库进行匹配,并根据匹配结果得到与字段对应的多个字段值;其中,字段值包括:正常字段值和异常字段值。
在一些实施例中,获取模块5551,还用于获取目标客户端从网络中接收的网络协议缓冲区文件;其中,网络协议缓冲区文件中定义有网络协议的格式;生成模块5552,还用于响应于根据格式提交的重新编辑操作,针对不满足测试需求的至少一条模拟测试用例,生成一一对应的至少一条新模拟测试用例。
在一些实施例中,获取模块5551,还用于向目标客户端发送跨进程通信请求,以创建与目标客户端之间的通信通道,并通过通信通道从目标客户端中获取网络协议数据包。
在一些实施例中,测试模块5553,还用于针对每条模拟测试用例,执行以下操作:监测目标客户端在执行模拟测试用例过程中的运行状态,以根据运行状态确定对应的执行结果;其中,执行结果包括以下至少之一:正常、卡顿、崩溃。
在一些实施例中,测试模块5553,还用于当监测到目标客户端在执行模拟测试用例的过程中发生崩溃时,重新唤起目标客户端,并将至少一条模拟测试用例中未执行的模拟测试用例重新注入目标客户端,以使目标客户端继续执行未执行的模拟测试用例。
在一些实施例中,呈现模块5555,还用于对至少一条模拟测试用例中执行结果为卡顿、或者崩溃的模拟测试用例进行标记,并在显示执行结果时,针对被标记的模拟测试用例显示相应的标记信息。
在一些实施例中,呈现模块5555,还用于在完成测试后,在人机交互界面中呈现以下内容至少之一:当前执行的模拟测试用例的总条数;当前执行的模拟测试用例中执行结果为正常的模拟测试用例的条数;当前执行的模拟测试用例中执行结果为卡顿的模拟测试用例的条数;当前执行的模拟测试用例中执行结果为崩溃的模拟测试用例的条数。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的网络协议测试装置中未尽的技术细节,可以根据图3A、图3B、图4A、或者图4B任一附图的说明而理解。
下面,以被测程序为即时通讯客户端为例,说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种面向即时通讯客户端(即被测即时通讯客户端)的协议自动化测试程序,在测试流程中,全方位检测被测即时通讯客户端在面临异常协议数据时的容错能力。本申请实施例提供的测试程序基于真实的服务器推送的协议数据包进行启发式变异,自动化构造出一组本地模拟的数据包,并根据构造出的模拟数据包生成对应的一组模拟测试用例,并批量注入被测即时通讯客户端中去执行。测试程序会自动检测和记录模拟测试用例的执行结果,并生成测试报告,以及重点筛选出导致被测即时通讯客户端出现异常的模拟测试用例。如此,能够高效地对被测即时通讯客户端进行协议自动化测试,及时发现被测即时通讯客户端存在的问题,以便进行下一步的优化。
也就是说,本申请实施例提供的面向即时通讯客户端的协议自动化测试程序可以解决以下技术问题:
1)让测试人员可以接触到被测即时通讯客户端的协议层,从而提供给测试人员任意构造模拟测试用例的机会,尽可能地覆盖到所有场景。
2)基于真实的服务器推送的协议数据包进行启发式随机化变异,来构造一组本地模拟的数据包,并根据构造出的模拟数据包生成对应的一组模拟测试用例。生成的模拟测试用例具有针对性,且模拟测试用例的生成过程本地化和自动化,节约人力成本。
3)模拟测试用例批量化注入,执行结果自动化检测,可生成测试报告,可回溯异常现场环境,同时,可结合UI自动化触发和唤起,以实现协议的完全自动化测试。
下面对本申请实施例提供的测试程序进行具体说明。
示例的,参见图5,图5是本申请实施例提供的测试程序的界面示意图。如图5所示,测试程序启动后,将主动与被测即时通讯客户端建立进程通信,并从被测即时通讯客户端中获取必要的协议初始化数据,例如获取服务器推送给被测即时通讯客户端的协议数据包,并在左侧的“可选区”51中生成协议列表。测试人员在“可选区”51中选中协议后点击“添加”按钮,选中的协议就会进入“选中区”52,代表即将被测试的协议。后续测试程序可以针对测试人员选中的协议数据进行变异操作,并结合测试人员输入的测试目标、测试环境、测试步骤、预期结果、以及测试脚本等信息,构造出多条模拟测试用例。
控制台53是测试人员可以进行自动化测试的工具栏,其功能包括以下两个方面:(1)管理测试用例:包括生成、添加和编辑模拟测试用例。在模拟测试用例的自动化生成中,测试程序提供了一种针对协议数据进行启发式随机化变异的方案,让最终生成的模拟测试用例在满足随机化的同时又能具有实际的含义。针对模拟测试用例的添加和编辑功能,提供UI给测试人员来自由设计模拟测试用例。(2)执行模拟测试用例:包括手动执行和批量自动化执行,测试人员可以根据具体场景来选择合适的执行方案。
测试用例区54用于展示生成的模拟测试用例集合,这里可以直观的看到每条模拟测试用例,同时,还可以在生成的模拟测试用例上双击,以打开测试用例编辑器61,其界面示意图如图6所示。对于执行完成的模拟测试用例,其执行结果也会展示在表格的最后一列,执行结果包括“正常”、“卡顿”、“崩溃”,其中,执行异常的模拟测试用例(例如执行结果为“卡顿”或者“崩溃”的模拟测试用例)会被标记出来,以供客户端的开发人员进行回溯和分析原因。
结果统计区55展示了当前模拟测试用例执行的总体情况,包括:本次执行的模拟测试用例的总条数、执行结果为正常的模拟测试用例的条数、执行结果为卡顿的模拟测试用例的条数、以及执行结果为崩溃的模拟测试用例的条数,这里可以大致描绘出被测即时通讯客户端面对异常协议数据时的处理能力。
本申请实施例通过测试程序,对被测即时通讯客户端实现协议托管、模拟测试用例注入、状态监控等,来检测被测即时通讯客户端面对异常协议数据的容错能力。下面对本申请实施例提供的测试程序的模块结构进行说明。
示例的,参见图7,图7是本申请实施例提供的测试程序的模块结构示意图。如图7所示,测试程序主要包括5个模块:IO模块、用例生成器、存储容器、用例执行器和界面展示模块。下面分别进行说明。
IO模块是测试程序对外的接口,主要负责托管被测即时通讯客户端,协议数据拦截、模拟测试用例注入等。测试程序启动后,IO模块将主动与被测即时通讯客户端建立进程通信,以获取协议列表。例如,当服务器向被测即时通讯客户端推送协议数据包时,测试程序通过IO模块从被测即时通讯客户端中获取协议数据包,并将所获取的协议数据包进行转换、存储、以及提供给下游的用例生成器。当后续用例执行器向被测即时通讯客户端注入模拟测试用例时,也是通过IO模块间接进行的。
用例生成器是测试程序的模拟测试用例生产者,负责协议数据的解析、模拟测试用例的自动化生成、模拟测试用例的手动编辑等。用例生成器的输入是原始数据,例如Protobuf文件、服务器推送的协议数据包、以及测试人员手动编辑的数据等,输出是一组可用于测试的模拟测试用例。用例生成器可以基于一个原始测试用例,变异生成一组类似的具有真实含义的模拟测试用例,其过程包括数据分解、字段变异、数据重组三个步骤。
示例的,参见图8,图8是本申请实施例提供的模拟测试用例自动化构造流程示意图。如图8所示,模拟测试用例自动化构造流程主要包括数据分解、字段变异和数据重组三个步骤。其中,字段变异是指将原始数据中的一个字段派生出多个值。本申请实施例建立了一套启发式随机化变异过程,通过模式匹配等方法智能识别出字段含义,从而实现精准变异。例如对于某个字段unit32_user_phone,首先将字段名进行分词处理,并从分词结果中识别出有效词汇{“unit32”,“phone”},与预设的词库进行匹配后可以确定,该字段表示的含义是32位无符号整型的电话号码,如此,一方面,可以派生出131XXXXXXXX、181XXXXXXXX等真实的手机号码,另一方面,也可以派生出-1,0等边界异常数据。随后,测试程序可以根据测试人员输入的测试目标、测试环境、测试步骤、预期结果、以及测试脚本等信息,并结合重组后得到的多组模拟数据,构造出多条模拟测试用例。从而,最终生成的模拟测试用例即保证了有效性又兼顾了随机性。
存储容器可以是基于SQLite技术实现本地的数据存储,主要用于存储生成的模拟测试用例集。其中,SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。当被测即时通讯客户端在执行模拟测试用例的过程中出现崩溃时,测试程序可以将被测即时通讯客户端重新唤起,并从存储容器中加载数据、以及恢复崩溃前的现场环境,以使被测即时通讯客户端继续执行剩余的模拟测试用例。上述过程无需测试人员的参与,因此可以降低人力成本,提高了协议自动化测试的效率。
在另一些实施例中,本地存储容器还可以是通过本地写入文本文件、或者二进制文件等方式实现。
用例执行器是测试程序的核心,主要负责将用例生成器生成的模拟测试用例注入被测即时通讯客户端中,同时监测被测即时通讯客户端的运行状态,当被测即时通讯客户端出现异常情况时进行标记,其调度流程如图9所示。
示例的,参见图9,图9是本申请实施例提供的模拟测试用例执行流程示意图。如图9所示,用例执行器首先从存储容器中读取模拟测试用例,接着将模拟测试用例注入被测即时通讯客户端中,注入的同时开启对被测即时通讯客户端的性能检测。性能检测模块(图7中未示出)可以实时检测到被测即时通讯客户端进程的异常,例如出现卡顿、内存泄露、以及崩溃等,并记录下导致被测即时通讯客户端出现异常的模拟测试用例。当被测即时通讯客户端出现崩溃(crash)时,通过UI对其进行自动唤起,恢复现场并继续下一条模拟测试用例的执行。在所有模拟测试用例执行完成后,生成测试报告,报告中标记的异常模拟测试用例可以用于给开发人员回顾(review)代码。
本申请实施例提供的面向即时通讯客户端的协议自动化测试程序不仅能够检测被测即时通讯客户端面对各种异常协议数据输入时的表现,从而及时发现潜在的漏洞,以提高被测即时通讯客户端的容错性,而且,可以自动化生成和执行模拟测试用例,提高了协议测试的效率,从而减少了开发人员和测试人员的工作量。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的网络协议测试方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的网络协议测试方法,例如,如图3A、图3B、图4A、或者图4B示出的网络协议测试方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超日志标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例具有以下有益效果:
通过获取客户端从网络中接收的网络协议数据包,可以让测试人员接触到客户端的协议层,从而提供给测试人员任意构造模拟测试用例的机会,以尽可能地覆盖到所有场景;同时,对基于网络协议数据包生成的原始测试用例进行变异操作,保证了生成的模拟测试用例具有针对性,且模拟测试用例的生成过程自动化,节省了人力成本;进一步地,通过记录每条模拟测试用例分别对应的执行结果,并根据执行结果生成测试报告,方便了测试人员或者开发人员后续可以根据测试报告进行回溯和分析。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (11)

1.一种网络协议测试方法,其特征在于,所述方法包括:
获取目标客户端接收的网络协议数据包;
响应于生成模拟测试用例的触发操作,针对每条原始测试用例,执行以下操作:对所述原始测试用例进行分解处理,得到多个字段;针对每个所述字段,派生出与所述字段对应的多个字段值;对每个所述字段分别对应的多个字段值进行重组处理,得到与所述原始测试用例对应的至少一条模拟测试用例,其中,所述原始测试用例是基于所述网络协议数据包生成的,所述模拟测试用例是具有真实含义的协议数据;
基于所述至少一条模拟测试用例,对所述目标客户端进行测试。
2.根据权利要求1所述的方法,其特征在于,在生成至少一条模拟测试用例之后,所述方法还包括:
将所述至少一条模拟测试用例存入预先创建的模拟测试用例集合中;所述模拟测试用例集合是基于关系数据库管理系统创建的。
3.根据权利要求1所述的方法,其特征在于,所述针对每个所述字段,派生出与所述字段对应的多个字段值,包括:
对所述字段的名称进行分词处理,并从分词结果中识别出有效词汇;
将所述有效词汇与预设的词库进行匹配,并根据匹配结果得到与所述字段对应的多个字段值;
其中,所述字段值包括:正常字段值和异常字段值。
4.根据权利要求1所述的方法,其特征在于,当所述至少一条模拟测试用例不满足测试需求时,所述方法还包括:
获取所述目标客户端接收的网络协议缓冲区文件;
其中,所述网络协议缓冲区文件中定义有所述网络协议的格式;
响应于根据所述格式提交的重新编辑操作,针对所述不满足测试需求的至少一条模拟测试用例,生成一一对应的至少一条新模拟测试用例。
5.根据权利要求1所述的方法,其特征在于,所述基于所述至少一条模拟测试用例,对所述目标客户端进行测试,包括:
针对每条所述模拟测试用例,执行以下操作:
监测所述目标客户端在执行所述模拟测试用例过程中的运行状态,以根据所述运行状态确定对应的执行结果;
其中,所述执行结果包括以下至少之一:正常、卡顿、崩溃。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当监测到所述目标客户端在执行所述模拟测试用例的过程中发生崩溃时,重新唤起所述目标客户端,并将所述至少一条模拟测试用例中未执行的模拟测试用例重新注入所述目标客户端,以使所述目标客户端继续执行所述未执行的模拟测试用例。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
对所述至少一条模拟测试用例中执行结果为卡顿或者崩溃的模拟测试用例进行标记,并在显示执行结果时,针对被标记的模拟测试用例显示相应的标记信息。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
在完成测试之后,在人机交互界面中呈现以下内容至少之一:
当前执行的模拟测试用例的总条数;
当前执行的模拟测试用例中执行结果为正常的模拟测试用例的条数;
当前执行的模拟测试用例中执行结果为卡顿的模拟测试用例的条数;
当前执行的模拟测试用例中执行结果为崩溃的模拟测试用例的条数。
9.一种网络协议测试装置,其特征在于,所述装置包括:
获取模块,用于获取目标客户端接收的网络协议数据包;
生成模块,用于响应于生成模拟测试用例的触发操作,针对每条原始测试用例,执行以下操作:对所述原始测试用例进行分解处理,得到多个字段;针对每个所述字段,派生出与所述字段对应的多个字段值;对每个所述字段分别对应的多个字段值进行重组处理,得到与所述原始测试用例对应的至少一条模拟测试用例,其中,所述原始测试用例是基于所述网络协议数据包生成的;所述模拟测试用例是具有真实含义的协议数据;
测试模块,用于基于所述至少一条模拟测试用例,对所述目标客户端进行测试。
10.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至8任一项所述的网络协议测试方法。
11.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至8任一项所述的网络协议测试方法。
CN202011062913.8A 2020-09-30 2020-09-30 网络协议测试方法及装置 Active CN112187585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011062913.8A CN112187585B (zh) 2020-09-30 2020-09-30 网络协议测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011062913.8A CN112187585B (zh) 2020-09-30 2020-09-30 网络协议测试方法及装置

Publications (2)

Publication Number Publication Date
CN112187585A CN112187585A (zh) 2021-01-05
CN112187585B true CN112187585B (zh) 2023-10-27

Family

ID=73948243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011062913.8A Active CN112187585B (zh) 2020-09-30 2020-09-30 网络协议测试方法及装置

Country Status (1)

Country Link
CN (1) CN112187585B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238929B (zh) * 2021-04-25 2022-09-27 平安普惠企业管理有限公司 基于Mock数据的代码测试方法、装置、电子设备及存储介质
CN113709126A (zh) * 2021-08-18 2021-11-26 深圳开源互联网安全技术有限公司 网络协议安全模糊测试方法、装置、设备以及存储介质
CN113765718B (zh) * 2021-09-10 2023-06-09 烽火通信科技股份有限公司 一种面向quic协议的测试拓扑构建方法及装置
CN114205340B (zh) * 2021-12-23 2024-04-02 绿盟科技集团股份有限公司 一种基于智能电力设备的模糊测试方法及装置
CN114860619B (zh) * 2022-07-07 2022-09-13 北京安华金和科技有限公司 一种数据库审计程序回归测试方法和装置
CN115225552A (zh) * 2022-07-29 2022-10-21 重庆长安汽车股份有限公司 实时发布订阅协议的测试方法、装置、设备及介质
CN115412473B (zh) * 2022-08-30 2024-03-29 云控智行(上海)汽车科技有限公司 一种用于车辆实时检测智能网联广播信号数据一致性方法及终端
CN115776456A (zh) * 2022-11-28 2023-03-10 重庆长安汽车股份有限公司 通信协议测试方法、装置、测试设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106506280A (zh) * 2016-11-24 2017-03-15 工业和信息化部电信研究院 智能家居设备的通信协议测试方法及系统
CN109167796A (zh) * 2018-09-30 2019-01-08 浙江大学 一种基于工业scada系统的深度包检测平台
CN110430184A (zh) * 2019-07-31 2019-11-08 腾讯科技(深圳)有限公司 数据模拟方法、装置、计算机可读存储介质和计算机设备
CN110752966A (zh) * 2019-10-08 2020-02-04 南京南瑞继保电气有限公司 网络协议安全测试方法及装置、电子设备及存储介质
CN111181802A (zh) * 2019-12-10 2020-05-19 中移(杭州)信息技术有限公司 协议数据模拟方法、装置及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106506280A (zh) * 2016-11-24 2017-03-15 工业和信息化部电信研究院 智能家居设备的通信协议测试方法及系统
CN109167796A (zh) * 2018-09-30 2019-01-08 浙江大学 一种基于工业scada系统的深度包检测平台
CN110430184A (zh) * 2019-07-31 2019-11-08 腾讯科技(深圳)有限公司 数据模拟方法、装置、计算机可读存储介质和计算机设备
CN110752966A (zh) * 2019-10-08 2020-02-04 南京南瑞继保电气有限公司 网络协议安全测试方法及装置、电子设备及存储介质
CN111181802A (zh) * 2019-12-10 2020-05-19 中移(杭州)信息技术有限公司 协议数据模拟方法、装置及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于网络协议的模糊测试工具设计;赵鑫;巫忠跃;易冬阳;付枭;;通信技术(11);全文 *

Also Published As

Publication number Publication date
CN112187585A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
CN112187585B (zh) 网络协议测试方法及装置
US8990775B2 (en) Collaborative software debugging in a distributed system with dynamically displayed chat sessions
CN112380093A (zh) 运维处理方法、装置及计算机设备
CN111444103B (zh) 一种Web页面自动化测试方法及相关设备
CN112988599B (zh) 一种页面调试方法、装置、电子设备和存储介质
US10164848B1 (en) Web service fuzzy tester
US11809882B2 (en) Interface calling method and apparatus, and computer-readable storage medium
CN111309620B (zh) 一种游戏协议测试方法、装置、电子设备和存储介质
US9892028B1 (en) System and method for debugging of webcasting applications during live events
CN107168844B (zh) 一种性能监控的方法及装置
CN112115038A (zh) 一种应用测试方法、装置和存储介质
CN111309343A (zh) 一种开发部署方法及装置
US10025697B2 (en) Generation of automated unit tests for a controller layer system and method
CN113778897A (zh) 接口的自动测试方法、装置、设备及存储介质
Wu et al. AppCheck: a crowdsourced testing service for android applications
CN112988267A (zh) 加载方法、装置、存储介质及电子设备
CN115858556A (zh) 一种数据处理方法、装置、存储介质及电子设备
Jiang et al. To what extent is stress testing of android TV applications automated in industrial environments?
CN114745313A (zh) 终端远程测试方法、装置、电子设备和可读介质
CN113641575A (zh) 一种测试方法、装置、设备及存储介质
CN113157554A (zh) 一种软件自动化做题测试方法以及相关设备
CN107276852B (zh) 一种数据安全检测方法及终端
CN111143227A (zh) 一种数据操作方法、装置、终端及存储介质
WO2024066622A1 (zh) 云系统的测试方法及装置
Kuļešovs et al. An Approach for iOS Applications' Testing

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant