本文概述
- UI测试的全部内容是什么?
- 适用于Android和iOS的UI测试框架
- Calabash:移动应用程序的自动验收测试
- Calabash的工作原理是什么?
- 在Calabash上编写你的第一个测试
- Calabash如何工作?
- 如何添加自定义步骤
- Xamarin测试云
- 开始编写UI测试
一个经过良好测试的应用程序通常会经历多个测试步骤:单元测试, 集成测试, 验收测试等等。随着你的应用程序的增长, 测试的重要性越来越高, 并且测试中的自动化成为必要。
文章图片
尽管其他平台(例如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应用程序进行交互的库组成。它可以在真实设备上运行。因此, 它可以完成测试人员手动执行的操作。
【使用Calabash进行Android和iOS UI测试】GitHub上有两个不同的项目使Calabash成为可能:
- calabash-android-适用于Android
- calabash-ios-适用于iOS
在继续之前, 如果你想在阅读本文的其余部分时尝试Calabash, 请确保在计算机上安装了Ruby。你可以在此处找到详细的安装说明。
接下来, 按照上面的GitHub链接, 为你喜欢的平台安装Calabash。
在Calabash上编写你的第一个测试 在Calabash上编写测试非常容易。让我们看看针对iOS应用的简单测试的外观:
Feature: User LoginScenario: 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可能不够用, 但是仍然可以使大多数应用的编写测试变得容易得多。
推荐阅读
- C++的工作原理(了解编译原理)
- .NET开发人员的Elasticsearch教程
- 数据库设计中的错误做法(你是否犯了这些错误())
- 计算机图形学中的Python图像处理简介
- IoT开发入门(ESP8266 Arduino教程)
- 可计算性理论与复杂性导论
- uni-app 顶部配置搜索框和左右图标
- uni-app三目运算uni-app监听属性
- Springboot 2.X的RequestMapping 的映射路径怎么看不到了()