使用Calabash进行Android和iOS UI测试

本文概述

测试是任何移动应用程序开发过程的重要组成部分。无论你是否要自动执行这样的测试, 除非他们已经测试过他们的应用程序, 否则没有理智的开发人员会认为他们的工作已经完成。

一个经过良好测试的应用程序通常会经历多个测试步骤:单元测试, 集成测试, 验收测试等等。随着你的应用程序的增长, 测试的重要性越来越高, 并且测试中的自动化成为必要。

适用于Android和iOS的Calabash验收测试

尽管其他平台(例如Web)在测试机制和框架方面已取得了显着进步, 但移动领域并没有落后。在本文中, 你将学习如何使用Calabash按照简单的英语说明为Android和iOS应用程序自动化UI, 并尽可能轻松地进行验收测试。

UI测试的全部内容是什么?

如果你一直在手动测试应用程序, 则可能会浪费大量时间一次又一次地执行相同的任务。你可以对代码进行一些更改, 构建应用程序, 在设备或仿真器中运行它, 并摆弄应用程序以判断其是否按预期工作。

通过自动执行UI测试, 你可以自动执行那些相同的手动步骤。如果你的应用程序大小合适, 则可以节省大量时间, 还可以避免应用程序陷入令人尴尬的错误, 尤其是回归错误。

你说:”这听起来很棒。”但是, 如何为你的Android或iOS应用程序呢?

适用于Android和iOS的UI测试框架

如果你阅读了Android和iOS的官方文档, 他们建议你在其官方IDE中编写和运行UI测试。对于Android, 它是Android Studio, 对于iOS, 它是Xcode。

官方文档甚至推荐了特定的测试框架。 Android的官方文档涵盖了有关Espresso(Android UI测试框架)的一些主题。同样, Apple建议使用XCTest框架。

而且, 如果你打算认真进行UI测试, 则可能会遵循以下建议, 这很有意义, 因为Espresso由Google维护, 并且是Android支持存储库的一部分。 Espresso很可能会支持Google将来为Android引入的所有新功能。你可以针对iOS的XCTest框架说同样的话。

但是, 值得记住的是, 尽管自动化测试有很多好处, 但许多开发人员根本根本不编写它们。

每个深知测试自动化的开发人员都知道这是一个好主意。但是, 在坐下来编写这些测试时, 许多开发人员开始质疑是否值得花时间, 因为手动”触摸按钮”比编写”触摸该按钮”的代码要快得多。自动。有时, 客户和经理急切地想尝试该应用程序, 两者都不起作用。

那时, 许多开发人员决定最好继续开发应用程序的新功能, 而不是为现有功能编写自动UI测试。

随着应用程序的增长, 每次更新应用程序时, 手动”触摸这些按钮”变得越来越耗时。

但是, 如果有一个框架可以简化UI测试, 并且没有给你任何借口以不为你的应用编写UI测试呢?

认识Calabash。

Calabash:移动应用程序的自动验收测试

大约一年前, 我开始寻找一种测试框架, 该框架对于非软件开发人员来说将很容易使用。而且, 那是我找到Calabash的时候。

由Xamarin团队开发和维护的开源测试框架适用于Android和iOS。它使你可以编写和执行针对移动应用程序的自动验收测试。

验收测试通常是在系统测试之后进行的测试, 以确定你的应用程序是否满足业务需求。鉴于它在UI级别上运行, 因此可以很好地与我们选择的UI测试自动化框架一起使用。

Calabash可以像Espresso或XCTest一样与你的应用进行交互。但是, 使Calabash成为此处的绝佳选择的原因在于它对Cucumber的支持。

Cucumber是一种工具, 可以运行以纯英语编写的自动化测试(如果需要, 你可以将其调整为使用任何其他纯语言)。因此, 要在Cucumber上编写自动化测试, 测试人员无需了解Java, Objective-C或任何其他编程语言。

Calabash的工作原理是什么?

Calabash框架由可与Android和iOS应用程序进行交互的库组成。它可以在真实设备上运行。因此, 它可以完成测试人员手动执行的操作。

GitHub上有两个不同的项目使Calabash成为可能:

  • calabash-android-适用于Android

  • calabash-ios-适用于iOS

