位置: 编程技术 - 正文

Android UI自动化测试最佳实践(安卓 自动化app)

编辑:rootadmin
一. 概述

推荐整理分享Android UI自动化测试最佳实践(安卓 自动化app),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android ui自动化的原理是什么,安卓自动化,安卓自动化,安卓ui自动化,android ui自动化测试,android ui自动化测试框架,android ui自动化SDK测试,android ui自动化的原理是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

Android系统测试和Web的测试类似,有两类自动化的方式:录制回放与基于页面元素操作的手工开发。由于录制回放在长期维护与代码重用方面存在问题,这里主要的方式还是后者,这也是Web UI自动化的主流。 在Web自动化测试中有一个比较好的实践是采用PageFactory的方式(参考文章: case;能够在不同的test case中重用页面对象。

Android应用程序的测试也极其类似,每一个Activity可以看成是一个Page Object,可以将Activity中的控件以及操作封装在Page Object之中。为了能够表述清楚测试的分层和测试方法,先展现一个实例,然后讨论对Robotium的改写与封装。

二. 实例Android UI自动化测试最佳实践(安卓 自动化app)

以移动凤巢的登陆页面为例,LoginActivity中有三个控件:用户名EditText,密码EditText,以及提交按钮Button,如下图一,当登陆成功后进入MainActivity,如下图二: 对于Test Case的组织如下图,page包中每个Activity都对应一个ActivityPage,test包中的用例可以重用不同的ActivityPage: 其中LoginActivityPage的内容如下,先不用关心@FindBy这种注解,它不是Robotium自带的,主要作用是能够在运行时将控件注入到ActivityPage之中,类中主要包括需要操作的Android控件以及动作: 对于Test case的形式如下,实际内容为对不同ActivityPage的操作,这样当页面的控件变化时只需要改动ActivityPage而不用动测试逻辑了,而且可读性更强。

三. Robotium框架改写与封装

通过以上示例可以看到为了更好地支持这种测试模式需要对Robotium进行一些封装和改动,现阶段Robotium存在以下问题:

Api不是面向对象的,用起来比较变扭,比如当你获得了一个EditText的对象,不能editText.putText(“abc”)而必须solo. enterText(editText,”abc”)不能很好地支持PageFactory模式,使用时需要写额外的代码由于UI测试存在偶尔的不稳定因素,需要有失败重试和截图机制

为了改良以上问题,需要对Robotium进行扩展和封装,业界一个比较好的实践是借用WebDriver的整套规范,对于web元素和android元素他们存在较多的共用操作: 对于Matching列是我们需要改造实现的,对于大部分Android控件,比如EditText、Button等都可以实现以上操作,如果不存在或不支持的方法则抛出UnsupportedOperationException代替。

PageFactory的实现可以参照org.openqa.selenium.support.PageFactory,主要通过反射获取Test Case中的Page元素,然后将Activity中的控件延迟注入到Page中(延迟注入的目的是为了防止在页面还未跳转的时候找不到控件,比如只有登录成功后跳转到主页才能找到“首页”按键,一开始执行的时候是没有“首页”按键的)。对于Android控件的定位可以引入如下@FindBy注解从三方面定位:控件的id、控件中出现的某段文本、控件的索引(要先指定控件的种类,比如第三个EditText控件) 接下来是重试和截图机制,可以通过改造ActivityInstrumentationTestCase2中的runTest()方法来实现,简略的实现如下: 这样只要Test Case方法上打上@Failover(times = 3,screenshot = true)注解则表明只有连续三次执行失败才认为是失败的,同时会给失败场景截图。 最后,为了减轻ActivityPage的代码编写工作我们可以通过解析Android源工程layout中的xml来自动生成代码,这样一旦UI页面变更我们只需要重新执行生成代码的程序就OK了。

Android开发问题 .上传文件的时候获得文件的MIMEcontent-type1.得到文件的MIMEcontent-type类型mime-util-2.1.3.jarslf4j-api-1.7.5.jarslf4j-nop-1.7.5.jare.g.Filef=newFile(d:\new_ailise.png);MimeUtil.r

Android UI自动化测试最佳实践 一、概述Android系统测试和Web的测试类似,有两类自动化的方式:录制回放与手动开发自动化case。由于录制回放在长期维护与代码重用方面存在问题,这

android studio 清除无用资源,缩减apk大小! 直接上图编辑配置文件,直接打包即可,已亲测,Apk7.M已减肥至5.M,减肥成功!!!buildTypes{release{minifyEnabledtrueshrinkResourcestrue}}

标签: 安卓 自动化app

本文链接地址:https://www.jiuchutong.com/biancheng/387533.html 转载请保留说明!

上一篇:Android:网络通信框架Volley简介(Google IO 2013)(Android网络通讯哪个最简单)

下一篇:Android开发问题(安卓开发常见问题)

  • 房产税的计税基础包括契税吗
  • 在外地预缴的印花税如何扣除
  • 纳税等级是指什么意思
  • 一般纳税人税费计算明细表
  • 残疾人保障金为什么是小数
  • 借条时间到了怎么续
  • 非税收入专用申报表
  • 公司出售固定资产
  • 固定资产更换零部件的入账价值
  • 外购商品对外捐赠分录
  • 高速公路通行费发票可以抵扣增值税吗
  • 补交以前年度房产税如何记账
  • 小微企业减半征收城建税
  • 餐饮公司如何挣钱
  • 什么发票可以抵税
  • 事业单位需要写自传吗
  • 增值税抵扣凭证管理
  • 养牛场增值税的税率是多?
  • 公司车辆可以一年一检吗
  • 自产产品用于集体福利按什么价格入账
  • 业务招待费在税法上的规定
  • 以前年度利润和当年净利润
  • 公司停产检修2天扣年假
  • 应收账款核销会计处理
  • 分公司注销分配表
  • 支付外汇代扣代缴增值税
  • 怎么写会计凭证
  • 小规模餐饮企业增值税申报表填写
  • 发票金额大于报销金额违法吗
  • linux chcon命令
  • info.exe
  • 营改增后房地产企业账务处理
  • 做事应该怎么做
  • php播放本地音乐
  • 有哪些常见的不可数名词英语
  • php从服务器下载文件
  • 建安企业开具增值税专用发票要求
  • yolov3原理及代码解析
  • php数组排列组合
  • css前端还是后端
  • 小满秒懂百科
  • open开放的意思吗
  • 长期待摊费用如何处理
  • 公司向法人借款需要多久还清
  • 个体户3万免税规定2019
  • sql查询服务器硬件信息
  • sql server 2005 数据库还原
  • 文化服务要交文化部门吗
  • mysql重置
  • 月末结转增值税怎么算
  • 发票审核中是什么意思
  • 行政事业单位应用方案总账,财务分析
  • 外出经营一定要开
  • 怎么打印税务登记证明备案表
  • 检测费用开票税率
  • 承兑汇票贴现怎么做会计分录
  • 财政收回项目资金请示
  • 模具报价成本核算方法
  • 哪些发票不能开专票
  • 股东借款转实收资本
  • 负数发票要给税务局吗
  • 企业包装物核算范围
  • sql Set IDENTITY_INSERT的用法
  • ssms连接mysql
  • win10防火墙打不开错误代码
  • centos怎么配置dns
  • windows unistd.h
  • redhat系统界面
  • win10一周年版本
  • unity软件设计
  • 一键备份系统和一键还原系统
  • MVC Ajax Helper或Jquery异步加载部分视图
  • unity3d应用开发
  • nodejs实战教程
  • js判断checkbox是否被选中
  • jquery的css方法
  • 国家税务总局青海省税务局
  • 浙江国地税申报网
  • 实名办税信息采集的身份证件
  • 成都交房需要交什么费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设