软件测试描述了一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
性能测试通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
**负载测试:**模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。
**压力测试:**在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
**RPS(Request Per Second):**每秒处理请求数(处理开始到处理结束 中间时间成为响应时间)可以通过测试工具 模拟多线程访问某个http计算 jmeter中是通过聚合报告的throughput(吞吐量)查看 不同的系统由于CPU 内存 磁盘 网络的限制 rps(吞吐量重要指标)也就不同
**QPS/TPS(Query/Transaction Per Second):**每秒查询或者事务数每个请求可能是基于查询或者修改目的 请求被分为查询请求和事务请求一般互联网系统QPS>TPS可以说RPS是QPS和TPS的总和
**PV/UV:**网站流量是指网站的访问量,用来描述访问网站的用户数量以及用户所浏览的网页数量等指标,常用的统计指标包括网站的独立用户数量、总用户数量(含重复访问者)、网页浏览数量、每个用户的页面浏览数量、用户在网站的平均停留时间等。网站访问量的常用衡量标准:独立访客(UV) 和 综合浏览量(PV),一般以日为单位来衡量和计算。
**并发量:**就是同一时刻服务器在同时处理多少个请求 QPS=(同一时刻
处理的请求 也就是并发量)/响应的时间,一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
假设目前需求确定系统的平均日PV(多天pv总和/天数) 通过日PV可以推算:
网络带宽=平均日pv/246060页面的平均大小(峰值和平均流量倍数 一般是5)
假设平均日pv 100w 100w/(24-8)6060 【一天的总描述 除掉睡觉8个小时】 等于1s的pv =18
峰值流程可能是平均流程 5倍 秒pv(rps/qps/tps)=18 5 =90 最后乘 平均每个页面大小 假设是 50KB
最终带宽 =9050KB=5M带宽
并发数= PV / 统计时间 * 页面衍生连接次数 * http响应时间 * 因数 / web服务器数量;
假设平均日pv 100w 100w、的秒pv(rps/qps/tps) 100w/(24-8)6060峰值倍数5 =18 5 =90
qps平均响应时间 假设2s =902=180 假设一个访问派生的js /css /图片是 10个 就是 180*10=1800并发数
机器数=并发数/每 台机器能处理并发数
假设上面算出了日pv 100w需要1800并发数 单机能处理1000个并发 需要 1800/1000=2台机器
QPS=( 总PV数 ) / ( 每天秒数 【除掉8个小时睡觉时间】 ) = 每秒请求数(QPS)
峰值QPS=( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
100w 总pv 峰值qps= (100w0.8)/(2460600.2)=80w/17,280=47qps
使用qps计算机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
即设置虚拟用户数
创建的线程组后,在创建的线程组基础上,点击添加 HTTP 请求:
在请求中发送的 URL 参数,用户可以将 URL 中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value)
如果需要请求头中添加参数,可添加HTTP消息头管理器
添加察看结果树
添加聚合报告
聚合报告
jmeter -n -t <测试JMX文件> -l <测试报告文件> -e -o <输出文件夹的路径>
**-n:**非GUI模式执行JMeter
**-t :**执行测试文件所在的位置
**-l :**指定生成测试结果的保存文件,.jtl文件格式
**-e:**测试结束后,生成测试报告
**-o:**指定测试报告的存放位置
**测试JMX文件:**测试用的.jmx文件路径
**测试报告文件:**必须是不存在的,否则会报错
**输出文件夹的路径:**手动创建存放报错的文件夹的路径,需要提前创建,每次运行前必须清空,否则会报错
jmeter -n -t D:\apache-jmeter-5.6.3\pdf测试计划.jmx -l pdf请求压力测试 -e -o D:\apache-jmeter-5.6.3\report
3.执行测试计划
4.查看生成的测试计划
进入设置的“输出文件夹的路径”,双击index.html
使用场景:例如使用不同的账号进行登录,使用不同id调用某个详情接口等
添加元件“CSV数据文件设置”
csv中存在两列数据,第一列是id,第二列为aid
http请求中设置