一、关于项目需求——按需定制测试方案

说到性能测试的 cpu 及内存优化和异常发现,不同产品以及测试人员隶属(服务对象)不同,测试要求和测试目的是不同的,下面按个人理解分别说明下:

1、测试人员的隶属(服务对象)

(1)隶属功能测试组

服务对象

服务于各部门对版本上线的评估,将版本中发现的问题提交研发人员修改。

特点

黑盒功能测试,见不到代码也不关心代码逻辑。

——依据测试策略所出的报告结果评估版本风险,给版本是否发布提供依据,提交的 bug 是依据现象和测试数据,优先级是对用户的影响和后果严重性。

功能测试组的自动化/工具组,服务于黑盒功能测试。

——提供解放人力的自动化脚本方案解决部分人工压力,为特定测试需求提供脚本方案/工具,产出是要交付测试流程的。

CPU/内存测试目标

监控数据标准,及时提出优化改善意见并监控衰减;发现异常情况 bug:内存泄露,CPU 负载异常。

测试方案建议

监控数据采集及呈现方案附加在测试流程中,特别需求建立专项评估测试。根据版本周期长短调整测试内容,控制测试用例粒度。

注:我主要从事就是此类工作,有实践成果后文介绍。

(2)隶属于研发测试组(多见于 BSP 研发团队)

服务对象

服务于研发人员对修改引入风险的专项测试需求,研发人员在测试版本上的内部评估。

特点

自动化脚本测试,服务于开发人员的测试,根据研发对代码修改可能带来问题的猜测,组织测试方案验证,可以看到代码。

CPU/内存测试目标

验证研发人员代码设计上的问题及模块改动带来的风险。

测试方案建议

根据代码逻辑及加载的资源大小加 log 获取数据,对应逻辑行为统计分析数据,需要和研发人员的沟通结论基础和代码分析基础。

注:由于本身自己未从事此类工作,只是说明下如果我做会是这个思路

二、本人关于性能测试的方案设计与实践经验——测试标准和研发人员推动力非常重要

1、测试标准

(1)性能测试标准要多部门参与制定,大多数人认可

(2)基于用户体验的标准将研发排除在外,按照:

其他部门设定标准

—>通知研发

—>研发质疑标准(如果有)

—>竞品数据对比(说服研发或修正标准)

—>稳定落实到测试流程长期监控。

2、测试数据评价的监控

(1)思路:

依据测试标准设计按 case 评价得分的打分体系,根据总分变化呈现性能监控,报告监控数据变化,依据数据分析重点衰减用例。

(2)打分原则:

Ⅰ、用例归类,按类别分权重。(评估版本相关部门参与制定权重)

Ⅱ、用例权重分类,按对于评估用户体验的价值分为三档。

基础为 1;用户频繁常用场景 +1;用户多数在使用的测试条件 +1

用例评分=(所属测试类权重/用例价值总计)* 此条用例的用例价值

Ⅲ、设计用例打分原则

Ⅳ、设计数据统计展示方式:

我是采用的设计 excel 公式模板,每次贴数据自动计算,更新趋势图数据范围即可

3、性能测试用例设计及测试数据采集

(1)采集响应时间

加载时间,翻页时间,开关机等,根据项目需求设计

(2)取数据方式

录像数帧出数据,脚本获取时间等数据采集方式,根据数据准确性和精度要求评估

4、结果监控形式

(1)评分走势分析

评分降低,重点分析衰减项,超标准则提交 bug 由研发人员分析

(2)报告反馈与推进解决

测试结果报告发给所有评估版本质量的部门,多部门参与推动问题分析解决进度。

三、内存及 cpu 监控方案

1、测试方案选择

(1)测试流程内集成监控方案收集数据

数据可视化展示及分析数据,形成报告产出 bug

->下一个版本测试流程内回归验证修改(如有特定需求,可定制专项测试,测试版本验证)

适用条件

有成型测试模型和测试流程的,并且版本测试周期内测试时间充分的项目

说明

