面向Android应用的自动化测试方法研究与实现
发布时间:2020-06-16 05:30
【摘要】:随着移动互联网的高速发展,移动客户端日渐普及,同时带来的是移动应用数量的爆炸式增长。在移动应用产品发布之前,往往需要进行大量的重复测试。为了提升测试的效率,自动化测试被广泛使用。在已有的Android应用自动化测试研究中,通过手动查找控件并编写脚本的方式对测试人员的专业性要求过高且效率低下;而在使用录制回放方式的研究中却存在多个问题,通过坐标进行录制回放无法兼容不同分辨率的设备,且无法进行控件属性断言;通过修改源代码获取用户操作的方式无法进行跨应用的测试,使得其通用性较差;在测试脚本中通过控件ID或文本属性操作控件的方式不适用在部分控件ID和属性为空的场景;且已有的研究中只能通过控件文本和图像的比对进行断言验证,形式单一且适用场景较为局限。为了解决上述问题,本文主要工作如下:(1)提出一种基于文字识别和页面布局结构的控件识别方法,用于基于录制回放的黑盒测试中识别操作对应的控件。通过坐标值和控件树中结点的布局范围进行深度优先遍历搜索控件,针对搜索过程中由于页面布局重叠导致识别正确率低的问题,设计了基于文字识别和页面布局的算法。(2)针对通过控件ID或文本属性操作控件的方式不支持其值为空的场景,采用控件路径作为控件标识,可以在不同设备中唯一地定位控件,并支持跨应用测试。在跨设备回放过程中,针对录放设备屏幕分辨率不同导致控件树结构不同的问题,提出一种滑动屏幕重新渲染GUI的方式支持控件自动适应界面。(3)针对基于对比文本及图像的断言验证形式中适用场景受限的问题,设计了多种形式的基于控件树的断言验证方案,在测试过程中自动判断应用程序的运行状态、结果和界面是否正确。包括对控件属性的正则匹配断言、关系运算断言、数据驱动断言,从控件树结构进行的排序断言和对界面图像的断言,多种断言形式结合使用满足多种测试场景。(4)基于本文提出的控件识别和断言验证方法,设计了基于控件路径的An-droid 应用自动化测试方案。为 了验证该方案的正确性和有效性,实现了 Android自动化测试工具CRTT。并使用该工具对多个Android应用进行了自动化测试,通过实验验证了控件识别方法和断言验证方案的正确性。并与现有测试方法进行了对比实验,结果表明本文提出的录制回放测试方法可以更好地支持跨设备。
【学位授予单位】:中国科学技术大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP311.53;TP316
【图文】:
Layout邋View邋(布局),Layout是ViewGroup的子类,用于控制子视图在屏幕上的逡逑位置。View及其子类一起负责Android的界面展不和事件处理。View的层次结逡逑构如图2.2所示。逡逑Activity逡逑PhoneWindow逡逑DccorView逡逑TitleActionBar逡逑ViewGroup逡逑I逡逑1邋1逡逑ViewGroup逦View逦View逡逑r逡逑View邋View邋View邋—?逦逡逑图2.2邋Android邋View层次结构图逡逑Android应用程序运行过程中,每个Activity都由活动管理器管理,它有一个逡逑活动栈Activity邋Stack,通过维护活动栈里的Activity的状态来进行管理。Activity逡逑有三种状态:运行状态,暂停状态和停止。屏幕上显示一个页面时,当前Activity逡逑放置在堆栈顶部并设置为运行状态。当页面依然显示但却已经失去了焦点时,逡逑Activity将由活动管理器压入堆栈,并进入暂停状态。举例来说,当页面显示时突逡逑然显示一个弹出框,弹出框获得焦点并进入运行状态,前一个页面处于暂停状态。逡逑当一个页面完全不可见时,此时该活动页将处于停止状态。当Activity为暂停状逡逑态或停止状态时
逡逑个Android应用的Activity的完整生命周期如图2.3所不|23]。逡逑(Activity\逡逑Started邋J逡逑onCreate()逡逑逦?邋onStart()邋<逦逡逑'S逦onResume()邋<逦邋onRestart()逡逑killed逦逦逡逑Running逡逑onPause()逦逡逑逦邋onStop()邋逦逡逑onDestroy()逡逑r邋Activity邋A逡逑y邋destroyed邋y逡逑图2.3邋Activity生命周期逡逑2.邋Service逡逑Service邋(服务)是一个与Activity类似的组件,具有完整生命周期但却没有用逡逑户界面。也就是说,Service是一个通过后台运行方式提供服务的组件,如一个在逡逑后台不断更新天气状况的天气预报程序等。在Android系统资源充足时,Service逡逑将会长时间运行,直到任务完成或者系统内存不足。Service主要通过startService逡逑和邋bindService邋启动。逡逑3.邋Content邋Provider逡逑0逡逑一个Android应用可以将数据保存在文件或SQLite数据库中,或者是其他逡逑设备中。当一个应用需要与其他应用共享数据时,需要使用Content邋Provider?组逡逑件。Content邋Provider实现了一组标准方法,可以让其他应用程序读取该Content逡逑Provider?处理的各种数据
本文编号:2715606
【学位授予单位】:中国科学技术大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP311.53;TP316
【图文】:
Layout邋View邋(布局),Layout是ViewGroup的子类,用于控制子视图在屏幕上的逡逑位置。View及其子类一起负责Android的界面展不和事件处理。View的层次结逡逑构如图2.2所示。逡逑Activity逡逑PhoneWindow逡逑DccorView逡逑TitleActionBar逡逑ViewGroup逡逑I逡逑1邋1逡逑ViewGroup逦View逦View逡逑r逡逑View邋View邋View邋—?逦逡逑图2.2邋Android邋View层次结构图逡逑Android应用程序运行过程中,每个Activity都由活动管理器管理,它有一个逡逑活动栈Activity邋Stack,通过维护活动栈里的Activity的状态来进行管理。Activity逡逑有三种状态:运行状态,暂停状态和停止。屏幕上显示一个页面时,当前Activity逡逑放置在堆栈顶部并设置为运行状态。当页面依然显示但却已经失去了焦点时,逡逑Activity将由活动管理器压入堆栈,并进入暂停状态。举例来说,当页面显示时突逡逑然显示一个弹出框,弹出框获得焦点并进入运行状态,前一个页面处于暂停状态。逡逑当一个页面完全不可见时,此时该活动页将处于停止状态。当Activity为暂停状逡逑态或停止状态时
逡逑个Android应用的Activity的完整生命周期如图2.3所不|23]。逡逑(Activity\逡逑Started邋J逡逑onCreate()逡逑逦?邋onStart()邋<逦逡逑'S逦onResume()邋<逦邋onRestart()逡逑killed逦逦逡逑Running逡逑onPause()逦逡逑逦邋onStop()邋逦逡逑onDestroy()逡逑r邋Activity邋A逡逑y邋destroyed邋y逡逑图2.3邋Activity生命周期逡逑2.邋Service逡逑Service邋(服务)是一个与Activity类似的组件,具有完整生命周期但却没有用逡逑户界面。也就是说,Service是一个通过后台运行方式提供服务的组件,如一个在逡逑后台不断更新天气状况的天气预报程序等。在Android系统资源充足时,Service逡逑将会长时间运行,直到任务完成或者系统内存不足。Service主要通过startService逡逑和邋bindService邋启动。逡逑3.邋Content邋Provider逡逑0逡逑一个Android应用可以将数据保存在文件或SQLite数据库中,或者是其他逡逑设备中。当一个应用需要与其他应用共享数据时,需要使用Content邋Provider?组逡逑件。Content邋Provider实现了一组标准方法,可以让其他应用程序读取该Content逡逑Provider?处理的各种数据
【参考文献】
相关期刊论文 前4条
1 李江;;基于hook机制的android自动化脚本录制回放框架的设计与实现[J];软件;2014年10期
2 盘俊春;;最好的OCR文字识别软件:ABBYY FineReader[J];中国信息技术教育;2014年15期
3 唐雨薇;李伯仲;;分布式自动化测试框架的研究[J];科技信息;2011年34期
4 莓荔;;清华文通推出TH-OCR 8.0、TH-OCR 2000和TH-OA3.0[J];办公自动化;1999年06期
相关硕士学位论文 前1条
1 钟书成;基于录制回放的Android GUI自动化测试工具的设计与实现[D];中国科学院大学(工程管理与信息技术学院);2015年
本文编号:2715606
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2715606.html