• App遍历探讨(含源代码)


    好像好久没有更新博客了,之前写的几篇博客关于自动化的框架的居多,其中好多博友向我提了好多问题,我没有回复。这里给博友道个歉~ ~ 总结几点原因如下:

      1.我一般很少上博客,看到了都是好几天之前的问题

      2.比较懒~ ~这是主要原因,以后会更改!

      3.框架都是比较老了,现在已经对自动化单元测试框架,做了更高级的封装。(报告更加优美,功能也增加了:比如错误截图,后台异常搜集,可重复多次执行,错误录屏,后台crash和anr异常·  捕捉)

      4.打算最近重新把这一套完整的东西,放在github上。

    目前从事的是APP测试,所以封装了minicap快速截图、监听器处理异常弹框(广告)、图形识别、OCR技术等公共方法与appium完美结合,关于图形识别和OCR的作用是明显的...当前这一套东西同样适应用web端。

    目前我们的所有测试结果是放在平台上的。包括功能、性能、稳定性、兼容性测试等....

    这一块,我改天专门讲讲我在封装时的一些小心得.....

    今天,我们的主题是遍历APP!!!

    进入主题,为什么要研究这个玩意?

    话说做app自动化测试或者功能测试对monkey这个玩意应该不陌生吗,在压力测试中经常跑这个然后搜集crash和anr信息。但是monkey的缺点是很明显:

    1.没有目的性,遍历效果比较差,一般很难比较系统的遍历玩app的大部分页面!!

    2.经常没事还把你wifi给断了,那么接下来的monkey是无意义的,有些app没有网就是废的~

    3.可能陷入到一种死循环中,比如A-B-C-D-C-B-A 根本出不来,这时候如果看见了,可能狂按返回键帮他跳出整个死循环...

    所以我也改造了monkey了 某种程度上让他看起来稍微智能和高效点,整个有感兴趣的博友可以留言讨论。。。

    好了,说了这么多,我们总想着如果有一种算法大致上能像人一样点完app的上所有按钮,然后在点击过程中收集一些性能信息比如耗电、cpu、上下行流量...更重要的是搜集一些crash和anr信息,对于一些比较固定且内容变化不大的app还可以进行图形对比,判断不同版本对应不同页面的截图差异!等等

    其实,早就有这个东西了像百度的测试的那个所谓的深度遍历,还有其他的各种云的遍历,但是但是,效率是相当的差,因为不支持定制和一些过滤规则,根本遍历不了几个按钮就结束或者陷入死循环...而且tm的还要钱...我是试用了下,懒得再用了!然后再testhome上看见了一个大神写的app遍历:https://testerhome.com/search?q=AppCrawler

    感觉想法和思路很好!我非常佩服,但是我下载了下来用来遍历我们的这个比较比较变态的app,效率和遍历深度很差....这里没有其他的意思(针对我的这个app),实话实说!原因呢可能有一下几点:

    1.我们的这个app广告特别的多,不时弹出个广告,让你措手不及,这个不好处理!

    2.过滤规则我可能没太理解怎么用!

    3.有死循环出现。比如在A用户的个人主页面点击进了B的个人profile然后进入C的个人profile,反正一直在profile页面遍历!

    还有一些缺点:

    1.没有脱离appium,运行脚本建立在appium的基础上

    2.速度有点慢...

    那么,我也想写个简单的遍历脚本(我希望他不断不简单),当前可能不能和这位大神的AppCrawler相比,但是也有我的一些小优点~~

    1.用的自生长的深度优先遍历算法

    在一个初始页面获取所有自定义规则的element,然后点击其中的一个element,跳转或者不跳转到另外一个page,再次获取次也么的合法element添加路径和图的邻边...一直这样递归一直到一个page

    无法获取新的element或到达设定的深度或设定的时间终止遍历!!如果不太了解可以看下深度优先遍历算法。不过我们的这个图和邻边是单向的。

    2.脱离了appium,利用appium的真正实现原理封装了针对于uiautomator2-server的方法,只要装有这个apk就行,省去了appium的安装成本和排除坑爹的appium错误的错误成本。

    3.同样支持规则引导

    4.目前自认为还可以的遍历效率和深度(对我这个app,当前还要不断增加逻辑和优化,这是我写这篇博客的主要目的!)

    5.遍历完生成思维导图和遍历截图(用jsmind)

    ....

    其他的慢慢的再加上,我只想让他遍历高效点和准确点,工程我已经放在github上,写这篇博客的目的就是想引入这么个概念,然后想让感兴趣的一些拓展或修改这个框架,不管是过滤规则还是算法

    我相信只有大家共同来想好怎么做这个工程才能做好!!!

    项目github的地址:https://github.com/zhoudaqiang/appCrawler

    最后,写的时候比较随意主要是让他能运行起来。如果大家对这个框架不太了解或者对其中的任何思想不明白可以留言加QQ详聊。希望能有人一起想好做好这个遍历工程,至少能比monkey高效点~

  • 相关阅读:
    asp.net页面刷新后样式就发生了改变
    ASP.NET MVC 入门系列教程
    javascript打开邮箱服务器
    jquery验证邮箱
    MySQL数据库的索引类型
    JS判断浏览器
    Silverlight 3 新特性
    moss 2007 添加关键字及最佳匹配
    vs2008 常用快捷键
    Microsoft Enterprise Library 5.0正式版本已经发布
  • 原文地址:https://www.cnblogs.com/hhudaqiang/p/9882501.html
Copyright © 2020-2023  润新知