我这边的测试需求是系统软件版本整体的测试,也包括重点进程的测试监控,既要监控 java 层的进程也包括 Native 层的进程,还有集成 so 的 NDK 开发的应用进程。而且有成型的版本测试模型和流程,每部分测试都有指定的测试组负责。所以自己设计了监控方案集成到测试流程内,提供可视化分析方法便于交付。

集成监控测试的场景例举

Daily Smoke 自动化脚本;MTBF 稳定性测试;新增功能性能评估;专项测试评估;稳定性压力测试评估;OOM crash 类 bug 复现数据分析等。

成本开销

增加分析结果,验证复现的定位分析投入。

(2)细化测试用例粒度,选择重点风险用例采集数据评估具体的操作细节。

适用条件

测试周期短,人力投入有限,没有长期稳定的测试流程的项目。

说明

没做过这类测试,未实践尝试,只是个人认为此类测试应该是这个思路。

2、我所实践的监控方案设计

(1)采集数据:

Ⅰ、总 CPU 和进程 cpu

来源:busybox top -b -n 1

选择原因:比 top 命令执行响应速度高,耗时 0.2S 左右,top -t 需要 3s 左右;并且精度到 0.1,花括号内有正在处理的进程参考

Ⅱ、总内存

来源: /proc/meminfo

取关注的项:MemFree,Buffers,Cached,Active,Inactive,Active(anon),Inactive(anon),Active(file),Inactive(file),Dirty,Writeback,Mapped,Slab,包含 CMA 模块的增加 CMA Free

Ⅲ、进程内存

来源首选:dumpsys meminfo 进程PID

获取:Native Heap Size;Native Heap Alloc;Native Heap Free;Dalvik Heap Size;Dalvik Heap Alloc;Dalvik Heap Free;Totle Pss;Dalvik Pss;Dalvik

来源备选:如果 native 进程取不到则用cat /proc/进程pid/smaps|grep Pss求和取 Pss

Ⅳ、获取时刻显示的 Activity

来源: dumpsys window w|grep mFocusedApp|busybox awk '{print $5}'|busybox tr -d '}'

Ⅴ、获取时刻的时间

来源: date +%Y/%m/%d" "%H:%M:%S

Ⅵ、系统启动后运行时间

来源: busybox awk -F. 'NR==1{print $1}' /proc/uptime

注:用于分析执行监控的时刻及准确的获取数据间隔

(2)数据格式化输出

Ⅰ、总 cpu——cpu.csv

Loop:10,Time,Activity,usr,sys,nic,idle,io,irq,sirq,Data Time

注:10 是设定的间隔,使每个 csv 可以直接取到间隔用于计算时间;Time 是开机已运行时间

Ⅱ、进程 cpu——cpuinfo.csv

Loop:10,Time,PID,%CPU,Command,avgs,Thread

注:Thread 是花括号{}内的进程,avgs 是命令行后的参数,都有的情况优先取命令行参数。

Ⅲ、总内存——mem.csv

Time:10,MemFree,Buffers,Cached,Active,Inactive,Active(anon),Inactive(anon),Active(file),Inactive(file),Dirty,Writeback,Mapped,Slab

注:选择在 cpu.csv 中记录 loop 是由于需要有列 loop 数据判定脚本抓取数据是不是连续正常的,而这里可以用行号计算。

Ⅳ、进程内存——meminfo.csv

Loop:10,Time,PID,Process_Name,Pss,Native_Heap(Size),Native_Heap(Alloc),Native_Heap(Free),Dalvik_Heap(Size),Dalvik_Heap(Alloc),Dalvik_Heap(Free),Dalvik_Pss,Avgs

注:Avgs 是进程的命令行参数,/proc/进程 PID/cmdline 取的数据

(3)数据可视化展示——highcharts

Ⅰ、控制每张图的数据量

显示数量在 400 以内,时间段切片显示,默认按照 1 小时,根据间隔变化调整

原因:由于数据量限制一张图默认最多展示 1000 个点,加上数据点越多打开及交互响应慢

