如何让Loadrunner或Jmeter发送邮件报告

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送。本人使用的是mail-1.4.7.jar,可以通过下载获得
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/79358195

       Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送。本人使用的是mail-1.4.7.jar,可以通过下载获得:http://download.csdn.net/download/smooth00/10256343

       发送邮件除了需要在Loadrunner或Jmeter做好以上Jar包的引用,还需要注意在测试脚本中(Loadrunner为Java Vuser,Jmeter可以是BeanShell)引用以下包:

//发送邮件
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import com.sun.mail.smtp.SMTPTransport;
import javax.activation.FileDataSource;
import javax.activation.DataHandler;

       我们可以对基于Jmail发送邮件的函数进行修改,方便在Loadrunner和Jmeter中调用:

/**
mailToS  邮件接收方(数组)
mailBody 邮件内容
mailFileName 邮件附件(最好是基于相对路径)
**/
public void email(String[] mailToS,String mailBody,String mailFileName) throws Exception {
	Properties props; //系统属性
	MimeMessage msg; //mime邮件对象
	MimeMultipart mp ; // Multipart对象,邮件内容,标题,附件等内容均添加到其后再生成minmemessage对象
	Session session; //邮件会话
	String filename=mailFileName;//设置文件名,如Loadrunner的output.txt
	String host="smtp.exmail.qq.com"; //smtp地址
	String username="zheng******@rexen.com.cn"; //smtp认证用户名
	String password="******"; //smtp认证用户密码
	String subject="ETL数据统计结果报告"+DateFormatUtils.format(new Date(), "-yyyyMMdd HH:mm:ss"); //邮件主题
	String personalname="锐迅测试组"; //邮件发送人姓名
	String body=mailBody; //邮件正文
	String charset="UTF-8"; //邮件字符集
	String mailFrom="zheng******@rexen.com.cn"; //发件人地址

	props=System.getProperties();
	props.setProperty("mail.smtp.host",host);
	props.setProperty("mail.smtp.port","25");

	//设置邮件总体信息
	session=Session.getInstance(props,null);
	msg=new MimeMessage(session);
	mp=new MimeMultipart();
		
	//邮件头
	msg.setSubject(subject,charset);
	InternetAddress[] to = new InternetAddress[mailToS.length];
	InternetAddress from = new InternetAddress(mailFrom,personalname,charset);
	msg.setFrom(from);
	msg.setSentDate(new Date());
	for(int i=0;i<mailToS.length;i++){
		to[i]=new InternetAddress(mailToS[i],"测试组",charset);
	}

	//附件		
	BodyPart bp=new MimeBodyPart();          
	FileDataSource fileds=new FileDataSource(filename);
	bp.setDataHandler(new DataHandler(fileds));                 
	bp.setFileName(fileds.getName());
	mp.addBodyPart(bp);
	//正文
	BodyPart bp2=new MimeBodyPart(); 
	bp2.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+body, "text/html;charset=GB2312");			
	mp.addBodyPart(bp2);

	msg.setContent(mp); 
		
	//发送邮件
	SMTPTransport t = (SMTPTransport)session.getTransport("smtp");
	t.connect(host,username,password);
	t.sendMessage(msg,to);
	t.close();
}

       Loadrunner下输出邮件内容的样例:

logPrint="-------------["+list[newlist.size()-2]+"] 多表记录数汇总   正常数:"+resultCount1+" 异常数:"+resultCount2+" -------------";
lr.output_message(logPrint);//loadrunner中输出日志    				
mailString+=logPrint+""+lr.eval_string(""+lr.eval_string("<p>")+"")+"";//将输出日志交由mailString变量转给email函数

       Jmeter的BeanShellSampler中的输出邮件内容样例:

logPrint="-------------["+list[newlist.size()-2]+"] 多表记录数汇总   正常数:"+resultCount1+" 异常数:"+resultCount2+" -------------";
log.info(logPrint);//Jmeter中输出日志到log文件
System.out.println(logPrint);//Java在控制面板中输出日志
mailString+=logPrint+"<br>";//将输出日志交由mailString变量转给email函数
       我们除了在邮件中可以将Loadrunner和Jmeter输出日志当成附件,我们也可以通过CSV 组件,生成CSV的报告文件,再当作附件通过邮件发送:
String csvFile = "DataSource/S-countETL".concat("-").concat(DateFormatUtils.format(new Date(), "yyyyMMdd")).concat(".csv");
CSVPrint print = CsvFilePrinter(csvFile,false);
print.writeln(new String[]{DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss.SSS"),TestName,""+cont1,result});
       最后我们就可以调用email函数了,将以上的测试报告内容和生成的附件,通过Jmail进行邮件发送
email(new String[]{"wu****@rexen.com.cn","li****@rexen.com.cn"},mailString,csvFile);//发邮件给wu和li
        以上只是我简单举例,具体应用可以由个人发挥,甚至不需要像我上面这样笨的方式去实现,因为Loadunner完全可以通过自带的邮件协议smtp来发送测试报告,Jmeter也可以通过POP3协议发送相关邮件请求,甚至可以和Ant或Jenkins集成(配置和集成一些邮件组件),自动发送Jmeter的html报告。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
测试技术 Windows
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(下)
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(下)
83 2
|
6月前
|
测试技术 程序员
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(上)
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(上)
109 1
|
Java jenkins 持续交付
Jenkins - 解决集成 jmeter+ant 发送邮件时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
Jenkins - 解决集成 jmeter+ant 发送邮件时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
494 0
Jenkins - 解决集成 jmeter+ant 发送邮件时报错:java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
165 3
|
3月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
124 2
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
77 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
57 1
|
3月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
119 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
83 4
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
268 7
Jmeter实现WebSocket协议的接口测试方法