IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试之:使用python-matplotlib绘制linux-GUI软件性能测试曲线 -> 正文阅读

[开发测试]自动化测试之:使用python-matplotlib绘制linux-GUI软件性能测试曲线

一、效果图

二、实现步骤:绘制软件性能曲线(以load为例)

1.准备测试脚本

GUI操作脚本

2.提取关键性能分析点

1.what?

  • load负载值

    • load average:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。这个数字越小越好。

    • 负载高、使用率低

    • 利用率高、负载低

      • 说明等待执行的任务很多。很可能是进程僵死了。通过命令 ps -aux 查看是否存在D状态的进程,该状态为不可中断的睡眠状,态。处于D状态的进程通常是在等待IO,通常是IO密集型任务,如果大量请求都集中于相同的IO设备,超出设备的响应能力,会造成任务在运行队列里堆积等待,也就是D状态的进程堆积,那么此时Load Average就会飙高。

      • 说明任务少,但是任务执行时间长,有可能是程序本身有问题,如果没有问题那么计算完成后则利用率会下降。这种场景,通常是计算密集型任务,即大量生成耗时短的计算任务。

    • 使用率低、负载低、IOPS 高

      • 通常是低频大文件读写,由于请求数量不大,所以任务都处于R状态(表示正在运行,或者处于运行队列,可以被调度运行),负载数值反映了当前运行的任务数,不会飙升,IO设备处于满负荷工作状态,导致系统响应能力降低。

2.when?

  • 软件运行时,各种操作、等待页面时,提取load

3.where?

  • linux环境下的GUI软件

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值

  • test.log

记录测试操作步骤

  • atp.log

4.matplot下性能曲线绘制

1)x轴

  • 时间戳

2)y轴

  • load1值

3)折线*1

  • 时间戳-load1折线图

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博客

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:49:55  更:2022-05-05 11:51:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 15:36:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码