安卓通用工具设计

1 摘要
本文描述的是安卓通用工具设计,工具可以应用于安卓设备辅助测试,包括但不限于内部安卓设备,搭载安卓系统的手机。截止目前,为满足安卓产品测试需求,本工具具备设备连接、抓包、APP 安装、日志记录、文件传输、截图及录屏、adb 命令键入等功能。
本工具采用分层设计的方式进行设计,有底层封装库、中间件、UI 等层级。工具采用
Python 编码语言进行控制代码编写,底层封装库基于adb 命令,中间件基于Python ,UI 层使用QT 框架进行界面绘制。控制代码具有较强的可扩展性,便于后期的扩展开发。
本经验案例从背景描述、工具需求、设计过程、软件问题点及解决思路、经验案例总结等方面进行描述,文档后附有本工具的源码文件及Demo,可以根据需要进行查看。

2 背景描述
传输显示产品组组内安卓产品测试中存在手动提取日志繁琐、截屏录屏操作控制困难等问题。基于此,组内提出“安卓通用工具”需求。安卓通用工具需要具有设备连接、抓包、APP 安装、日志打印及导出、文件上传及下载、截屏及录屏、adb 命令键入等功能。根据以上需求的反馈,需要开发一个安卓通用工具,以减少手动的重复操作,进而提高测试效率。

3 安卓通用工具需求
在这里插入图片描述

4 安卓通用工具设计过程
在这里插入图片描述

4-1图 安卓通用工具-架构图在这里插入图片描述

功能开发流程图:

4-2图 安卓通用工具-功能开发图
在这里插入图片描述

5 安卓通用工具软件界面
在这里插入图片描述

5-1图 安卓通用工具_V1.0.0
6 安卓通用工具软件问题点及解决思路
问题一:UI工具的选择及实现
描述:一般Python上介绍的GUI工具为Tkinter及wxPython等,这类GUI工具一般需要手写代码进行界面绘制,或者需要通过绘制界面后生成Python代码的方式进代码编辑。第一种方式进行代码编辑难度值较大且存在需要重复修改的工作量。第二种方式进行界面绘制后需要转化为Python代码,中间也存在转化工作量,且生成的代码无法快速获取其内部含义,需要研读内容并进行解析。
问题解决思路:由于存在界面代码编写复杂及转换阅读困难的问题。Pyqt存在一种方式,可以在QT设计师上进行软件界面绘制,绘制完成产生的.ui文件通过导入方式,直接被Python读取,而修改完UI后可以直接进行界面化操作及验证。具体实现方式如下:
在这里插入图片描述

其中需要注意的是第三行:
在这里插入图片描述

你需要在这里填入你先前创建的文件的地址。这个文件将会被内置的函数载入:
在这里插入图片描述
在这里插入图片描述
上面这段程序创建了一个新的 Qt Gui 应用。,每个 QT 应用都可以通过命令行进行配置,所以必须传入sys.argv 参数。最后,我们创建了一个MyApp 类,这个类继承于 Qt 库并且调用了父类的初始化函数:
在这里插入图片描述
其他具体的细节查看“使用PyQt来编写第一个Python GUI程序”文档。

问题二:功能实现的逻辑冗余
描述:功能实现时,会出现很多冗余的代码,如果将所有的代码放置在一个文件下,会出现一个文件中的代码行数过多,不便于后续的维护。
问题解决思路:基于以上问题,采用现在的面向对象的设计方法。整体软件设计时采用了分层结构,见上文整体架构图。软件整体开发依据与功能开发图进行代码编写,整体文件夹结构依据功能开发图进行整理。文件夹结构见下图:
在这里插入图片描述

问题三:录屏操作在界面无变化下不能进行录屏
描述:界面显示为静态画面,使用adb shell screenrecord命令无法进行界面录制,导致录制出来的文件仅有1s的播放长度,无法满足视屏录制需求。
问题解决思路:使用其他的adb命令来对屏幕进行唤醒操作,其中adb命令中有些模拟按键可以使屏幕画面变化。如HOME 键、返回键、打开日历、改变音量等,但是前三者对于屏幕的画面获取的影响巨大,所以采用改变音量的方式进行屏幕的唤醒。音量值变化的进度条对于画面产生的影响较为不明显。

问题四:模拟按键与录屏必须同时进行
描述:问题三下的问题解决方案提供了界面无变化下不能进行录屏的解决方案,但是adb录屏和模拟按键功能需要同时进行。
问题解决思路:两个功能同时执行即并行处理,需要采用多线程的方式进行多任务处理。这两个功能使用两个进行进行同步操作。具体实现代码如下:
在这里插入图片描述

7 总结及后续工作
本经验案例从背景描述、工具需求、设计过程、软件问题点及解决思路、经验案例总结等方面进行描述。实现了安卓通用工具的开发及整体框架的搭建。全文重点叙述了问题点的解答,包括UI工具的选择及实现、功能实现的逻辑冗余、录屏操作在界面无变化下不能进行录屏、模拟按键与录屏必须同时进行等问题点的面描述及解决。
后续工作需要完成以下内容。首先,需要对软件整体结构进行优化,以适应组内提出的与安卓工具相关的需求,并完成敏捷开发过程;其次,需要优化软件整体界面设计,提供一个人机关系良好的应用软件;最后需要跟进组内需求,挖掘与安卓设备测试相关问题,整理需求开发软件,以提高测试的工作效率。
8 附件

9 参考资料

  1. ADB Usage Complete / ADB 用法大全
  2. 使用PyQt来编写第一个Python GUI程序
  3. Python 编码规范(Google)
  4. 《Python基础教程》第二版 MagnusLieHetland
  5. 《Python核心编程》第三版 Wesley Chun
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值