当前位置: 首页 > article >正文

鸿蒙APP测试实战:从HDC命令到专项测试

普通APP的测试与鸿蒙APP的测试有一些共同的特征,但是也有一些区别,其中共同特征是,它们都可以通过cmd的命令提示符工具来进行app的性能测试。

其中区别主要是,对于稳定性测试的命令的区别,性能指标获取方式的命令的区别,安装的命令,卸载的命令,等等。此外,鸿蒙APP还有一个专项测试。

这篇文章就将普通APP的测试方法以及鸿蒙APP的测试的方法进行一定程度的梳理。希望能从中发现一些共通点。

这篇文章作为鸿蒙APP以及安卓APP的第一篇总结性文章,将带着以下问题进行展开:

1:什么是hdc? 什么是adb?

2:adb的shell命令可以用在鸿蒙hdc 的shell上面吗?

3:adb的性能测试的日志文件与hdc的性能测试的日志一样吗?

对于五类性能测试的方法及其log的主要分析。这五类的方法分别是: hdc稳定性测试,hdc性能测试,hdc专项测试,adb稳定性测试,adb性能测试。

4:鸿蒙的包名的格式和安卓的包名的格式一样吗?

带着以上的疑问我将写一篇相关的文章,同时,此次测试的鸿蒙官方文档的出处以及测试的心得也将列出来。

本文很多的描述都是来自 <文心快码>等AI搜索生成。

第二部分、鸿蒙APP的测试详细步骤

第一步、开启DevEco Studio

第二步、选择 “设备管理器”

第三步、在模拟器中启动该设备并打开模拟器

第四步、打开命令提示符 输入 hdc list targets

如果显示的是 127.0.0.1:5555 则说明是查询到了已经连接的所有目标设备为

本地的 127.0.0.1:5555

添加-v参数,则会打印设备详细信息

<以下是参考出处 :

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/hdc-V13>

第五步、使用pycharm运行自动化测试脚本

验证是否可以使用pycharm工具进行自动化测试的运行。

第六步、使用hdc命令进行稳定性随机测试及其日志分析

稳定性随机测试就是设置参数,并且让程序随机的启动程序,随机的点击,并且设置执行次数的方法,同时也设置了启动程序的时间间隔。

在执行完成之后,可以根据log中保留的日志情况,查看日志中的异常数据,如果含有异常数据,则提交异常数据给开发进行修复。

这种稳定性测试是随机测试,任何应用都可能拉起的,因此它并没有指定APP的名称。而后面介绍的专项测试则指定了应用的名称。

wukong exec 命令含义

  • -s 参数设置随机种子

  • -i 参数设置应用拉起间隔

  • -a 参数设置应用随机拉起测试比例

  • -t 参数设置屏幕随机touch测试比例

  • -c 参数设置执行的次数

比如命令为:

hdc shell wukong exec -s 10 -i 1000 -a 0.28 -t 0.72 -c 100

<LOG 存放路径自动显示在日志中>

<以下是参考出处 :

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/wukong-guidelines-V13 >

第七步

使用hdc命令进行性能测试 SP_Daemon及其日志分析

性能测试通过使用不同的性能测试的指标,来查看系统的性能情况,

包括FPS、CPU、GPU、RAM、Temp等等性能指标

常用命令:

hdc shell SP_daemon -N 2 -t

解释 :

-N 设置采集次数,一秒采集一次

-t 采集GPU 温度,系统芯片温度

<以下是参考出处 :

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/smartperf-guidelines-V13 > 

以上是不指定包名的,如果要指定包名,则增加 -PKG 参数 如:

SP_daemon -N 2 -PKG ohos.samples.ecg -c

<LOG存放路径没有自动显示在日志中>

  • 采集结果默认输出路径:

    /data/local/tmp/data.csv

第八步、使用hdc命令测试稳定性专项测试及其日志分析

专项测试是指定了某一个应用的名称的测试,运行后可以自动生成测试报告”汇总”。

常用命令 : 

hdc shell wukong special -C [bundlename] -p

<以下是参考出处 :

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/wukong-guidelines-V13>

  • 可以到我的个人号:atstudy-js,这里有10W+ 热情踊跃的测试小伙伴们,一起交流行业热点、测试技术各种干货,一起共享面试经验、跳槽求职各种好用的。        

  • 多行业测试学习交流群,内含直播课+实战+面试资料

    AI测试、 车载测试、自动化测试、银行、金融、游戏、AIGC.

