Ios iphoneappui自动化测试设计

Ios iphoneappui自动化测试设计,ios,automation,ui-automation,ios-ui-automation,Ios,Automation,Ui Automation,Ios Ui Automation,嗨,自动化/iOS专家 我们最近启动了一个新的iPhone应用程序项目,希望使用苹果的UIAutomation仪器自动化一些基本的验收测试。现在我们有了这项任务的基本框架。该框架简单地封装了Apple在Java中提供的底层JS函数(以提供一些调试功能),并通过Junit驱动测试。测试在iPhone模拟器中运行 所以背景是Instruments+Eclipse+Java+Junit+iPhone模拟器 在编写测试时,我发现测试受应用程序的“状态”影响很大。例如 第一次运行时,该应用程序会显示某种“

嗨,自动化/iOS专家

我们最近启动了一个新的iPhone应用程序项目,希望使用苹果的UIAutomation仪器自动化一些基本的验收测试。现在我们有了这项任务的基本框架。该框架简单地封装了Apple在Java中提供的底层JS函数(以提供一些调试功能),并通过Junit驱动测试。测试在iPhone模拟器中运行

所以背景是Instruments+Eclipse+Java+Junit+iPhone模拟器

在编写测试时,我发现测试受应用程序的“状态”影响很大。例如 第一次运行时,该应用程序会显示某种“使用条款”页面,但在iPhone模拟器重置之前,不会再显示该页面。在用户接受“使用条款”后,她将被带到一个“主页”,在那里她可以输入一些搜索条件,点击“搜索”并进入搜索结果页面。然后她可以被带到“查看详细信息”页面

TOU->主页->搜索结果->查看详细信息

请记住,这只是我真实应用程序的一个非常简化的版本

现在的问题是: 为了自动测试view detail功能,我的测试是否要完成前面的所有步骤(假设应用程序总是重新启动,没有保存任何状态)? 或者我的测试是否应该假设一些先决条件(比如“查看详细信息”测试假设我的应用程序位于“搜索结果”)

请给出你的理由。对不起,如果我的英语不是我的母语,很难理解

谢谢

Vince

“先决条件”/“已知基线”/“已知状态”是自动化的黄金。对于UI测试来说更是如此,因为它们有更多的变化,可能会导致测试失败,而这些问题与您的测试所做的工作无关

因此,从自动化的角度来看,直接进入“查看细节”测试。您的大多数自动化测试脚本将在这些类型的功能领域中。每次重置/安装时,TOU等为一次性。因此,有两种选择:

  • 首先运行一个自动脚本来清除TOU并退出,然后是所有其他处理主页、搜索等的测试,或者
  • 手动清除TOU,然后进行所有其他测试
  • 额外选项:您还可以测试每次重置时TOU不会出现超过一次,因为它不应该出现。这可能是您每次运行的第一个和第二个测试。然后运行其余的测试
  • 如果您的自动测试始终依赖于TOU的出现,那么在第一次测试之后,其他测试将失败,因为TOU直到下一个重置/测试周期才会出现。您可以在所有自动测试的开始处放置一个“处理程序”,以有条件地管理TOU页面。在这种情况下,我会选择上面的选项1。

    “先决条件”/“已知基线”/“已知状态”是自动化的黄金选择。对于UI测试来说更是如此,因为它们有更多的变化,可能会导致测试失败,而这些问题与您的测试所做的工作无关

    因此,从自动化的角度来看,直接进入“查看细节”测试。您的大多数自动化测试脚本将在这些类型的功能领域中。每次重置/安装时,TOU等为一次性。因此,有两种选择:

  • 首先运行一个自动脚本来清除TOU并退出,然后是所有其他处理主页、搜索等的测试,或者
  • 手动清除TOU,然后进行所有其他测试
  • 额外选项:您还可以测试每次重置时TOU不会出现超过一次,因为它不应该出现。这可能是您每次运行的第一个和第二个测试。然后运行其余的测试

  • 如果您的自动测试始终依赖于TOU的出现,那么在第一次测试之后,其他测试将失败,因为TOU直到下一个重置/测试周期才会出现。您可以在所有自动测试的开始处放置一个“处理程序”,以有条件地管理TOU页面。在这种情况下,我会选择上面的选项#1。

    感谢您的回复,aneroid。我已经有了清除TOU的脚本。在我看来,在所有测试中添加“TOU处理程序”并不合适,因为我认为测试应该关注它们自己的功能。对于选项#1,我担心我的“查看详细信息”测试最终可能会有太多依赖项?同意,添加一个TOU处理程序会远离测试的焦点。但是,如果您担心“查看详细信息”会有太多的依赖项,那么该测试和其他类似的测试将需要有这样的处理程序。那么您就不必担心依赖关系了。可以创建一个通用的
    manage_dependencies
    处理程序作为一个集合应用于所有测试。或者控制你的执行顺序,但这仍然会给你一个“依赖链”。谢谢你的回复,aneroid。我已经有了清除TOU的脚本。在我看来,在所有测试中添加“TOU处理程序”并不合适,因为我认为测试应该关注它们自己的功能。对于选项#1,我担心我的“查看详细信息”测试最终可能会有太多依赖项?同意,添加一个TOU处理程序会远离测试的焦点。但是,如果您担心“查看详细信息”会有太多的依赖项,那么该测试和其他类似的测试将需要有这样的处理程序。那么您就不必担心依赖关系了。可以创建一个通用的
    manage_dependencies
    处理程序作为一个集合应用于所有测试。或者控制你的执行顺序,但这仍然会给你一个“依赖链”。