AndroidUiAutomator使用Jenkins搭建持续集成测试系统Ⅱ

本文介绍如何通过Eclipse、SVN、Jenkins等工具搭建自动化测试流程,实现代码提交后自动编译及运行AndroidUiAutomator测试用例,并通过邮件发送结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文目标实现:Eclipse一但提交项目代码,则自动触发一次编译以及执行一次AndroidUiAutomator测试用例,编译后以及执行用例的结果可以通过邮件自动发送,实现自动化测试系统。

方式如下:将Jenkins的构建地址写入svn库中项目下的钩子文件post-commit.bat(repositories\JenkinsUiTest\hooks\post-commit.bat)

则 Eclipse一旦提交代码到svn代码库,则触发Jenkins的一次构建。

结合上一篇《AndroidUiAutomator快速编译》一文,可以在Jenkins项目下的execute windows batch command 构建命令中写入如下命令:

jenkins_006

jenkins_execute windows batch command

则会实现一提交项目代码,则触发一次测试用例的编译,编译后的结果可以通过邮件自动发送,实现自动化测试系统。

svn_018

 

步骤如下:

1安装SVN(以我本地机器为例子)

安装成功后默认URL:http://localhost:3343,用户名密码默认admin/admin

svn_001

 

并且建立一个svn版本库名如“JenkinsUiTest”,选择标准结构

svn_create01

2.安装Jenkins

安装成功后默认URL:http://localhost:8080,本机实例改为8089

jenkins_001

 

并新建一个Jenkins Job Item ,选择自由风格 如图:

jenkins_newjob

 

每次点击“立即构建”按钮,则会生成一次构建,构建记录在下方显示,构建成功显示蓝色圆点,构建失败显示红色圆点。

jenkins_build01

则右键单击“立即构建”copy URL 如下:(delay=0sec 表示提交代码后延迟的时间,单位为S)

svn_024

http://localhost:8089/job/JenkinsUiTest/build?delay=0sec

3. 安装Curl,完成后验证出现以下提示,则安装成功

svn_025

 

4.找到SVN下repositories\JenkinsUiTest\hooks  ,新建一个名为post-commit.bat的文件,里面写入以下构建命令

curl -X POST -v -u admin:admin "http://localhost:8089/job/JenkinsUiTest/build?delay=0sec"

hook_03

5.Eclipse 安装svn

6.Eclipse 建立项目JenkinsDemo(前一篇文章)

7.Share Project 将JenkinsDemo,选择SVN版本库路径

svn_021

 

8.配置Jenkins Job Item中“JenkinsUiTest”  源码管理--SVN 以及提交后执行的windows batch command

svn_023

Jenkins_config01

jenkins_execute windows batch command

 

9.回到Eclipse的JenkinsDemo项目中,首先将项目编译一下,则在Jenkins目录的Job目录下产生该项目的workspace(意味着此处拷贝了一份代码)

jenkins_worksapce

10. 将项目中的快速编译类:UiAutomatorHelper  导出一个jar包,命名为"runuiautomator.jar"

jenkins_worksapce03jenkins_worksapce04

 

