(十)性能測試從零開始——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成功回放腳本併發送郵件

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