一、效果图
二、实现步骤:绘制软件性能曲线(以load为例)
1.准备测试脚本
GUI操作脚本
2.提取关键性能分析点
1.what?
2.when?
3.where?
4.why?
-
当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。 当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。 当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。你不应该让系统达到这个值。 -
以上指标都是基于单CPU的,但是现在很多电脑都是多核的。所以,对一般的系统来说,是根据cpu数量去判断系统是否已经过载(Over Load)的。如果我们认为0.7算是单核机器负载的安全线的话,那么四核机器的负载最好保持在3(4*0.7 = 2.8)以下。 -
还有一点需要提一下,在Load Avg的指标中,有三个值,1分钟系统负荷、5分钟系统负荷,15分钟系统负荷。我们在排查问题的时候也是可以参考这三个值的。 -
一般情况下,1分钟系统负荷表示最近的暂时现象。15分钟系统负荷表示是持续现象,并非暂时问题。如果load15较高,而load1较低,可以认为情况有所好转。反之,情况可能在恶化。
5.who?
3.log管理
记录load 1值
记录测试操作步骤
4.matplot下性能曲线绘制
1)x轴
2)y轴
3)折线*1
4)散点图*1
5)水平线*2
三、文件目录
四、文件详情
1)软件自动化测试脚本log:atp.log
2022_04_22_10_36_37_607;click, 0.85, 0.68
2022_04_22_10_37_26_919;sta1, 0.89, 0.70
2022_04_22_10_39_22_940;click, 0.95, 0.75
2022_04_22_10_39_23_150;sta1:卡死, 0.95, 0.75
2022_04_22_10_39_23_360;sta2:闪退, 0.95, 0.75
2)test.log3)
2022_04_22_10_36_37_607;0.92, 0.85, 0.68
2022_04_22_10_37_26_919;1.21, 0.89, 0.70
2022_04_22_10_39_22_940;0.97, 0.95, 0.75
2022_04_22_10_39_23_150;0.97, 0.95, 0.75
2022_04_22_10_39_23_360;0.28, 0.95, 0.75
?3)绘制程序
import time as t
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np
import cv2
# matplotlib 中文转义
plt.rcParams['font.sans-serif'] = ['SimHei']
def curve_plot(name1,name2):
t_start = 2022_04_22_10_37_26_919
t_end = 2022_04_22_10_39_22_940
lines = open(name1, encoding='utf-8').readlines()
lines2 = open(name2, encoding='utf-8').readlines()
xlist,timelist,txt1list,y1list=[],[],[],[]
for line in lines2:
if len(line) != 1:
time,txt = line.strip().split(';')
txt1,txt2,txt3 = txt.split(',')
for lineq in lines:
if len(lineq)!= 1: #如果不为空
x,y = lineq .strip().split(';')
y1, y2, y3 = y.split(',')
y1 = float(y1)
if x == time:
xlist.append(x)
timelist.append(time)
txt1list.append(txt1)
y1list.append(y1)
#绘制
plt.plot(xlist, y1list,color='g') #
plt.xticks(rotation=10) # 旋转x度
plt.scatter(xlist, y1list, marker='o')
for i in range(len(xlist)):
plt.annotate(txt1list[i], xy=(xlist[i], y1list[i]), xytext=(xlist[i], y1list[i])) # 这里xy是需要标记的坐标,xytext是对应的标签坐标
plt.hlines(0.7, xmin=0, xmax=10, ls='--', color='royalblue', label='normal')
plt.hlines(1.0, xmin=0, xmax=10, ls='--', color='orange', label='alarm')
plt.show()
curve_plot('test.log','atp.log')
五、其他资料
一篇文章教小白会Python 绘制Android CPU和内存增长曲线_苏州程序大白的博客-CSDN博客
|