1-性能测试入门

2021-03-24 17:24:03 浏览数 (1)

测试思维

性能测试思维和功能测试思维完全不一样。

功能测试/自动化测试需要确定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中有两种事务

  • 一个请求就是一个事务
  • 添加了事务控制器,把多个接口合并在一起作为一个事务

0 人点赞