• 0
  • 0
分享

  1.背景

  在性能测试过程中,往往需要监控服务器的性能情况,并记录这些性能指标结果。不论是云下数据库服务器还是应用服务器,都可以通过nmon来进行监控,设定打点间隔和打点次数,将性能指标情况保存成nmon文件,并通过工具,如Excel插件Nmon_Analyzer、Java GUI工具nmon visualizer等读取nmon文件内容,分析采集结果。但当监控的服务器数量较多时,依次采集多个nmon文件中的性能指标结果会耗费时间,同时,人工读取和记录数据也可能会出现记录错误的偶然误差。因此我们可以尝试使用自己熟悉的编程语言,如Python等,来开发一款简单易实现的小工具,用于自动采集性能测试nmon文件中的性能测试指标。

  2. 工具介绍与设计

  工具实现的基本思想是逐个扫描指定路径下的nmon文件,根据nmon文件的内部格式,提取出目标性能指标数据,再对提取出来的数据进行加工处理,得到结果,并将结果自动保存到新生成的结果Excel文件中。为了更直观地获取用户输入的nmon文件路径及结果保存路径,我们可以编写GUI界面,利用界面上的文本输入框来获取用户的输入,并采用界面上的按钮来触发这一采集事件。

2-1.jpg

图1 工具设计流程图

  3. 工具实现

  (1)导入所需模块

  由于我们的工具中包含对文件和路径进行操作,这需要依赖os模块实现。在逐行读取nmon文件内容时,用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode。re模块是python独有的匹配字符串的模块,利用正则表达式对字符串进行模糊匹配,提取自己需要的字符串部分,使用该模块可以实现逐行扫描进行模糊匹配查找到CPU和内存的相关性能指标。xlwt库的作用是将数据写入Excel表格中。Tkinter 是 Python 的标准 GUI 库,导入 Tkinter 模块后可以使用控件快速的创建 GUI 应用程序。 tkinter.StringVar 能自动刷新的字符串变量,可用set和get方法进行传值和取值,以此来接收用户输入。

2-2.png

图2 代码-导入所需模块

  (2)窗口的实现

  利用Tkinter模块创建窗口并插入输入框控件用来获取用户输入的路径信息,输入框的内容存储到StringVar当中,设置按钮Button用于和鼠标点击事件绑定。

2-3.png

图3a 代码-窗口的实现

2-4.png

图3b 窗口的实现图

  (3)编写事件代码——求CPU平均利用率的函数

  不同版本的nmon文件内部格式略有不同,因此在编写程序时,要先了解目标版本的内部结构,用来确定字符串模式匹配时,需要利用nmon文件中性能指标相关内容的哪些特征。

  为了计算均值,需要获取nmon文件中记录的打点次数。通过了解nmon文件中AAA参数是关于操作系统以及nmon本身的一些信息,可以查找该行来进行提取。

2-5.png

图4 代码-获取打点次数和打点间隔

  CPU_ALL参数是对所有CPU的概述,显示所有CPU平均占用情况,将记录的CPU占用率逐个取出存放在数组里,并求数组元素的平均值,即为整个监控期间CPU的平均利用率,函数将该值返回。

2-6.png

图5 代码-求CPU平均利用率

  (4)编写事件代码——求内存均占用率的函数

  类似地,通过MEM参数获取内存占用情况,与CPU情况不同的是,该参数行包括多项内存相关指标,而在监控性能指标时,我们常用公式1来计算内存的占用率,因此需要从MEM参数中提取相关指标,包括memtotal、memfree、cached、buffers,按照公式进行计算,并返回内存占用率。

公式1 内存占用率常用计算公式

2-7.png

图6 代码-求内存占用率

  (5)编写事件代码——鼠标点击事件

  该事件用于和界面上的按钮Button进行绑定,实现当点击按钮后的一系列操作:从输入框取nmon文件路径和目标保存路径,生成Excel文件并创建工作表,写入默认的表头内容,调用求CPU平均利用率的函数和求内存均占用率的函数,将返回的值写入Excel文件并保存。

2-8.jpg

图7 代码-鼠标点击事件

  4. 总结

  该工具是基于Python语言的简单实践,可以实现批量自动提取nmon文件中的性能指标结果,并且可以沿用本思路根据需要对工具的功能进行修改或扩展。使用本工具进行性能结果的自动采集相比人工读取数值更加节省时间,并且避免了记录时出现错误的偶然误差,有助于提升准确度和测试效率。


