测试思维
性能测试思维和功能测试思维完全不一样。
功能测试/自动化测试需要确定Bug
怎么确定是Bug?
- 预期结果与实际结果进行比较,如果不一致则发现bug
- 潜在的一个前提:模拟
一个用户
对产品进行使用,能否正常
性能测试:1 1不等于2
模拟多个人同时操作产品,关注点不再是功能是否正常
如果单人操作没有问题,多人操作出现异常,是出现了性能瓶颈而不是功能问题
1个人循环做10次,不是性能测试
10个人同时做一件事,是性能测试
性能入门知识
性能
事务、物品的某些特性的评价值
软件性能测试
通过工具,找出
或获得
系统在不同工况下的性能指标值
性能指标
- RT响应时间
- 错误率
- 服务器资源消耗
隐藏的前提:功能测试已经通过,才做性能测试
性能测试,得到的都是性能指标值,不是功能的bug数量
前端性能测试
前端性能测试,影响因素非常多,而且不通用,所以测试工具很多,没有统一标准
- 前端性能测试,并不一定是多用户
- 前端与端设备有直接关系
- 前端与设备配置有关系
常用的前端性能测试工具
- PageSpeed Insights:https://developers.google.cn/speed/pagespeed/insights/
谷歌开发的一个免费的网页分析工具,在地址栏中输入被分析的网站 url 地址,点击分析,
PageSpeed Insights
- Lighthouse
Lighthouse 是谷歌开源的一款 Web 前端性能测试工具,用于改进网络应用的质量,适用于网页版和移动端。能生成一个包括页面性能、PWA(Progressive Web apps,渐进式 Web 应用)、可访问性(无障碍)、最佳实践、SEO 的报告清单提供参考,看看可以采取哪些措施来改进您的应用。
代码语言:javascript复制npm install -g lighthouse
- SiteSpeed:https://www.sitespeed.io/
SiteSpeed 是一款开源的,可以用于监控和检查网站性能的工具。可以通过 docker 镜像或 npm 方式来使用。这个工具,并不是单一的,而是一组工具集合,可以根据自己需要,选择适合自己的工具。
- Speedcurve:https://speedcurve.com/
Speedcurve 是一个前端性能综合监控网站,可以在网站输入被测网站的 url 地址,进行测试
- webpagetest:https://www.webpagetest.org/
webpagetest和上面的 speedcurve 相似,也是在一个网站中,输入被测试的网站 ip 地址,就可以对被测网站页面进行分析。但是,这个网站在国内,被友好的和谐了,会出现无法正常进行测试的情况。
接口性能
有不同协议的http协议族
协议:提供者和使用者之间的一个数据约束
性能测试
通过工具、找出或者验证,系统在不同工况下的性能指标
通过工具
性能测试,不能靠手工
常用的工具:
- jmeter
- loadrunner
- python locust
- ngrinder
找出「基准测试」
在完全没有性能指标可以做参考时,通过性能测试得到性能指标值
验证
在接口升级之后,对接口再次进行性能测试,对比基准测试结果
压测=负载测试 性能测试=最大并发用户数下的性能指标
负载测试:逐步增加
逐步增加:逐步增加同时请求的数量,来观察系统能承受的最大负载区间
在逐步增加后 会得到一个拐点
的区间
问:一个系统完全没有做过性能测试,如何找出最大并发用户数
答:进行负载测试,逐步增加并发数
压力测试:较长时间 较大压力
在一定并发用户数请求下,持续运行一段时间,看系统服务及各资源利用情况,是否存在稳定性问题
- 时间:较长,以小时为单位,一般是几个小时或几天
- 目的:看服务器是否稳定
当服务器出现不稳定情况宕机,我们就要进行压力测试了
可靠性测试
在给定一定的业务压力下,持续运行一段时间,查看系统是否稳定
关键词:是否稳定
,一定业务压力
容量测试
在一定的软、硬件条件下,在数据库不同数量级数据量的情况时,对系统中读/写比进行测试,从而获得不同数据量级下的性能指标值。
- 要与生产的数据库的数量级别保持一致
- 如果产品没有上线,看数据库是什么数据库来评定量级。一般mysql为100w级
问:为什么数据库要有这样一个数据量的数据准备?
答:数据库在10w、100w数据时,索引会对性能造成非常大的影响。百万级数据库,如果有索引,而且生效,sql的时间毫秒到秒之间,但是没有索引,或者索引无效,需要在几秒以上
性能测试环境的数据量要与生产一致。一定要注意数据脱敏/
性能测试前提
性能测试,有前提,并不是什么时候,什么接口都可以做性能测试。
性能测试的必要性研究:关键项评估
- 主管部门、监管部门审核
- 设计生命财产安全
- 大型新系统
- 核心系统
- 架构调整
- 业务剧增
- 最大缺陷修复
可测性:可量化为性能指标值
性能测试工具
- Jmeter
- loadrunner
- python locust
关注点
企业关注
- 服务器利用情况:资源利用率
- 能支持的最大用户:系统容量
- 能支持的最大并发用户:并发用户数
- 是不是可以更换硬件提供性能:可扩展
- 能不能持续运行长时间不宕机:稳定性
开发人员
- 架构设计是否合理:系统架构
- 数据库设计:数据库
- 代码逻辑:代码
并发
狭义:同一时间多个人做同一件事情
广义:同一时间多个人发起请求,事情可能不一样
现在的性能测试都是广义并发
事务
客户机向服务器发送请求,然后服务器做出反应的过程
jmeter中有两种事务
- 一个请求就是一个事务
- 添加了事务控制器,把多个接口合并在一起作为一个事务