目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
性能测试是为了评估系统或应用程序在特定工作条件下的响应速度、吞吐量、稳定性和可伸缩性等方面的能力。
这种类型的测试通常会涉及模拟大量用户同时访问应用程序,并对其进行负载压力测试,以确定系统在高负载情况下是否能够正常运行。
性能测试是必须要通过工具实现的,手工无法实现性能测试,因为性能测试就是模拟非常多的人同时操作系统,如果使用人工进行,那得找非常多的人一起操作,这个成本会非常庞大。
常用的性能测试工具包括JMeter、LoadRunner、Gatling等,这些工具可以模拟大量用户,并记录和分析系统的性能数据。在进行性能测试时,需要注意测试环境的搭建、测试数据的准备、测试场景的设计和测试结果的分析等方面的问题。
大数据量的测试从狭义的角度看,其实也算性能测试一部分。
因为当一个接口返回10条数据和返回100万条数据,所消耗的时间肯定不一样的,这时就会去关注数据库查询这些数据,服务器返回数据,网络传输等性能相关的问题,所以大数据量的测试其实也算性能测试的一部分。
性能指标
并发:有两个概念,
狭义的:指在同一时间点执行相同操作,例如集合点;
广义的:同一时间,向服务器发起请求。
并发用户数:
广义:同一时间点,发起请求的用户数(不管是相同还是不相同的请求,都算并发)。
狭义:同一时间点,发起相同请求的用户数
集合点:集合点只存在于狭义并发中,意思就是集合多个人在同一时间发起相同请求。集合点一般用于类似秒杀这种需要瞬间产生大量请求的场景才会用得上。
并发用户数和并发的区别:用户可以发起多个请求,例如有10用户,每个用户发起5个请求,那就相当于有50个并发。
事务(Transaction):指一个客户机像服务器发送请求,然后服务器做出反应的过程。可以认为一个模块或一个请求或一个业务为一个事务。
响应时间(RT): 从发起请求到收到请求响应的时间;
发送请求网络传输时间+服务器处理时间+返回相应网络传输时间。
Tps/Qps:
Tps(Transaction per Second):服务器每秒处理事务数,衡量服务器处理能力的主要指标
Qps(Queries per Second): 每秒查询率,这里的查询并不局限于查询数据,其他涉及查询的操作也算在内,如:查询内存、缓存等。
两者的差异:一次事务可能会触发多次查询。
吞吐量(Throughput):单位时间内处理的请求数量(事务/s);这是衡量网络每秒能通过多少次事务,如果网络没有问题时,Tps和吞吐量一般会保持一致。
吞吐量:单位时间通过的数据平均速率(kb/s)
点击率(Hit per Second):每秒点击数
资源利用率:这里是指服务器资源的使用情况,常见的有:
cpu利用率;
内存利用率;
磁盘I/O;
一般这些资源使用率不要超过80%
性能与功能测试的区别
性能测试的目的不在是找bug,而是找性能指标。
性能可以在系统界面未出来前就可以介入,因为性能测试主要是针对接口。
性能测试的时间会比功能、自动化测试时间长。
性能测试如何做
如果项目之前完全没有做过性能测试,那么首先要做的就是基准测试。找到项目当前的性能指标,比如可能在并发达到150个的时候系统就出现了异常,那么150这个并发值就是系统当前版本最大的并发量,可以作为性能指标记录下来。
后面系统做了优化或者版本迭代后,重新跑一下之前的脚本。再次得到最新的性能指标,然后将新指标和旧指标进行对比,如果指标值下降,所以新版本的性能存在问题,就要去想办法分析性能及优化。
以此类推,后面每次版本迭代或者需要进行性能测试时都得将新指标和旧指标进行对比分析,从而判断系统性能是否有下降。
性能测试的分类
负载测试:逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量。负载测试关键是逐步增加,找到性能区间,然后根据区间再进一步缩小范围,直到找到最小的区间范围。
切勿盲目大量的增加并发数,更忌上来啥也不管就直接来个几百、几千、几万的并发,这种测试并不能得到任何有效的数据,只会浪费时间。
压力测试:压力测试的目的是做稳定性,在较大的性能压力下,持续运行比较长的时间,看系统服务及各资源利用情况。
一般压力测试建议是7*24,以24小时为倍数去设定。因为如内存的缓冲区,可能需要长时间运行才能检验是否存在问题。压力测试的并发数可以选择系统最大并发数的80~90%。
但实际工作中,很少公司有资源能满足这么长时间的运行,大部分情况下是放在下班后或周末进行。
可靠性测试:在给定的一定的业务压力下,持续运行一段时间,查看系统是否稳定。它和压力测试类似,但不同的是它不需要长时间运行,因此可靠性测试用于测试秒杀的性能会比较常见。
容量测试:在一定的软、硬件条件下,在数据库不同数据量级的情况时,对系统中读/写比较多的业务进行测试,从而获得不同数据量级下的性能指标。
如果系统已经上线运行了一段时间或者可以预知未来系统会有较多用户或数据的就需要做容量测试,因为测试环境的数据库可能就几千条测试数据,但生产上可能有几万、几十万的数据,不同的数据量级对于性能会有影响。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生的路途不可能一帆风顺,但每一次挫折和失败都是蜕变和成长的机会。只有坚持奋斗,才能创造出自己想要的未来。
奋斗是一种信仰,也是一种态度。不管生命中遇到怎样的考验和风险,只要勇往直前、不畏艰辛,就能不断超越自我,不断追求更好的自己。
每一个成功的人都经历过无数次的失败,每一个迈向成功的步伐,都需要付出比别人更多的努力。但只要坚定自己的方向,积极进取,我们就能够实现心中最大的梦想。