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

 

8.3  VU Java Vuser自开发SMTP程序
        从上节的学习可知,VU可以使用SMTP Vuser来录制生成基于SMTP协议的脚本,这对于刚入门的测试工程师来说非常快捷和高效,但同时也为调试脚本带来一定困难,尤其是邮件中包含一些非英文字符,在dat文件中都是编码后的字节,难以维护和修改。在这种情况下,如果性能测试工程师具有一定的开发经验和技术,就可以考虑使用Java Vuser自主开发Java程序来达到相同的目的。
8.3.1  VU创建Java模板虚拟用户
        我们首先需要创建Java Vuser,然后在Java Vuser环境下加载或开发Java程序。 
        启动VU,在“File”菜单下选择“New”,在弹出的Vuser列表中选择“Java Vuser”,如图8-16所示。

图8-16  在虚拟用户列表中选择“Java Vuser”
        单击“OK”按钮,在VU脚本中我们看到生成如下模板脚本:
import lrapi.lr;
public class Actions
{

    public int init() {
    return 0;
    }//end of init


    public int action() {
    return 0;
    }//end of action


    public int end() {
    return 0;
    }//end of end
}
        由上可见,Java Vuser中的Int()、action()、end()函数和C Vuser中的vuser_init、action、vuser_end一样,迭代的设置只对action生效,而对init和end无效。我们的开发主要在action函数中完成。

8.3.2  设置Java环境
        我们知道Java环境最主要的参数有两个:一个是Java虚拟机path,另一个是classpath。
        打开Vuser的运行时设置(Run-time Settings)窗口,选择Java VM,如图8-17所示。

图8-17  运行时设置中的Java VM配置页面
        这里如果Xbootclasspath没有特殊的参数设置,对此页面不要做任何修改。因为VU将自动从path中获得Java虚拟机的路径。
        单击“Classpath”,显示如图8-18所示的配置页面。
        对于SMTP协议,Java开源组织已经提供了很多相关package封装,我们可以在Internet上下载,比如在jakarta网站。
        我们在这里添加3个mail的jar包,即mail.jar、poi.jar和jakarta-oro-2.0.8.jar。单击“OK”按钮,关闭“Run-time Settings”窗口。

图8-18  运行时设置中的Java Classpath配置页面
        单击VU运行按钮,编译运行通过,验证我们的设置是正确的。

8.3.3  在Java Vuser中开发SMTP发送mail脚本
        首先我们需要在Java文件头进行import声明,包含相关package。
import lrapi.lr;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import org.apache.poi.hssf.usermodel.*;
import com.sun.mail.smtp.*;
        再次运行脚本,以验证import是否成功,否则Java会报错,显示package找不到。
        在action函数中编写发送邮件的Java代码,如下:
public int action() {
 
     boolean ssl = false;
     //获得SMTP环境
     Properties props = System.getProperties();
     //设置SMTP主机地址
     props.put("mail.smtp.host", "192.168.1.100");
     //设置SMTP端口号
     props.put("mail.smtp.port","25");
     //设置SMTP用户名
     props.put("mail.smtp.user","test1");
     Session session=Session.getInstance(System.getProperties(),null);
     //设置邮件header字段
     String mailer = "send from VU java SMTP";
     //设置收件人
     String sendTo = "test1@cesoo.com";
     //设置抄送人
     String sendCC = "test1@cesoo.com";
     //设置发件人
     String sendFrom = "test1@cesoo.com";
     try{
        //获得发送实体
        SMTPTransport t = (SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp");
        //与SMTP主机相连
        t.connect("192.168.1.100","test1","123456");
        MimeMessage msg = new MimeMessage(session);
        //设置邮件各个字段
        String subject = "testing mail subject";
        String personalName = "LR JAVA Vuser";
        String body = "testing mail body";
        String charset = "utf-8";
        InternetAddress[] to = new InternetAddress[1];
        InternetAddress from = new
    InternetAddress(sendFrom,personalName,charset);
        to[0] =new InternetAddress(sendTo,personalName,charset);
        msg.setFrom(from);
        msg.setRecipients(Message.RecipientType.TO,to);
        msg.setSubject(subject,charset);
        msg.setText(body,charset);
        msg.setSentDate(new Date()); 
        //发送邮件
        t.sendMessage(msg, msg.getAllRecipients());
    }
    catch (Exception e){
        e.printStackTrace();
    }
    return 0;
}//end of action
        以上代码运行成功后,Outlook即可收到一封邮件,如图8-19所示。

图8-19  Java Vuser成功回放脚本并发送邮件

8.3.4  参数化增强脚本
        以上脚本中的配置信息和邮件字段信息可使用参数化方法,转移到参数表中存储。参数化后,代码有如下变化:
public int action() {

    boolean ssl = false;
     //获得SMTP环境
     Properties props = System.getProperties();
     //设置SMTP主机地址
     props.put("mail.smtp.host", "<SMTPHost>");
     //设置SMTP端口号
     props.put("mail.smtp.port","<SMTPPort>");
     //设置SMTP用户名
     props.put("mail.smtp.user","<UserName>");
     Session session=Session.getInstance(System.getProperties(),null);   
     //设置邮件header字段
     String mailer = "<MailHeadere>";
     //设置收件人
     String sendTo = "<SendTo>";
     //设置抄送人
     String sendCC = "<sendCC>";
     //设置发件人
     String sendFrom = "<sendFrom>";
     try{
        //获得发送实体
        SMTPTransport t = (SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp");
        //与SMTP主机相连
        t.connect("<SMTPHost>","<UserName>","<Passwd>");
        MimeMessage msg = new MimeMessage(session);
        //设置邮件各个字段
        String subject = "<mailSubject>";
        String personalName = "<PersonalName>";
        String body = "<mailBody>";
        String charset = "utf-8";
        InternetAddress[] to = new InternetAddress[1];
        InternetAddress from = new
    InternetAddress(sendFrom,personalName,charset);
        to[0] =new InternetAddress(sendTo,personalName,charset);
        msg.setFrom(from);
        msg.setRecipients(Message.RecipientType.TO,to);
        msg.setSubject(subject,charset);
        msg.setText(body,charset);
        msg.setSentDate(new Date()); 
        //发送邮件
        t.sendMessage(msg, msg.getAllRecipients());
     }
    catch (Exception e){
        e.printStackTrace();
    }

     return 0;
}//end of action
参数化后,验证脚本,能够通过。
        我们就可以在参数表中更改测试数据,发送不同字符的邮件了!
中文邮件:如图8-20所示。

图8-20  Java Vuser参数化后成功发送中文邮件
日文邮件:如图8-21所示。
        由此可见,通过Java Vuser的自开发程序代码,脚本的灵活性大大增强。这是录制脚本无法比拟的优势。
        录制和开发是VU生成脚本的两种方式,我们应该根据项目需求、时间、资源等综合因素考虑选择最合适的方式。

图8-21  Java Vuser参数化后成功发送日文邮件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值