<LOG 存放路径自动显示在日志中>

第九步、研究使用adb shell 中的命令是否可以在hdc中运行

‌dumpsys‌是Android操作系统中的一个命令行工具,并不适用于鸿蒙系统。

第十步:使用hdc 进行包名查询

<以下是参考出处 :

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/bm-tool-V13>

显示所有已安装的Bundle名称: hdc shell bm dump -a

获取app的ability 名字 hdc shell aa dump -a

<以下是参考出处 :

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/aa-tool-V13 >

第十一步:hdc如何抓取终端的日志

<以下是参考出处:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/hdc-V13>

hdc hilog> a.log

第十二步:hdc的文件传输命令

<以下是参考出处:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/hdc-V13>

hdc file send localpath remotepath   

比如 /data/local/tmp

hdc file recv remotepath localpath

第十三步:

hdc的安装 卸载命令

<以下是参考出处:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/hdc-V5 >

安装

hdc install [-r|-s] src

hdc install E:\example.hap

卸载

hdc uninstall com.example.hello

第十四步:

启动APP 和停止APP

<以下是参考出处:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/aa-tool-V5 >

  • 以下是启动app的命令:

aa start [-d <deviceId>] [-a <abilityName> -b <bundleName>]

  • 以下是停止app的命令:

aa force-stop <bundleName>

相关文章:

鸿蒙APP测试实战:从HDC命令到专项测试

普通APP的测试与鸿蒙APP的测试有一些共同的特征&#xff0c;但是也有一些区别&#xff0c;其中共同特征是&#xff0c;它们都可以通过cmd的命令提示符工具来进行app的性能测试。 其中区别主要是&#xff0c;对于稳定性测试的命令的区别&#xff0c;性能指标获取方式的命令的区…...

git删除本地分支和远程分支

删除本地分支 git branch -d 分支名删除远程分支 git push origin --delete 分支名...

MySQL用户远程访问权限设置

mysql相关指令 一. MySQL给用户添加远程访问权限1. 创建或者修改用户权限方法一&#xff1a;创建用户并授予远程访问权限方法二&#xff1a;修改现有用户的访问限制方法三&#xff1a;授予特定数据库的特定权限 2. 修改 MySQL 配置文件3. 安全最佳实践4. 测试远程连接5. 撤销权…...

在Android13上添加系统服务的好用例子

在Android13上添加一个自动的system service例子 留好&#xff0c;备用。 --- .../prebuilts/api/30.0/plat_pub_versioned.cil | 76 - .../prebuilts/api/31.0/plat_pub_versioned.cil | 94 - .../prebuilts/api/32.0/plat_pub_versioned.cil | 94 - frameworks/base/co…...

HarmonyOS-ArkUI 自定义弹窗

自定义弹窗 自定义弹窗是界面开发中最为常用的一种弹窗写法。在自定义弹窗中&#xff0c; 布局样式完全由您决定&#xff0c;非常灵活。通常会被封装成工具类&#xff0c;以使得APP中所有弹窗具备相同的设计风格。 自定义弹窗具备的能力有 打开弹窗自定义布局&#xff0c;以…...

JVM——对象模型:JVM对象的内部机制和存在方式是怎样的?

引入 在Java的编程宇宙中&#xff0c;“Everything is object”是最核心的哲学纲领。当我们写下new Book()这样简单的代码时&#xff0c;JVM正在幕后构建一个复杂而精妙的“数据实体”——对象。这个看似普通的对象&#xff0c;实则是JVM内存管理、类型系统和多态机制的基石。…...

Java求职者面试:微服务技术与源码原理深度解析

Java求职者面试&#xff1a;微服务技术与源码原理深度解析 第一轮&#xff1a;基础概念问题 1. 请解释什么是微服务架构&#xff0c;并说明其优势和挑战。 微服务架构是一种将单体应用拆分为多个小型、独立的服务的软件开发方法。每个服务都运行在自己的进程中&#xff0c;并…...

[electron]预脚本不显示内联script

