1.性能测试的概念
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统的各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获的系统能提供的最大服务级别的测试。
2.性能测试的目的
目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后启到优化系统的目的
3.性能测试的分类
a.负载测试:通过逐步加压的方法,达到既定的性能阀值的目标,阀值的设定应是小于等于某个值,如cpu使用率小于等于70%
b.压力测试:通过逐步加压的方法,使得系统的某些资源达到饱和,甚至失效的状态,简单粗暴的解释就是什么条件能把系统压崩溃
注意:压力测试和负载测试最大的区别在于测试的目的不同,一个是测试特定情况下的性能指标,一个是测试最大状态下的性能指标
c.并发测试:在同一时间内,多个虚拟的用户同时访问同一模块,同一功能,通常的测试方法是设置集合点
d.容量测试:通常是指数据库层面的,目标是获取数据库的最佳容量的能力,又称之为容量预估。具体的测试方法为在一定的并发用户,不同的基础数据量下,观察数据库的处理能力,即获取数据库的各项性能指标
e.可靠性测试:又称之为稳定性测试或疲劳测试,是指系统在高压情况下,长时间的运行系统是否稳定。如cpu使用率在80%以上,7*24小时运行,系统是否稳定
f.异常测试:又称之为失败测试,是指系统架构方面的测试。如在负载均衡架构中,要测试宏机,节点挂掉等情况系统的反馈
4.性能测试的工作流程
需求分析[根据需求文档进行测试项目的分析]--------->性能指标的指定--------->脚本开发--------->场景设置[测试环境设计,测试场景设计,测试用例设计]--------->监控部署--------->测试执行--------->性能分析--------->测试调优
5.常见系统应用分层架构
a.显示层(view):包含web,android,ios,H5
b.逻辑控制层(controller):包含api
c.数据存储层(model):mysql[能处理事务],mongodb[文本方式存储大量的数据],redis
6.性能测试指标定义
a.事务:从客户端发起的一个或多个请求(这些请求组成一个完整的操作),到客户端接收到从服务器返回的响应[性能测试中,事务指的是从端到端,一个完整的操作过程,比如一次登录、一次筛选条件查询,一次支付等;]注意:一次操作并不等于一个请求,有时候会有多个请求例如支付等
b.TPS:每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量[网络协议层的指标]
c.QPS:每秒查询率,指服务器在单位时间内(秒)处理的查询请求速率
注意:qps时查询,tps是事务,事务时查询的入口,也包含其他类型的业务场景,因此qps应该时tps的子集
d.吞吐量:指在一次性能测试过程中网络上传输的数据量的总和,也可以这样说在单次业务中,客户端与服务端进行的数据交互总量[数据层的指标]
e.请求响应时间:从客户端发起的一个请求开始,到客户端接收到从服务器返回的响应,整个过程所消耗的时间
f.并发用户数:同一单位时间内对系统发起请求的用户数量
1.并发举例
多用户在系统上进行同一个操作,比如双十一时,大家都针对同一种商品进行秒杀
多用户在系统上进行不同操作,比如双十一时,大家针对不同商品进行秒杀,或者是大家有进行其他不同的操作,比如浏览商品
2.并发定义
没有严格意义上的并发。并发总有先后,无论差距是1毫秒或者是1微秒,总有一个时间差,所以并发讲的是一个时间范围内。