基于linux的性能测试工具
导语
在性能测试的过程中,调研了了很多性能采集工具,但因为业务上部分功能不匹配,导致测试的成本依旧存在很大的递增,所以测试组决定开发一款适用于当前工作的性能测试工具,测试组利用工作以外的时间进行了培训、功能设计、开发等工作,最终工具完成,当前工具是一个开放的架构,可以后续增加更多的功能模块。
工程介绍
工程以python3.7为基础语言,结合pyqt5、BeautifulReport(重构),结构将UI界面与功能代码分离,且将各个弹出的dialog抽离,通过继承的方式与主窗口交互,主体运行放在main文件中,使UI、功能、运行各自独立。
工程结构
环境搭建
内置python环境,不依赖使用者主机环境,故不需要特意搭建环境。
引用函数库
PyQt5、traceback、paramiko、threading、datetime、time、os、sys、re、socket、pynput、ctypes、inspect、json。
UI构成
UI界面主体以PyQt5为核心构建,通过内置的函数(toggled.connect)将信号与槽函数绑定。
配置文件构成
通过配置文件记录使用者操作习惯,并提供了工具配置dialog,将工具内的变量直观展示在使用者面前。
配置文件分为用户操作记录和初始化数据,我们将用户操作记录配置存储到ini文件中,将初始化数据存储到了config.py中,在工具初始化时减少了运行时间。
报告构成
报告通过读取模板文件,指定生成位置,将算法得出的数据填充到模板中,最终形成报告文件。
功能介绍
性能测试工具,从功能上集成了性能采集、多种日志发送模式、性能参数计算、性能阈值报警、CPU峰值EPS估算、定时任务、截图、性能自动化测试、文本转换工具、自动生成性能报告、系统设置等功能,并且工具模块都可以单独拿出来形成一个独立的工具。
主界面
性能采集-设定
性能采集之前,需要先设置告警的阈值,默认是0%,代表当采集的CPU、内存的占用率超过0%就会生成一条性能告警信息,可以通过滑动进度条来设置告警的阈值,最大99%。
新建连接
新建连接,点击菜单栏的新建-新建连接,会弹出新建连接的界面。
输入要采集的主机ip、端口、账户、密码,点击测试按钮,如果失败会提示连接失败,如果成功会提示测试成功,测试成功后点击保存,执行采集性能则会采集本次配置的机器信息,同时新建的连接信息也会同步到系统设置中。
日志发送
系统栏有发送日志的复选框,当勾选了该复选框,在运行采集时就会向新建连接的IP通过UDP方式发送以本机为发生源的日志。
日志发送支持三种模式,1.固定发送速率 2.区间发送速率 3.指定发送速率。
固定发送速率
固定发送速率勾选,用户通过手动滑动进度条,设置固定发送的速率,最大为20000,例:进度条拖拽至3000位置,代表每秒按照3000持续发送。
区间发送速率
区间发送速率勾选,用户选择起始发送速率和终止发送速率,最小1000,最大20000.例:起始发送速率选择1000,终止发送速率选择20000,代表以1000开始每次递增100一次持续10秒,直到发送至20000后自动停止,若勾选了系统栏的持续发送,当发送速率已经到达20000时,也不停止直到手动结束或者定时任务出发结束。
指定发送速率
指定发送速率勾选,输入框高亮可以输入,输入格式以英文逗号分隔,例:输入[1000,2000,3000],这代表发送会按照1000、2000、3000去发送,一次持续10秒,当3000发送完成则发送日志结束,若勾选了系统栏的持续发送,当发送速率已经到达3000时,也不停止直到手动结束或者定时任务出发结束。
定时结束
勾选 设置终止任务时间 复选框,在运行前会校验时间是否合法,给出相对应的提示,当结束时间触发则性能采集和日志发送均停止。
系统设置
系统设置入口在菜单栏-设置中,点击设置弹出设置弹框,系统设置中分为新建连接、工具UI、文件路径、发送设置,具备保存、取消、还原、测试等功能。
系统设置中的测试按钮,和新建连接中的原理一致,测试采集IP是否能连通,窗口状态背景颜色等在下一次运行工具时生效。
运行位置
运行可以在两个位置看到,第一个是系统栏的开始按钮,第二个是菜单栏的运行控制-运行。
运行前准备
运行前需要配置好正确的采集IP、端口、账号、密码等配置项,设置好CPU、内存告警阈值,选择是否发送日志,参考之前的设置内容。
开始运行
运行开始后系统栏会显示运行的状态,例:读取配置中、整理数据、开始运行、发送失败、性能采集正常、日志发送失败等等。
性能曲线
开始采集性能后工具中间区域会显示曲线波动,蓝色线为CPU波动,绿色为内存波动,折线图一秒刷新一次,界面动态显示,从曲线波动可以直观的看到目标机器的CPU、内存的状态。
性能采集-告警详情
设置阈值,当采集性能数据的占用率大于这个阈值则产生一次告警,点击告警详情可以看到告警发生时的发生时间、CPU信息、内存信息、CPU详细信息、内存详细信息、SWAP信息、进程信息 等,界面以列表形式展示,展示前十的数据。
性能采集-峰值详情
性能采集过程中,会计算CPU、内存的峰值,并且取出峰值发生时的其他数据信息并展示,数据包含发生时间、CPU信息、内存信息、CPU详细信息、内存详细信息、SWAP信息、进程信息 等。
性能自动化测试
点击菜单栏的工具-自动测试,会弹出提示框,因为工具设定,当自动化测试开始则不能被打断,直到测试完成,时长大约15分钟左右。
自动化测试会从100EPS开始,自动发送日志并且日志量递增,自动化测试过程中,状态变更、工具性能折线图动态刷新,直到测试完成最终生成报告。
性能报告
性能采集运行结束后,会根据系统设置中定义存储报告的位置生成性能报告和性能文本,文本是txt格式,报告是html格式,双击报告即可查看报告内容,报告内容包含:测试IP、启动时间、CPU峰值和详情、CPU均值、内存峰值和详情、内存均值、CPU告警数和详情、发送周期、内存告警数和详情、发送数据总数、CPUMAXEPS等数据。
CPU内存峰值、告警均可以查看对应的详情信息。
CPU、内存峰值详情
CPU、内存告警详情
全屏\非全屏展示
测试工具具备全屏展示和取消全屏展示的功能,当全屏展示后,窗口不可关闭、缩小,点击取消全屏后窗口退出全屏状态,窗口可以关闭、缩小。
截图
点击系统栏的工具-截图工具,可以开始截取当前屏幕,开始截图界面变成灰白色,通过鼠标拖拽区域可以得到截图,可以选择另存或者取消。
文本转换工具
点击菜单栏的工具-文本转换工具,弹出文本转换工具界面,界面包含。
原始文本输入框,该输入框用于放置原始的字符串。
更替方式列表框,用于存放选中文本及对应的更迭方式的,便于查证。
操作区,有三种设置信息,时间设置用于时间替换,文本设置用于替换文本内容,数字设置用于替换整数、小数、IP。
生成文本路径,若不设置则默认当前根目录下。
重复次数,新生成文本插入文档的次数。
替换步骤:将转换前的原始文本输入
提前设置操作区,因为更替方式分为三种方式,所以在每次选择替换前要提前设置
时间设置:若勾选第一行的时间格式,则按照输入的格式来生成随机的时间,若不勾选则按照默认格式生成(2021-9-12-1-1),支持两种时间生成的规则(1)区间时间,需要输入开始和结束时间,并且结束时间要大于开始时间,生成的随机时间会在两个时间之间(2)定义时间,勾选定义时间后需要勾选之前时间、之后时间,勾选之前时间则会生成一个当前时间之前的一个随机时间,勾选之后时间则会生成一个当前时间之后的一个随机时间,两者都勾选则随机生成一个任意时间。
文本设置:选中中文随机,会生成一串长度与选中原始文本长度一致的中文字符串文字随机,选中英文随机,会生成一串长度与选中原始文本长度一致的英文字符串字母随机,选中指定文本,输入任意内容,输入的内容会替换掉选中的文本。
数字设置:选中整数随机,且不输入Start和End则会生成一个任意的随机整数,反之输入了Start和End则会生成一个区间内的整数,选中小数随机,且不输入Start和End则会生成一个任意的随机小数,反之输入了Start和End则会生成一个区间内的小数,选中随机IP则会生成一个随机的IP地址。
选中原始文本串中任意的一段,右键选择替换方式。
选择生成文本路径和重复次数有默认值可以不填写,路径默认工具所在根目录下,次数默认1次。
点击提取按钮
查看生成的文本
发包工具
发包工具支持本机IP和模拟IP发送日志,通过UDP发送,支持发送速率的调节,发送次数的设置。
发送步骤:选择发送方式,模拟IP发送和本机IP发送,模拟IP则会以输入的源IP地址作为发生源IP进行发送,若选择本机IP则会以当前电脑的IP作为发生源IP发送,发送给输入的目的IP地址,要求输入的IP必须合法,端口默认输入514,支持修改。
选择日志,支持三种日志的选择
一行日志发送,将发送的日志输入到下拉框中即可
选择文件发送,点击右侧选择文件按钮,选中后以换行分割,遍历文档
选择文件夹发送,点击右侧的选择文件夹按钮,选中后便利文件夹中的文本,再以换行分割,遍历文档
选择发送速率和输入发送次数,发送速率是下拉框,支持到20000EPS,但因为网卡、硬件等因素,有事发不到那么多,以实际为准,可以选择独立运行多个发包工具,也可以让发送的速率上涨一些。
后台运行,点击后台运行后,发送日志工具隐藏,再次点击工具-发包工具时再显示出来。
运行,点击运行后开始发送日志,当运行次数达到时自动停止发送。
重置计数,运行后会记录发送的数量,点击重置计数后,发送数量会清空,程序继续运行。
支持工具后台运行
帮助菜单
提供了帮助菜单,介绍了工具的功能。