自动遍历技术

目录

分层测试:

        1.单元测试;

        2.接口级别测试(包括接口自动化);

        3.核心用例,核心业务流程交给UI自动化测试;

        4.新增功能交给手工测试;

        5.自动化测试及手工测试之外的工作交给自动遍历,

1.google android 原生的monkey,app crawler.----->基于monkey

4.zhangzhao的 maxim.----->基于monkey

5.seveniruby的appcrawler.----->基于appium


根据分层测试的策略,测试中我们可以把测试活动进行划分,常见策略如下:

分层测试:

        1.单元测试;

        2.接口级别测试(包括接口自动化);

        3.核心用例,核心业务流程交给UI自动化测试;

        4.新增功能交给手工测试;

        5.自动化测试及手工测试之外的工作交给自动遍历,

           例如数量庞大的页面内容的数据展示,css效果,页面渲染等都交给自动遍历测试,这样就大大减少了自动化测试的工作维护量,又满足了对漏测的杜绝.

自动遍历工具:

1.google android 原生的monkey,app crawler.----->基于monkey

        adb shell monkey [options] 执行次数;monkey使用时支持设置配置

                -p,-s,-v,-vv,-vvv,-throttle,--pct-事件

        adb shell monkey 100.对终端中的所有包随机执行

        adb shell monkey -p com.baidu.andriod 100. -p对指定包操作

        adb shell monkey -p 包名 -s 21 79. -s指定时间种子,相同seed值,执行的操作相同

        adb shell monkey -p 包名 -vv -s 21 79 .-v日志详细程度,一共3个v,代表3个详细级别

        adb shell monkey -p 包名 --throttle 5000 200. --throttle时间延迟

        adb shell monkey -p 包名 --pct-touch 10 --pct-trackball 90. --pct-动作,指定操作百分比

                --pct-touch:触摸事件,例如点击.

                --pct-motion:动作事件,例如滑动(直线).

                --pct-trackball:轨迹事件,例如移动+点击,曲线滑动.

                --pct-majornav:主要导航事件,比如回退按键,菜单按键.

2.百度的startmonkey.----->基于monkey

3.腾讯的newmonkey.----->基于monkey

4.zhangzhao的 maxim.----->基于monkey

       下载:https://github.com/zhangzhao4444/Maxim

        使用:将下载下来的2个核心jar包push至终端内.

                1.adb push framework.jar /sdcard

                2.adb push monkey.jar /sdcard

        命令行模式运行:  

cmd 命令 : adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v

  • tv.panda.test.monkey.Monkey: monkey入口类,不要修改
  • com.panda.videoliveplatform: 被测app包名,需要修改
  • --uiautomatormix: 遍历策略

        遍历策略:

                1.Mix模式(基于事件概率的压力测试)

--uiautomatormix
直接使用底层accessibiltyserver获取界面接口 解析各控件,随机选取一个控件执行touch操作。
  同时与原monkey 其他操作按比例混合使用
  默认accessibilityserver action占比50%,其余各action分剩余的50%
  accessibilityserver action占比可配置 --pct-uiautomatormix n

                2.DFS模式

--uiautomatordfs
深度遍历算法

                3.Troy模式

--uiautomatortroy
控件选择策略按max.xpath.selector配置的高低优先级来进行深度遍历

                4.保留原始monkey

                5.总运行时长 --running-minutes 3 运行3分钟

                6.--act-whitelist-file /sdcard/awl.strings 定义白名单 --act-blacklist-file

                        其他参数与原始monkey一致

5.seveniruby的appcrawler.----->基于appium

        appcrawler工作原理:

                1.把当前app界面dump为xml结构.

                2.获取待遍历元素.

                        a.遍历范围:selectedList.

                        b.过滤黑名单blackList,小控件,不可见控件.

                        c.重排控件顺序,firstList,lastList.

                        d.跳过已点击+跳过限制点击的控件tagLimit.

                        e.根据匹配的规则执行action.

                3.循环2步操作流程.

        项目地址:https://github.com/seveniruby/AppCrawler

        环境要求:java8+appium1.8+

        使用:

                1.启动appium

                2.启动模拟器或真机

                3.配置规则开始自动遍历

                4.生成配置样板文件

                        java -jar appcrawler.jar --demo        会在当前目录下生成一个demo.yml文件

                5.参数模式启动:

                        appcrawler --capability "appPackage=包名,appActivity=启动页名"

                6.配置文件模式启动

#配置文件的方式运行
#Android测试
java -jar appcrawler.jar -c conf/demo.yaml -a xxx.apk
#iOS测试
java -jar appcrawler.jar -c conf/demo.yaml -a xxx.app

                        配置文件设置:

                                1.capability设置:与appium一致.

                                2.testcase:用于启动app后的基础测试用例,执行动作.

                                      1)完整形态:

                                        given:所有的先决条件.

                                        when:先决条件成立后的行为.

                                        then:断言集合.

                                      2)简写形态:

                                        xpath:对应when里面的xpath.

                                        action:对应when的action.

                                3.selectedList:遍历范围设定.

                                        firstList:优先被点击.

                                        lastList:最后被点击.

                                        tagLimitMax:同祖先的元素最多被点击多少次.

                                        backButton:当所有元素都被点击后默认后退控件定位.

                                        blackList:黑名单.

                                         maxDepth:遍历的最大深度层级.

                               4. triggerAction:特定条件触发执行动作的设置.

                                        需要特定次数的触发动作,通常用于处理弹窗.

                                        xpath:指定具体按钮.

                                        action:动作.

                                        times:规则的使用次数.

                        java -jar appcrawler.jar路径   -c --demo.yml  -o /traverse/

                        

                        

                

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chuntian_tester

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值