Android车载系统app性能自动化测试规划

同Android车载系统性能自动化测试规划,系统内app性能归属于android车载系统性能的重要组成部分,不同于android系统的四部分,app增加一项流畅度的测试,从以下五部分进行覆盖:

1、APP启动时间

2、APP的CPU占有率

3、APP的RAM占有率

4、APP的稳定性

5、APP的帧率,流畅度

说明:

1、APP启动时间:同样区分为冷启动、热启动

        冷启动:首次启动app,从点击开始到进入APP界面可正常操作的时间,即为app冷启动时间

        热启动:非首次启动APP,从点击开始到进入app界面可正常操作的时间,即为app热启动时间

2、app的CPU占有率:区分在各不同场景下的CPU负荷占有率

        空载:进入app后,静置无任何操作场景下,抓取1h的cpu占有率数据,并描绘曲线,表现无较大波动,曲线相对平稳

        满载:app内,monkey自动化测试或app内特定操作(如:TAB页连续切换、Switch开关连续切换、连续上下曲等操作),可视具体app内业务添加不同的场景

3、app的RAM占有率:同CPU占有率,抓取各场景下的RAM占有率数据

        测试场景同CPU占有率

4、app的稳定性:即长时间保持在某一个状态场景下,app的稳定性

        场景1:打开app后,静置24H

        场景2:打开app后,对app执行应用内monkey自动化测试,持续24H

        场景3:打开app后,对app内特定操作(如:TAB页切换、switch开关切换),连续执行24H

        场景4:循环Start/Stop app,持续24H

        场景5:循环Start/Pause app,持续24H

5、app的帧率:即未app内操作页面的流畅性测试

        随机抓取app的gfxinfo数据,取100或1000次数据,计算出丢帧率,大于5%即为存在app卡顿现象

### 使用 uiautomator2 编写车载自动化测试脚本 #### 创建环境准备 为了使用 `uiautomator2` 进行车载系统自动化测试,首先需要设置好开发环境。这包括安装必要的软件包以及配置连接至目标设备的方式。 确保已安装 Python 环境,并通过 pip 安装最新版本的 `uiautomator2` 库[^3]: ```bash pip install -U uiautomator2 ``` #### 初始化设备连接 初始化与待测车辆内置 Android 设备之间的 USB 或 Wi-Fi 连接。假设已经成功建立了 ADB (Android Debug Bridge) 连接,则可以通过如下命令激活 `uiautomator2`: ```python import uiautomator2 as u2 d = u2.connect() # 默认连接第一个可用设备 print(d.info) ``` 这段代码会打印出当前连接设备的信息,确认是否正确连上了车载终端[^1]。 #### 控制 UI 组件交互 利用所提供的五个核心类之一——`UiObject`, 可以方便地找到并操控界面上的对象: ```python # 查找指定文本按钮并点击 button = d(text="Start Navigation") if button.exists: button.click() else: print("Button not found") # 输入目的地地址 search_box = d(resourceId="com.example.carapp:id/searchBox") if search_box.exists: search_box.set_text("Beijing, China") ``` 这里展示了如何寻找特定的文字标签 "Start Navigation" 来触发导航功能,同时也示范了怎样向搜索框内输入文字内容。 #### 处理滚动列表项 当面对可滚动的内容区域时,比如地图上的地点建议列表,可以借助 `UiScrollable` 类来进行上下翻页直到找到所需选项为止: ```python from time import sleep scroll_view = d(scrollable=True) def find_and_click_item(target_text): while True: items = scroll_view.child_by_text(target_text=target_text) if items.exists: items.click() break else: try: scroll_view.scroll(steps=10) sleep(1) # 加入适当延时防止过快滚动错过目标 except Exception as e: raise ValueError(f"Failed to locate '{target_text}' after scrolling") from e find_and_click_item('Tiananmen Square') ``` 此函数尝试在滚动视图中查找名为 'Tiananmen Square' 的位置条目,并对其进行点击操作。如果未能立即发现该元素,则继续向下滚动直至匹配成功或抛出异常终止循环。 #### 执行复杂场景模拟 最后,在某些情况下可能还需要模拟更复杂的用户行为序列,例如切换应用程序、调整系统设置等动作。这些都可以依靠调用相应的 API 方法完成: ```python # 切换回主屏幕 d.press_home() # 开启蓝牙开关 settings_app = d.app_start("com.android.settings") bluetooth_toggle = settings_app.xpath('//android.widget.Switch[@text="ON"]|//android.widget.Switch[@text="OFF"]').get_one(timeout=5.0) current_state = bluetooth_toggle.get_text().strip().upper() desired_state = "ON" if current_state != desired_state: bluetooth_toggle.click() sleep(2) # 等待状态改变生效 assert bluetooth_toggle.get_text().strip().upper() == desired_state, f"Bluetooth should be {desired_state}" ``` 上述片段实现了打开设置应用并将蓝牙开启的功能验证逻辑。注意实际执行过程中应当加入更多的错误处理机制来提高稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jamelee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值