前言

性能测试用户概念
系统用户数:指所有可能访问这套系统的用户数,也叫系统的全部用户数。
在线用户数:指同时访问这套系统的用户数量。
并发用户数:在一个时间切面上同时向这套系统发起请求的用户数。

糟糕性能
系统设计阶段缺少性能方面的考虑(考虑整体系统集成后的性能);
直到最后一刻才进行性能测试(性能测试越早越好);
对系统的容量或规模没有足够的考虑(最终用户的规模和分布);
对性能峰值预期偏低;
性能测试还不规范,没有有效的方案参考或实施;
没有使用性能测试自动化工具。

一、性能测试

稳定的并发能力

为什么是稳定的并发能力非常重要呢?

我们在实际性能测试当中往往并不是按照教科书上面写到的“单交易基准测试 -> 单交易负载 -> 混合交易基准 -> 混合交易负载 -> 稳定性测试 ” 这个套路来进行的,实际测试当中往往需要进行对比测试。比如说我应用程序换版前后对比,或者更换操作系统版本前后对比,或者一个数据库参数调节前调节后有一个对比。

对比测试当中的一个最重要的原则就是一次只调一个参数来对比前后的情况, 如果我要调两个或者多个参数的话,如果发现前后性能差距很大,我很难判断是哪个参数导致的影响。因此,性能测试每次尽量只调一个参数,这个参数是什么呢?

这个参数就是应用程序的版本、操作系统的版本、数据库参数等等。并且前后对比的时候,要尽量保持其他要素不变。然而,其他性能指标不变是不可能的,那么就要控制住可控参数,观察不可控参数的变化。

业务吞吐量跟 CPU 利用率是最重要的参数之二,他们之间又有着直接的关系,对于大部分的交易系统来说,我的吞吐量上去的话, CPU 利用率也会随之上升,而 CPU 升高的话,吞吐量一般也会比较高。

我们的策略是对比两个场景在 CPU 利用率相同的情况下吞吐量的差异呢?还是对比吞吐量相同的情况下 CPU 利用率的差异呢?

这种情况下,我们的策略必须是对比吞吐量相同的情况下 CPU 利用率的差异,因为吞吐量我们是可以控制的,而 CPU 我们是不能控制的 。使用工具发出来 100TPS 就是 100TPS , 200TPS 就是 200TPS 。而 CPU 是操作系统和 CPU 共同控制的,它不在我们的控制能力范围。

通过上面分析我们看出,对比测试的原则下面“稳定”控制吞吐量是非常非常重要的。

二、 性能测试工具

RPT:
这里为什么举 IBM RPT 的例子呢,因为即使是专门做性能测试的人, 也很少听说过 RPT 这个工具,在这里是把它当成一个反面例子来介绍的 。

第一,有 license 的严格限制,而且这个 license 是没办法破解的,你需要把你测试的主控机的磁盘信息发送给 IBM , IBM 根据这个信息返回给你一个 license 序列号,它和你的主控机绑死了,所以你是没办法破解的。

Loadrunner:
是目前商业软件当中最为流行的。为什么会流行呢,首先它的 license 是可以破解的,这就导致用户数量庞大,用户也喜欢用,并且用它发送很高的压力(而 IBM RPT 的 license 和并发数是相关的,花钱少是没法设置高并发的)。

这个原因非常重要,导致了用户和软件之间的正反馈,促使 Loadrunner 不断地改进,最后成为一个流行的工具,反观 RPT 有严格的 license 限制,用户特别少,也没什么反馈,最后恶性循环后在市场上消失了。

JMeter:
JMeter 作为开源领域最火爆的一款性能测试工具,在互联网公司里面用的比较广,现在在金融这种领域的公司也用的比较广。但是吞吐量控制的不是很稳定。

我这里举一个如何做后台性能测试的例子。我要给一个数据库服务器施加查询压力,向这台数据库发送一万次某个查询语句。正常的做法是什么呢?写三个函数:

第一个函数 init :创建数据库的连接,并准备一个 SQL 语句。

第二函数 action :负责给 SQL 语句填入参数,真正的去做查询的动作,反复地去做 1 万遍。

第三函数 end :做一些清理工作,断开与数据库的连接。

这三个函数中,第一个函数跟第三个函数都是只做一遍,中间的 action 函数是迭代了一万遍。

事实上像 Loadrunner 和 JMeter 这样的性能工具也的确是这么实现的,而遗憾的是 RPT 就不是这么实现的。 RPT 怎么实现呢?我的 init 函数、 action 函数、 end 函数对于每一次交易都要执行一遍,如果执行 1 万次查询,这三个函数一共执行了 3 万次,大大降低了单机执行效率。

也就是说, RPT 除了线性扩展能力特别差,即使是在单机上面的性能也是非常差。相同资源的 PC 机资源(比如说 4C4G 的 PC )一秒钟能发 200 笔业务,而 RPT 就只能发 100 笔业务,非常浪费性能测试环境的资源,并且,不仅仅是浪费资源的问题,而且你的测试代理机一旦多起来维护管理工作将成倍增长。

三、总结

