网上关于性能测试的文章大多数时间比较久远,或者知识点比较散,如果你是新手的话,基本上看完这篇文章,就能对怎么做性能测试有一个初步的了解,能知道该怎么入手,知道性能测试的重点以及各项流程。
好了废话不多说,开始正文!
1)性能测试一般分为:
负载测试、压力测试、基准测试、稳定性测试、扩展性测试。
2)常见的性能测试指标:
3)性能测试的场景:
1)了解系统的各项性能指标。
比如,通过压测可以了解系统能承受多大的并发访问量、系统的平均响应时间是多少、系统的TPS是多少等。
2)发现系统中存在的性能问题。
比如,系统中是否存在负载均衡不均、内存泄漏、连接泄漏、线程安全、死锁、网络架构或者应用架构扩展性问题,也能发现系统的性能瓶颈在何处。
作者列出的例子也都是比较典型的:
1、负载均衡不均匀:
一般指的是在并发的情况下,每台服务器接收的并发压力不均匀,从而导致部分服务器因为压力过大而出现性能急剧下降,以及部分服务器因为并发过小而出现资源浪费的情况。
2、内存泄漏:
是指应用程序代码在每次执行完后,不会主动释放内存资源而导致内存使用一直增加,最终会使服务器物理内存全部耗光,程序运行逐渐变慢,最终因为无法申请到内存而退出运行。内存泄漏多数情况下是非常缓慢的增加,不容易被发现,一般需要通过高并发性能压测才能暴露。
3、连接泄漏:
种类非常广泛,可以是数据库连接泄漏、HTTP连接泄漏或者其他的TCP/UDP连接泄漏等。除了系统实际情况需要建立长连接外,一般短连接都应该是用完就需要关闭和释放。
4、线程安全问题:
在高并发访问的多线程处理中经常会出现,表现为多个线程先后更改数据,造成所得到的数据全部是脏数据。
5、死锁:
常见的有系统死锁、数据库死锁等。
6、扩展性问题:
一般是指性能指标无法满足预期的情况下,通过横向或者纵向扩展硬件资源后,系统性能指标无法按照一定的线性规律进行快速递增。
3)解决性能压测中存在的问题和性能瓶颈。
1)→性能需求分析;
1、熟悉业务流程,明确此次性能测试的目标,找到业务需求的性能点。
2、熟悉系统的应用架构、技术架构、数据架构、部署架构等,找到与其他系统的交互流程,明确系统部署的硬件配置信息、软件配置信息。
3、把对性能测试有重要影响的关键点列举出来。
比如用户发起请求的顺序、请求之间的相互调用关系;业务的数据流走向;被压测系统可能存在的重点资源消耗;应用的部署架构等。
4、明确系统上线后可能会达到的最大并发用户数、用户期望的平均响应时间以及峰值时的业务吞吐量,并将这些信息转化为性能需求指标。
2)→制定性能测试计划;
测试计划一般本次测试的目的,各个阶段的时间点+对应负责人,以及本次性能测试风险的分析和控制。
3)→编写性能测试方案;
测试方案一般包括:
1、设计测试场景。
2、定义具体事务操作。
3、针对每个场景,明确监控对象和可能的性能瓶颈点:
4、定义测试策略:明确性能测试的类型、执行顺序、加压方式(压测需要)。
5、选取性能测试工具。
6、明确硬件配置和软件配置:
4)→编写性能测试案例,对压测场景细化。
1、描述预置条件:满足啥条件性能测试案例才可以执行。
2、详细描述案例执行的步骤,包括:
3、描述性能测试预期需要达到的结果,比如:
ps:在实际工作中,你分析完性能需求之后,可以把测试计划、测试方案和测试案例合成一个文档,这块并没有严格的定义,可以按你们公司的流程来做。
5)→搭建性能测试环境;
6)→构造性能测试数据;
7)→编写性能测试脚本;
8)→执行性能测试场景(案例);
9)→分析性能测试结果,编写性能测试报告;
10)→系统性能瓶颈分析与性能调优;
1、性能分析调优模型
2、性能分析调优思想:分层分析、科学论证、问题追溯与归纳总结。
3、性能调优技术,一般包括:
如果这篇文章对你有帮助,请给我点个赞!这样我才有动力继续更新下去!
也欢迎加入我的测试交流群:785128166,我们一起交流成长!
在职阿里6年,一个29岁女软件测试工程师的心声
腾讯软件测试岗二面:web 测试问题被虐哭了,直到学长给了我这些知识点…
10年测试工程师 ——告诫大家要有自己的人生规划,选择远比努力更重要!