PC 性能自动化工具技术方案及说明

news2024/12/23 13:07:32

● 需求背景
Kim PC端在每一个版本的迭代过程中,由于各版本的功能改动较多,为了避免在发布新版本时性能不会出现“大跳水”的情况,需要针对每一个版本进行性能测试。由于人工手动测试所需时间较长,且存在参数不准确、时间不可控等问题,所以需要针对PC 端开发一款性能自动化工具,以此降低人力投入成本,提高测试效率。
● 性能指标

  1. 冷启动速度
    ■ FP(启动弹窗时)
    ■ FCP(roomlist框架刚加载出来时)
    ■ FMP(RoomList中LastMessage加载完成)
    ■ TTI(Kim首页数据完全加载)
    ■ 会话载入(点击会话到会话加载完成)
  2. 冷启动内存
    ■ 内存(冷启动之后的稳定值)
    ■ CPU(冷启动之后的稳定值)
  3. 业务场景耗时
    ■ 耗时(执行该场景前后所消耗的时间)
  4. 前台内存
    ■ 内存(多次执行固定业务case之后各进程的内存变化趋势)
    ■ CPU (多次执行固定业务case之后各进程的CPU变化趋势)
    5. 温度
    ■ CPU 温度(多次执行固定业务case之后电脑的CPU温度变化趋势)
    ■ GPU 温度(多次执行固定业务case之后电脑的GPU温度变化趋势)

● 主要贡献
参与方案制定、负责工具开发
● 技术方案
该工具主要分成两个模块,即性能日志解析模块和进程监控模块。其中性能日志解析模块通过Python脚本将Kim客户端生成的性能日志进行解析及可视化展示,生成冷启动速度、冷启动内存、业务场景耗时等相关数据。进程监控模块通过 PC UI 自动化脚本(Cucumber框架)执行固定业务场景case,同时执行 Shell 脚本收集case运行过程中的相关性能日志,最后将采集的日志通过 Python 进行解析并绘制图像,得到规定时间内的前台内存及温度的变化趋势。
该工具的执行流程如图1所示。其总共分成3个模式,分别是版本全场景测试模式、性能日志解析模式、进程监控模式。其中版本全场景测试模式用于启动版本性能测试,只需启动该模式即可获得相关性能数据图及数据表;性能日志解析模式可单独对性能日志进行解析,可用于解析线上用户的性能日志,生成数据报告以便排查问题,该模式可以获取Kim冷启动速度、冷启动内存及相关场景耗时数据;进程监控模式可通过设置监控时长,结合PC 端 UI 自动化case触发的业务场景,得到该时长内的内存、温度变化数据,可用于内存泄露的分析。
目前Kim各版本的性能报告均存储在本地,之后将通过本地数据上传至阿拉丁平台的方式,对每个版本的性能数据进行可视化及保存,并进行版本间的数据对比,更清晰地分析出版本间的性能变化。
在这里插入图片描述
图1 PC端性能自动化测试工具流程图
● 实践过程及可视化展示
工具运行的过程如图2所示,在运行之后可以通过输入数字“1”、“2”、“3”选择对应的模式,选择完成之后即可运行对应的功能。
在这里插入图片描述
图2 PC端性能自动化测试工具运行过程图
若用户输入“1”,则进入“版本全场景测试”模式。该模式用于一键生成 Kim 版本性能测试中所需的所有性能数据,包括性能日志解析数据和前台内存数据。其中性能日志解析数据为各进程冷启动内存、各进程冷启动CPU、冷启动耗时、业务场景耗时,前台内存数据为执行固定业务case之后各进程内存、CPU的变化趋势图以及期间CPU、GPU温度变化趋势图。性能日志解析和前台内存监控如模式2、模式3所述。
若用户输入“2”,则进入“性能日志解析”模式,该模式可用于快速生成某版本当前的性能数据报告。在程序执行完成之后,该工具将性能日志按照特定格式进行解析,并通过固定的格式进行编排,即可获得性能日志解析数据报告,具体如图3所示。若出现用户反馈Kim性能问题时,可通过隐藏在Kim中的开关采集性能日志,对该日志进行解析并生成报告,以便排查问题。
图3 性能日志解析数据报告
若用户输入“3”,则进入“进程监控”模式,在输入需要监控的时长之后,即可在该时长内对任意一个进程持续监控其内存、CPU变化趋势。同时,若结合PC端的UI自动化case,通过不断地执行同一场景的业务case,根据生成的性能趋势图,可用于前台内存数据分析、内存泄露排查等场景。

在这里插入图片描述
图4 内存、CPU、温度变化趋势图
● 收益
在工具产生前:对每个版本的常态化性能测试以及业务需求的性能测试,通过手工测试以及视频分帧的方式收集页面耗时数据,完成性能测试。一次版本性能测试需要占用人力5p/d。
工具产生后:在设定执行时间及时长之后,可自动生成相关的报告及数据,只需要对数据进行总结分析即可,释放了人力4p/d。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot+vue+element驾校管理系统设计和实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

详解vue组件(属性、事件和插槽)

一、属性 1.自定义属性props 可以得出props 可以显示定义一个或一个以上的数据,对于接收的数据,可以是各种数据类型,同样也可以传递一个函数。通过一般属性实现父向子通信;通过函数属性实现子向父通信 2.inheritAttrs 3. data与…

十、顺序存储二叉树、线索化二叉树