script-src self 是 Content Security Policy (CSP) 中的一个指令&#xff0c;它的作用是限制加载和执行 JavaScript 脚本的来源。 具体来说&#xff1a; self 表示 当前源。也就是说&#xff0c;只有来自当前网站或者当前页面所在域名的 JavaScript 脚本才被允许执行。"…...

开疆智能Ethernet/IP转Modbus网关连接斯巴拓压力传感器配置案例

本案例是将ModbusRTU协议的压力传感器数据上传到欧姆龙PLC&#xff0c;由于PLC采用的是Ethernet/IP通讯协议&#xff0c;两者无法直接进行数据采集。故使用开疆智能研发的Ethernet转Modbus网关进行数据转换。 配置过程 首先我们开始配置Ethernet/IP主站&#xff08;如罗克韦尔…...

【Redis】Redis 的持久化策略

目录 一、RDB 定期备份 1.2 触发方式 1.2.1 手动触发 1.2.2.1 自动触发 RDB 持久化机制的场景 1.2.2.2 检查是否触发 1.2.2.3 线上运维配置 1.3 检索工具 1.4 RDB 备份实现原理 1.5 禁用 RDB 快照 1.6 RDB 优缺点分析 二、AOF 实时备份 2.1 配置文件解析 2.2 开启…...

20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决

20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决 2025/6/7 17:20 缘起&#xff1a; 1、根据RK809的DATASHEET&#xff0c;短按开机【100ms/500ms】/长按关机&#xff0c;长按关机。6s/8s/10s 我在网上找到的DATASHE…...

Asp.net Core 通过依赖注入的方式获取用户

思路&#xff1a;Web项目中&#xff0c;需要根据当前登陆的用户&#xff0c;查询当前用户所属的数据、添加并标识对象等。根据请求头Authorization 中token&#xff0c;获取Redis中存储的用户对象。 本做法需要完成 基于StackExchange.Redis 配置&#xff0c;参考&#xff1a;…...

