InstrumentDriver,对iOS自动化软件测试说 Yes!

发表于:2012-6-26 13:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ziyu    来源:TaoBao QA Team

  InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例

  研究过iOS自动化测试的同学肯定对 instrument UI Automation 有所耳闻,或者已经使用它进行自动化测试实践。iOS 4.0 开始,苹果官方提供了 UI Automation 以支持应用的UI自动化测试。不过4.0版本并不支持录制功能,只能根据提供的API文档编写 javascript 测试脚本,instrument 驱动脚本在应用上模拟用户行为。

  让人兴奋的是,5.0开始,UI Automation 支持录制和回放了。用户在应用上的操作过程被记录下来并生成对应的脚本可以进行回放。虽然录制的脚本回放很不稳定,健壮性不强,录制后需要进行一些简单调整然后加入自己的校验逻辑,但已经很大程度上方便了用例的编写。

  针对 instrument 录制的脚本回放不稳定,无提供验证框架及异常处理,我们编写了公共 javascript 类库,对 instrument 原型进行了扩展,加入了统一的验证方法,异常处理,这样编写脚本更加方便,用例也更健壮了。

  自动化测试不是简单的录制回放,脚本运行通过就可以了,而是一整套的流程。instrument 支持批量运行 trace 文件中导入的 js 脚本,也支持命令行运行单个脚本,但是这并不能建立一个比较完善的回归体系,从数据准备,到用例编写、调试、维护,回归,运行结果的收集,到测试报表的生成,结果的分析等。针对这些缺失,我们只能从中想出办法补充实现这些功能。比如编写shell遍历目录挨个运行用例,开发日志转换的工具用于解析原始测试结果生成所需格式的文件等。由于 instrument 中 js  脚本无法读取外部文件或者进行数据库操作,这也让数据驱动和数据准备无从谈起。

  在内部使用 instrument UI Automation 进行自动化测试的过程中有很多反馈。比较强烈的问题是:录制的脚本如同鸡肋,非常冗余,可读性差(脚本自描述性不好),难以维护,需要进行较大改动才能运行起来;无法单步调试脚本,只能通过打日志的方式查看变量的值;js编写脚本也比较费力,经常出现语法错误找不到错误位置的情况。这大大增加了自动化测试的成本,减低了同学们的使用积极性。

  自动化测试是好东西,实施好了,能极大减轻测试人员的重复劳动,节省时间用于关注更深层次的问题,提高工作效率与质量,更好的保障产品的质量。

  虽然过程是曲折的,但前途是光明的。为了从根本上避免上述使用过程中遇到的问题,我们开始想办法脱离 js 编写脚本的方式,通过编写java测试用例,来避免脚本无法单步调试、查看变量值,无自动语法检查、代码智能感知等极大影响自动化测试体验的弊端。java强大的文件读写,数据库操作也让数据驱动和数据准备的实现成为可能。加上java能与丰富的外部工具进行方便的集成,这更坚定了我们采用java实现的决心。

  由于iOS系统本身的封闭性,给自动化测试带来了诸多挑战,要么在应用中注入测试代码进行自动化测试(eg:我们的 AppFramework),要么使用官方的 instrument。两种方式各有利弊,怎样在这之中寻求一种更好的方式呢?通过调研发现 instrument 提供的一个在脚本中能够调用外部shell的“漏洞”,让我们想法的实现成为可能。基于此,有了 InstrumentDriver 的实现。

  InstrumentDriver 整体框架图:

图1 InstrumentDriver 整体框架图

  Server/Client 示意图:

图2 Server/Client 通信示意图

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号