iOS自动化测试:Xcode UI测试入门

如何编写iOS自动化测试? 如何使用Xcode UI测试框架通过Screen Object Pattern编写可靠且可维护的测试? 阅读本文以了解答案。

XCUITest框架简介

第一步,我们需要选择自动化框架。 在本教程中,我们将利用XCUITest Framework。 一个允许测试用户与屏幕实际交互的框架。 它由Apple开发,为用户界面和集成测试提供了强大的功能。

设置Xcode项目以进行UI测试

Xcode UI测试要求访问应用程序源代码,并且必须在计算机上安装Xcode。 首先,我们需要创建UI测试目标:

  • 打开Xcode项目
  • 文件>新建>目标
  • 选择iOS UI测试套件
  • 输入您的组织信息并选择一种编程语言(本教程中将使用Swift)

使用XCUI Test Recorder编写第一个测试

XCUI Test Recorder允许我们记录用户与屏幕的交互并在测试中使用生成的代码:

  • 导航到测试导航器
  • 选择要记录的测试功能
  • 按下UI记录器按钮
  • 在设备上执行测试

为了完成我们的测试,我们应该添加断言来进行验证,以确保预期元素显示在主屏幕上

  //预期显示的元素 
 让玩家= app.collectionViews.staticTexts [“测试”] 

  //声明该元素已显示 
  XCTAssertTrue(player.exists) 

使用辅助功能检查器检查元素

XCUI测试记录器非常适合简单的测试,但是记录器生成的代码需要修改,有时它不能为Element提供正确的定位器。 更好的方法是使用辅助功能检查器:

  • 开放辅助功能检查器
  • 单击开始检查按钮
  • 检查元素以定义定位器

当我们知道Element调试描述时,我们可以根据该值编写Locator:

 让playerBalance = app.staticTexts [“ $ 99.999”] 

获取屏幕调试描述的另一种方法是在Xcode控制台中打印可访问性层次结构:

print(app.debugDescription) 

屏幕对象模式简介

在编写用户界面和集成测试时,我们希望使用可读代码创建可维护的测试。 受用于Web应用程序测试的页面对象模式的启发,在本教程中,我们将遵循屏幕对象模式:

  • 为每个屏幕创建屏幕对象
  • 定义元素定位器
  • 实施我们将在测试中使用的屏幕测试方法

为每个屏幕创建屏幕对象后,我们需要在测试用例类中对其进行初始化:

  // MARK:屏幕对象初始化器 
 让settingsScreen = SettingsScreen() 
 让addPlayerScreen = AddPlayerScreen() 
 让homeScreen = HomeScreen() 

使用“屏幕对象模式”将使我们能够更快,更清晰,更易于遵循的代码创建新测试:

  func testAddPlayerWithDefaultBalance(){ 
  / ** 
添加具有默认余额的新播放器,并断言添加的播放器显示在主屏幕上
  * / 
  homeScreen.addPlayer() 
  addPlayerScreen.setPlayerNameWith(testPlayerName1) 
  addPlayerScreen.addPlayer() 
  XCTAssertTrue(homeScreen.isPlayerDisplayed(名称:testPlayerName1,余额:defaultPlayerBalance,货币:defaultCurrency)) 
  } 

下一步

  • 使用Fastlane工具执行测试以在CI服务器上运行
  • 生成测试报告和屏幕截图
  • 在真实设备和模拟器上并行执行测试

结论

XCUITest是功能强大的测试自动化框架,用于为本机iOS应用程序编写可靠的测试。 使用现有的Xcode Project进行设置很容易,并且不需要高级编码技能即可开始编写测试。

屏幕对象模式提高了测试代码的可读性,并使维护现有测试和创建新测试变得更加容易。 带有Application Source Code的完整Test Framework设置示例可在GitHub上获得 ,我强烈建议您进行检查以了解上下文的更多详细信息。

请继续关注更多教程和快乐测试🙂

关于作者

Maksim Akifev是一位技术熟练的质量保证工程师,在测试自动化,安全性和渗透性测试方面拥有丰富的经验,他可以帮助金融,医疗保健和网络安全等各个行业的公司构建可靠的产品。