iphone - 功能测试应该模拟 UI 事件还是检查先决条件?

标签 iphone ios automated-tests integration-testing functional-testing

我一直在努力解决这个问题,因为我注意到许多功能测试框架(例如用于 Web 的 Selenium 或用于 iOS 的 UISpec)实际上在测试时模拟 UI 事件。我在问:仅仅检查诸如此类的先决条件是否就足够了,例如,按钮的目标和选择器设置正确,然后手动触发选择器?为什么我需要模拟触摸?这有一个缺点,即您必须更多地了解您正在测试的 UI 元素(您必须知道是什么让它们正确运行),但由于我是编写测试的人,也许这无关紧要? 任何人都可以阐明这一点吗?

最佳答案

模拟触摸可用于确定由模糊或计划外的用户行为引起的崩溃 - 一个特别常见的行为是同时按下两个项目。它还允许您创建可能非常深奥的测试:例如,持续一段时间的随机用户输入,以尝试以您不希望的方式崩溃或破坏您的应用程序。您执行此操作的级别取决于您的应用及其对您的重要性。

在涉及多点触控时,您的替代方法也有一些缺点。虽然通过某种自动测试而不是模拟用户输入来触发按钮选择器相当简单,但是如果您有一个处理滑动、捏合或其他多种输入手势的应用程序会怎样?在这些情况下,所需的结果可能不像按钮的开/关那样黑白分明:您可能有许多灰色阴影和不同的输出需要验证。

模拟 UI 测试实际上有相当长的历史 - 有一个有趣的故事(嗯,对我来说很有趣)关于原始 MacPaint 以及随机 UI 输入测试如何能够帮助重现模糊或困难的崩溃:http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt

关于iphone - 功能测试应该模拟 UI 事件还是检查先决条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136438/

相关文章:

iphone - 初始化 iPhone 应用程序核心数据的最佳方法?

ios - objective-c 中 @property 的默认属性是什么?

ios - 如何在谷歌地图 objective-c 上旋转自定义标记图像

javascript - 插入 testcafe 中的 on_page_change 事件

unit-testing - 如何验证 Purescript typeclass 法则?

iphone - 如何从 objective-c 在 iPhone 上启动 map 应用程序

iphone - 第二次加载 View 时内存泄漏

java - 如何使用FEST获取某个组件

javascript - 如何通过JS下载iphone中的几个文件?

ios - AVPlayerController - 按钮无法全屏工作