在目前的中大型企业中,仅仅进行功能测试已经不足以满足企业的需求,在重大客户基数下性能测试将会直接影响到用户体验
所以在这篇文章中我们将会学习性能测试的相关知识以及常用工具Jmeter
我们将会从以下角度进行介绍:
- 性能测试基础信息
- 性能测试工具介绍
性能测试基础信息
首先我们需要去系统的了解一下性能测试的相关信息
性能测试简述
首先我们需要了解我们为什么需要学习性能测试:
- 在目前企业里功能测试是最基本的需求,但随着用户量的增加,产品的品质也需要逐渐优化
- 性能测试主要是针对产品的执行速率,执行占用资源,并发度,最大可承受执行次数等多方面进行测试并判断是否满足产品需求
接下来我们需要理解性能主要针对什么:
- 性能测试主要针对两方面进行评估
- 时间层面:用户执行该操作最后效果展现所消耗的时间
- 资源层面:用户执行该操作对自身计算机所占用CPU等资源的消耗比率
那么性能测试就是在多种情况下对性能情况进行测试得出结果:
- 使用自动化工具,模拟不同场景下,对软件各项性能指标进行测试和评估的过程
最后我们简单讲一下性能测试的目的:
- 评估当前系统能力
- 寻找性能瓶颈,优化性能
- 评估软件是否满足未来需求,是否需要优化
性能测试对比
我们在之前的文章中已经学习了功能测试,那么我们简单给出两者的区别:
# 功能测试
# 目的:主要为了验证系统的功能需求规格是否满足产品需求
# 正向功能测试:采用完整正确的测试用例进行测试,判断是否满足产品需求
# 逆向功能测试:采用不完整或部分错误或错误的测试用例进行测试,判断是否满足产品需求
# 性能测试
# 目的:主要为了判断产品是否满足其业务需求场景
# 时间性能测试:采用业务需求场景下的测试用例获取最终时间结果,判断是否满足产品需求
# 资源性能测试:采用业务需求场景下的测试用例获取计算机资源占比,判断是否满足产品需求
我们还需要知道其两者之间的先后顺序关系:
- 在前后端提测之后,我们首先需要进行功能测试并回归完完全功能之后,判断该产品无任何问题后再进行性能测试
- 在完成功能测试和性能测试后,两者自动化的书写无先后顺序关系
性能测试分类
我们下面来介绍性能测试的多种测试方式
基准测试
首先我们需要介绍基准测试:
- 狭义:基准测试其实就是单用户测试
- 广义:基准测试是采用单用户测试在某一固定场景下进行测试并得到具体数据,以该数据作为基准和后续测试数据进行对比
我们给出一个简单实例来说明基准测试:
- 我们在最开始采用一种情况进行测试并得到结果进行记录,后续我们采用其他方式进行测试并与基准测试结果进行对比
- 基准测试:项目1.0版本,测试机配置(8G+16G),单用户查询一万条数据采用3.0s
- 后续测试:项目1.0版本,测试机配置(8G+32G),单用户查询一万条数据采用2.0s
- 后续测试:项目1.1版本,测试机配置(8G+16G),单用户查询一万条数据采用2.5s
那么基准测试的用途也很明显:
- 基准测试从不会单独出现,它需要与其他数据比较才有意义
- 基准测试采用单用户测试,主要是为了给后续多用户测试综合测试场景提供参考意义
- 基准测试采用测试机测试,主要是为了给后续不同配置测试机测试综合测试场景提供参考意义
负载测试
我们同样首先来介绍负载测试的意义:
- 通过逐步增加系统负载,确定满足系统性能指标情况下(响应时间或CPU占用率),找到该系统的最大承受量
我们给出一个简单实例来说明负载测试:
- 我们首先会从产品那里得到一个客户性能需求,例如该电梯从1楼运输到5楼的运行时间控制在15s内
- 那么我们就需要采用不同重量进行测试,判断是否满足客户需求并将该负载结果告诉产品
- 我们会从下述case中选择最大的满足性能需求的重量作为负载测试的最终结果
- case1:100KG物品在电梯中从1楼运输到5楼的运行时间是10s
- case2:500KG物品在电梯中从1楼运输到5楼的运行时间是10s
- case3:700KG物品在电梯中从1楼运输到5楼的运行时间是14s
- case4:900KG物品在电梯中从1楼运输到5楼的运行时间是17s
针对负载测试我们还需要知道这些内容:
- 系统对外宣称的一般是最大负载量
- 负载测试的测试时间一般为1-2小时
- 通过负载测试可以确定系统的最大负载量和极限负载量
负载测试的用途主要针对客户需求:
- 系统最大负载量达到客户需求时,系统才能正式上线使用
稳定测试
我们首先给出稳定性测试的概念:
- 稳定性测试主要是针对产品在稳定运行(正常业务负载下)的情况下进行长时间测试,并保证产品满足线上业务需求
我们现实中其实存在很多案例:
- 因为不同业务存在不同业务场景,所以稳定性测试的测试时间是不同的
- 例如12306铁路抢票软件,每天的0点到6点之间是不允许抢票的,那么我们只需要测试在一天情况下能否满足业务需求
- 例如淘宝京东购物软件,每天无时无刻都可以进行购物,那么我们测试时长就需要稍微拉长一些来判断能否满足业务需求
负载测试的用途主要针对产品持久性:
- 系统在用户要求的业务负载下达到规定的执行时间时,系统才能正式上线使用