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

  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高效点~

App遍历探讨(含源代码)的更多相关文章

  1. C#用户自定义控件(含源代码)-透明文本框

    using System; using System.Collections; using System.ComponentModel; using System.Drawing; using Sys ...

  2. 用C#来开发CAD插件,含源代码

    转自原文 用C#来开发CAD插件,含源代码 CAD插件看起来很神秘,其实一个合格码农经过几天就能快速掌握.没什么秘密,开发CAD插件和winform一样简单学几个类库用法就是(只是太多人不喜欢知识分享 ...

  3. 2018-8-9-win10-uwp-装机必备应用-含源代码

    title author date CreateTime categories win10 uwp 装机必备应用 含源代码 lindexi 2018-8-9 9:7:31 +0800 2018-8-9 ...

  4. 利用层序遍历(含空节点)和中序遍历重建二叉树 python

    给定一颗二叉树的层序遍历(不含None的形式)和中序遍历序列,利用两个序列完成对二叉树的重建. 还是通过一个例子来说明整个过程,下图所示的二叉树,层序遍历结果为[a,b,c,d,e],中序遍历结果为[ ...

  5. 数据结构系列之2-3-4树的插入、查找、删除和遍历完整版源代码实现与分析(dart语言实现)

    本文属于原创,转载请注明来源. 在上一篇博文中,详细介绍了2-3树的操作(具体地址:https://www.cnblogs.com/outerspace/p/10861488.html),那么对于更多 ...

  6. arcgis api for js入门开发系列八聚合效果(含源代码)

    上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部): 聚合效果实现的思路如下: 1.map.html引用聚合包,项目已经包含进来了的聚合文件夹: <script ...

  7. arcgis api for js入门开发系列七图层控制(含源代码)

    上一篇实现了demo的地图分屏对比模块,本篇新增图层控制模块,截图如下(源代码见文章底部): 图层控制模块实现的思路如下: 1.在地图配置文件map.config.js里面配置图层目录树节点信息,作为 ...

  8. arcgis api for js入门开发系列六地图分屏对比(含源代码)

    上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...

  9. arcgis api for js入门开发系列五地图态势标绘(含源代码)

    上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下: 本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/ ...

随机推荐

  1. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——ImageTabBar控件的使用方式

    一.          样式一 我们要实现上图中的效果,需要如下的操作: 从工具栏上的“Smobiler Components”拖动一个ImageTabBar控件到窗体界面上 修改ImageTabBa ...

  2. 第45章 工具 - Identity Server 4 中文文档(v1.0.0)

    该IdentityServerTools是为IdentityServer编写扩展代码时,你可能需要有效的内部工具的集合.要使用它,请将其注入代码,例如控制器: public MyController( ...

  3. 第7章 贡献 - Identity Server 4 中文文档(v1.0.0)

    我们对社区贡献非常开放,但您应该遵循一些指导原则,以便我们可以毫不费力地处理这个问题. 7.1 如何贡献? 最简单的方法是打开一个问题并开始讨论.然后我们可以决定是否以及如何实现功能或更改.如果您应提 ...

  4. php 爬虫框架

    发现两款不错的爬虫框架,极力推荐下: phpspider 一款优秀的PHP开发蜘蛛爬虫 官方下载地址:https://github.com/owner888/phpspider 官方开发手册:http ...

  5. [leetcode](4.21)2. 按字典序排列最小的等效字符串

    给出长度相同的两个字符串:A 和 B,其中 A[i] 和 B[i] 是一组等价字符.举个例子,如果 A = "abc" 且 B = "cde",那么就有 'a' ...

  6. charles抓包出现乱码 SSL Proxying not enabled for this host:enable in Proxy Setting,SSL locations

    1.情景:抓包的域名下 全部是unknown,右侧出现了乱码 2.查看unknown的notes里面:SSL Proxying not enabled for this host:enable in ...

  7. Android Camera2 预览功能实现

    1. 概述 最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能.网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camer ...

  8. Android音乐播放器的设计与实现

    目录 应用开发技术及开发平台介绍 应用需求分析 应用功能设计及其描述 应用UI展示 一.应用开发技术及平台介绍 ①开发技术: 本系统是采用面向对象的软件开发方法,基于Android studio开发平 ...

  9. MTK Android O1平台预置apk

    在MTK Android O1平台预置apk为可卸载时.预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to ...

  10. Java 图片爬虫,java打包jar文件

    目录 1. Java 图片爬虫,制作 .jar 文件 spider.java 制作 jar 文件 添加执行权限 1. Java 图片爬虫,制作 .jar 文件 spider.java spider.j ...