作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
亚历山大Gedevanishvili
验证专家 在工程
18 的经验

Alexander是一位多才多艺的全栈开发人员,拥有超过十年的经验. 他对移动开发充满热情.

分享

测试是任何手机应用开发过程中必不可少的一部分. 无论您是否在自动化这样的测试, 任何理智的开发者都不会认为自己的工作已经完成,除非他们已经测试了自己的应用.

一个经过良好测试的应用通常要经过多个测试步骤:单元测试、集成测试、 验收测试等等. 随着应用程序的发展 测试的重要性 测试的增加和自动化是必要的.

安卓和iOS的葫芦验收测试

而其他平台, 比如网络, 在测试机制和框架方面是否取得了重大进展, 移动领域并不落后. 在本文中, 您将学习如何使用葫芦自动化UI为您的安卓和iOS应用程序使用简单的英语说明,并使验收测试他们尽可能无痛.

什么是UI测试?

如果你一直在手动测试你的应用, 你可能会浪费大量的时间一遍又一遍地执行同样的任务. 您对代码进行了一些更改, 构建应用程序, 在设备或模拟器中运行它, 摆弄一下这个应用,看看它是否像预期的那样工作.

通过自动化UI测试,您可以自动执行相同的手动步骤. 如果你的应用有一个合适的大小, 这可以节省你大量的时间,也可以避免你的应用充斥着令人尴尬的漏洞, 尤其是那些回归的.

“这听起来很棒,”你会说,但你该如何在安卓或iOS应用中做到这一点呢?

安卓和iOS的UI测试框架

如果你读过安卓和iOS的官方文档, 他们建议你在他们的官方ide中编写和运行UI测试. 对于安卓,它是安卓 Studio,对于iOS,它是Xcode.

官方文档甚至推荐了用于测试的特定框架. 官方的安卓文档涵盖了一些关于 浓缩咖啡, 安卓 UI测试框架. 同样,苹果建议使用 XCTest 框架.

如果你要认真做UI测试, 你可能正在遵循这些建议, 这是有道理的,因为浓缩咖啡是由谷歌维护的,是安卓支持库的一部分. 浓缩咖啡很有可能会支持Google未来为安卓推出的所有新功能. iOS的XCTest框架也是如此.

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

每个深入了解测试自动化的开发人员都知道这是一个好主意. 但, 当涉及到坐下来编写这些测试时, 许多开发人员开始质疑他们是否值得花时间, 因为手动“触摸按钮”比编写自动“触摸按钮”的代码要快得多. 有时,急切地等着试用这款应用的客户和经理也没有提供帮助.

许多开发人员, 在这一点上, 决定继续开发应用程序的新功能,而不是为现有的功能编写自动化的UI测试.

当应用程序增长时, 每次更新应用程序时,手动“触摸这些按钮”变得越来越耗时.

但是,如果有一个框架使UI测试更容易呢, 并没有给你任何借口不为你的应用编写UI测试?

满足 葫芦.

葫芦:移动应用程序的自动化验收测试

大约一年前, 我开始寻找一个对非软件开发人员来说容易使用的测试框架. 就在那时,我发现了葫芦.

这个开源测试框架,由 Xamarin的 团队,适用于安卓和iOS. 它允许您编写和执行移动应用程序的自动化验收测试.

验收测试通常是在系统测试之后进行的,用于确定应用程序是否满足业务需求. 假设它在UI级别上操作, 这在我们选择的UI测试自动化框架中工作得很好.

葫芦可以与你的应用程序交互,就像浓缩咖啡或XCTest一样. 然而,让葫芦成为一个很好的选择的是它对黄瓜的支持.

Cucumber是一个可以运行用简单英语编写的自动化测试的工具(如果您愿意,您可以将其调整为使用任何其他简单语言)。. 所以要在Cucumber上编写自动化测试, 测试人员不需要知道Java, objective - c, 或者其他编程语言.

什么让葫芦滴答作响?

葫芦框架由可以与安卓和iOS应用程序交互的库组成. 它可以在真实的设备上运行. 所以它可以做测试人员手动做的事情.

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

葫芦可以与任何基于ruby的测试框架一起工作. 在本文中, 我们将介绍Cucumber——为葫芦编写测试的最流行和最方便的方法.

