「java压测报告」java软件测试报告
本篇文章给大家谈谈java压测报告,以及java软件测试报告对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Jmeter 一个简单的压力测试报告
1、压力测试概要
测试环境:apache-tomcat-8.5.16, Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
apache-jmeter-5.0
Tomcat jvm启动参数
JAVA_OPTS="-server -XX:MaxNewSize=2048m –XX:NewSize=2048m –Xms8192m –Xmx8192m"
Tomcat Server参数:
Connector port =" 8080 "
enableLookups =" false "
disableUploadTimeout =" true "
acceptCount =" 2000 "
maxSpareThreads =" 1000 "
minSpareThreads =" 300 "
maxThreads =" 2000 "
redirectPort =" 8443 " compressableMimeType =" text/html,text/xml,text/javascript,text/css,text/plain,application/json " compression =" on " connectionTimeout =" 20000 " protocol =" HTTP/1.1 "/ /
Tomcat context 配置:
driverClassName="com.mysql.jdbc.Driver" filters="stat"
initialSize="10" maxActive="200"
maxPoolPreparedStatementPerConnectionSize="20" maxWait="60000"
minEvictableIdleTimeMillis="300000" minIdle="10"
testOnBorrow="false" testOnReturn="false" testWhileIdle="true"
timeBetweenEvictionRunsMillis="60000" type="javax.sql.DataSource"
" timeBetweenEvictionRunsMillis =" 60000 " testWhileIdle =" true " testOnReturn =" false " testOnBorrow =" false " poolPreparedStatements =" true " name =" jdbc/xxxxApp " minIdle =" 50 " minEvictableIdleTimeMillis =" 300000 " maxWaitMillis =" 60000 " maxPoolPreparedStatementPerConnectionSize =" 20 " maxTotal =" 400 " initialSize =" 50 " filters =" stat " driverClassName =" com.mysql.jdbc.Driver " connectionProperties =" druid.stat.slowSqlMillis=3000 " auth =" Container "/
数据库信息:
测试时间:xxxx/xx/xx
服务端配置:
客户端配置:
测试工具:JMeter
2、测试说明
(1)名词定义(时间单位ms)
Sample:本次测试场景共运行多少线程;
Average:平均响应时间;
Median:统计意义上的响应时间中值;
90% line:所有线程中90%的线程响应时间都小于xx的值;
Min:响应最小时间;
Max:响应最大时间;
Error:出错率;
Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。 当吞吐量被保存到CVS文件时,采用的是requests/second,所以30.0 requests/second 在CVS中被保存为0.5
Kb/sec - 以Kilobytes/seond来衡量的吞吐量
(2)测试过程说明:
测试以下页面:
/xxx/bbbb/cccc
测试数据量(模拟用户量):
1000个线程
3000个线程:
5000个线程:
7000个线程:
PROD 环境监控
java实验报告,请高手帮忙!
package test.baiduKnow.java实验报告;
//AreaAndLength.java
class Trangle {
double sideA, sideB, sideC, area, length;
boolean boo;
public Trangle(double a, double b, double c) {
// 【代码1】 // 参数a,b,c分别赋值给sideA,sideB,sideC
sideA = a;
sideB = b;
sideC = c;
if (a + b c)
// 【代码2】) // a,b,c构成三角形的条件表达式
{
// 【代码3】 // 给boo赋值。}
boo = true;
} else {
// 【代码4】 // 给boo赋值。}
boo = false;
}
}
double getLength() {
/*
* 【代码5】 方法体,要求进行判断,如果能构成三角形,则计算出length的值并返回
* 如果不能构成三角形,则提示“不是一个三角形,不能计算周长”
*/
if (boo == true) {
length = sideA + sideB + sideC;
} else {
length = 0;
System.out.println("不是一个三角形,不能计算周长");
}
return length;
}
public double getArea() {
if (boo) {
double p = (sideA + sideB + sideC) / 2.0;
area = Math.sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
return area;
} else {
System.out.println("不是一个三角形,不能计算面积");
return 0;
}
}
public void setABC(double a, double b, double c) {
// 【代码6】 // 参数a,b,c分别赋值给sideA,sideB,sideC
sideA = a;
sideB = b;
sideC = c;
if (a + b c)
// 【代码2】) // a,b,c构成三角形的条件表达式
{
// 【代码3】 // 给boo赋值。}
boo = true;
} else {
// 【代码4】 // 给boo赋值。}
boo = false;
}
}
}
class Lader {
double above, bottom, height, area;
Lader(double a, double b, double h) {
// 【代码10】 // 方法体,将参数a,b,c分别赋值给above,bottom,height
above = a;
bottom = b;
height = h;
}
double getArea() {
// 【代码11】 // 方法体,,要求计算出area返回
area = 0.5 * (above + bottom) * height;
return area;
}
}
class Circle {
double radius, area;
Circle(double r) {
// 【代码12】 // 方法体
radius = r;
}
double getArea() {
// 【代码13】 // 方法体,要求计算出area返回
return Math.PI * radius * radius;
}
double getLength() {
// 【代码14】 // getArea方法体的代码,要求计算出length返回
return 2 * Math.PI * radius;
}
void setRadius(double newRadius) {
radius = newRadius;
}
double getRadius() {
return radius;
}
}
public class AreaAndLength {
public static void main(String args[]) {
double length, area;
Circle circle = null;
Trangle trangle;
Lader lader;
circle = new Circle(1);
trangle = new Trangle(3, 4, 5);
lader = new Lader(4, 5, 3);
// 【代码15】 // 创建对象circle
// 【代码16】 // 创建对象trangle。
// 【代码17】 // 创建对象lader
// 【代码18】 // circle调用方法返回周长并赋值给length
length = circle.getLength();
System.out.println("圆的周长:" + length);
// 【代码19】 // circle调用方法返回面积并赋值给area
area = circle.getArea();
System.out.println("圆的面积:" + area);
// 【代码20】 // trangle调用方法返回周长并赋值给length
length = trangle.getLength();
System.out.println("三角形的周长:" + length);
// 【代码21】 // trangle调用方法返回面积并赋值给area
area = trangle.getArea();
System.out.println("三角形的面积:" + area);
// 【代码22】 // lader调用方法返回面积并赋值给area
area = lader.getArea();
System.out.println("梯形的面积:" + area);
// 【代码23】 // trangle调用方法设置三个边,要求将三个边修改为12,34,1。
// 【代码24】 // trangle调用方法返回面积并赋值给area
area = trangle.getArea();
System.out.println("三角形的面积:" + area);
// 【代码25】 // trangle调用方法返回周长并赋值给length
area = trangle.getLength();
System.out.println("三角形的周长:" + length);
}
}
Jmeter 压力测试并输出HTML报告
在进行性能测试执行之前,需要进行场景的设计:
以什么方式启动,如何持续进行,直至测试结束
三部曲:启动---持续进行---结束
PS:一般情况下,建议限制Jmeter的的线程数在300及以内,这样能更好的发挥出jmeter的性能
测试步骤:
测试计划---线程组--HTTP请求---监听器---运行脚本---查看报告
PS:默认情况下,JMeter运行需要占用1 GB的内存,这可能还不够,取决于你的测试计划和需要运行的线程数
一个测试计划描述了一系列Jmeter运行时需要执行的步骤,可以包含一个或者多个线程组,逻辑控制器,取样发生控制,监听器,定时器,断言和配置元件。
启动JMeter,会出现一个空的测试计划,此次练习通过手写脚本来实现
(不熟悉操作的,也可以通过模板的形式创建,在菜单栏文件--Templates,下拉列表中选择Recording,点击Create,一个完整的Test Plan就生成了,当然我们可以删除不需要的内容)
作用:模拟用户个数、发送请求的频率及次数
PS:设置合理的线程数对能否达到测试目标有着决定性的影响,另外,设置合理的循环次数也很重要
此处添加3个HTTP请求
1、添加响应断言 :设置响应码为200
2、查看结果树,验证请求
调试时线程数和循环次数设为1就可以了,记得调试好之后再改回去
3、禁用查看结果树,命令行执行脚本
我们在启动Jmeter时就会看到命令行的提示信息,进行负载测试时请不要使用GUI模式,也就是用命令行模式运行 JMeter 测试脚本,这样可以大大缩减所需要的系统资源
备注:GUI 即图形用户界面模式,只应用于创建测试脚本、调试脚本
图中也给出了命令格式: jmeter -n -t [jmx file] -l [result file] -e -o [Path to output folder] ,JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录,当然也可以使用绝对路径来执行
参数说明:
(1)直接生成HTML报告
PS:输出文件(-l后的文件)必须是不存在的,report文件夹为空文件夹或者不存在(-o后面的),不然无法生存报告
启动CMD窗口,输入以下命令:
jmeter -n -t C:\Users\zhangXXX\Desktop\baidu.jmx -l C:\Users\zhangXXX\Desktop\html.csv -e -o C:\Users\zhangXXX\Desktop\baidu-reports
(2)使用之前的测试结果,生成测试报告
启动CMD窗口,先生成测试结果,再生成报告,输入以下命令:
PS:-g 指定已存在的测试结果文件
以上两种方法,其实最终都依赖生成的测试报告。双击报告文件夹中的index.html就可以查看报告
Dashboard:
Test and Report informations:指的是测试和报告信息
APDEX(Application Performance Index):应用程序性能满意度的标准,范围在0-1之间,1表示达到所有用户均满意,越接近1满意度越高
Requests Summary:请求的通过率(OK)与失败率(KO),百分比显示
Statistics:数据分析,基本将Summary Report和Aggrerate Report的结果合并
Errors:错误情况,依据不同的错误类型,将所有错误结果展示
Charts: 用图表的形式展示测试数据,让测试报告更加直观**
主要有如下特点:
(1)将测试过程中经常使用的数据,用图表的形式展示,让测试结果更加直观
(2)每个图表数据,有两种展示形式
(3)支持请求样例过滤显示
(4)支持导出PNG图片格式
Over Time Charts:
Throughput Charts:
Response Times Charts:
4、添加所需监听器,导入日志文件即可查看
在性能测试过程中,我们往往需要将测试结果保存在一个文件当中,也可以为日后的性能测试报告提供更多的素材
在Jmeter中,结果都存放在 .jtl 文件中,格式有很多种,可以根据需要进行更爱,选择某个监听器,在 configure页面 进行相应配置,让我们来查看下保存后的文件有哪些内容:
接下来添加一个聚合报告,然后导入日志文件,查看结果,还可以添加其他的监听器,操作方法一样
PS:如果测试计划中增加了监听器(生成概要结果),在执行命令时就可以看到每个线程的执行情况
PS:设置好线程数、循环次数、集合点、事务、断言、关联等等后即可执行压力测试
原理和LR的agent差不多,因为jmeter由Java开发,耗内存、cpu,所以需要采用分布式
步骤:
1、关闭防火墙
2、在所要运行jmeter并作为负载生成器的机器上安装jmeter(确保在所有系统中使用了相同版本号的Jmeter和jdk)
PS:目标服务器需要在相同网段,确保Jmeter可以访问目标服务器
3、确定其中一台机器作为主controller,其他的机器作为agent,然后运行所有agent机器上的jmeter-server文件
4、在controller机器的jmeter中bin目录下,找到jmeter.properties文件,添加节点IP,修改localhost为压力机IP
5、启动conttoller机子上的jmeter应用,选择菜单【运行】---远程启动来分别启动agent,也可以直接选择【远程全部启动】来将所有个agent启动
在性能测试过程中,我们通常需要将测试结果保存在一个文件当中,既可以保存测试结果,也可以为日后的性能测试报告提供更多的素材
Jmeter中,结果都存放在.jtl文件,一般以csv文件格式记录,只需要选择某个监听器,点击页面的configure按钮,建议勾选如下项:Save Field Name,Save Assertion Failure Message
技术点:HTTP相关设置+参数化+断言+关联+简单控制器+查看结果树
关联:通过Json控件或正则表达式获取
(1)线程组建议替换为jp@gc - Stepping Thread Group,功能比线程组多很多
(2)可以加事务控制器
(3)查看结果树替换为聚合报告或类似的报告,如果还是想看查看结果树记得勾选仅日志错误(查看结果树打印的日志比较多,会影响性能)
(4)造数据
总结:
一个子系统建议放在同一个 “测试计划”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。
比较独立的接口,可以统一放在一个线程组内,顺序完成测试。
流程性接口的测试:如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP 请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性
java实验报告总结
源代码:
public class Exe1_1 {
public static void main (String args[]){
byte a1=127;
int a2=12345;
long a3=123456789L;
float a4=1.23e-5f;
double a5=1.4567e3;
char a6=65;
boolean a7=true;
System.out.println("a1="+a1+"\na2="+a2+"\na3="+a3+"\na4="+a4+"\na5="+a5+"\na6="+a6+"\na7="+a7);
}
}运行结果:
2.编写Java小应用程序,输出两行字符串:“Java很有趣。”和“努力学习Java编程。”,输出的起点坐标是(20,20),行距是50像素。源程序代码:
import java.awt.Graphics;
import java.applet.Applet;
public class Exe1_2 extends Applet{
public void paint(Graphics g){
g.drawString("Java很有趣。",20,20);
g.drawString("努力学习Java编程。",20,70);
}
}运行情况:
3.使用算术运算符得到一个4位十进制数的各位数字并输出,然后输出该数的逆序数和各位数字平方后相加的和。
源程序代码:
public class Exe1_3 {
public static void main (String args[]){
int n=3756,a,b,c,d,n1;
a=n/1000;
b=(n-1000*a)/100;
d=n%10;
c=(n%100-d)/10;
System.out.println("3756的逆序数为:"+d+" "+c+" "+b+" "+a);
System.out.print("各位数字平方后相加的和为:");
System.out.print(a*a+b*b+c*c+d*d);
}
}
运行结果:
三、实验总结(是否完成实验、实验过程中的问题以及解决方法分析等)
本次是我第一次使用JAVA来进行编程,感觉很是不一样,在前两节课中我们学习了有关Java的一些简单知识。然后这次的实验是对最初的一种练习。
在第一题中,我们重要是认识java的运行环境,并且了解各种变量的数据类型。只要通过简单的语句就可以通过运行。其中出现了一些单词的拼写错误,这些是可以修改正确的。第二题我们练习的十一个小的applet应用程序,需要设置一个网页来显示,这是一个很不一样的地方,最后成功测试,里面需要注意的是显示位置的问题。第三题我们做的是一个有算法要求的解决问题,在测试中出现了一点小问题,程序的算法出了错。还有一个问题是有关于显示问题,最后的数据输出需要用到两行分别显示字符和数据,这样才不会出错。
java压测报告的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java软件测试报告、java压测报告的信息别忘了在本站进行查找喔。
发布于:2022-11-21,除非注明,否则均为
原创文章,转载请注明出处。