(十)性能测试从零开始——LoadRunner入门

 

8.2.2  对SMTP Vuser录制生成的脚本进行分析
        我们在Outlook上的一系列操作,包括登录和发送邮件,被VU转换成一系列函数,比如smtp_logon_ex和smtp_send_mail_ex等。下面我们对这些函数进行分析。
        (1)在lr_start_transaction(“sendMail”)语句之前未有其他语句。而在sendMail之前,实际上在Outlook之前已经完成了登录,并且在网络上有了67个事件交互。显然,SMTP Vuser对这些网络交互事件并不感兴趣,因为它们并没有转化成脚本。这只能说明一个事实:Outlook登录操作的底层走的网络协议并不是SMTP协议(实际上是IMAP协议)。
        (2)smtp_logon_ex是SMTP Vuser提供的一个函数,实现的是SMTP的登录认证。
        (3)smtp_send_mail_ex是SMTP Vuser的一个最主要的功能,其作用是将一封邮件发送到指定的E-mail地址。
 [email protected]”是设置发件人地址。
 [email protected]”是设置收件人地址。
 “Subject==?utf-8?B?6L+Z5piv5LiA5bCB5rWL6K+V6YKu5Lu25qCH6aKYdGVzdA==?=”是设置邮件的标题(subject)。
        从上一节的SMTP协议规范我们知道,SMTP网关一直保持7位ASCII码的“古老传统”,因此任何多字节的数据在经过SMTP协议之前必须要经过编码。在这里,“?utf-8?”说明Oultlook 2003用的是utf-8编码方式,而“6L+Z5piv5LiA5bCB5rWL6K+ V6YKu5Lu25qCH6aKYdGVzdA”则是 “这是一封测试邮件的标题”的编码后字节表现形式。
        (4)“AttachRawFile=mailnote1_01.dat”和“AttachRawFile=mailnote1_ 02.dat”,则是邮件正文的传送方式。检查录制后的脚本,发现左侧导航栏中多了“mailnote1_01.dat”和“mailnote1_02.dat”两个节点,如图8-14所示。
        点击打开mailnote1_01.dat,我们看到如下数据:
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64
6L+Z5piv5LiA5bCB5rWL6K+V6YKu5Lu255qE5q2j5paHdGVzdA0K

1.JPG

图8-14  SMTP虚拟用户脚本中的数据区
        这是对邮件正文的编码,同样的utf-8编码,“6L+Z5piv5LiA5bCB5rWL6K+ V6YKu5Lu255qE5q2j5paHdGVzdA0K”则是“这是一封测试邮件的正文”的utf编码后字节表现形式。
        点击打开mailnote1_02.dat,我们看到如下数据:
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional //EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset= 3Dutf-8">
<META content=3D"MSHTML 6.00.2900.3157" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3D=E5=AE=8B=E4=BD=93 =
size=3D2>=E8=BF=99=E6=98=AF=E4=B8=80=E5=B0=81=E6=B5=8B=E8=AF=95=E9=82=AE=E4=
=BB=B6=E7=9A=84=E6=AD=A3=E6=96=87test</FONT></DIV></BODY></HTML>
        这些看起来都不是很陌生,和网页的DOM源码非常相像。没错,因为Outlook发送邮件的格式默认是html的,所以其实邮件正文里暗含了html的格式数据。

8.2.3  回放SMTP Vuser脚本并分析网络日志
        我们通过上一节的分析已经得知,SMTP Vuser将发送邮件的动作转化成了VU 函数,但这是不是对SMTP协议一个完整的模拟呢?我们知道SMTP协议是由一系列操作原语组成的,如HELO、MAIL FROM、RCPT TO等。如果回放SMTP Vuser脚本,同时我们在网络上能捕获到这些原语,就说明SMTP Vuser确实是对SMTP协议进行了封装和实现。
        回放脚本,同时使用Ethereal在网络上捕捉从客户端到cesoo服务器25端口的数据。我们捕捉到网络交互如下:
     发送者 接收者   数据内容
01. Intel_a3:e8:ef BroadCast  Who has 192.168.1.100?
02. 1d:7d:4a:66 Intel_a3:e8:ef 192.168.1.100 is at 1d:7d:4a:66
03. 192.168.1.1 192.168.1.100 smtp syn
04. 192.168.1.100 192.168.1.1  220 server ready.
05. 192.168.1.1 192.168.1.100 HELO
06. 192.168.1.100 192.168.1.1  cesoo.com hello, glad to meet u
07. 192.168.1.1 192.168.1.100 MAIL FROM:[email protected]
08. 192.168.1.100 192.168.1.1  250 sender is OK
09. 192.168.1.1 192.168.1.100 RCPT TO:[email protected]
10. 192.168.1.100 192.168.1.1  250 receipt is OK
11. 192.168.1.1 192.168.1.100 DATA
12. 192.168.1.100 192.168.1.1  Enter mail, end with “.”
13. 192.168.1.1 192.168.1.100 Message body
14. 192.168.1.1 192.168.1.100 Message body
15. 192.168.1.1 192.168.1.100 Message body
16. 192.168.1.100 192.168.1.1  221 cesoo.com closing connect
注:以上数据经过过滤和整理。192.168.1.1为客户端,192.168.1.100为Server端,即cesoo.com。

        我们可以看到1和2是网络ARP协议,用来确定服务器地址。而下面的交互完全遵循SMTP协议规范,老老实实地按照HELO、MAIL FROM、RCPT TO、DATA的顺序进行对话。所以我们从这里可以看到SMTP Vuser确实对SMTP协议进行了一次完全的封装。最后在网络中传递的message body如下:
Message-ID: <[email protected]>
From: "LoadRunner User" <[email protected]>
Date: 星期二, 25 三月 2008 23:04:45 +08:00
Subject: =?utf-8?B?6L+Z5piv5LiA5bCB5rWL6K+V6YKu5Lu25qCH6aKYdGVzdA==?=
MIME-Version: 1.0
Content-Type:multipart/alternative;
 boundary="------=_NextPart_00000001_000009f8.00bb6f3c"
X-Mailer: Microsoft Office Outlook, Build 11.0.5510
Thread-Index: AciOghaui9AQdpK8TO+CcxyY5WXVPQ==
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
This is a multi-part message in MIME format.
--------=_NextPart_00000001_000009f8.00bb6f3c
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: base64

6L+Z5piv5LiA5bCB5rWL6K+V6YKu5Lu255qE5q2j5paHdGVzdA0K

--------=_NextPart_00000001_000009f8.00bb6f3c
Content-Type: text/html;
 charset="utf-8"
Content-Transfer-Encoding: quoted-printable

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional //EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset= 3Dutf-8">
<META content=3D"MSHTML 6.00.2900.3157" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3D=E5=AE=8B=E4=BD=93=
size=3D2>=E8=BF=99=E6=98=AF=E4=B8=80=E5=B0=81=E6=B5=8B=E8=AF=95=E9=82=AE=E4=
=BB=B6=E7=9A=84=E6=AD=A3=</FONT></DIV></BODY></HTML>
        以上就是网络中SMTP协议实际传输的数据。最后我们在Outlook端看到的这封邮件,其实是由Outlook客户端进行解释并显示的,如图8-15所示。

2.JPG

图8-15  SMTP Vuser成功回放脚本并发送邮件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章