APP 自动化测试详解

大牛指导 QQ 群:482670586,欢迎测试从业者加入交流。

做过UI自动化测试同学,都会深深体会几个痛点:维护量大、适配量大、编写代码巨大等。基于这些问题,大家都会想到抽象封装通用常用方法,编过程序的同学都知道,如何提高编程速度,那就是有一套自己熟悉和好用的函数库,这样编程很大部分就如搭积木游戏,可以快速搭建程序。基于此我们设计了第一套封装结构模式,如下图所示:

APP 自动化测试详解(30天)

从以上结构,不难发现应用基础库比较凌乱,没有分类。如果是自己写的还记得住,要是移交给别人,就显得很糟糕了,别人不愿意去看去用。那么,急需解决的问题就是如何分类比较合理。
从基于UI测试的测试对象出发,我们测试的对象为一个个的Activity,那我们可以使用Activity来进行分类。首先每个Activity 都有自己的专有方法,如拨号界面,会有输入号码、拨号、删除号码等功能,我们将每个Activity划分为一个单独的类,类里面把这个Activity 涉及的方法都写好提供给用例调用,如下图拨号界面的属性与功能的基础分解。
APP 自动化测试详解(30天)

依据以上 Activity 封装模式,我们还需要在结构中再加入一层 Activity 函数库,那么,新的结构图如下所示:
APP 自动化测试详解(30天)

这里涉及了几个Activity的查询方法。[LG1]
方法1:从开发那取得manifest文件
方法2:使用命令查询应用的全部Activity
adb shell dumpsys package <包名>
方法3:查询当前Activity 栈顶的Activity,推荐使用此方法
adb shell dumpsys activity
找到栈顶Activity
[LG1]这几个查询方法再做下比较吧?
APP 自动化测试详解(30天)

方法4:找焦点Activity
adb shell dumpsys activity | find “mFocusedActivity”
简化搜索字符
adb shell dumpsys activity | find “mF”
以上方法,最快捷的是方法四可以马上知道当前的页面信息,最全面的是方法1与方法2,使用哪种方法需要依据实际使用情况进行选择。
之前我们介绍过,基于同种布局抽象出通用方法。我们将常用的通用方法,放在公共库中,将每个界面方法放于每个单独界面的类中。下面来看一下基本基本类图:
APP 自动化测试详解(30天)

在各种方法都固化完后,编写用例就成了搭积木游戏,可以快速的搭建需要的用例。将用例的逻辑写在用例中,用例的数据分离出来全部写在对应的Activity 类中。这样平时主要维护已有的各个Activity内方法与数据。
最后再按照功能将用例结构抽象成为一个标准框架层理论,这样大家就更容易明白与理解了。
APP 自动化测试详解(30天)

基于此框架,基本不变的层为:布局层、组件层、通用层。界面层会因为界面的变化而进行维护变化。设计时候尤其注意函数的通用性、函数的参数、各种重载函数,以及各种异常情况都需要重点考虑和规避。作为通用的方法,为了保证函数的调用不出问题,也是需要测试的,我们必须写一份用例来测试这些方法,模仿单元测试方式来检查这些通用方法的可用性、稳定性、可靠性,以此来保证在应用变化,Android版本变化时候能快速的发现哪些函数存在的不兼容现象,进行及时的修改,保证业务的正常进行。
界面层的所有方法都基于接口方式进行设计,实际的用例由这些接口方法组成。当版本变化的时候只需要重新实现接口重新变化一份,用例只需要变换一下实例化的类就可以完成切换用例。如此这样,用例的固定步骤也可以不用变化,仅仅变化每块积木里面的内容就可以。
以上内容总结为如下几点:
合理封装方法,优化工程架构

组件化

布局化

界面化

接口化

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,072评论 25 707
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,957评论 7 278
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,723评论 5 100
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • 正常小宝宝满了4个月就可以吃了,煮给小宝宝吃的话,尽量不要去加冰糖,枸杞,红枣之类的东西。直接原味就可以了,营养价...
    非正统商业之道阅读 189评论 0 0