UI自动化测试神器

Espresso Test Recorder的好处

  • 直接录制与APP的所有交互操作
  • 支持在录制过程中添加断言
  • 可直接生成可回放的测试脚本,基本不需要做任何修改

原文地址: Create UI Tests with Espresso Test Recorder,以下为正文


注意: Espresso Test Recorder在AndroidStudio 2.2 Beta版本之后才有。

Espresso Test Recorder可以在不写一行代码的情况下创建UI测试。通过录制一个测试场景,你可以记录设备的交互并在APP的部分快照中添加断言来验证元素。Espresso Test Recorder会保存录制并自动生成对应的UI测试,并可直接运行来测试你的APP。

Espresso Test Recorder编写的测试基于Espresso Testing framework,API在Android Testing Support Library。Espresso API鼓励你创建基于用户操作的简洁且可信赖的UI测试。通过使用expectations、interactions和assertions而不是底层APP的Activity和Views,这样的结构防止了测试的脆弱性并优化测试运行速度。

查看下面的视频可对Espresso Test Recorder有一个快速的了解,一个新的特性在AndroidStudio2.2:

视频指导地址(Markdown不能直接添加视频地址,只能放链接): espresso-test-recorder-overview_v2

关闭你设备中的动画

在使用Espresso Test Recorder之前,确保你关闭你设备中的动画以防止出现非预期的结果。依据"安装Espresso"说中在测试UI在单个APP中中,但是记得你不需要手工设置依赖相关配制到Espresso库中,因为Test Recorder会自动帮你做,当你录制的时候。这些步骤只需要在一个已有的项目中做一次。

录制一个Espresso测试

Espresso测试由两个主要部分组成: 在View元素中的UI交互和断言。UI交互包括一个人可以用来与你APP交互的点击和输入动作。断言验证在屏幕中的可见元素的存在或内容。比如,针对Notes testing app的一个Espresso测试,包括UI交互针对点击一个按钮和写一个新的笔记,但使用断言来验证按钮的存在和笔记内容。

录制UI交互

为了开始录制一个Espresso Test Recorder,参考下面的步骤

  1. 点击 Run > Record Espresso Test
  2. Select Deployment Target 窗口中,选择你想要录制的测试的设备。如果有必要,创建一个新安卓虚拟设备。点击 OK
  3. Espresso Test Recorder会激活构建你的项目,APP一定要在Espresso Test Recorder允许你交互之前,安装且启动。在APP启动之后,Record Your Test 窗口会显示,如果你还没有跟设备交互,主面板会显示"No event recorded yet." 与你的设备开始交互来启动记录事件,比如"点击"和"输入"动作。

注意:在你开始记录交互操作之前,在设备中你也许会看到一个对话框显示"Waiting for Debugger"或"Attaching Debugger"。Espresso Test Recorder使用debugger来记录UI事件。当debugger被attach,对话框将会自动关闭,不要点击 Force Close.

录制的交互将会显示在主面板中的 Record Your Test ,像下图1显示。当你开始运行测试,Espresso测试执行这些测试按相同的次序。

图1
图1

添加断言来验证UI元素

断言通过三种主要的方式验证一个View元素的存在或内容:

  • text is : 校验选择元素的文件内容
  • exists : 屏幕中当前的View内,校验元素是存在的
  • does not exist : 当前的View内,校验元素是不存在的

给测试中添加断言,参考下面的步骤:

  1. 点击 Add Assertion 。一个 "屏幕截图"对话会显示出来,当Espresso获取到关于当前APP状态的UI结构或其它信息。一旦Espresso获取到屏幕截图,对话框将会关闭。
  2. 在当前面板 Record Your Test 窗口的右侧会显示当前屏幕显示的布局样式。选择一个需要创建断言的可见元素,在截图中点击元素或点击在窗口底部的 Edit assertion 对话框的第一个下拉菜单。被选择的View对象会在红框中高亮。
  3. Edit assertion 对话框的第二个下拉菜单中选择你想使用的断言。Espresso交会弹出针对选择元素的断言
  • 如果你选择"text is"断言,Espresso会自动插入当前选择元素中的值。你可以在 Edit assertion 编辑文本来匹配你想得到的断言结果。
  1. 点击 Save and Add Another 来创建另外一个断言或点击 Save Assertion 来关闭断言面板。

