狼视··By/蜜汁炒酸奶

使用Calabash进行Android和iOS UI测试

前言

因为各种事,这篇本来属于上周的拖到了就今天,一篇关于移动端测试工具Calabash的文章,看着篇幅比较小,就接受了。本身精力不在Android和iOS开发,所以也就没按部就班的复原教程中的实例,仅当开阔视野了。

原文Android and iOS UI Testing with Calabash 作者: ALEXANDER GEDEVANISHVILI

正文

测试是任何移动应用程序开发过程中必不可少的一部分。无论你是否在自动化这些测试,没有一个明智的开发人员会认为他们的工作已经完成了,除非他们已经测试了他们的应用程序。 一个经过良好测试的应用程序通常会经历多个测试步骤:单元测试、集成测试、验收测试等等。随着你的应用程序的增长,测试的重要性和自动化测试的重要性成为了必要。 使用Calabash进行Android和iOS UI测试 尽管其他平台,如web,在测试机制和框架方面已经有了显著的进步,但移动领域并没有落后。在这篇文章中,你将学习如何使用Calabash通过简单的英语指令来自动化你的Android和iOS应用程序的UI测试,并尽可能验收测试。

什么是UI测试?

如果你一直在手动测试你的应用程序,你可能会浪费大量的时间来重复执行相同的任务。你可以对代码进行一些修改,构建应用程序,在设备或模拟器中运行它,并调整应用程序,以确定它是否符合预期。 通过自动化UI测试,你可以自动执行相同的手动步骤。如果你的应用程序体积不错,这样可以节省大量的时间,并且还可以节省你的应用程序,从而避免尴尬的错误,特别是回归错误。 “这听起来很棒,”你说,但是你如何为你的Android或iOS应用程序做这件事呢?

用于Android和iOS的UI测试框架

如果你阅读了Android和iOS的官方文档,他们建议你在他们的官方ide中编写和运行UI测试。对于安卓来说,它是Android Studio,而对于iOS,它是Xcode。 官方文档甚至还推荐了用于测试的特定框架。官方Android文档涵盖了有关Espresso的一些主题,即Android UI测试框架。同样,Apple建议使用XCTest框架。 如果你要认真对待UI测试,你可能会遵循这些建议,这是有道理的,因为Espresso是由谷歌维护的,是Android支持存储库的一部分。Espresso很有可能将支持谷歌未来为Android推出的所有新功能。对于iOS的XCTest框架,您也可以这样说。 然而,值得牢记的是,尽管自动化测试有许多好处,但许多开发人员根本不写。 每一个意识到测试自动化的开发人员都知道这是一个好主意。但是,当谈到坐下来写这些测试时,许多开发人员开始质疑是否值得他们的时间,因为“手动触碰按钮”会比编写一个自动“触碰这个按钮”的代码要快得多。有时,客户和经理们迫不及待地想要试用这款应用,也没有任何帮助。 在这一点上,许多开发人员决定继续使用应用程序的新功能,而不是为现有应用程序编写自动UI测试。 当应用程序增长时,每次更新应用程序时,手动“触摸这些按钮”变得越来越耗时。 但是如果有一个框架让UI测试变得更容易,并且没有给你任何借口不为你的应用程序编写UI测试,那又会怎样呢? 邂逅Calabash.

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

大约一年前,我开始寻找一个测试框架,这个框架对于那些不是软件开发人员的人来说很容易使用。而这是我发现Calabash的时候。 这个开源测试框架由Xamarin团队开发和维护,适用于Android和iOS。它允许您为移动应用程序编写和执行自动化的验收测试。 验收测试通常是在系统测试之后进行的,这些测试决定了您的应用是否满足业务需求。考虑到它在UI级别上运行,这可以作为我们选择的UI测试自动化框架。 Calabash可以与您的应用程序(如Espresso或XCTest)进行交互。然而,Calabash在这里是一个很好的选择更源于它是对Cucumber的支持。

What Makes Calabash Tick?

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!"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

在这里,一个应用程序正在先被错误的用户名和密码测试,然后被使用正确的用户名和密码测试。测试希望应用程序在第一个场景中失败,但在第二个场景中成功。 您可以根据需要创建尽可能多的场景,您所需要做的就是将步骤/指令分解成简单的英语句子。就像你将会写一个故事一样! 任何知道行为驱动开发(BDD)的人都已经熟悉了这一点。

Calabash如何工作?

要查看测试人员正在使用的步骤后面发生了什么,您可以在GitHub上打开该项目并检查下面的文件:

calabash-cucumber/features/step_definitions/calabash_steps.rb
1

让我们看看下面一个步骤的定义:

When I enter "testeruser" into the "Username" field
1
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
1
2
3
4
5
6

这个小的Ruby代码片段寻找一个特定的字段,触摸它,等待键盘出现,从text_to_type 变量中输入文本,然后在切换到下一个步骤之前等待一小段时间。 这个步骤的第一个词可以是 “Given,” 、 “When,”、 “Then,”、 “And,” 或者 “But.”。 你将使用什么关键字并不重要。你可以用他们中的任何一个来让故事更清晰。

如何添加自定义步骤

如果您需要在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
1
2
3
4
5
6

这个步骤定义与前一个相同,但是您使用占位符来访问字段,而不是字段名。考虑到你的应用程序的外观,这可能会让测试人员更加容易。 开发人员也很容易。开发人员正在执行该步骤,然后测试人员在需要时使用该步骤。此外,您不需要了解很多Ruby来实现自己的自定义步骤。 您可以在这里找到可以使用的Ruby函数: http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber

Xamarin测试云

在测试移动应用程序时,还有一个挑战。您应该在尽可能多的设备上测试它们,因为有那么多的设备和操作系统版本。 这是Xamarin测试云帮助很大的地方。在云中有大约2,000个真实设备,好消息是它支持Calabash测试。 同样的Calabash测试,可以帮助您节省时间,从而避免重复工作,从而可以用于在许多实际设备上测试应用程序。

开始写UI测试

Calabash是你的应用所需要的测试解决方案,它带来的好处,在为你的移动应用编写自动UI测试时,没有任何借口。 如果您的应用程序严重依赖某些设备功能(例如相机),Calabash可能会有不足,但它仍然让大多数应用程序的写测试变得更加容易。

了解基础知识

[toggle hide=“yes” title=“验收测试是什么?” color=“”]

验收测试确定您的应用程序是否满足业务需求,通常从用户的角度来看。

[/toggle]

[toggle hide=“yes” title=“Cucumber是什么?” color=“”]

Cucumber是一种可以使用简单英语编写的自动化测试的工具。它允许人们在不需要编程背景的情况下编写自动化测试。

[/toggle]

预览
Loading comments...
0 条评论

暂无数据

example
预览