Ⅱ、所有图共用数据

每个点显示:Activity;系统时间

Ⅲ、进程 CPU 数据线和内存数据线总体设计

同进程跨间隔 loop 数之间 cpu 记 0;新增 PID 标红点;同一时间点同名多进程存在则横坐标累加 1/10n 标黄点,n 为同一 loop 的重复次数。

Ⅳ、进程 CPU 数据图

按峰值降序排列显示 top5;可多选交互更新;有参数数据的查看点信息时进程同颜色展示;

Ⅴ、总内存图:

总内存图:剩余内存=MemFree+Buffer+Cache,Active,Inactive,io=Dirty+Writeback,Mapped,Slab;

剩余内存图:剩余内存,MemFree,Buffer,Cache,如有 CMA 则增加 CMAFree

Dirty 和 Writeback 图:Dirty 和 Writeback

Active 和 Inactive 图:Active,Inactive,Active(anon),Inactive(anon),Active(file),Inactive(file);

Mapped 和 Slab 图:Mapped,Slab

Ⅵ、进程内存 PSS 多选展示图:

按每张图数据,进程 PSS 峰值降序排列

Ⅶ、单进程内存数据展示图:

按进程 PSS 极值差降序排列;java 进程显示 heap 详细数据,native 进程只显示 PSS

Ⅷ、附加

数据双横轴切换:sleep*loop 传参数的计算时间;Time 是精确每个取数据命令获取的开机已运行时间;

更换图标主题和生成图片的 highcharts 功能

3、方案采取的脚本设计

(1)shell 脚本获取数据:

按顺序获取

->显示的 Activity

->系统时间

->CPU

->总内存

->进程内存(最大限制并发 5 子进程获取)

注:监控所有进程采集数据开销大,当前优化后的逻辑也需要 6-8S 采集一次,随进程增多会增长;单进程获取可以在 1S 完成。

(2)Python 转换数据为 json:

按显示模板设计生成指定形式的 json 文件,并和模板文件一起打包成 zip

(3)node-webkit 框架数据展示:

由于需要加载本地 json 文件,最后选取了此框架展示,以解决浏览器本地文件读取限制问题及处理性能问题。

4、效果展示

考虑了下,还是把工具放出来吧,有想尝试的可以实际试下效果。

1.关于兼容:只是适配了乐视项目情况,是否适用所有兼容机情况没什么把握

2.关于使用前提:需要 root+busybox

3.平台说明:已打包了 windows 下的 exe;shell 脚本可以直接 push 使用不涉及平台兼容;CSVtoJson.exe 就是将 output.py 打包成了 exe;MCM 结果显示.exe 就是打包了 node-webkit 框架的 win32 版本,由于此框架本身是跨平台的,可自行解决跨平台需求。

4、如果想修改为在线版本加载 json,需要修改 Html 模板中的 json 加载部分,MCM_HTML/head/mcm.js 里 node 加载 json 的语句为在线获取。

