概述
后端技术
根据需求
手工标记Android游戏见面可点击区域构建训练数据,通过识别游戏界面可点击区域,模拟用户输入流,并识别异常状态,从而实现自动化异常检测
我们需要训练一个能够识别游戏界面的模型,并以此为测试的基础,因此使用TensorFlow。
对于自动化测试,我们使用monkeyrunner框架。monkeyrunner提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。
前端技术
采用Python常用的GUI库Tkinter进行开发。
使用环境
正常Windows环境。
对于输入输出的参数,除开界面交互的内容外,目前设计的有自由输入的地方之后对报告的编辑,我们将它作为文本处理,应当没有限制。但是由于仅存在设计中,暂时无法验证。
主要层次结构
UI组件
UI部分包含所有用户界面的定义,主要分为主界面、用户引导、测试、报告四个部分。
TitleBar | 页面框名 |
---|---|
LogoArea | 放置logo |
MainMenu | 主菜单栏,将所有功能放置在此,可以在此打开 |
GuideButton | 引导按钮,选择GuideButton弹出使用引导 |
TestButton | 测试按钮,选择TestButton弹出测试页面,实时显示目前状态和报告 |
ReportButton | 报告按钮,选择ReportButton进行对报告的相关操作 |
EditTest | 通过编辑测试用户可以自行编辑需要的测试行为或者运行自带的随机测试 |
API对接
此部分只是初步设计,可能内容不完善以及名称不规范,将在后续开发过程中补全。
名称 | 功能 |
---|---|
GetInteractArea | 接收游戏界面,需要打开游戏 |
ModReport | 接收测试内容和游戏界面,优化报告,使之更易读 |
TestPause | 测试中暂停,需要接受用户指令 |
GetDirectory | 获取文件列表,以打开或保存报告 |
GetDevice | 获取设备,需要连接需要测试的设备,手机或模拟器 |
ModTest | 接收测试代号,向测试序列添加对应的自定义测试 |
错误处理
在Exception中定义错误类型并集中错误处理
名称 | 描述 |
---|---|
DeviceException | 在连接设备时出现问题 |
InputException | 对各类输入处理遇到问题 |
BackException | 使用接口出现问题 |
LocalException | 将报告存储到本地遇到问题 |
耦合
通过封装接口,保证了程序模块间的独立性,降低了耦合。
应对变化的灵活性
最大的问题在于我们的图像是通过机器学习自动获取,而要做到对游戏界面的识别需要我们对模型进行足够多训练,这一方面我们会在开发过程中重点注意。