zoukankan      html  css  js  c++  java
  • Android UI自动化框架

    UI自动化框架 /分层


    (1) 基础层  baseapi- 自动化框架api 如 webdriver uiautomator,解耦,二次封装,log

    1、页面跳转或者异步加载延迟出现的界面,无需再单独使用sleep
    2、testwatcher对于系统随机出现的可能会影响App界面的一些因素(例如Android6.0的授权弹框、电话呼入),无需再单独处理
    3、所有调用封装后框架的操作,都会记录日志
    4、框架本身有断言能力,如果在框架处理异常情况后还找不到指定控件,这时候会截图并且断言
    5、如果需要替换框架或者框架升级,可以使用最小的成本来框架层进行改动,而不需要改动用例层和Word层


    (2)  公共业务封装层 bussines

    公用业务抽取,业务逻辑处理,类似关键字处理


    (3)  用例层 testcase 

    1.case编写 要求高度可读,不做过多逻辑判断。逻辑判断放bussines
    2.不能有写死的sleep。封装在底层,递增等待机制
    3.UI自动化要尽量减少ui操作
    4.公共抽取放bussines,调用bussins层封装公用的可读性强的关键字
    5.失败重跑需要保持case之间的独立性

    (4) 框架层 runner总控

    1.自定义runner
    2.失败重跑:
    junit 实现custom rule,监控程序运行异常时候catch住,再运行一次。 运行完把失败的case再广播给执行的apk运行
    testng 实现listen重跑次数。 运行完在output文件夹下运行failed的case
    失败检查:在失败重跑前,检查wifi等容易导致case失败的信息
    3.testwater异常处理
    4.report生成/email发送

    影响类:

    设计类:重复耦合,受迭代影响-坐标写死,静态等待
    环境类:环境不稳定-wifi,adb,系统弹框,数据类影响-专用数据库,无法兼容全部机型

    示例: https://github.com/seasonxie/uiautomator2.0

     单例所有base类:

    public class BaseApi {
        private static BaseApi instance;
        public synchronized static BaseApi getInstance() {
            if (instance == null) {   
                instance = new BaseApi();
            }
            return instance;
        }
    }
  • 相关阅读:
    UVALive-8077 Brick Walls 找规律
    UVALive-8079 Making a Team 排列组合公式化简
    UVALive-8072 Keeping On Track 树形dp 联通块之间缺失边的个数
    HDU-5534 Partial Tree 完全背包 设定初始选择
    HDU-2844 Coins 多重背包 物品数量二进制优化
    CodeForces-366C Dima and Salad 对01背包的理解 多个背包问题
    HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换
    UVALive-7197 Axles 动态规划 多个背包问题
    广义表(C++实现)
    稀疏矩阵及稀疏矩阵的压缩存储
  • 原文地址:https://www.cnblogs.com/season-xie/p/6602161.html
Copyright © 2011-2022 走看看