浏览器工作原理01 [#]Chrome架构:仅仅打开了1个页面,为什么有4个进程

引用 浏览器工作原理与实践 Chrome打开一个页面需要启动多少进程&#xff1f;你可以点击Chrome浏览器右上角的“选项”菜单&#xff0c;选择“更多工具”子菜单&#xff0c;点击“任务管理器”&#xff0c;这将打开Chrome的任务管理器的窗口&#xff0c;如下图 和Windows任务管…...

智能问数Text2SQL Vanna windows场景验证

架构 Vanna 是一个开源 Python RAG&#xff08;检索增强生成&#xff09;框架&#xff0c;用于 SQL 生成和相关功能。 机制 Vanna 的工作过程分为两个简单步骤 - 在您的数据上训练 RAG“模型”&#xff0c;然后提出问题&#xff0c;这些问题将返回 SQL 查询&#xff0c;这些查…...

【VLAs篇】02:Impromptu VLA—用于驱动视觉-语言-动作模型的开放权重和开放数据

项目描述论文标题Impromptu VLA&#xff1a;用于驱动视觉-语言-动作模型的开放权重和开放数据 (Impromptu VLA: Open Weights and Open Data for Driving Vision-Language-Action Models)研究问题自动驾驶的视觉-语言-动作 (VLA) 模型在非结构化角落案例场景中表现不佳&#xf…...

[学习笔记]使用git rebase做分支差异化同步

在一个.NET 项目中&#xff0c;使用了Volo.Abp库&#xff0c;但出于某种原因&#xff0c;需要源码调试&#xff0c;因此&#xff0c;使用源码方式集成的项目做了一个分支archive-abp-source 其中引用方式变更操作的提交为&#xff1a;7de53907 后续&#xff0c;在master分支中…...

Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法

在 MyBatis 中使用 useGeneratedKeys"true" 获取新插入记录的自增 ID 值&#xff0c;可通过以下步骤实现&#xff1a; 1. 配置 Mapper XML 在插入语句的 <insert> 标签中设置&#xff1a; xml 复制 下载 运行 <insert id"insertUser" para…...

【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数

【Linux应用】Linux系统日志上报服务&#xff0c;以及thttpd的配置、发送函数 文章目录 thttpd服务安装thttpd配置thttpd服务thttpd函数日志效果和文件附录&#xff1a;开发板快速上手&#xff1a;镜像烧录、串口shell、外设挂载、WiFi配置、SSH连接、文件交互&#xff08;RADX…...

Nginx 事件驱动理解

在做埋点采集服务的过程中&#xff0c;主要依靠openresty加lua脚本来实现采集。高并发还是主要依靠nginx来实现。而其核心就是事件驱动/多路io复用&#xff08;epoll机制&#xff09;&#xff0c;不同的linux服务器都有对应的实现方式。 而epoll机制就是&#xff0c;应用启动的…...

Jmeter(四) - 如何在jmeter中创建网络测试计划

1.简介 如何创建基本的 测试计划来测试网站。您将创建五个用户&#xff0c;这些用户将请求发送到JMeter网站上的两个页面。另外&#xff0c;您将告诉用户两次运行测试。 因此&#xff0c;请求总数为&#xff08;5个用户&#xff09;x&#xff08;2个请求&#xff09;x&#xff…...

Amazon RDS on AWS Outposts:解锁本地化云数据库的混合云新体验

在混合云架构成为企业数字化转型标配的今天&#xff0c;如何在本地数据中心享受云数据库的强大能力&#xff0c;同时满足数据本地化、低延迟访问的严苛需求&#xff1f;Amazon RDS on AWS Outposts 给出了完美答案——将AWS完全托管的云数据库服务无缝延伸至您的机房&#xff0…...

2025年上海市“星光计划”第十一届职业院校技能大赛 网络安全赛项技能操作模块样题

2025年上海市“星光计划”第十一届职业院校技能大赛 网络安全赛项技能操作模块样题 &#xff08;二&#xff09;模块 A&#xff1a;安全事件响应、网络安全数据取证、应用安全、系统安全任务一&#xff1a;漏洞扫描与利用:任务二&#xff1a;Windows 操作系统渗透测试 :任务三&…...

jieba实现和用RNN实现中文分词的区别

Jieba 分词和基于 RNN 的分词在技术路线、实现机制、性能特点上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 技术路线对比 维度Jieba 分词RNN 神经网络分词范式传统 NLP&#xff08;规则 统计&#xff09;深度学习&#xff08;端到端学习&#xff09;核心依赖词典…...

android计算器代码

本次作业要求实现一个计算器应用的基础框架。以下是布局文件的核心代码&#xff1a; <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"andr…...

leetcode 386. 字典序排数 中等

给你一个整数 n &#xff0c;按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。 示例 1&#xff1a; 输入&#xff1a;n 13 输出&#xff1a;[1,10,11,12,13,2,3,4,5,6,7,8,9]示例 2&#xff1a; 输入&#xff1a;n 2…...

Modbus转ETHERNET IP网关:快速冷却系统的智能化升级密钥

现代工业自动化系统中&#xff0c;无锡耐特森Modbus转Ethernet IP网关MCN-EN3001扮演着至关重要的角色。通过这一技术&#xff0c;传统的串行通讯协议Modbus得以在更高速、更稳定的以太网环境中运行&#xff0c;为快速冷却系统等关键设施的自动化控制提供了强有力的支撑。快速冷…...

Linux——TCP和UDP

一、TCP协议 1.特点 TCP提供的是面向连接、可靠的、字节流服务。 2.编程流程 &#xff08;1&#xff09;服务器端的编程流程 ①socket() 方法创建套接字 ②bind()方法指定套接字使用的IP地址和端口。 ③listen()方法用来创建监听队列。 ④accept()方法处理客户端的连接…...

比较数据迁移后MySQL数据库和PostgreSQL数据仓库中的表

设计一个MySQL数据库和PostgreSQL数据库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较两…...

云原生技术驱动 IT 架构现代化转型:企业实践与落地策略全解

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、背景&#xff1a;IT 架构演进的战略拐点 过去十年&#xff0c;企业 IT 架构经历了从传统集中式架构到分布式架构的转型。进入云计算…...

Android Settings 数据库生成、监听与默认值配置

一、Settings 数据库生成机制​ ​传统数据库生成&#xff08;Android 6.0 前&#xff09;​​ ​路径​&#xff1a;/data/data/com.android.providers.settings/databases/settings.db​创建流程​&#xff1a; ​SQL 脚本初始化​&#xff1a;通过 sqlite 工具创建数据库文件…...