作者:李婧媛   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言:这是我从事测试的第五个年头的开端,忙忙碌碌到头发现好像忙了个寂寞。也忘了最初走向这条不归路的初心是什么。当时16年学完计算机出来找工作,看着茫茫人海,第一反应就是退缩,该找什么工作?开发?除了会点语言基本都是皮毛,脑海中什么概念都没有,面试问得什么Java的垃圾回收机制,线程池,一脸懵。记忆最深一个,深圳某公司以2000月薪招实习生,当时什么面试题都忘记了,唯有记得公司创始人的一句话,“坦白说,以你现在的水平,就像是一个刚学会了1+1=2的小学生,是很难应聘到工作的,与我们的岗位也不匹配。”然后请了我出去。此生难忘~月薪2000,1+1=2,在脑海久久不能挥去,招个扫地阿姨都不止2k,这...
            0 0 745
            分享
          • 通常我们在谈论性能测试的时候,往往将性能测试分为压力测试和负载测试两大类去讨论,在设计性能测试方案和执行性能测试过程的时候,也是基于这两个角度去思考。在传统意义上,通过这两个手段去评估某个系统的性能表现已经很完美了。但是随着大数据互联网、移动互联网等新兴概念的兴起,传统的性能测试概念、方法已经无法全面的引导我们开展性能测试工作。比如移动端的兴起与广泛应用,移动端的性能也是性能测试的范围;再比如如何评估系统扩展性、弹性性能表现相关的容量测试,也要我们去关注。因为公司最近做服务端容量的相关工作,因此我们就性能测试,容量评估两个角度去重新定义性能测试的工作范围和职责。1、性能测试性能测试的最终目的是...
            0 0 4885
            分享
          •   我是一名转IT测试人,我的专业是化学,去化工厂实习才发现这专业的坑人之处,化学试剂害人不浅,有毒,易燃易爆,实验室经常用丙酮,甲醇,四氯化碳,接触多了,吃个饭都感觉在吃试剂,实属被逼无奈,只能选择转行。  在这期间我迷茫过,纠结过,不知道该选择什么方向,后来我的发小推荐我转行去做软件测试,看他在这行发展的还挺好,我就想着要么我也试试看。然而走上这条路,我才发现完全不懂it的我,学起来也不会太困难。就这样转行测试改变了我的人生轨迹,和一群努力奋斗、满腔热血的同事们一起,燃起了我的斗志,也为自己创造了更好的前途!  努力奋斗!满腔热血!  好了,我发泄完了,文风要突转了::  成功不能复制,但...
            0 0 1395
            分享
          • 简介软件测试是一个快速发展的职业领域,随着信息技术的不断发展和应用,软件测试的重要性也越来越受到重视。软件测试职业是指专门从事软件测试工作的人员,他们负责对软件系统进行全面、深入、有效的测试,发现和解决软件中的缺陷和错误,提高软件的质量和可靠性。软件测试职业的发展前景广阔,随着信息技术的不断发展和应用,软件测试职业的需求也越来越大。软件测试职业可以在各种行业和领域中得到广泛的应用,包括互联网、金融、医疗、教育、制造等领域。软件测试职业的薪资待遇也较为优厚,具有一定的职业晋升空间和发展前景。下面是关于软件测试的详细介绍和内容。软件测试是指在软件开发过程中,通过对软件系统进行各种测试活动,发现和纠...
            0 0 663
            分享
          • 摘要:许多敏捷软件开发中的自动化测试的工作都失败了,或者并没有发挥它们最大的潜力。本文研究分析了自动化测试也许不能满足测试人员和其他利益相关者期望的两个主要原因,然后列举了六个能够避免陷入这些陷阱的步骤。以下是在敏捷环境中成功实现测试自动化的方法。为了能够跟上因敏捷软件开发而不断缩短的发布周期,很多开发团队都采用了自动化测试的方法,从而不断保证每个软件版本都符合所需的质量水平。这是传统软件开发实践的一个重要转变:测试经常被卡在开发过程的最后,被视为了测试过程的负担,而并不是好处。因此,一个在采用敏捷软件开发,转变为DevOps文化并采用持续集成和持续交付的组织中工作的测试人员,必须对于如何有效...
            0 2 2975
            分享
      • 51testing软件测试圈微信