在图2中,显示了"text is"断言被创建用于验证笔记的标题是"Happy Testing!":


图2
图2

当创建一个断言时,你可以继续与你的APP交互,只要断言面板 Record Your Test 窗口仍然打开。Espresso Test Recorder将持续录制你的动作,一旦你正在编辑的断言保存后,新的交互会显示在后面。针对断方的截屏会保存当你在设备或模拟器中点击"Add Assertion"时的APP布局。

注意:Espresso Test Recorder还是一个实验性的特性,工具当前仅支持可见层断言。你可以通过添加断言来确定屏幕中的元素,屏幕截取仍显示可见模式,并且选择的元素的红色边框和无素在屏幕中的实际位置是不匹配的。

保存录制

一旦,你完成与你APP的交互并添加了断言,使用下面的步骤来保存你的记录并生成Espresso测试脚本:

  1. 点击 Complete RecordingPick a test class name for your test 窗口将会显示。
  2. Espresso Test Recorder将会对测试一个基于启动的Activity的唯一名字。如果你想改变测试名的话,使用 Test class name 。点击 Save

如果你没有给项目添加Espresso依赖, Missing Espresso dependencies 对话框会在你保存的时候显示。 点击 Yes 将会自动添加依赖至你的 build.gradle 文件中。

  1. 在Espresso Test Recorder生在文件之后,会自动打开。并且 Android Studio将会在IDE的 Project 窗口中找开测试类。

测试被保存的位置依据你的instrumentation test,也与启动的Activity包名有关。比如,测试Notes testing app保存在 src > androidTest > java > com.example.username.appname 录制测试的APP模块下。

本地运行Espresso测试

为了运行Espresso测试,使用在IDE左侧的 Project 窗口:

  1. 打开APP模块文件夹,找到你想运行的测试。测试的位置依据你的instrumentation test位置和启动Activity包名。下面的例子说明Notes testing app的测试应该保存在哪:
  • 如果你在窗口中使用Android视图,进入 java > com.example.username.appname(androidTest) .
  • 如果你在窗口中使用 Project视图, 进入 src > androidTest > java > com.example.username.appname 模板文件夹。
  1. 在测试代码上点击右键,选择 Run 'testName' .
  • 同样,你可以打开测试文件,在生成的测试类或方法中右键点击来运行测试。了解更多关于如何运行测试在测试你的APP
  1. Select Deployment Target 窗口,选择你想要运行测试的测试设备。如果有需要,创建一个新安卓虚拟设备。点击 OK

在IDE的底部 Run 窗口中,会显示测试的运行过程。Android Studio运行项目的完整构建并在 Run 窗口中打开一个测试名称的页签,如图3展示。你可以在页签中检查是否你的测试通过或失败,以及你的测试运行的多久。当测试结束后,页签将会显示 "Tests ran to completion."

图3
图3

了解更多的编写测试的运行配制,可以去创建并编辑 运行、调试 配制看"Defining a test configuration for a class or method"部分

运行Android的Espresso测试在 Firebase Test Lab

你可以在Firebase Test Lab运行的Espresso测试在数以百计设备配制中。在Test Lab中可以使用free daily quota on the Spark plan来免费运行测试。为了在Firebase Test Lab中运行测试,为你的APP创建一个Firebase项目,并按Android Studio的操作说明来运行你的测试使用Firebase Test Lab.

图4 在Run窗口的使用Firebase Test Lab测试多个设备的结果展示
图4 在Run窗口的使用Firebase Test Lab测试多个设备的结果展示

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

推荐阅读更多精彩内容