目录:导读
前言
1、性能分析方法
1)自底向上:通过监控硬件及操作系统性能指标(CPU、内存、磁盘、网络等硬件资源的性能)来分析性能问题(配置、程序的问题)。因为用户请求最终是由计算机硬件设备完成的。
2)自顶向下:通过生成负载来观察被测试的系统性能,比如响应时间、吞吐量,由外及里一层一层分析,从而找到性能问题所在。
备注:两种方法建议结合使用,先用自顶向下的方式解决掉明显性能问题,再结合 自底向上的方式分析更深层次的问题。
3)拐点法
基本思想:
说明:性能瓶颈主要产生原因就是某个资源的使用达到了极限,此时表现为随着压力的增大,系统性能却出现急剧下降,这时产生了拐点现象;
思路:只要得到拐点附近的资源使用情况,就能定位出系统性能瓶颈所在;
说明:拐点分析是一种利用性能计数器曲线图上的拐点进行性能分析的方法。
2、性能测试需求分析与业务调研
性能测试的需求不能直接从产品经理那里获得,因为产品经理定义的性能需求比较抽象,要落实到
可执行的性能测试需求往往需要进一步分析和细化。这也是为什么获取具体的性能需求比较难的一个原因。
一般情况下,要知道性能测试的的具体需求,还要进行如下方面的调研:
系统用户数,业务高峰期在线用户数–可用来评估系统整体的并发用户数,比如,高峰时段会有 10 万用户同时在线;
业务高峰期的用户/业务分布—可用来评估并发用户的分布。比如,20% 的用户在做登录操作,30% 的用户在做订单操作,其他 50% 的用户在做搜索操作;
业务高峰期业务量—可用来评估TPS
业务高峰时间段—可用来评估TPS
3、性能测试分类
什么叫性能测试?
通过模拟用户负载来测试系统在负载情况下,系统的响应时间、吞吐量等是否满足性能要求。
负载:并发用户数或者业务数据量
性能测试是一个统称,它其实包含多种类型,主要有负载测试、压力测试、并发测试、配置测试等,每种测试类型都有其侧重点,下面对这几个主要的性能测试种类分别进行介绍。
1)负载测试
负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载。
也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“性能要求”。
2)压力测试
压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态以获得系统能提供的最大服务级别的测试。
如CPU、内存使用饱和、系统崩溃。压力测试主要用于系统容量规划。
也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,是否会出问题。
在执行压力测试时,有些测试还会故意在系统失效时,逐渐减小压力,观察瘫痪的系统是否可以自愈。
压力测试与负载测试是有区别的,负载测试是在满足性能指标要求的前提下测试系统能够承受的最大负载,而压力测试则是使系统性能达到极限的状态。
例如软件系统正常的响应时间为2s,负载测试确定访问量超过1万时响应时间变慢。
压力测试则继续增加用户访问量观察系统的性能变化,当用户增加到2万时系统响应时间为3s,当用户增加到3万时响应时间为4s,当用户增加到4万时,系统崩溃无法响应。由此确定系统能承受的最大访问量为4万。
3)并发测试
并发测试是测试多个用户同时访问同一个系统、业务时是否存在死锁、资源争抢等问题。所以几乎所有的性能测试都会涉及一些并发测试。
相对并发:所有用户在某一个时间段对系统进行操作。
绝对并发:所有用户在同一时刻对系统进行操作,目的是测试数据库或者程序对并发操作的处理。
4)配置测试
主要是对被测试系统的软硬件配置进行的测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力。
5)容量测试
容量测试:通过运行一种或者多种业务场景,测试在一定量级的数据量下的性能情况。
6)稳定性性测试
给系统增加一定负载,使系统持续运行一段时间,测试系统是否稳定,是否存在内存溢出等问题。
也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。
一般会在满足性能指标的情况下加大1.5到2倍的负载量进行测试。
性能测试还有一类基准测试:
基准测试是性能测试中的一种,它偏向于可对比性。在某个时候通过测试建立一个已知的性能水平(称为基线),当系统的软硬件环境发生变化之后再进行一次测试以确定这些变化对性能的影响,这是基准测试最常见的用途。基准测试偏向于可对比性。
如何实施
识别并确认软件主要业务(是否需要稳定性测试),稳定性测试场景可以根据软件主要业务进行设定
负载量设置:对每个主要场景负载量需要有一个清晰的定义(或者通过负载测试验证了用户场景的负载量,这将作为一个标准的负载在稳定性测试中使用)
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
奋斗的道路上会有汗水,也会有泪水,但只要心怀梦想,坚持不懈,就能超越自我,迎接属于自己的辉煌时刻。相信自己,勇往直前,追逐人生的壮丽篇章!
不论遇到多少挫折和困难,只要心怀信念,不放弃追求,你就能超越自我,创造出令人瞩目的成就。相信自己,勇往直前,开创属于自己的辉煌人生!
勇往直前,超越自我,奋斗不息。在每一次努力中,追寻内心的梦想,你将创造属于自己的辉煌人生,成就无限可能!相信自己,勇敢追逐,未来将绽放耀眼的光芒!