1.性能测试的目的:开发语言(Java,phython),操作系统(Linux),数据库(MySQL),测试工具(Jmeter),网络知识,业务知识(用户)。
2.性能测试的分类:
性能测试是一个非常广泛的概念,包括很多方面的测试,也可称为非功能测试。
自动化测试属于功能测试范围,由于其测试方法要求测试人员要有一定的代码能力。
具体分类
1、性能测试:性能测试通常泛指所有类型的性能测试,目标是在特定条件下验证软件系统的性能是否达到预期指标的结果。
2、负载测试:负载测试是指模拟真实的用户行为,通过不断加压直到系统性能测试瓶颈或资源达到饱和。负载测试是最常进行的性能测试,用于测量系统的容量,发现系统瓶颈并配合性能调优。
3、压力测试:压力测试是指测试系统在一定的饱和状态下系统的处理能力。在负载测试的基础上,继续不断加压到一定阶段。通过压力测试通过CPU使用率达到75%以上或者内存使用率达70%以上(具体的压力指标也可以是数据库达到相关指标,或者中间件连接数达到某种指标等等),用于测试系统在压力环境下的稳定性。
注:许多开发人员提出测试申请,说要做一个压力测试,做为专业的性能测试人员,那么需要明确测试需求,开发人员说的压力测试,往往不是真正意义上的压力测试
4、可靠性测试:可靠性测试是指加载一定的业务压力,同时让压力持续运行一段时间,测试系统是否可以稳定运行。
5、并发测试:并发测试是模拟用户在访问同一应用的测试,用于发现并发问题,例如线程锁、资源争用、数据库死锁等。
6、配置测试:配置测试是指验证各种配置对系统性能的影响,常用于性能调优和能力规划。
7、疲劳强度测试:在系统稳定运行情况下,以能够支持的最大并发用户数或日常运行用户数,持续执行业务操作一段时间,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作强度的性能表现。
8、大数据量测试:大数据量测试侧重点在于数据的量上,包括独立的数据量测试和综合数据量测试。独立的数据量测试可以理解为某些系统存储、传输、统计、查询等业务进行大数据量测试,而综合数据量测试一般和压力测试、负载测试、疲劳强度测试相结合进行。
3.性能测试工作流程:
需求分析-->性能测试指标指定-->脚本开发-->场景设置(符合用户)-->监控部署-->测试执行-->性能分析-->性能调优(画线反复执行).-->测试报告。
4.常见系统应用分层架构
显示层(用户view): web, android, ios, H5
逻辑控制层(controller): Api
数据存储层(model):MySQL(支持事务)MongoDB(文档存储)Redis(数据存储在内存中,读写速度快)...
5.性能测试指标定义:
从客户端发起的一个或多个请求(这些请求组成一个完整的操作),到客户端接收到从服务器返回的响应。
(1)事务:一个事务可能多个请求。
(2)TPS:每秒钟系统能够处理的事务数 单位:s(事务数不一定等于请求数)。
(3)请求响应时间:
从客户端发起的一个请求开始,到客户端接收到从服务器返回的响应,整个过程耗费的时间。
(4)事务响应时间:
事务可能是有一个或多个请求组成的,事务响应时间主要是针对用户的角度而言,如转账等。
(5)并发定义:
没有严格意义上的并发,并发总有先后,无论差距是1毫秒或者是1微秒,总有一个时间差,所以并发讲的是一个时间范围内,比如一秒内。
(6)并发实例:
多用户在系统上进行统一操作,比如双十一时,大家针对不同商品进行秒杀,或者是大家又进行其它不同的操作,比如商品浏览。
(7)并发用户数:
同一单位时间内对系统发起请求的用户数量;
(8)吞吐量:
一次性能测试过程中网络上传的数据量的总和。
(9)吞吐率:单位时间内网络上传的数据量
(10)点击率:
每秒种用户向服务器提交的请求数,这个指标是web应用程序特有的一个指标,可以想象为每秒种用户总共在页面上进行多少次点击动作,但是需要注意的是一次鼠标单击的操作后,客户端有可能向服务器发送了多少次请求。
(11)资源使用率:对不同的系统资源的使用情况,比如CPU,内存,io
6,性能测试的需求分析:
(1)分析目的 (明确测试指标,明确测试场景)
(2)新系统:同行业比较,业务预期。
(3)老系统:对比以往的用户使用行为以及用户量
7.不同角度的性能表现:
(1)用户角度:响应时间,系统稳定性。
(2)系统角度:网络,数据延迟 系统资源的利用情况。
(3)开发角度:代码的优化程度 ,数据库实现的优化程度。
8,性能测试流程 :
(1)测试需求分析。
(2)测试计划制定。
(3)测试用例设计以及脚本的开发。
(4)测试执行与监控。
(5)测试结果分析和问题定位。
(6)编写性能测试报告。
(7)系统性能优化。
(8)性能测试验证。
(9)测试总结。
9,常用工具:
(1)LoadRunner
(2)JMeter