1、二叉树顺序存储 1.1 特点 顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为2*n1第n个元素的右子节点为2*n2第n个元素的父节点为(n-1)/2 n:表示二叉树中的第几个元素(按0开始编号),也可以理解为n为数组下标。 1.2、基本…

力扣刷题记录——804. 唯一摩尔斯密码词、806. 写字符串需要的行数、824. 山羊拉丁文

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——804. 唯一摩尔斯密码词、806. 写字符串…

Apache两个解析漏洞复现及防御方法

一、多后缀解析漏洞 形成原因: 配置apache时,对于apache配置不熟练,配置命令不清楚,在配置PHP文件处理程序时,配置命令存在问题:位于漏洞环境目录的 conf/docker-php.conf里的配置命令(AddHand…

路由策略实验(华为)

题目: 思路: 为完成实验达成目的,需要明确两个区域内的协议,并且要避免造成环路,故需要改变r3-r1,r3-r4两边的优先级,可以避免造成环路,并且需要达到选路最优,设置匹配规则&#xff…

【机器学习】逻辑回归(实战)

逻辑回归(实战) 目录一、准备工作(设置 jupyter notebook 中的字体大小样式等)二、绘制 sigmoid 函数:σ(z)11e−z\sigma(z)\frac{1}{1e^{-z}}σ(z)1e−z1​三、查看鸢尾花数据集1、加载 iris 数据集并查看2、设计二分…

[Java]Maven学习笔记(尚硅谷2022)

文章目录🥽 Maven概述🌊 Maven的功能🌊 Maven简介💦 构建💦 依赖💦 Maven 的工作机制🥽 Maven核心程序解压和配置🌊 Maven 核心程序解压与配置💦 下载💦 解压…

电脑本地安装不同版本MySQL

本地已经安装了mysql5.7版本,想测试mysql8版本的用法,想在一台电脑同时配置不同版本的mysql在不同端口号,看起来简单,实现起来其实挺多坑的,总结下实战经验和大家分享下 一、下载安装 下载地址 二、配置 1、解压缩…

word标签功能:如何快速制作批量产品贴纸标签

在日常生活中,在商店购物时,经常可以看到,商品架上放有产品贴纸标签,用于消费者识别产品价格、日期或者组合成分等。在日常办公中,在办公用品或仓库物料上,同样也能看到贴纸标签,用于物品的分类…

Go语言安装

1. 介绍 Go语言是一门编译型语言。Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。 C/C:C/C语言直接编译成机器码,不需要执行环境,直接执行在操作系统上; Java:Java会先编译成字节码.c…

es6对象中的简写形式

对象属性简写 let name ww; let age 18; // es5写法 let es5 {name: name,age: age, }; // es6写法 let es6 {name,age }函数简写 let obj {es5: function () {}, // es5写法es6() {} // es6写法,省略 :function }计算属性名 let name ww; let age 18 let o…

前后端鉴权的10种方案

文章目录0、基本概念认证授权鉴权权限控制认证、授权、鉴权和权限控制的关系1. HTTP 基本鉴权1.1 认证流程图1.2 认证步骤解析1.2 认证步骤解析1.3 优点1.4 缺点1.5 使用场景2. Session-Cookie 鉴权2.1 什么是 Cookie2.2 什么是 Session2.3 Session-Cookie 的认证流程图2.4 Ses…

一起Talk Android吧(第四百七十八回:旋转类视图动画)

文章目录使用方法属性介绍示例代码各位看官们大家好,上一回中咱们说的例子是"平移类视图动画",这一回中咱们说的例子是"旋转类视图动画"。闲话休提,言归正转,让我们一起Talk Android吧! 使用方法 旋转类动画…

【Java项目】从0到1构建一个博客系统

✨哈喽,进来的小伙伴们,你们好耶!✨ 🛰️🛰️系列专栏:【JavaWeb】 ✈️✈️本篇内容:从0到1构建一个博客系统! 🚀🚀代码托管平台github:博客系统源码托管! ⛵…

【Git】自建代码托管平台-GitLab

10.1、GitLab 简介 GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。 GitLab 由乌克兰程序员 DmitriyZaporozhets …

数据分析-深度学习Pytorch Day11

首先要搞懂损失函数与代价函数。损失函数是单个样本与真实值之间的差距代价函数是整个样本集与真实值的平均差距随机梯度下降就是不使用代价函数对参数进行更新,而是使用损失函数对参数更新。梯度下降法( gradient descent )是一阶最优化算法,通常也称为…

SpringBoot+VUE前后端分离项目学习笔记 - 【27 SpringBoot集成Redis】

以首页的文件访问作为示例使用Redis 一方面加快用户访问速度 一方面缓解频繁访问数据库的压力 之前每次访问首页都会请求数据库数据 Redis安装以及配置 所需文件 解压后,双击下述脚本,启动redis 可视化软件安装、设置安装路径然后一直点下一步就OK …

Java OpenJDK 8u362 Windows x64 Installer

文章目录(一)Azul(二)Adopt(三)IBM(四)Oracle(一)Azul WEB Page:🔗Download Azul Zulu Builds of OpenJDK Windows installer&#xf…

一位老测试对测试用例之个人见解

刚入行的时候,看了很多关于测试相关的文章,记得有一篇说到测试用例是测试灵魂让我印象深刻。如今,我入行几年了,越发深感测试用例的设计重要性,可以这么说,测试用例的设计与管理是测试工程师的核心技能。我…