在继续之前, 如果你想在阅读本文的其余部分时尝试一下葫芦, 确保您的机器上安装了Ruby. 您可以找到详细的安装说明 在这里.

接下来,按照上面的GitHub链接为你喜欢的平台安装葫芦.

写你的第一次葫芦测试

在葫芦上编写测试非常容易. 让我们看看iOS应用的简单测试是怎样的:

功能:用户登录

    场景:用户登录失败
        鉴于这款应用已经发布
        然后等待“Login”按钮出现
        当我在“Username”字段中输入“tstuser”时
        我在"密码"栏里输入"qwerty
        点击“登录”
        然后我应该会看到"你输入的用户名不正确"

    场景:用户登录成功
        鉴于这款应用已经发布
        然后等待“Login”按钮出现
        当我在“用户名”字段中输入“testuser”时
        我在"密码"栏里输入"qwerty
        点击“登录”
        然后我应该看到“嘿,测试用户!"

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

您可以根据需要创建任意多的场景, 你所需要做的就是把这些步骤/说明分解成简单的英语句子. 就像你写故事一样!

有谁知道 行为驱动开发 (BDD)会发现自己对此已经很熟悉了.

葫芦是如何工作的?

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

calabash-cucumber /功能/ step_definitions / calabash_steps.rb

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

当我在“用户名”字段中输入“testuser”时
然后/ ^我进入  "([^\"]*)" 到  "([^\"]*)" 场/美元做| text_to_type, field_name |
  touch("textField标记:'#{field_name}'")
  wait_for_keyboard
  keyboard_enter_text text_to_type
  睡眠(STEP_PAUSE)
结束

这一小段Ruby代码查找一个特定的字段, 触摸它, 等待键盘出现, 中键入文本 text_to_type 变量,并在切换到下一步之前等待一会儿.

步骤的第一个单词可以是“Given”、“When”、“Then”、“And”或“但”.“你使用什么关键词并不重要. 你可以使用它们中的任何一个来使故事更清晰.

如何添加自定义步骤

如果您需要的步骤尚未在葫芦中实现,您可以自己编写它. 语法与预定义步骤中的语法完全相同.

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

然后/ ^我进入  "([^\"]*)" 到田野占位符  "([^\"]*)"$/ do |text_to_type, 占位符|
	联系(“textField占位符:#{占位符}”)
	wait_for_keyboard ()
	keyboard_enter_text text_to_type
	睡眠(STEP_PAUSE)
结束

这个步骤的定义与上一个步骤的定义大致相同, 但你是通过占位符而不是字段名访问字段的. 考虑到你的应用的外观,这对测试人员来说可能会更容易.

这对开发人员来说也很容易. 开发人员只执行一次步骤,然后测试人员在需要的时候使用它. 此外,您不需要了解很多Ruby知识就可以实现您自己的定制步骤.

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

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

Xamarin的测试云

在测试移动应用程序时还有一个挑战. 你应该在尽可能多的设备上测试它们, 因为有这么多设备和这么多操作系统版本.

这就是 Xamarin的测试云 很有帮助. 云中有大约2000个真实的设备,好消息是它支持葫芦测试.

通过避免重复工作而帮助您节省时间的葫芦测试现在可以用于在许多实际设备上测试您的应用程序.

开始编写UI测试

葫芦是否是您的应用程序需要的测试解决方案, 它带来的好处, 在为你的移动应用编写自动化UI测试时,没有任何借口. 如果你的应用严重依赖于某些设备功能,那么葫芦可能会出现问题.g.(相机),但它仍然使得为大多数应用程序编写测试变得容易得多.

了解基本知识

  • 什么是验收测试?

    验收测试确定应用程序是否满足业务需求, 通常是从用户的角度出发.

  • 黄瓜是什么??

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

聘请Toptal这方面的专家.
现在雇佣
亚历山大Gedevanishvili

亚历山大Gedevanishvili

验证专家 在工程
18 的经验

第比利斯,格鲁吉亚

2016年1月20日成为会员

作者简介

Alexander是一位多才多艺的全栈开发人员,拥有超过十年的经验. 他对移动开发充满热情.

作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

Toptal开发者

加入总冠军® 社区.