Calabash可以与任何基于Ruby的测试框架一起使用。在本文中, 我们将介绍Cucumber-编写最流行, 最便捷的Calabash测试方法。

在继续之前, 如果你想在阅读本文的其余部分时尝试Calabash, 请确保在计算机上安装了Ruby。你可以在此处找到详细的安装说明。

接下来, 按照上面的GitHub链接, 为你喜欢的平台安装Calabash。

在Calabash上编写你的第一个测试

在Calabash上编写测试非常容易。让我们看看针对iOS应用的简单测试的外观:

Feature: User Login

    Scenario: Unsuccessful user login
        Given the app has launched
        Then I wait for the "Login" button to appear
        When I enter "tstuser" into the "Username" field
        And I enter "qwerty" into the "Password" field
        And I touch "Login"
        Then I should see "Username you entered is incorrect"

    Scenario: Successful user login
        Given the app has launched
        Then I wait for the "Login" button to appear
        When I enter "testeruser" into the "Username" field
        And I enter "qwerty" into the "Password" field
        And I touch "Login"
        Then I should see "Hey testeruser!"

在这里, 正在使用错误的用户名和密码测试应用, 然后使用正确的用户名和密码进行测试。测试期望该应用程序在第一种情况下无法登录, 但在第二种情况下成功。

你可以根据需要创建任意多个场景, 而要做的就是将步骤/说明分解为简单的英语句子。就像你写一个故事一样!

任何了解行为驱动开发(BDD)的人都会发现自己对此很熟悉。

Calabash如何工作?

要查看测试人员正在使用的步骤背后发生的情况, 你可以在GitHub上打开项目并检查以下文件:

calabash-cucumber/features/step_definitions/calabash_steps.rb

我们来看看以下步骤的定义:

When I enter "testeruser" into the "Username" field
Then /^I enter "([^\"]*)" into the "([^\"]*)" field$/ do |text_to_type, field_name|
  touch("textField marked: '#{field_name}'")
  wait_for_keyboard
  keyboard_enter_text text_to_type
  sleep(STEP_PAUSE)
end

这个一小段Ruby代码寻找一个特定的字段, 对其进行触摸, 等待键盘出现, 从text_to_type变量中键入文本, 并稍等片刻, 然后再切换到下一步。

该步骤的第一个单词可以是”给定”, “何时”, “然后”, “与”或”但是”。使用什么关键字都没有关系。你可以使用它们中的任何一个使故事更清晰。

如何添加自定义步骤

如果你需要尚未在Calabash中实现的步骤, 则可以自己编写。语法与预定义步骤中的语法完全相同。

例如, 如果测试人员需要使用占位符而不是字段名来访问输入字段:

Then /^I enter "([^\"]*)" into the field with placeholder "([^\"]*)"$/ do |text_to_type, placeholder|
	touch("textField placeholder:'#{placeholder}'")
	wait_for_keyboard()
	keyboard_enter_text text_to_type
	sleep(STEP_PAUSE)
end

此步骤定义与上一个步骤定义基本相同, 但是你要使用占位符而不是字段名来访问该字段。鉴于你的应用外观, 这可能会使测试人员的工作变得更加轻松。

对于开发人员来说也很容易。开发人员只需执行一次该步骤, 然后测试人员就可以在需要时使用它。此外, 你不需要了解很多Ruby来实现自己的自定义步骤。

你可以在这里找到可以使用的Ruby函数:

http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber

Xamarin测试云

测试移动应用程序时还面临另一项挑战。你应该在尽可能多的设备上对其进行测试, 因为有太多的设备和那么多的OS版本。

这是Xamarin测试云有很大帮助的地方。云中大约有2, 000个真实设备, 好消息是它支持Calabash测试。

相同的Calabash测试可帮助你节省重复工作, 从而节省时间, 现在可用于在许多实际设备上测试应用程序。

开始编写UI测试

无论Calabash是你的应用程序需要的测试解决方案, 还是它带来的优点, 在为移动应用程序编写自动化UI测试时都没有任何借口。如果你的应用严重依赖某些设备功能(例如相机), 那么Calabash可能不够用, 但是仍然可以使大多数应用的编写测试变得容易得多。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?