欲善其事先利其器—VU脚本
VU开发脚本是我们使用LoadRunner做性能测试中一个重要的步骤,这里涉及软件系统架构、计算机编程技巧和VU本身的功能特性。
1、熟悉SMTP/POP3/IMAP 协议规范和原语
2、使用VU录制邮件收发操作,分析VU脚本对标准SMTP/IMAP 协议的封装与实现机理
3、使用VU Java模板用户嵌入Java message接口,实现邮件收发,并以此介绍VU Java模板用户的使用方法,以及Java classpath等相关设置
邮件服务SMTP/IMAP协议介绍
电子邮件是我们日常工作中经常使用到的一种交流方式,它是Intermet应用最广的一种服务
电子邮件的工作原理
电子邮件是Internet上最为流行的应用之一。如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说,人们是在方便的时候发送和阅读邮件,无须预先与别人协同。与传统邮件不同的是,电子邮件既迅速,又易于分发,而且成本低廉。另外,现代的电子邮件消息可以包含超链接、HTML 格式文本、图像、声音甚至视频数据
SMTP协议介绍
简单邮件传送协议(SMTP)是Internet电子邮件系统首要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。SMTP协议服务的默认端口是25
POP3协议介绍
POP的全称是Post Office Protocol 邮局协议,用于电子邮件的接收,它使用TCP的110端口。现在常用的是第三版,所以简称为:POP3,仍采用Client/Server 工作模式,Client被称为客户端,一般日常使用电脑是作为客户端,而Server(服务器)则是POP3的邮件服务器
POP3 和上面的 SMTP协议一样,其实现也是一个客户端与服务器的对话过程。通俗地讲,邮件程序从服务器接收邮件,其实就是一个对话过程,POP协议就是用在电子邮件中的一门语言
IMAP协议介绍
IMAP提供的特性比POP3多出不少,IMAP被设计成允许用户像对待本地邮件那样操纵远程邮箱。具体地说,IMAP使得收信人能够在自己的邮件服务器主机中创建并维护多个存放邮件的文件夹。IMAP的实现比POP3的实现复杂得多,原因之一就是IMAP服务器必须为每个用户维护一个文件夹层次结构。某个用户使用不同的客户端相继访问自己的IMAP服务器时,这个IMAP服务器为该用户维护并同步相应的状态。POP3服务器则相反,一旦用户退出当前的POP3会话,它们就不再为用户维护状态信息
SMTP Vuser录制生成的脚本进行分析
1、lr_start_transaction("sendMail")语句之前未有其他语句,在sendMail之前,实际上在Outlook之前已经完成了登录,并且在网络上有了多个事件交互。显然,SMTP Vuser对这些网络交互事件并不感兴趣,因为没有转化成脚本。只能说明:Outlook登录操作的底层走的网络协议并不是SMTP协议(实际上是IMAP协议)
2、smtp_logon_ex是SMTP Vuser提供的一个函数,实现的是SMTP的登录认证
3、smtp_send_mail_ex是SMTP Vuser的一个最主要的功能,其作用是将一封邮件发送到指定的E-mail地址,Outlook发送邮件的格式默认是html的,所以邮件正文里暗含了html的格式数据
回放SMTP Vuser脚本并分析网络日志
回放脚本,同时使用Ethereal在网络上捕捉从客户端到cesoo服务器25端口的数据
1和2是网络ARP协议,确定服务器地址。交互完全遵循SMTP协议规范,按照HELO、MAIL、FROM、RCPT TO、DATA的顺序进行对话,从这里可以看到SMTP Vuser确实对SMTP协议进行 了一次完全的封装
VU Java Vuser 自开发 SMTP程序
VU可以使用SMTP Vuser来录制生成基于SMTP协议的脚本,对于刚入门的测试来说非常快捷和高效,如果性能测试工程师具有一定的开发经验和技术,就可以考虑使用Java Vuser自主开发Java程序来达到相同的目的
Java Vuser的自开发程序代码,对脚本的灵活性大大增强。这是录制脚本无法比拟的优势
录制和开发是VU生成脚本的两种方式,应根据项目需求、时间、资源等综合因素考虑选择最合适的方式