51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1219|回复: 0
打印 上一主题 下一主题

iOS 测试 [Google EarlGrey] 0x00 安装及运行

[复制链接]
  • TA的每日心情
    无聊
    2024-9-19 09:07
  • 签到天数: 11 天

    连续签到: 2 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2017-8-8 10:31:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    EarlGrey简介EarlGrey 是一个面向iOS apps源码的用户界面测试框架,让使用者可以编写清楚且简洁的测试。Google 已经在在其少数iOS应用上使用此框架进行功能测试,例如YouTube,日历,Photos,翻译,Play Music等在内的Google应用。
    EarlGrey提供的主要特性如下:
    • 强大的内建同步机制:使用EarlGrey构建测试用例后,在UI交互前,程序会自动等待动画,网络请求等事件。这更有利于测试人员编写测试用例,测试人员无需将程序进行sleep或wait来等待特定的测试场景;同时也方便维护测试用例,测试人员只需用程序描述测试步骤即可。一般来说,你无需考虑同步性,因为EarlGrey会自动同步界面交互,网络请求,主Dispatch Queue以及主NSOperationQueue。在测试中会有这样测试场景,当要进入下一个UI交互时你需要等待某些特定的事件发生,为了支持这样的场景,EarlGrey提供了同步相关的APIs让用户可以控制EarlGrey的同步行为。测试人员可以通过使用此类APIs提高测试用例的稳定性
    • 可见性检测:所有用户可见元素上的交互。例如,尝试点击图片后面的按钮会导致测试立即失败。EarlGrey使用屏幕快照差异对比的方法(也叫做“screenshots diffs”)在与UI元素交互前确定其可见性。这样,你就可以确定对于EarlGrey与之交互的UI,用户可以看到并且也能与之交互。注意:进程外(比如系统产生的)的弹层或者其他对话框遮盖住UI会对这个过程产生干扰
    • 灵活的设计:用户确定元素选中,交互,断言和同步的组件在设计上都是可扩展的。点击和滑动都是通过应用级的点击点击事件来实现的,并非使用元素级的事件处理器。在每一次UI交互前,EarlGrey会判断交互的元素是否可见而不是仅仅只出现在视图中即可。EarlGrey的UI交互模拟了真实用户与应用交互的方式,可以帮你找到和修复用户在使用应用时所遇到的同样的bug。

    安装和运行先决条件为了EarlGrey能够正常运行,确保被测应用满足以下要求:
    最后确保测试目标已启用断言(例如,不用设置NS_BLOCK_ASSERTIONS)
    安装EarlGrey你可以通过两种方式添加EarlGrey到你的XCode项目中:使用CocoaPods,或者通过框架的形式。如果你想为EarlGrey贡献自己的代码,通过Github安装的EarlGrey.xcodeproj也集成了单元和功能测试。
    CocoaPods 安装官方推荐通过CocoaPods安装EarlGrey
    第一步:创建一个测试目标1 EarlGrey需要一个Test Target。由于EarlGrey修改了Test Target的Scheme和Build phases,建议创建一个独立的Test Target用来添加EarlGrey测试。如果还没有创建,那么可以在Xcode Project Navigator中选中项目,然后点击Editor > Add Target
    2 在Add Target对话框中,选中 iOS > Test > iOS Unit Testing Bundle:


    3 因为EarlGrey会使用到Schemes,所以Test Target必须有一个与之关联的Scheme。如果该Scheme是共享的会更好。如果你的Test Target没有Scheme,那么在Manage Schemes的对话框中,点击+按钮,在下拉框中选中目标。勾选Shared单选框,Container设为需要测试的应用。



    注意:如果之前创建过Scheme,你需要执行一次才能让pod install命令选中。如果在执行pod install后你的Test Target的Scheme和Build Phase没有包含这些变更,请再次运行pod install。第二步:添加EarlGrey为依赖框架1 添加完Test Target后(如上图中BullsEyeEarlGreyTests),你需要将EarlGrey添加为依赖框架。这样做,将EarlGrey作为测试依赖加入Podfile。
    2 因为EarlGrey必须嵌入被测应用中,我们需要对测试目标的Build Phases和Scheme进行一些修改。将configure_earlgrey_pods.rb文件放入执行pod install命令的目录下。你需要在post_install钩子中调用这个脚本,使用项目名称,测试目标名称和xcscheme文件名。
    如果CocoaPods版本为0.39.0,包含EarlGrey的Podfile如下:

    1. PROJECT_NAME='BullsEye'
    2. TEST_TARGET='BullsEyeEarlGreyTests'
    3. SCHEME_FILE='BullsEyeEarlGreyTests.xcscheme'

    4. xcodeproj PROJECT_NAME
    5. target TEST_TARGET, :exclusive => true do
    6.   pod 'EarlGrey'
    7. end

    8. post_install do | installer |
    9.   load('configure_earlgrey_pods.rb')
    10.   configure_for_earlgrey(installer, PORJECT_NAME, TEST_TARGET, SCHEME_FILE)
    11. end
    复制代码
    如果CocoaPods版本为 1.0.0,包含EarlGrey的Podfile如下:
    1. PROJECT_NAME='BullsEye'
    2. TEST_TARGET='BullsEyeEarlGreyTests'
    3. SCHEME_FILE='BullsEyeEarlGreyTests.xcscheme'

    4. target TEST_TARGET do
    5.   project PROJECT_NAME
    6.   inherit! :search_paths
    7.   pod 'EarlGrey'
    8. end

    9. post_install do | installer |
    10.   load('configure_earlgrey_pods.rb')
    11.   configure_for_earlgrey(installer, PORJECT_NAME, TEST_TARGET, SCHEME_FILE)
    12. end
    复制代码

    • 如果有多个Targets和Schemes,每个Target/Scheme都需要调用configure_for_earlgrey方法
    • :exclusive => true do或inherit! :search_paths标记是为了防止多次链接到Test Target引起冲突
    第三步:执行pod install命令如果pod install命令执行成功,通过点击项目目录下的workspace文件(例如BullsEye.xcworkspace)在xcode中打开项目。
    执行pod install命令如下:
    1. pod install --verbose --no-repo-update
    复制代码
    --verbose 显示安装日志,--no-repo-update不做仓库更新
    日志如下:
    1. Preparing
    2. [!] Unable to load a specification for the plugin `/Library/Ruby/Gems/2.0.0/gems/cocoapods-deintegrate-1.0.0.beta.1`

    3. Analyzing dependencies

    4. Inspecting targets to integrate
    5.   Using `ARCHS` setting to build architectures of target `Pods`: (``)
    6.   Using `ARCHS` setting to build architectures of target
    7.   `Pods-BullsEyeEarlGreyTests`: (``)

    8. Resolving dependencies of `Podfile`

    9. Comparing resolved specification to the sandbox manifest
    10.   A EarlGrey

    11. Downloading dependencies

    12. -> Installing EarlGrey (1.0.0)
    13.   > Copying EarlGrey from
    14.   `/Users/Hill/Library/Caches/CocoaPods/Pods/Release/EarlGrey/1.0.0-d2369` to
    15.   `Pods/EarlGrey`
    16.   - Running pre install hooks

    17. Generating Pods project
    18.   - Creating Pods project
    19.   - Adding source files to Pods project
    20.   - Adding frameworks to Pods project
    21.   - Adding libraries to Pods project
    22.   - Adding resources to Pods project
    23.   - Linking headers
    24.   - Installing targets
    25.     - Installing target `Pods-BullsEyeEarlGreyTests` iOS 8.4
    26.   - Running post install hooks
    27. Checking and Updating BullsEye for EarlGrey.
    28. Adding EarlGrey Framework Location as an Environment Variable
    29. EarlGrey setup complete. You can use the Test Target : BullsEyeEarlGreyTests for EarlGrey testing.
    30.     - Podfile
    31.   - Writing Xcode project file to `Pods/Pods.xcodeproj`
    32.     - Generating deterministic UUIDs
    33.   - Writing Lockfile in `Podfile.lock`
    34.   - Writing Manifest in `Pods/Manifest.lock`

    35. Integrating client project

    36. [!] Please close any current Xcode sessions and use `BullsEye.xcworkspace` for this project from now on.

    37. Integrating target `Pods-BullsEyeEarlGreyTests` (`BullsEye.xcodeproj` project)
    38.   Adding Build Phase 'Embed Pods Frameworks' to project.
    39.   Adding Build Phase 'Copy Pods Resources' to project.
    40.   Adding Build Phase 'Check Pods Manifest.lock' to project.
    41.   - Running post install hooks
    42.     - cocoapods-stats from
    43.     `/Library/Ruby/Gems/2.0.0/gems/cocoapods-stats-0.6.2/lib/cocoapods_plugin.rb`

    44. Sending stats
    45.       - EarlGrey, 1.0.0
    46.     - cocoapods-stats from
    47.     `/Library/Ruby/Gems/2.0.0/gems/cocoapods-stats-1.0.0.beta.3/lib/cocoapods_plugin.rb`

    48. Sending stats
    49.       - EarlGrey, 1.0.0
    50.   Pod installation complete! There is 1 dependency from the Podfile and 1 total
    51.   pod installed.
    复制代码
    点击workspace文件打开项目,目录结构如下,说明安装成功


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 08:11 , Processed in 0.061282 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表