AppCrawler学习与使用

AppCrawler简介

AppCrawler是一个国产的Android UI自动化测试工具(也可以测IOS),有较为详细的说明文档和社区支持,且目前仍然在更新。支持默认遍历测试和配置遍历测试。

AppCrawler环境搭建及运行

需要的工具:Appium, Android SDK, java,  appcrawler.jar
默认运行:
     命令行进入appcrawler.jar所在文件夹,
     输入java –jar appcrawler.jar –a osc.apk
带配置文件:
     输入java –jar appcrawler.jar –c conf/test.yml –a osc.apk
也可以在配置文件中指定测试apk,appium,超时时间,断言,需要访问的包等:
     输入java –jar appcrawler.jar –c conf/test.yml -p android
     或java –jar appcrawler.jar –c conf/test.yml -p ios

AppCrawler原码分析

使用Scala编程语言(类似java,运行在JVM上)

AppCrawler.scala是程序入口,负责:
1.  解析命令行中的命令(代码直接写在里面了,感觉如果分一个类出来会更清晰)
2.  解析配置文件(还是直接写在类里面,代码很多)
3.  设定测试app和设定appium的端口
4.  解析文件路径(如配置文件和app的路径),发现可以支持“http”, “ftp”, “https”, “file”,即可以测试非本地app

AppiumClient.scala负责与appium交互:
1.  监听appium进程的信息(执行成功,执行失败,停止等),从appium获得包名和activity
2.  通过xpath找到组件,对重名的id只使用第一个。每隔5秒找一次,找10次后如果还找不到,则放弃
3.  对组件的操作(如:滑动,点击,长按等)进行定义,动作是随机取的(类似monkey,方法名也叫monkey),位置信息用的是通过xpath找到的x,y坐标
4.  对每次操作之后的界面截屏(如果界面改变的话)
5.  获取页面结构(最多3次)解析xpath的时候拿到一个节点树,对树中所有节点遍历,具体实现在TreeNode.scala和Tree(应该是某库函数)

控件点击:一次还是多次?
1.  “定义url是遍历的关键. 这是一门艺术”——注释原文
2.  URIElement.scala类负责组件的uri定义(如:xueqiu/xxxActivity )
3.  根据注释:
        uri用来代表唯一的控件, 每个特定的命名控件只被点击一次. 所以这个element的构造决定了控件是否可被点击多次
        比如某个输入框被命名为url=xueqiu id=input, 那么就只能被点击一次
        如果url修改为url=xueqiu/xxxActivity id=input 就可以被点击多次

URIElementStore.scala负责记录控件是否被点击
1.  使用枚举类型, Clicked表示已遍历,Skiped = Value表示跳过
2.  使用elementStore(Map类型)存储被点击的组件列表。联系URIElement.scala,如果组件url=xueqiu,key只有1个,所以只能点一次。如果组件url=xueqiu/xxxActivity,由于可能是不同Activity中的,所以可以点击多次

测试OSChina


工具问题分析

1.  测试速度可能比较慢,会对重复的界面进行点击
2.  对比三次测试,一方面是在相似的组件中可能漏掉比较重要的组件,另一方面是为了追求测试覆盖,重复点击了相似的界面组件。两者不能很好地平衡
3.  配置文件有一定的局限性,有时不能很好地表达测试者的意图
4.  不能自动输入文本信息


写在最后

AppCrawler最新的版本2.1.1即将推出,将要实现的新功能:
      自动化测试web
      自动化测试app游戏

访问https://github.com/seveniruby/AppCrawler获得详细信息


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值