zoukankan      html  css  js  c++  java
  • 邮件协议(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服务器注销

  • 相关阅读:
    41.给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
    Java反射学习记录
    LeetCode算法笔记-回溯法
    LeetCode算法笔记(二)
    LeetCode算法笔记(一)
    JDBC学习笔记--通用的查询方法
    JDBC学习笔记--ResultSetMetaData
    JDBC学习笔记--PreparedStatement
    Java学习笔记---字符串
    Java学习笔记---通过异常处理错误
  • 原文地址:https://www.cnblogs.com/luihengk/p/6102095.html
Copyright © 2011-2022 走看看