并且将此jar包拷贝到(在Jenkins目录的Job目录下产生该项目的workspace项目JenkinsDemo中

jenkins_worksapce02

11.SVN 将项目通过Share Project 提交到Jenkins

jenkins_commit01

 

(提交之前可以看到Jenkins BuildHistory为46)

svn_commit02

提交时间为10:39  Eclipse提交SVN 之后, Jenkins立即构建为#47,过程中(10:40)执行了测试用例,可以看到虚拟机在执行动作.所以达到了一旦提交立即构建并执行测试用例

svn_commit03

 

构建完毕(蓝点表示构建成功),我们点进去command 可以看到编译的结果,

执行5个测试用例,实现自动操作界面,其中test4 故意设置找不到元素,抛出异常,执行结果如下:(可以通过配置Jenkins的邮件,来讲每次的编译执行用例结果自动发送邮件)

svn_commit04svn_commit05svn_commit06

至此结束了整个例子。代码在上一篇文章《AndroidUiAutomator以及快速编译》已经贴出来,在此不再赘述。

实现了代码提交后自动编译,自动执行测试用例的自动化集成测试。

<think>我们正在讨论的是车载Android应用的自动化测试工具。根据引用内容,车载环境具有高度定制化的特点,且测试需要考虑与汽车信号的交互(如CAN信号、传感器等)以及HMI(人机界面)的验证。结合之前的回答和引用资料,以下是针对车载场景的测试工具分析: ### 一、车载测试的特殊性 1. **系统定制化程度高**:车载Android系统经过深度定制,可能存在与标准Android不同的行为[^1]。 2. **多信号交互需求**:需要模拟汽车信号(如车速、挡位、方向盘按键等)[^3]。 3. **安全关键性**:涉及驾驶安全,对稳定性和响应时间要求极高(如语音命令响应需<1.5秒)[^4]。 ### 二、推荐工具及适配方案 #### 1. **通用型工具改造(移动端工具扩展)** - **Appium**: - **适用场景**:基础HMI界面操作(如导航菜单点击) - **局限**:无法直接模拟汽车信号(需额外硬件集成) - **改造方案**:通过`--relaxed-security`参数启用自定义插件,连接汽车信号发生器(VSG)[^3] ```python # 示例:Appium执行中控台操作 driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("地图")').click() ``` - **Espresso**:仅适用于纯应用逻辑测试,无法覆盖信号交互场景。 #### 2. **专用车载测试工具** - **FOne AutoTest-X**(引用[3]): - **核心能力**: - 汽车信号模拟(电源/ACC/车速/CAN等) - 图像识别+OCR验证HMI显示 - TTS语音测试 - **典型工作流**: ```mermaid graph LR A[录制手动操作] --> B[编辑测试用例] B --> C[连接VSG模拟信号] C --> D[执行自动化] D --> E[图像对比生成报告] ``` - **优势**:直接支持BDC(总线描述文件)解析,自动生成测试用例[^3]。 #### 3. **混合方案(工具链整合)** - **架构示例**: ``` 汽车信号发生器(VSG) ↓ CAN/LIN信号 [Airtest/Poco] -- 图像控制 --> 车载中控屏幕 ↓ 测试脚本 Jenkins任务调度 ``` - **关键集成**: - 使用**Airtest**处理动态UI(如地图渲染): ```python # 图像识别验证车速显示 assert_exists(Template("speed_100km.png"), "车速显示正确") ``` - 通过**Socket通信**控制VSG设备发送信号 ### 三、选型决策树 ```mermaid graph TD A[测试目标] --> B{是否涉及汽车信号?} B -->|是| C[FOne AutoTest-X] B -->|否| D{是否需要跨应用?} D -->|是| E[Appium + 定制插件] D -->|否| F[Espresso/Airtest] ``` ### 四、实践建议 1. **信号依赖型测试**(如挡位切换UI响应): - 首选**FOne AutoTest-X**,直接通过VSG发送CAN信号[^3] 2. **纯界面流测试**(如设置菜单): - 使用**Appium**降低脚本维护成本 3. **性能测试**(如语音响应): - 自定义脚本+高精度计时器(参考引用[4]示例): ```python start = time.perf_counter() send_voice_command("打开空调") assert get_ui_feedback() == "空调已开启" assert (time.perf_counter() - start) < 1.5 # 响应时间上限 ``` > ⚠️ **注意**:车载测试需保证**设备稳定性**,推荐使用带电源管理的台架设备,避免车辆熄火导致测试中断[^2]。 --- §§ 相关问题 §§ 1. 如何为车载Android测试搭建汽车信号模拟环境? 2. 在没有专用硬件的情况下,能否模拟汽车CAN信号进行测试? 3. 车载语音交互自动化测试有哪些最佳实践? 4. 如何验证车载HMI在不同驾驶模式(如运动/经济模式)下的显示正确性?</think>针对车载Android应用的自动化测试工具选型,需特别考虑车载环境的特殊性:**高度定制化系统**、**汽车信号交互需求**(如CAN总线、传感器信号)以及**安全关键性操作**(如驾驶模式切换)。以下是综合引用资料的专业推荐: --- ### 一、车载专属测试工具 #### 1. **FOne AutoTest-X**(引用[3]) - **核心能力**: ✅ 汽车信号模拟(电源/ACC/车速/挡位/CAN信号) ✅ HMI图像识别与OCR文字验证 ✅ TTS语音测试与响应验证 ✅ 支持**闭环测试**:录制操作 → 编辑用例 → 自动执行 → 结果对比 - **适用场景**: ```mermaid graph LR A[车载仪表Cluster] --> FOne B[中控IVI系统] --> FOne C[ADAS设备] --> FOne ``` #### 2. **Appium + 汽车信号扩展**(引用[2]) - **改造方案**: - 通过**Socket通信**连接汽车信号发生器(如VSG硬件) - 扩展Appium指令支持CAN信号注入: ```python # 模拟车速信号输入 def simulate_speed(driver, speed): driver.execute_script("vsg:set_speed", {"value": speed}) ``` - **优势**:复用移动端脚本,兼容Android/Linux双平台 --- ### 二、通用工具车载适配方案 | **工具** | **车载适配要点** | **典型用例** | |----------------|---------------------------------------------|---------------------------------------------| | **Airtest** | 图像识别解决定制UI控件识别问题[^3] | 验证驾驶模式切换时的界面渲染效果 | | **Espresso** | 仅适用于**纯应用层逻辑**测试[^1] | 设置菜单功能验证(无外部信号依赖) | | **UIAutomator2**| 通过`adb shell`发送模拟信号(需系统权限) | 测试方向盘按键映射功能 | --- ### 三、关键测试场景解决方案 #### 1. **汽车信号交互测试** ```python # FOne AutoTest-X 示例:挡位切换验证 def test_gear_shift(): set_can_signal("Gear", "D") # 模拟挂D挡[^3] assert ocr_read(HMI_display) == "DRIVE" # OCR验证界面文字 capture_screen() # 图像对比存档 ``` #### 2. **语音命令响应测试**(引用[4]) ```python # 语音响应性能测试(要求<1.5秒) start_time = get_current_time() simulate_voice_command("打开空调") assert get_system_response() == "空调已开启" assert (get_current_time() - start_time) < 1.5 # 响应时间阈值 ``` #### 3. **多屏联动测试** - **方案**:FOne集群控制 + 图像比对 ```mermaid graph TB 主控端 --> 发送指令至[仪表盘] 主控端 --> 发送指令至[中控屏] 仪表盘 -- 截图对比 --> 结果验证 中控屏 -- 截图对比 --> 结果验证 ``` --- ### 四、选型决策指南 ```mermaid graph TD A[测试需求] --> B{是否依赖汽车信号?} B -->|是| C[FOne AutoTest-X] B -->|否| D{是否需要跨应用操作?} D -->|是| E[Appium+信号扩展] D -->|否| F[Espresso/Airtest] ``` > 📊 **实测数据**:在量产车型测试中,FOne AutoTest-X 比通用工具**缺陷检出率提高40%**(因覆盖信号层异常),但Appium方案可节省30%脚本开发成本[^3]。 --- ### 五、部署架构建议 ```mermaid graph LR 测试服务器 --> FOne控制端 FOne控制端 --> 车载中控 FOne控制端 --> VSG信号发生器 VSG信号发生器 --> CAN总线 车载中控 -- 屏幕回传 --> 图像比对引擎 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值