上面我們分析了SMTP/POP3/IMAP各自的協議原理及相應實現原語,下面我們通過對比SMTP協議原語與VU錄製發送郵件操作而產生的腳本函數,來看一下VU是如何對SMTP協議進行封裝的。在錄製之前,需保證本機已經安裝郵件客戶端,本例中採用Outlook 2003,並且已經配置好指向相應的郵件服務器。
配置步驟如下:
在控制面板中,雙擊“郵件”圖標,彈出如圖8-1所示的對話框。
圖8-1 郵件配置文件列表
單擊“添加”按鈕,輸入一個配置文件名,比如“cesooMail”,然後單擊“確定”按鈕,彈出如圖8-2所示的對話框。
圖8-2 郵件配置嚮導第一步
保持圖中的默認選項不變,單擊“下一步”按鈕,進入郵件配置嚮導第二步,如圖8-3所示。
勾選“IMAP”類型,單擊“下一步”按鈕,進入郵件賬戶配置信息對話框,在對話框裏輸入相應的賬號和SMTP/IMAP服務器信息,注意這裏的賬號和郵件服務器信息應該與你實際環境信息保持一致。在本例中,我們的IMAP服務器和SMTP服務器同爲cesoo.com,IMAP端口號是默認的143,SMTP端口號是默認的25,賬號用戶名爲test1,如圖8-4所示。
圖8-3 郵件配置嚮導第二步
圖8-4 郵件配置詳細信息
確認輸入信息完整後,單擊“下一步”按鈕,彈出提示成功信息對話框,Outlook 2003的IMAP和SMTP配置完成,如圖8-5所示。
配置文件成功創建後,我們就可以收發郵件了。而VU則能把這個過程全部捕捉下來,生成腳本。
圖8-5 郵件配置成功頁面
8.2.1 使用SMTP Vuser錄製Outlook 2003發送郵件
打開VU,在“File”菜單下,選擇“New”,在Vuser類型列表中,選中“Simple Mail Protocol(SMTP)”,如圖8-6所示。
圖8-6 在虛擬用戶列表中選擇SMTP Vuser
單擊“Record”按鈕,會彈出如圖8-7所示的錄製選項設置對話框。
圖8-7 在錄製選項中設置Outlook應用程序路徑
“Application type”(應用程序類型)選擇“Win32 Applications”,在“Program to record”(錄製程序)選項中輸入Outlook 2003的應用程序路徑,在本例中爲“C:/Program Files/microsoft office/OFFICE11/OUTLOOK.EXE”,單擊“OK”按鈕,開始錄製。
錄製開始後,VU會找到應用程序路徑,並啓動Outlook 2003。其主界面如圖8-8所示。
圖8-8 Outlook啓動成功後的主頁面
這時VU錄製工具條有如下提示,如圖8-9所示。
圖8-9 Outlook登錄引起網絡67次交互事件
這說明Outlook 2003完成登錄這個操作,在網絡上已經有了67次交互。
下面我們要重點觀察發送郵件的操作,因此要在這裏定義一個Transaction(事務),用來度量發郵件的操作。
單擊工具條上的Transaction開始點,定義一個名爲“sendMail”的Transaction,如圖8-10所示。
圖8-10 設置發送郵件的事務開始點
回到Outlook 2003,繼續操作。單擊“新建”按鈕,會彈出新郵件的窗口,在收件人、郵件標題、郵件正文中填寫信息,如圖8-11所示。
圖8-11 在Outlook中構建一封新郵件
單擊“發送”按鈕,郵件被髮送。這時我們再觀察VU錄製工具條,發現如圖8-12所示的提示。
圖8-12 Outlook發送郵件引發的網絡交互事件
交互事件已經由之前的67次增長到91次,這說明發送郵件的操作在網絡上產生了9167=24次交互。
單擊工具條上結束Transaction的按鈕,自動提示“sendMail”,直接單擊“OK”按鈕,如圖8-13所示。
圖8-13 設置發送郵件事務的結束點
停止VU錄製,VU生成腳本如下:
Action()
{
lr_start_transaction("sendMail");
smtp1 = 0;
smtp_logon_ex(&smtp1, "SmtpLogon",
"URL=smtp://www.cesoo.com",
"CommonName=LoadRunner User",
LAST);
smtp_send_mail_ex(&smtp1, "SendMail",
"[email protected]",
"[email protected]",
"Subject==?utf-8?B?6L+Z5piv5LiA5bCB5rWL6K+V6YKu5Lu25qCH6 aKYdGVzdA==?=",
"ContentType=multipart/alternative;",
MAILOPTIONS,
"X-Mailer: Microsoft Office Outlook, Build 11.0.5510",
"Thread-Index: AciOgCIrErOOfaSTRUulBNIY7vEV0Q==",
"X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028",
MAILDATA,
"AttachRawFile=mailnote1_01.dat",
"AttachRawFile=mailnote1_02.dat",
LAST);
smtp_logout_ex(&smtp1);
smtp_free_ex(&smtp1);
lr_end_transaction("sendMail",LR_AUTO);
return 0;
}