邮件协议(SMTP)性能测试总结(Foxmail邮箱)

先介绍一下邮件协议SMTP的工作机制(连接和发送过程),用wireshark工具抓包进行分析,如下:

SMTP协议的工作机制(连接和发送过程):

1.建立TCP连接,并将邮件服务器地址给客户端;

2.客户端发送EHLO命令以标识发件人自己的身份,然后客户端登录邮件服务器;

3.客户端先标示电子邮件的发件人发送MAIL命令,服务器端以OK作为响应,表明准备接收;

4.客户端发送RCPT 命令,以标识该电子邮件的计划接收人,可以有多个RCPT行, 服务器端以OK作为响应,表示愿意为收件人接收邮件;

5.客户端用命令DATA发送数据;

6.以.表示结束输入内容一起发送出去,服务器端并以OK作为响应;

7.客户端结束发送,用QUIT命令退出,服务器端以Bye作为响应,表示结束;

 

了解了邮件协议SMTP的工作机制后,下面开始进行性能测试:

一、先安装好邮件客户端FoxMail,被配置好邮件服务器等信息;

二、使用LoadRunner录制脚本

三、生成脚本,并优化脚本

Tasks目录:

接收邮件脚本:

发送邮件脚本:

脚本分析:

1)整体上的分析,接收邮件操作和发送邮件操作在Tasks目录分别生成一对.dat文件,打开.dat文件可以查看到附件的信息(附件类型、内容等);

2)接收邮件和发送邮件的脚本函数是一样的,邮件协议的工作过程是:登录到邮件服务器à发送消息à退出邮件服务器à释放邮件服务器;

3)脚本优化(参数化)

四、执行测试

1)在Contorller场景压力过程中,出现大量的报错,如图1:

查看日志,是由于用户多登陆时,session连接数已经满了,邮件服务器不允许重复登录。当连接数满的时候,需要清理一下。

2)在Contorller场景过程中,出现大量的报错,如图2,3:

这是由于邮件处理的原理是以队列的形式发送的,当多用户并发时,队列阻塞,发送请求和服务响应会出现大量报错信息,场景运行到12分30秒时响应时间没了,此时所有的用户已经处理完成。

3)启动LR录制时,工具先会判断邮件服务器和客户端之间的连接,是否有未接收的邮件显示(因邮件客户端设置不是时时接收邮件),录制日志如图4:

 

附录:

附录:

SMTP常用的响应

501——参数格式错误

502——命令不可实现

503——错误的命令序列

504——命令参数不可实现

211——系统状态或系统帮助响应

214——帮助信息

220<domain>——服务器就绪

221<domain>——服务关闭

421<domain>——服务器未就绪,关闭传输信道

250——要求的邮件操作完成

251——用户非本地,将转发向<forward-path>

450——要求的邮件操作未完成,邮箱不可用

550——要求的邮件操作未完成,邮箱不可用

451——放弃要求的操作,处理过程中出错

551——用户非本地,请尝试<forward-path>

452——系统存储不足,要求的操作未执行

552——过量的存储分配,要求的操作未执行

553——邮箱名不可用,要求的操作未执行

354——开始邮件输入,以“.”结束

554——操作失败

函数

使用SMTP函数

函数名

描述

smtp_logon[_ex]

登录到SMTP服务器

smtp_translate[_ex]

转换SMTP消息

smtp_send_mail[_ex]

发送SMTP消息

smtp_free[_ex]

释放SMTP服务器,使其不处理命令

smtp_logout[_ex]

从SMTP服务器注销

 

 

使用POP3函数

每个POP3函数都以pop3前缀开头

函数名

描述

pop3_logon[_ex]

登录到POP3服务器

pop3_command[_ex]

想POP3服务器发送命令

pop3_retrieve[_ex]

检索POP3服务器上的邮件

pop3_list[_ex]

列出POP3服务器上的邮件

pop3_delete[_ex]

删除服务器上的邮件

pop3_free[_ex]

释放POP3服务器,使其不处理命令

pop3_logoff[_ex]

从POP3服务器注销

 

posted @ 2016-11-25 16:22  虞秀权  阅读(5251)  评论(0编辑  收藏  举报