有的放矢,你应该在性能测试报告中使用的 10 个微观指标_软件测试_信息工程_码蚁之家_www.codes91.com
返回首页
专题
网络编程
ASP教程 .NET教程 PHP教程 JSP教程 C#教程 Java教程 Delphi教程 VB教程 C/C++教程 Android开发 IOS开发 Windows Phone开发 Python教程 Ruby教程 移动开发 其他编程教程
网页制作
HTML教程 CSS教程 Dreamweaver教程 FrontPages教程 Javascript教程 web前端
数据库
SqlServer MySql Oracle Access DB2 SQLite 其他数据库
图形设计
photoshop教程 Fireworks教程 CorelDraw教程 Illustrator教程 AutoCad教程 FLASH教程
操作系统
Windows xp教程 Windows 7教程 Windows 8教程 Windows 2003教程 Windows Server 2008教程 Linux教程 Windows 10
网站运营
建站经验 SEO优化 站长心得 网赚技巧 网站推广 站长故事
手机学院
手机速递 安卓教程 iphone教程 手机评测 手机技巧 手机知识 手机应用 手机游戏 手机导购
网店宝典
开店指导 开店经验 网店装修 网店推广 网店seo 网购技巧
软件教程
办公软件 系统工具 媒体工具 压缩工具 图文处理 文件管理
范文之家
自我介绍 自我鉴定 写作模板 合同范本 工作总结 贺词祝福语 演讲致辞 思想汇报 入党申请书 实习报告 心得体会 工作计划 简历模板 工作报告 导游词 评语寄语 口号大全 策划书范文
信息工程
软件工程 企业开发 系统运维 软件测试
移民之家
移民动态 移民政策 移民百科 移民生活 技术移民 投资移民
知识大全
母婴 数码 摄影 装修 美文 常识 时尚 婚嫁 美食 养生 旅游 兴趣 职场 教育 文学 健康
问答大全
电脑网络 手机数码 QQ专区 生活 游戏 体育运动 娱乐明星 休闲爱好 文化艺术 社会民生 教育科学 健康医疗 商业理财 情感家庭 地区问题 其他
编程问答
IOS Android .NET Java C/C++ Delphi VC/MFC 其他语言 PHP MSSQL MYSQL Oracle 其他数据库 Web开发 Windows Linux 硬件/嵌入开发 网络通信 移动开发 云计算 企业IT 游戏开发
笑话大全
幽默笑话 爱情笑话 成人笑话 校园笑话 爆笑笑话 综合笑话 古代笑话 现代笑话 国外笑话

有的放矢,你应该在性能测试报告中使用的 10 个微观指标(1/2)

来源:互联网  时间:2017/11/22 14:04:38
在这篇文章中,你将会了解到为什么常见的主要测试指标是不完美的,以及十个新的测量指标 —— 它们可能会改进你未来的性能测试报告。

性能测试是一项不可避免的任务,但问题是怎么保证测试的指标是正确且合理的?在这篇文章中,你将会了解到为什么常见的主要测试指标是不完美的,以及十个新的测量指标 —— 它们可能会改进你未来的性能测试报告。

在很多企业中,性能测试是定期进行的。作为这些测试的一部分,质量保证团队会收集各种指标并将其发布在性能测试报告中。性能测试报告中常用的一些分析指标是 CPU 利用率、内存利用率,关键事务或后端系统的响应时间以及网络带宽,具体取决于企业自身的情况。

我更愿意将这类指标归类为宏观指标,宏观指标当然很好,但它们有两个不可忽视的主要缺点:

  • 不能在测试环境中捕获到性能问题
    尽管在测试环境中进行了许多性能测试,但在生产环境中仍然会出现性能下降的情况。在测试环境中,你也许会注意到性能急剧下降的情况,但上面提到的宏指标并不能帮助你发现问题的根源。这些急剧的下降在生产环境中的体现就是主要的性能问题。下面讨论的微观指标会为这些下降的情况带来可见性。
  • 宏观指标对解决问题没有帮助
    在很大程度上,宏观指标不能帮助开发团队调试和排除故障。例如,如果宏观指标显示 CPU 消耗高,它不能表明这是由于垃圾收集活动、线程循环问题或其他编码问题而导致的 CPU 消耗增加。同样的,如果响应时间下降,也不会有任何指标显示是由于应用程序代码中的锁定还是后端连接问题而导致的下降。

因此,我的观点是应将宏观指标与微观指标一起搭配使用。在这篇文章中,将列出十项我认为最重要的微观指标,你可以考虑将其中的一些或全部添加到你的性能测试报告中。

与内存相关的微观指标

1. 垃圾回收机制的暂停时间

我们应该测量垃圾回收的暂停时间,因为应用程序会在 GC 暂停期间处于被挂起的状态。这意味着这段时间里不会执行 customer activity,很显然这是不好的。降低 GC 暂停时间的数量和长度可直接影响到性能。所以我们应始终力求实现最短的暂停时间。

2. 对象的创建/回收率

创建对象的速度会严重影响 CPU 的利用率。如果使用低效的数据结构或代码,会生成更多的对象来处理相同数量的事务。过高的对象创建率会导致出现频繁的垃圾回收行为,而频繁的 GC 则会增加 CPU 的消耗。

3. 垃圾回收的吞吐量

简单来说,吞吐量是指应用程序线程用时占程序总用时的比例。 例如,吞吐量 99/100 意味着 100 秒的程序执行时间应用程序线程运行了 99 秒, 而在这一时间段内 GC 线程只运行了 1 秒。我们应力求实现高吞吐量,即应用程序应运行更多的时间,并减少垃圾回收活动的时间。

4. 每一次生命周期的内存消耗

在 JVM、Android Runtime 和其他的平台中,内存会被划分为几个内部区域。我们需要知道分配的大小空间以及每个区域的峰值利用率大小。内存区域的分配不足会降低应用程序的性能,而超额的分配将增加托管服务器的成本。

如何获得与内存相关的微观指标?

所有这些与内存相关的微观指标都可以从垃圾回收日志中捕获。

与线程相关的微观指标

5. 线程的状态

线程会处于以下的其中一种状态:新建,可运行,运行中,睡眠,阻塞,等待,死亡。性能测试报告中应体现出每个状态的线程数量。如果线程长时间处于阻塞状态,则应用程序可能会无法响应。如果许多线程处于可运行状态,那么应用程序的 CPU 消耗就会变高。如果应用程序的线程在等待、有时间限制的等待和阻塞状态中花费更多的时间,这将会降低响应时间。

6. 线程组

线程组表示一组线程的集合。每个应用程序都会被归属于多个线程组。我们应该测量每个线程组的大小并记录在性能测试报告中。线程组大小的增加可能表示着某种类型的性能下降。

7. 守护进程 vs 非守护进程

有两种类型的线程状态:守护进程和非守护进程(如用户线程)。我们应该按状态来对线程进行报告。因为当非守护线程在运行时,JVM 将不会终止。

8. 代码执行路径


上一篇服务性能监控:USE方法(The USE Method)
下一篇如何将性能测试与持续集成连接起来
明星图片
相关文章
《 有的放矢,你应该在性能测试报告中使用的 10 个微观指标》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)