软件测试cpu性能测试案例,性能测试之用例得分评价和 CPU 内存数据监控——谈谈个人看法和实践总结...相关推荐

  1. 【性能测试】性能测试之性能测试指标详解(性能指标、CPU、内存、负载、磁盘)

    目    录 一  系统性能测试指标 1.1 响应时间 1.2 并发 1.3 点击量/点击率 1.4 吞吐量/吞吐率 1.5 TPS/QPS 1.6 PV/UV 二  Linux服务器性能指标 2.1 ...

  2. 【性能测试】性能测试之性能测试指标详解(详细)

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  3. 计算机故障分析与处理事例,几个典型CPU故障案例的处理方法

    CPU作为电脑的核心组成部份,它的好坏直接影响到电脑的性能.CPU有时会发生故障,那么,下面让学习啦小编带您去看看几个典型的案例的处理方法吧. 几个典型CPU故障案例的处理方法: 一般情况下,CPU出 ...

  4. C#版本的CPU性能测试

    本文不讲C#开发技巧,只测试同样的代码在不同CPU的机器上的运行速度.结果包括普通版本和并行版本的对比,方便大家选配电脑,对"性能"有个感性的认识. 一. 测试原理 字符串相关度计 ...

  5. android cpu负载 工具,【专家专栏】Android性能测试之CPU

    原标题:[专家专栏]Android性能测试之CPU ▌Android性能测试 性能测试是手机应用测试中很重要的一个模块. 一般情况下,性能测试主要关注的指标有:CPU.内存占用.电量消耗.GPU.FP ...

  6. 软件测试中怎么分析性能的好坏,软件测试中性能测试结果分析

    分析原则:51Testing软件测试网At(fnE`6e+|3e\| 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)51Testing软件测试网AIdb1YLb1n e ...

  7. 性能测试之二——性能测试的流程

    目录 一.确定性能目标 二.制定测试方案 三.设计测试用例 四.测试环境与数据准备 五.执行性能测试 一.确定性能目标 在开始性能测试前,需要收集性能需求.分析确定合理的性能目标(分析目标).主要需要 ...

  8. 性能测试案例模板 性能测试用例模板

    网上功能测试案例模板各种各种不计其数,性能测试案例模板少之又少,前段时间看到一个朋友在群里跪求性能测试案例模板,其实不用跪,只要大家多总结,多思考,自己也能设计出一个满足自己测试需求的性能测试案例模板 ...

  9. 软件性能测试参数化数据准备,性能测试之如何准备测试数据

    作者:刘林霞 关于如何准备性能测试数据,相信不少性能测试人员也踩过不少坑:比如数据量不足,导致性能表现非常好,忽略了一些潜在性能问题:数据分布不合理,导致测试结果与线上差异较大,又要推到重来.经过n多 ...

  10. 服务器cpu性能如何测试,CPU性能测试(1)_服务器评测与技术-中关村在线

    在测试之前,我们有必要交代下这次测试的操作系统环境.通过缓存为512MB的LSI MegaRAID 2208 SAS阵列卡,对四块300GB 15K转速的SAS硬盘组建RAID5,在此基础上我们选择了 ...

最新文章

  1. Mybatis常见的面试题总结
  2. 16-01-25---Servlet复习笔记(01)
  3. 软件使用: word
  4. kettle kafka mysql_kettle使用kafka组件消费数据,保存到资源库无法打开问题
  5. 网络上经典的DOS小命令
  6. 去除div最后一个逗号_去除重复值、统计数量,这个公式可以直接套用!
  7. Extjs grid 设置行字体颜色
  8. linux 如何关闭屏幕录像,如何使用GNOME Shell隐藏的屏幕录像工具
  9. android webview 下载视频播放 206,Android webview+Html5 video
  10. win10下zookeeper的下载以及安装
  11. IT项目范围管理案例分析——柳工错在哪里?
  12. ELK 使用小技巧(第 5 期)
  13. WiFi 扫描结果的通知过程
  14. 新中大计算机知识,新中大财务软件操作步骤
  15. 各种数字推理题解题技巧
  16. Zemax简单透镜的设计与优化
  17. GIS应用知识解读!
  18. win7点e出现计算机,Win7电脑蓝屏显示代码0x0000007e的解决方法
  19. Js基础引导(二)——语法
  20. js颜色加深或者减淡

热门文章

  1. AX 2009 删除已经发出领料单的订单行
  2. Codeforces 106C Buns 【0-1背包】
  3. FreeSWITCH对接MRCP Server
  4. 计算机系固态硬盘机械硬盘,直观:如何在固态硬盘+机械硬盘上安装系统_IT /计算机_资料...
  5. linux查看ssh进程命令,查看linux ssh服务信息及运行状态方法
  6. 如何使用图片自定义和装饰您的QR码
  7. android mjpg格式,Camera常用格式MJPEG和jpeg-turbo库
  8. 国产高可用软件,双机热备与冷备的区别
  9. 熔断机制什么意思_什么是熔断机制 熔断机制是什么意思
  10. 有什么比较适合个人日常办公管理的便签软件