Fastbot:行进中的智能 Monkey

Fastbot是一款基于模型的GUI测试工具,专为提高App的稳定性与健壮性设计。通过多机协同和智能化算法,Fastbot能高效地生成测试用例,显著提升测试覆盖率。

1. 背景

近年来,App 的玩法变得越来越多,功能也愈加复杂。App 的稳定性与健壮性也变得更加重要,因其带来的更好的用户体验能让 App 在激烈的竞争市场中脱颖而出。正因如此,针对 App 的稳定性与健壮性,相关的自动测试技术也成为软件工程和智能化测试的热门研究方向。

1.1 自动测试生成简介

自动测试生成(Automated Testing Generation)技术,也叫 AIG(Automated Input Generation)技术。传统的自动化方式,比如录制与回放(Record & Replay),依赖于测试人员编写测试脚本。同时,跟随着测试需求的改变,测试人员需要耗费一定的时间维护和调整相应的测试脚本。与录制回放的方式相比,将测试活动依赖的通用服务进行抽象,依靠自动的方式生成测试活动需要的操作,能较大程度减少测试脚本的编写与维护工作量。

目前,典型的 ATG 技术有:

  • 程序分析(Code-Based Testing);

  • 基于模型的测试生成(Model-Based-Testing);

  • 组合测试(Combinatorial Testing);

  • 基于搜索的测试生成(Search-Based-Testing), Facebook 的 Sapienz;

  • 自适应随机测试(Adaptive Random Testing);

图 1.ATG 技术简介

它们核心的逻辑聚焦在“如何生成”测试逻辑。以 MBT 为例,GUI 测试(客户端测试)过程中的某个页面,可以被定义为一个状态(State),利用该页面对应的 GUI 树,我们可以提取其中更有意义的操作,比如从 state1 通过 event3 可以到达 state3,从 state2 通过 event2 可以到达 state1。这样,测试生成的问题转化成对有向图的遍历问题。像 Monkey 之类的随机测试工具,由于缺少对于 Log 的更高层面的表述,常让开发者对其有担忧:

(1)由 Monkey 生成的测试序列不容易以文档的形式描述用例;

(2)比较难复现 Bug,缺少复现的详细步骤。

1.2 自动化测试工具

针对 App 的 ATG 技术主要包括两大类。

其一,是基于代码层面的白盒自动化测试工具。在这种情况下,我们通常需要获取 App 源码,对其分析后产生控制流图,并在此基础上通过测试生成手段产生测试用例。这种静态的白盒测试的方法虽然更加精确,但限制较多,对于无法获取源码的 App 无法有效的测试。另外,为达到较高的代码覆盖率,会不可避免的产生过多的测试用例。

其二,我们也可以基于 App 中的 GUI 信息进行黑盒测试。这种测试类型无需获取 App 源码,我们只需要在测试过程中监听手机页面的 UI 信息,完成动作注入,即可实现持续的交互型测试。本文中介绍到的 Fastbot 工具就是应用了这种方法。

当下流行的其他黑盒自动化测试工具包括:Facebook 研发的 Sapienz,它使用遗传算法和基于搜索的方式来生成测试用例;佐治亚理工大学开发的 Dynodroid,它把 App 看作一系列可执行的动作,并依次产生测试序列;以及上文提到的 Android 自带的随机测试工具 Monkey 等。此外,北大研发的 Droidbot 和 Humanoid 工具也使用了基于模型的 GUI 测试,其中 Humanoid 以用户行为为基准进行模仿,而 Droidbot 则是将页面和动作抽象为图模型,通过传统的 DFS 和 BFS 算法进行图的遍历,以达到高覆盖率。

然而,在我们的测试过程中发现,传统的图遍历算法在基于模型的 GUI 测试中效果不佳。原因在于:

  • 图中存在

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值