Android UI自动化框架 - base U2

UI自动化框架 /分层git


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

一、页面跳转或者异步加载延迟出现的界面,无需再单独使用sleep
二、testwatcher对于系统随机出现的可能会影响App界面的一些因素(例如Android6.0的受权弹框、电话呼入),无需再单独处理
三、全部调用封装后框架的操做,都会记录日志
四、框架自己有断言能力,若是在框架处理异常状况后还找不到指定控件,这时候会截图而且断言
五、若是须要替换框架或者框架升级,可使用最小的成原本框架层进行改动,而不须要改动用例层和Word层web


(2)  公共业务封装层 bussines 数据库

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


(3)  用例层 testcase 框架

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

 

(4) 框架层 runner总控ui

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

 

影响类:设计

设计类:重复耦合,受迭代影响-坐标写死,静态等待
环境类:环境不稳定-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;
    }
}
相关文章
相关标签/搜索