当你弱时,把最后的口粮捧出去人家都不稀罕,你要强了呢,打一巴掌给个甜枣,人家觉得那枣是真甜啊!

人生是战场,需要冲次,需要拼搏,处处布满陷井,一不小心就会中埋伏,就会遭遇失败,永无翻身之日,但我们拼搏一定要方向明确,有目标性拼搏,才会成功,幸福才会属于你。

最好的生活方式,是和一群志同道合的人,一起奔跑在理想的路上!回头有一路的故事,低头有坚定的脚步,抬头有清晰的远方。

性能测试怎么做?性能测试指标,常用性能测试工具相关推荐

  1. 做短视频的必备工具和素材网,一部手机就能做,稳定收益200多

    新手在短视频平台靠播放量一天能获得200多收益?是的,做得好的话还不止这么多. 每天空闲时间用手机操作1-2个小时(前期会花费一些时间熟悉和铺路),一天多个100-200收益还是很轻松的. 想要做好短 ...

  2. 性能测试怎么做?性能测试重点和各项性能测试流程(超级详细)

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  3. 游戏软件性能测试怎么做?常规测试知识要点总结

    随着网络游戏市场的进一步繁荣,人们对游戏软件关注度和性能要求越来越高.就拿几款热门手游来说,如果游戏使用人群基数大,那么势必会对游戏软件服务器产生压力,玩家的体验也不好.所以做好游戏软件性能测试对于开 ...

  4. 如何设计软件性能测试方案,软件性能测试怎么做?有哪些步骤?

    性能测试与普遍的功能测试目标不同,因此其测试流程与普通的测试流程也不相同,虽然性能测试也是遵循测试需求分析--测试计划制订--测试用例设计--测试执行--编写测试报告的基本过程,但在实现细节上,性能测 ...

  5. Android 性能测试这样做,新手离开挂人生也不远了

    Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为2类,对于应用性能测试,包括很多测试项,如启动时间.内存.CPU.GPU.功耗.流量等.但针对rom版本的性能测 ...

  6. Android 性能测试这样做,新手离开挂人生也不远了。

    Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为2类,对于应用性能测试,包括很多测试项,如启动时间.内存.CPU.GPU.功耗.流量等.但针对rom版本的性能测 ...

  7. 你知道高并发的性能测试怎么做吗?

    作者:lovesoo blog.csdn.net/lovesoo/article/details/78579547 1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和 ...

  8. 性能测试知多少?怎样开展性能测试

    看到好多新手,在性能需求模糊的情况下,随便找一个性能测试工具,然后就开始进行性能测试了,在这种情况下得到的性能测试结果很难体现系统真实的能力,或者可能与系统真实的性能相距甚远. 与功能测试相比,性能测 ...

  9. 性能测试 性能测试实战(八)Jmeter性能测试平台开发,性能测试平台架构解析 ,性能测试平台搭建 分布式性能压测平台 Jmeter分布式性能测试管理平台 性能测试平台示例案例 《完结篇》

    文章目录 一.前言 二.Jmeter分布式性能测试平台 介绍 1.Jmter分布式性能测试平台 简介 2.Jmeter分布式性能测试平台 优秀案例1 3.Jmeter分布式性能测试平台 优秀案例2 4 ...

  10. (一)JMeter性能测试,完整入门篇:性能测试操作步骤

    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测 ...

最新文章

  1. 通过url,获取html内容,并解析
  2. Tomcat中出现“RFC 7230 and RFC 3986“错误的解决方法
  3. python 删除链表中的重复元素
  4. Python基础教程(二):基础语法、变量类型
  5. linux内核同步之信号量、顺序锁、RCU、完成量、关闭中断【转】
  6. [Android] 图像各种处理系列文章合集
  7. hexo的yelee主题修改文章正文颜色、正文字體大小
  8. PHP-高并发和大流量的解决方案
  9. python的matplotlib库怎么安装_为Python安装matplotlib库
  10. linux pn,Linux环境变量设置--总结
  11. Mybatis学习笔记-一级缓存与二级缓存
  12. linux如何实现c语言程序,在Linux下如何利用C语言来实现一个Sniffer
  13. 【C++】常用查找算法
  14. Intellij idea 主题下载网址
  15. Windows及Linux系统下--adb驱动安装及问题总结
  16. Python 网络爬虫实战:如何下载小红书去水印图片
  17. 20135202闫佳歆——信息安全系统设计基础第六周学习总结
  18. CF14A Letter(模拟+字符串)(C++题解)(大佬勿喷)
  19. wps打开服务器文件很慢,wps打开速度慢怎么办-wps打开速度慢解决方法 - 河东软件园...
  20. Mybatis-Plus(连接Hive)

热门文章

  1. 【机器学习原理实战01】Ridge回归模型
  2. 数字藏品系统开发,APP小程序成品源码搭建开发
  3. [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区
  4. 事件监听中的冒泡流和捕获流有趣现象
  5. 微信小程序支付流程(新手教程)
  6. .tar和.tar.gz的区别
  7. java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...
  8. send和sendto的区别
  9. 虚拟地址到物理地址的转换步骤
  10. 入门的Android架构师需要掌握哪些技能?