具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)电子邮件(E-mail或Mail,Electronic Mail):由邮件头和邮件体组成,用户之间可以通过电子邮件联系。
2)简单邮件传输协议(SMTP,Simple Mail Transfer Protocol):传输发送邮件所使用的标准协议。
3)邮件交换(MX,Mail Exchanger)服务:即MX记录,是域名系统(DNS,Domain NameSystem)中的一种资源记录类型,用于指定负责处理发往收件人域名的邮件服务器。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。SMTP会根据MX记录的值来决定邮件的路由过程,例如,接受外系统邮箱入信服务。
4)电子邮件系统(E-mail System,Electronic mail system):电子邮件系统由邮件用户代理以及邮件传输代理、和邮件投递代理组成,邮件用户代理指用于收发Mail的程序,邮件传输代理指将来自邮件用户代理的信件转发给指定用户的程序,邮件投递代理就是将邮件传输代理接收的信件依照信件的流向(送到哪里)将该信件放置到本机账户下的邮件文件中(收件箱),当用户从邮件用户代理中发送一份邮件时,该邮件会被发送送到邮件传输代理,而后在一系列邮件传输代理中转发,直到它到达最终发送目标为止。
5)扩展SMTP(ESMTP,Extended SMTP)服务:邮箱发信服务,接受MUA提交的发信请求。
6)邮局协议(POP,Post Office Protocol):用于电子邮件的接收,本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。
7)交互邮件访问协议(IMAP,Internet Mail Access Protocol):邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。
8)POP/IMAP服务:处理MUA提取邮件的请求,以及同步邮件的状态。
9)邮件用户代理(MUA,Mail User Agent):即电子邮件客户端,接收邮件所使用的邮件客户端,使用IMAP或POP3协议与邮件传输代理通信。
10)邮件传输代理(MTA,Mail Transfer Agent):通过SMTP协议发送、转发邮件到收件人地址的对应的邮件服务器中的MTA。
11)邮件投递代理(MDA,Mail Deliver Agent):将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;将接收下来的邮件存放到对应用户邮筒当中的程序。通过分析MTA所收到邮件的表头或内容,来判断此邮件是属于哪个用户,然后决定将此邮件投递给用户的子文件夹中。
12)邮件接收代理(MRA,Mail Receive Agent):负责实现IMAP与POP3协议,与MUA进行交互;通过收信协议(例如POP,IMAP)来从MTA收取邮件,并传递给MUA。
13)发信协议:约束发信(例如,发信方MUA向发信方的MTA传输邮件的过程、以及发信方的MTA向收信方的MTA传输邮件的过程)的规范,例如SMTP协议,包括发信过程中的一系列的指令和应答(即协议返回码)。
14)收信协议:MUA从邮件服务器收取电子邮件的规范,例如IMAP和POP3协议,包括收信过程中的一系列的指令和应答(即协议返回码)。
本发明实施例提供一种电子邮件协议服务的测试方法、装置、设备和存储介质,能够对电子邮件协议服务进行简便而高效的测试。下面说明本发明实施例提供的电子邮件系统的示例性应用,本发明实施例提供的电子邮件系统中的服务分别设置在用户终端和邮件服务器,其中,邮件用户代理服务位于用户终端,其他服务(例如,邮件传输代理服务、邮件投递代理服务以及邮件接收代理服务)位于邮件服务器,邮件服务器包括发信方的邮件服务器和收信方的邮件服务器)。
下面,将结合图1说明本发明实施例提供的电子邮件系统中的邮件从发送到接收的过程,图1是本发明实施例提供的电子邮件系统10的示意图。
首先,发信方通过发信方用户终端100中的MUA创建邮件,并通过发信协议(例如,SMTP协议)将创建的邮件发送至发信方服务器200中的MTA;发信方服务器200中的MTA根据邮件的收信方的邮件地址,通过用户数据报协议(UDP,User Datagram Protocol)向DNS服务器中的MX记录中查询收信方(的邮件地址对应)邮件服务器300的域名;发信方邮件服务器200中的MTA使用发信协议将邮件发送至收信方邮件服务器300的MTA。需要说明的是,邮件在到达收信方邮件服务器300的MTA之前,可以经过一个或多个MTA的转发。
然后,收信方邮件服务器300中的MTA接管这封邮件,将邮件保存到本地磁盘,并将邮件发送至收信方邮件服务器300中的MDA,其中,有些MDA也可以完成其他功能,比如邮件过滤或将邮件直接投递到子文件夹中。
最后,收信方通过收信方用户终端400中的MUA使用收信协议(例如,IMAP协议或POP3协议)到收信方邮件服务器300中收信,具体是,收信方用户终端400中的MUA与收信方邮件服务器300中的MRA建立连接,使用收信协议,经由收信方邮件服务器300中的MRA到MDA的子文件夹中查询收信方发来的邮件,并取回邮件。
接下来继续说明本发明实施例提供的电子邮件协议服务的测试设备的结构,本发明实施例提供的电子邮件协议服务的测试设备可以是服务器,也可以是服务器集群。
参见图2,图2是本发明实施例提供的电子邮件协议服务的测试设备500的结构示意图,图2所示的电子邮件协议服务的测试设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。电子邮件协议服务的测试设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器550旨在包括任意适合类型的存储器。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的电子邮件协议服务的测试装置可以采用软硬件结合的方式实现,作为示例,本发明实施例提供的电子邮件协议服务的测试装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的电子邮件协议服务的测试方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在另一些实施例中,本发明实施例提供的电子邮件协议服务的测试装置可以采用软件方式实现,图2示出了存储在存储器550中的电子邮件协议服务的测试装置555,其可以是程序和插件等形式的软件,包括以下软件模块:运行模块5551、发送模块5552、记录模块5553和比对模块5554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的电子邮件协议服务的测试装置可以采用硬件方式实现,作为示例,本发明实施例提供的电子邮件协议服务的测试装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的电子邮件协议服务的测试方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面将结合附图对本发明实施例的实施方法作进一步地详细描述。参见图3,图3是本发明实施例提供的电子邮件协议服务的测试方法的流程示意图,将结合图3示出的步骤进行说明。
在步骤S101中,测试服务器运行支持待测试的电子邮件协议的模拟服务。
在一些实施例中,测试服务器上运行的模拟服务具有向待测试电子邮件协议服务发送电子邮件协议中的指令的功能。
作为示例,当待测试的电子邮件协议是发信协议时,模拟服务是发信方用户终端100中的MUA,发信方用户终端100中的MUA可以向发信方邮件服务器200中的MTA发送待测试发信协议中用于发送电子邮件样本的指令。
作为示例,当待测试的电子邮件协议是收信协议时,模拟服务是收信方用户终端400中的MUA,收信方用户终端400中的MUA可以向收信方邮件服务器300中的MTA发送待测试发信协议中用于接收电子邮件样本的指令。
在步骤S102中,测试服务器通过模拟服务向待测试电子邮件协议服务发送电子邮件协议中的指令。
在一些实施例中,测试服务器通过变换模拟服务与待测试电子邮件协议服务之间的连接的数量的方式,更新待测试电子邮件协议服务的负载压力;通过每个连接,并行向待测试电子邮件协议服务发送与负载压力对应的电子邮件样本,其中,更新所述待测试电子邮件协议服务的负载压力的方式包括以下至少之一:阶梯性调整负载压力、随机性调整负载压力。
作为示例,测试服务器可以根据压力场景部署模拟服务,其中,压力场景的参考因素是模拟服务与待测试电子邮件协议服务之间的连接的数量,即待测试电子邮件协议服务的负载压力由模拟服务与待测试电子邮件协议服务之间的连接的数量决定。模拟服务与待测试电子邮件协议服务之间的连接的数量越高,单位时间内测试服务器通过模拟服务向待测试电子邮件协议服务发送电子邮件样本的数量越大,即待测试电子邮件协议服务的负载压力越大,例如:模拟服务与待测试电子邮件协议服务之间的连接的数量为10000时,待测试电子邮件协议服务的负载压力低于连接的数量为15000的负载压力。
需要说明的是,待测试电子邮件协议服务的负载压力可以以多种方式进行变化,例如,阶梯性调整(将模拟服务与待测试电子邮件协议服务之间的连接的数量从10000开始,每间隔固定时间段,模拟服务与待测试电子邮件协议服务之间的连接数提高500个)或随机性调整(预先设置模拟服务与待测试电子邮件协议服务之间的连接的数量为10000、15000、和18000等,每间隔固定或随机时间段,模拟服务与待测试电子邮件协议服务之间的连接数在预先设置的连接数之间变换)。
本发明实施例通过构造不同的压力场景,使待测试电子邮件协议服务的负载压力不同,能够对待测试电子邮件协议服务进行全面的测试,从而可以确定待测试电子邮件协议服务的负载压力阈值。
在一些实施例中,测试服务器构造与负载压力对应的电子邮件样本的过程如下:获取至少一个种子邮件样本,其中,种子邮件样本包括邮件头和邮件体;分别对种子邮件样本的邮件头和邮件体进行内容重组,以获取多个不同的邮件头和多个不同的邮件体;将多个不同的邮件头和多个不同的邮件体进行排列组合,以构造与负载压力对应的电子邮件样本。
这里,测试服务器中可以通过模拟服务构造与负载压力对应的电子邮件样本,也可以并行运行一个邮件样本构造服务,测试服务器可以通过邮件样本构造服务,获得包含大量电子邮件样本的电子邮件样本库。
参见图4,图4是本发明实施例提供的电子邮件样本的组成结构示意图。电子邮件样本由一个邮件头和一个邮件体构成,其中,邮件头中包括以下至少之一:日期、发信方、主题、版本、邮件发送的客户端和返回路径,邮件体中包括以下至少之一:内容类型、编码、正文和附件。
作为示例,测试服务器可以通过邮件样本构造服务获取一个种子邮件样本,其中,种子邮件样本包括一个种子邮件头和一个种子邮件体。通过邮件样本构造服务可以分别对种子邮件头和种子邮件体进行内容重组,例如,种子邮件头中的日期为2019年10月11日,可以通过日期递增重组,将邮件头中的日期衍生为日期为2019年10月12日、2019年10月13日、2019年10月14日以及2019年10月15日等日期不同的邮件头。以此类推,测试服务器可以通过邮件样本构造服务获取多个不同的邮件头和多个不同的邮件体,然后将多个不同的邮件头和多个不同的邮件体进行排列组合,以获得大量的电子邮件样本。
举例来说,种子邮件样本包含种子邮件头A和种子邮件体B,通过邮件样本构造服务分别对种子邮件头A和种子邮件体B进行内容重组,以获得邮件头A1、A2、A3、......、An和邮件体B1、B2、B3、…、Bn,然后将其进行排列组合,以获得
个电子邮件样本A1+B1、A2+B1、A3+B1、……、An+Bn,其中,n为正整数。
本发明实施例通过少量的种子邮件样本可以自动泛化构造出大量的邮件样本,无需耗费创建电子邮件样本的成本。
在步骤S103中,电子邮件服务器通过待测试电子邮件协议服务根据所接收的指令处理测试用例中的电子邮件样本,并向模拟服务返回应答。
在一些实施例中,当待测试的电子邮件协议是发信协议时,待测试发信协议服务接收待测试发信协议中的用于发送电子邮件样本的指令,并根据发送电子邮件样本的指令处理测试用例中的电子邮件样本,并向模拟服务返回应答。
在一些实施例中,当待测试的电子邮件协议是发信协议时,待测试收信协议服务接收待测试收信协议中的用于接收电子邮件样本的指令,并根据接收电子邮件样本的指令处理测试用例中的电子邮件样本,并向模拟服务返回应答。
这里,待测试电子邮件协议服务根据所接收的指令处理测试用例中的电子邮件样本时,会向模拟服务返回不同的协议返回码,其中,协议返回码示例如下:
501参数格式错误
502命令不可实现
503错误的命令序列
504命令参数不可实现
211系统状态或系统帮助响应
214帮助信息
220服务就绪
221服务关闭
421服务未就绪,关闭传输信道
250要求的邮件操作完成
450要求的邮件操作未完成,邮箱不可用
550要求的邮件操作未完成,邮箱不可用
451放弃要求的操作;处理过程中出错
452系统存储不足,要求的操作未执行
552过量的存储分配,要求的操作未执行
553邮箱名不可用,要求的操作未执行
354开始邮件输入
554操作失败
在步骤S104中,测试服务器通过模拟服务根据测试用例中配置的检查点,记录待测试电子邮件协议服务在相应检查点对应返回的应答。
在一些实施例中,测试用例的创建过程具体如下:测试服务器通过模拟服务,向基准电子邮件协议服务发送电子邮件协议中的指令,以使基准电子邮件协议服务根据所接收的指令处理电子邮件样本,并向模拟服务返回应答;根据基准电子邮件协议服务返回的应答、以及电子邮件样本,构建测试用例;其中,测试用例中的配置至少包括:待测试电子邮件协议服务的地址和端口、收信方地址、电子邮件样本路径、加密通信方式、检查点(Checkpoint)、以及期望应答。其中,基准电子邮件协议服务是能够根据电子邮件协议正常处理电子邮件样本的服务
作为示例,每个检查点是对应电子邮件协议指令中的一个包括发送和应答的环节,例如,当模拟服务从基准电子邮件协议服务在一个检查点处获取的协议返回码为250(要求的邮件操作完成),并且利用待测试电子邮件协议服务收信时,模拟服务在该检查点接收的协议返回码为250,表示待测试电子邮件协议服务在该检查点无误。
举例来说,测试用例的格式具体如下:
mail from;邮箱域名检查:内域邮箱
host=xxx;待测试电子邮件协议服务的地址
port=xxx;待测试电子邮件协议服务的端口
detail=收件人检查;测试用例的描述信息
fromaddr=xxx;发信方地址
data_to_addr=xxx;收信方地址
data_cc=xxx;抄送收信方
data_bcc=xxx;暗送收信方
emlpath=./Sample/normalSample/test test_.eml;邮件样本路径
starttls=starttls;加密通信方式,即是否使用机会性加密(Starttls)
checkpoint=data:250;检查点处的协议返回码为250(要求的邮件操作完成)
本发明实施例通过根据基准电子邮件协议服务返回的应答、以及电子邮件样本,自动构建测试用例,降低了电子邮件协议服务的测试成本,从而可以更高效对电子邮件协议服务进行测试。
在一些实施例中,测试服务器根据待测试电子邮件协议服务在相应检查点对应返回的应答,提取待测试电子邮件协议服务的关键信息,其中,关键信息至少包括服务信息、应答类型、和应答耗时;根据关键信息,确定待测试电子邮件协议服务在处理电子邮件样本过程中的故障位置以及故障原因。
这里,测试服务器中可以通过模拟服务提取待测试电子邮件协议服务的关键信息,也可以并行运行一个数据分析服务,测试服务器可以通过数据分析服务服务,提取待测试电子邮件协议服务的关键信息。关键信息中的服务信息是指待测试电子邮件协议服务的类型,例如发信协议服务或收信协议服务等;关键信息中的应答类型是指待测试电子邮件协议服务在相应检查点返回的协议返回码,例如554(操作失败)或250(要求的邮件操作完成)等;关键信息中的应答耗时是指待测试电子邮件协议服务响应指令所耗费的时间。
在一些实施例中,当待测试电子邮件协议为发信协议时,通过邮件用户代理,接收待测试发信协议服务执行发信协议中被配置的指令时返回的应答、以及对应的关键信息;实时在日志中记录返回的应答和关键信息,并根据日志对待测试发信协议服务进行错误分析和性能监控。
作为示例,当待测试的电子邮件协议是发信协议时,模拟服务是发信方用户终端100中的MUA,待测试发信协议服务是发信方邮件服务器200中的MTA。发信方用户终端100中的MUA接收发信方邮件服务器200中的MTA返回的应答和关键信息,实时在日志中记录返回的应答和关键信息,并根据日志对发信方邮件服务器200中的MTA进行错误分析和性能监控。
在一些实施例中,当待测试电子邮件协议为收信协议时,通过邮件用户代理,接收待测试收信协议服务执行收信协议中被配置的指令时返回的应答、以及对应的关键信息。实时在日志中记录返回的应答和关键信息,并根据日志对待测试收信协议服务进行错误分析和性能监控。
作为示例,当待测试的电子邮件协议是收信协议时,模拟服务是收信方用户终端400中的MUA,待测试发信协议服务是收信方邮件服务器300中的MTA。收信方用户终端400中的MUA接收收信方邮件服务器300中的MTA返回的应答和关键信息,实时在日志中记录返回的应答和关键信息,并根据日志对收信方邮件服务器300中的MTA进行错误分析和性能监控。
举例来说,当待测试电子邮件协议服务在检查点A对应返回的协议返回码为501(参数格式错误)时,测试服务器可以确定待测试电子邮件协议服务在处理电子邮件样本过程中的故障位置检查点A,并且可以确定在检查点A处的故障原因是待测试电子邮件协议服务的参数格式错误。
举例来说,当待测试电子邮件协议服务在检查点B对应返回的协议返回码为504(命令参数不可实现)时,测试服务器可以确定待测试电子邮件协议服务在处理电子邮件样本过程中的故障位置检查点B,并且可以确定在检查点B处的故障原因是待测试电子邮件协议服务的命令参数错误。
举例来说,由于测试服务器实时在日志中记录返回的应答和关键信息,因此,当待测试电子邮件协议服务在检查点对应返回的协议返回码是除250(要求的邮件操作完成)以外的协议返回码时,测试服务器可以及时暂停待测试电子邮件协议服务处理邮件的进程,从而可以节约服务器资源。
在步骤S105中,测试服务器将记录的应答与测试用例中配置的期望应答进行比对,得到待测试电子邮件协议服务的测试结果。
这里,测试服务器中可以通过模拟服务将记录的应答与测试用例中配置的期望应答进行比对,得到电子邮件协议的测试结果,也可以并行运行一个数据比对服务,测试服务器可以通过数据比对服务,将记录的应答与测试用例中配置的期望应答进行比对,得到电子邮件协议的测试结果。
作为示例,当记录的应答与测试用例中配置的期望应答一致时,获得表征待测试电子邮件协议服务无误的测试结果,即待测试电子邮件协议服务能够正常使用。当记录的应答与测试用例中配置的期望应答不一致时,获得表征待测试电子邮件协议服务有误的测试结果,即待测试电子邮件协议服务不能正常使用。
参见图5,图5是本发明实施例提供的电子邮件协议服务的测试方法的流程示意图,基于图3,在步骤S101之后可以包括步骤S106至步骤S108。
在步骤S106中,测试服务器通过模拟服务,向基准电子邮件协议服务发送电子邮件协议中的指令。
这里,基准电子邮件协议服务运行于电子邮件服务器,需要说明的是,基准电子邮件协议服务和待测试电子邮件协议服务是可以实现相同功能的服务,两者的区别是基准电子邮件协议服务能够根据电子邮件协议正常处理电子邮件样本的服务,而待测试电子邮件协议服务不一定能够根据电子邮件协议正常处理电子邮件样本的服务。
在步骤S107中,电子邮件服务器通过基准电子邮件协议服务根据所接收的指令处理电子邮件样本,并向模拟服务返回应答。
在一些实施例中,当待测试的电子邮件协议是发信协议时,基准电子邮件协议服务接收待测试发信协议中的用于发送电子邮件样本的指令,并根据发送电子邮件样本的指令处理测试用例中的电子邮件样本,并向模拟服务返回应答。
在一些实施例中,当待测试的电子邮件协议是发信协议时,基准电子邮件协议服务接收待测试收信协议中的用于接收电子邮件样本的指令,并根据接收电子邮件样本的指令处理测试用例中的电子邮件样本,并向模拟服务返回应答。
在步骤S108中,当所返回的应答表征为成功时,测试服务器将对应的指令记录为检查点,将返回的应答记录为期望应答。
在一些实施例中,当基准电子邮件协议服务根据所接收的指令处理电子邮件样本,并向模拟服务返回的协议返回码为250(要求的邮件操作完成)时,测试服务器将对应的指令记录为检查点,并将返回的协议返回码250记录为期望应答。
本发明实施例通过向基准电子邮件协议服务发送指令,并根据基准电子邮件协议服务返回的应答确定检查点和期望应答,可以使测试待测试电子邮件协议服务时,根据确定的检查点和期望应答获得待测试电子邮件协议服务的测试结果,从而使得待测试电子邮件协议服务的测试结果准确性更高。
参见图6,图6是本发明实施例提供的电子邮件协议服务的测试方法的流程示意图,基于图3,在步骤S105之后可以包括步骤S109至步骤S110。
在步骤S109中,测试服务器通过待测试电子邮件协议服务已处理的电子邮件样本,获取电子邮件样本的邮件头中携带的测试任务标识(ID)和时间戳、以及电子邮件样本的摘要。
这里,待测试电子邮件协议服务的正确性还可以通过待测试电子邮件协议服务已处理的电子邮件样本确定。
在一些实施例中,在向待测试电子邮件协议服务发送的电子邮件样本时,将测试任务标识和时间戳作为邮件主题构造电子邮件样本,例如,测试服务器通过邮件样本构造服务将测试任务标识和生成电子邮件样本的时间戳作为电子邮件样本的邮件主题,以保证构造的电子邮件样本每一个都是唯一的,并提取电子邮件样本的摘要(或称电子邮件样本的内容的摘要)。
在步骤S110中,测试服务器根据测试任务标识、时间戳和电子邮件样本的摘要,确定待测试电子邮件协议服务重复处理的电子邮件样本、处理异常的电子邮件样本、以及丢弃的电子邮件样本。
在一些实施例中,由于电子邮件样本的唯一性,可以根据电子邮件样本的邮件主题中包含的测试任务标识和时间戳,对收信返回的邮件列表(MAILLIST)进行比对,以确定待测试电子邮件协议服务重复处理的电子邮件样本、处理异常的电子邮件样本、以及丢弃的电子邮件样本。这里,时间戳可以是测试服务器生成电子邮件样本的时间戳,也可以是通过模拟服务将电子邮件样本进行发送的时间戳。
作为示例,根据电子邮件样本的邮件主题,对邮件接收过程中返回的邮件列表(Mail list)进行比对,当邮件主题和邮件列表对应一致时,再检查邮件内容的摘要的一致性,当邮件内容的摘要一致时,则确定待测试电子邮件协议服务正确。
在一些实施例中,测试服务器确定待测试电子邮件协议服务重复处理的电子邮件样本、处理异常的电子邮件样本、以及丢弃的电子邮件样本后,可以将复处理的电子邮件样本、处理异常的电子邮件样本、以及丢弃的电子邮件样本进行记录,以便于后续对待测试电子邮件协议服务进行错误分析和性能监控。
作为示例,当待测试电子邮件协议服务已处理的电子邮件样本的测试任务标识和时间戳是重复时,确定该电子邮件样本是被待测试电子邮件协议服务重复处理的,可以将被重复处理的电子邮件样本进行删除。
举例来说,当邮件样本构造服务每隔2秒生成一个新的电子邮件样本时,连续生成任务标识为A的电子邮件样本的时间戳分别是2019年10月14日08时08分08秒、2019年10月14日08时08分10秒、2019年10月14日08时08分12秒、2019年10月14日08时08分14秒等,待测试电子邮件协议服务处理的测试任务标识为A、且时间戳为2019年10月14日08时08分10秒的电子邮件样本重复出现多次,则可确定该电子邮件样本被重复处理,可以将被重复处理的电子邮件样本进行删除。
作为示例,当待测试电子邮件协议服务处理的电子邮件样本的测试任务标识和时间戳是间隔的,则确定该电子邮件样本在处理过程中被丢弃的,可以将被丢弃的电子邮件样本重新通过模拟服务进行发送。
举例来说,当邮件样本构造服务每隔2秒生成一个新的电子邮件样本时,连续生成任务标识为A的电子邮件样本的时间戳分别是2019年10月14日08时08分08秒、2019年10月14日08时08分10秒、2019年10月14日08时08分12秒、2019年10月14日08时08分14秒等,待测试电子邮件协议服务处理的测试任务标识为A、且时间戳为2019年10月14日08时08分10秒的电子邮件样本未出现,仅出现时间戳是2019年10月14日08时08分08秒、以及2019年10月14日08时08分12秒的电子邮件样本,则可以确定该电子邮件样本在处理过程中被丢弃,可以将被丢弃的电子邮件样本重新通过模拟服务进行发送。
作为示例,当待测试电子邮件协议服务处理的电子邮件样本的测试任务标识和时间戳是有误的(例如邮件主题丢失或乱码),则确定处理该电子邮件样本的过程是异常的,可以将处理异常的电子邮件样本重新通过模拟服务进行发送。
本发明实施例通过检查待测试电子邮件协议服务处理的电子邮件样本的邮件头中携带的测试任务标识和时间戳,可以进一步提高待测试电子邮件协议服务的测试结果的准确性。
下面继续结合图2说明本发明实施例提供的电子邮件协议服务的测试装置555的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器550的电子邮件协议服务的测试装置555中的软件模块可以包括:运行模块5551、发送模块5552、记录模块5553和比对模块5554。
运行模块5551,用于运行支持待测试的电子邮件协议的模拟服务;
发送模块5552,用于通过所述模拟服务,向待测试电子邮件协议服务发送所述电子邮件协议中的指令,以使所述待测试电子邮件协议服务根据所接收的指令处理测试用例中的电子邮件样本,并向所述模拟服务返回应答;
记录模块5553,用于根据所述测试用例中配置的检查点,记录所述待测试电子邮件协议服务在相应检查点对应返回的应答;
比对模块5554,用于将所述记录的应答与所述测试用例中配置的期望应答进行比对,得到所述待测试电子邮件协议服务的测试结果。
上述技术方案中,所述装置还包括:基准测试模块,用于通过所述模拟服务,向基准电子邮件协议服务发送所述电子邮件协议中的指令,以使所述基准电子邮件协议服务根据所接收的指令处理所述电子邮件样本,并向所述模拟服务返回应答;当所返回的应答表征为成功时,将对应的指令记录为所述检查点,将返回的应答记录为所述期望应答;其中,所述基准电子邮件协议服务是能够根据所述电子邮件协议正常处理所述电子邮件样本的服务。
上述技术方案中,所述发送模块5552,还用于通过变换所述模拟服务与所述待测试电子邮件协议服务之间的连接的数量的方式,更新对所述待测试电子邮件协议服务的负载压力,其中,更新所述待测试电子邮件协议服务的负载压力的方式包括以下至少之一:阶梯性调整负载压力、随机性调整负载压力;通过每个连接,并行向所述待测试电子邮件协议服务发送与所述负载压力对应的所述电子邮件样本。
上述技术方案中,所述发送模块5552,还用于获取至少一个种子邮件样本,其中,所述种子邮件样本包括一个邮件头和一个邮件体;分别对所述种子邮件样本的邮件头和邮件体进行内容重组,以获取多个不同的邮件头和多个不同的邮件体;将所述多个不同的邮件头和所述多个不同的邮件体进行排列组合,以构造与所述负载压力对应的所述电子邮件样本。
上述技术方案中,所述装置还包括:确定样本模块,用于通过所述待测试电子邮件协议服务已处理的所述电子邮件样本,获取所述电子邮件样本的邮件头中携带的测试任务标识和时间戳、以及所述电子邮件样本的摘要;根据所述测试任务标识、所述时间戳和所述电子邮件样本的摘要,确定所述待测试电子邮件协议服务重复处理的电子邮件样本、处理异常的电子邮件样本、以及丢弃的电子邮件样本。
上述技术方案中,所述装置还包括:确定故障模块,用于根据所述待测试电子邮件协议服务在相应检查点对应返回的应答,提取所述待测试电子邮件协议服务的关键信息,其中,所述关键信息至少包括服务信息、应答类型、和应答耗时;根据所述关键信息,确定所述待测试电子邮件协议服务在处理所述电子邮件样本过程中的故障位置以及故障原因。
上述技术方案中,所述装置还包括:用例配置模块,用于通过所述模拟服务,向基准电子邮件协议服务发送所述电子邮件协议中的指令,以使所述基准电子邮件协议服务根据所接收的指令处理所述电子邮件样本,并向所述模拟服务返回应答;根据所述基准电子邮件协议服务返回的应答、以及所述电子邮件样本,构建所述测试用例;其中,所述测试用例中的配置至少包括:所述待测试电子邮件协议服务的地址和端口、收信方地址、电子邮件样本路径、加密通信方式、检查点、以及期望应答。
上述技术方案中,所述记录模块5553,还用于当所述待测试电子邮件协议为发信协议时,通过邮件用户代理,接收待测试发信协议服务执行发信协议中被配置的指令时返回的应答、以及对应的关键信息;实时在日志中记录所述返回的应答和所述关键信息,并根据所述日志对所述待测试发信协议服务进行错误分析和性能监控。
上述技术方案中,所述记录模块5553,还用于当所述待测试电子邮件协议为收信协议时,通过邮件用户代理,接收待测试收信协议服务执行收信协议中被配置的指令时返回的应答、以及对应的关键信息。实时在日志中记录所述返回的应答和所述关键信息,并根据所述日志对所述待测试收信协议服务进行错误分析和性能监控。
下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。
相关技术中,电子邮件协议服务的测试方法具有以下缺点:1)没有针对电子邮件协议服务测试体系的自动化框架;2)没有定制化的压力控制;3)无法实现闭环检查,即外域入信(即发信方邮件服务器的MTA将邮件发送至收信方邮件服务器的MTA)的成功或失败,仅仅由电子邮件协议的返回情况来判断,不够全面;4)错误分析和性能监控较为困难;5)测试用例的配置成本高。
针对上述问题,本发明实施例提供一种电子邮件协议服务的测试方法。本发明实施例通过构造协议指令,模拟MUA发信/外域入信,并且和发信服务(即上述的发信协议服务)/入信服务(即上述的收信协议服务)进行交互,取得协议返回码,并将协议返回码与测试用例中的期望应答进行比较,能够实现自动检查的目的。
下面,以待测试电子邮件协议服务是入信服务为例说明本发明实施例提供的电子邮件协议服务的测试方法。
参见图7和图8,图7是本发明实施例提供的使用发信协议(例如ESMTP协议)服务进行发信的示意图,图8是本发明实施例提供的电子邮件协议服务的测试方法的应用场景示意图,本发明实施例基于SMTP协议模拟发信方邮件服务器MTA进行发信,以模拟发信服务。
参见图9,图9是本发明实施例提供的电子邮件协议服务的测试框架的示意图,包括:阶段增压、用例配置、实时监控、协议分析、邮件检查以及入信对账。
下面将结合图9说明本发明实施例所提供的电子邮件协议服务的测试方法的具体实现方案:
第一步,将种子邮件样本,通过内容重组泛化出丰富的邮件测试样本库。
邮件样本库的构建过程:通过构造有限的种子邮件样本,泛化生成多个不同的邮件头和多个不同的邮件体,并将多个不同的邮件头和多个不同的邮件体进行排列组合,从而重组生成多种邮件样本(即上述的电子邮件样本),进而将多种邮件样本组成丰富的邮件样本库。
第二步,根据用例场景(即上述的压力场景),基于发信协议(SMTP协议)部署模拟服务,并对参考服务(或基准服务,即上述的基准电子邮件协议服务)进行测试,自动生成测试用例。
在一些实施例中,图9中的阶段增压的具体实现过程是:对压力源进行稳定性检查,并将模拟服务和被测服务(即入信服务)的连接数作为压力参考以模拟负载压力,通过增量控制被测服务的入信压力,从而能够有效的对被测服务进行压力阶梯测试。
这里,测试用例的格式如下:
mail from;邮箱域名检查:内域邮箱
host=xxx;被测服务(即上述的待测试电子邮件协议服务)地址
port=xxx;被测服务端口
detail=收件人检查;测试用例描述信息
fromaddr=xxx;发信方地址
data_to_addr=xxx;收信方地址
data_cc=xxx;抄送收信方
data_bcc=xxx;暗送收信方
emlpath=./Sample/normalSample/test test_.eml;被测样本(即上述的邮件样本)路径
starttls=starttls;加密通信方式,即是否使用机会性加密(Starttls)
checkpoint=data:250;检查点(Checkpoint)处的协议返回码为250(要求的邮件操作完成)
在一些实施例中,协议分析的具体实现过程是:参考服务根据所接收的指令处理邮件样本时,获取参考服务返回的协议返回码,当所返回的协议码为250(要求的邮件操作完成)时,将对应的指令记录为检查点,并将返回的信息作为标准预期结果(即上述的期望应答),最后分别将被测服务和参考服务在检查点返回的应答进行比较并分析。
第三步,根据测试用例对被测服务进行协议测试,并取得每个协议中不同检查点的应答和关键信息,并根据应答确定被测服务的测试结果。
在一些实施例中,如图10所示,图10是本发明实施例提供的电子邮件协议服务的测试方法的流程示意图,本发明实施例首先根据压力场景进行配置,并进行测试;然后根据参考服务的返回应答,提取检查点;最后检查被测服务在检查点处返回的应答是否是标准预期结果。
在一些实施例中,图9中的用例配置的具体实现过程是:根据参考服务返回的应答配置测试用例,其中,测试用例中的配置至少包括:被测服务的地址和端口、收信方地址、电子邮件样本路径、加密通信方式、检查点、以及标准预期结果。参见图11,图11是本发明实施例提供的电子邮件协议指令的示意图。图11中,可以根据电子邮件协议指令的返回的应答,记录日志,可以实现错误分析和性能监控。本发明实施例可以根据被测服务在相应检查点对应返回的应答,提取被测服务的关键信息,例如:服务信息、应答、消息、数据、耗时、容量等。
在一些实施例中,入信服务的正确性,还可以通过收信(即收信方用户终端中的MUA通过收信协议从收信方邮件服务器中的MRA获取邮件)的结果去进行校验。图9中的入信对账和邮件检查是通过将发出的邮件和接收的邮件进行正确性校验来实现的,其具体实现过程如图12所示,图12是本发明实施例提供的邮件正确性校验方法的流程示意图,邮件正确性校验过程具体如下:(1)将测试任务标识和时间戳作为邮件的主题,并将邮件进行发送;(2)接收邮件;(3)根据邮件主题对接收邮件过程中返回的邮件列表进行比对;(4)检测邮件内容的摘要的一致性。在邮件正确性校验过程中,可以根据接收的邮件中包含的信息确定重复处理、处理异常、以及丢弃的邮件。
在一些实施例中,图9中的实时监控的具体实现过程是:通过协议分析检查协议返回异常的情况,并实时收集并统计服务器在入信过程中的中央处理器(CPU,centralprocessing unit)、内存、资源、耗时、日志、协议分类等的异常情况。
在一些实施例中,电子邮件协议服务的测试过程中还可以将日志或报告进行整理并实时发送至测试人员,以使测试人员可以及时感知被测服务的故障原因以及故障位置。
综上所述,本发明实施例具有以下有益效果:
1)使用与待测试电子邮件协议服务的连接数作为压力参考,实现增量控制待测试电子邮件协议服务收信/发信压力,可以对待测试电子邮件协议服务进行全面而准确的测试。
2)收信/发信正确性,由收信/发信服务闭环检查,可以进一步提高对待测试电子邮件协议服务测试的准确性。
3)根据待测试电子邮件协议服务执行协议的过程的全部/部分的指令的应答,进行关键信息的提取,可以对待测试电子邮件协议服务的故障原因以及故障位置去进行定位。
4)实时将待测试电子邮件协议服务返回的应答以及提取的关键信息存储至日志,根据日志可以进行错误分析和性能监控。
5)将种子邮件样本通过内容重组自动泛化出包含大量邮件样本的邮件样本库,无需耗费创建邮件样本的成本。
6)只需要配置邮件(例如发送的邮件/接收的邮件)的内容和预期结果,即可生成测试用例,没有编码成本,节约服务器资源。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。