iOS平台的自动化测试分为两类:一类是接口自动化测试,它不涉及UI界面,以逻辑模块接口为主要的测试;另一类(使用较多)是UI自动化测试,是直接在应用层上操作App,模拟用户操作行为的测试
适用于自动化测试的模块:比较稳定的回归测试、极限操作的测试、长时间监控类测试、性能测试
XCTest的UI测试增加了三个类XCUIApplication、XCUIElement和XCUIElementQuery,可以让测试人员很方便地识别控件、模拟用户操作
XCUIApplication是被测试程序的代理,它可以启动应用程序,开始测试。对于每个测试用例,它都会新启一个进程,重新做初始化的工作,以确保每个用例开始执行前,被测试程序都是干净的
XCUIElement是应用中控件的代理,每个控件都被定义成一个UIElement,并且定义了它可能模拟哪些用户操作,是我们编写测试用例的核心。如下示例代码所示,模拟用户操作由两部分组成:一个是控件,另一个是事件。
XCUIApplication*app = [[XCUIApplication alloc] init];
XCUIElement*masterVC = app.buttons[@"Edit"];
XCTAssertNotNil((masterVC));
[masterVC tap];
XCUIElementQuery是与XCUIElement相辅相成的,页面中的某个控件是否存在,都是通过XCUIElementQuery中的接口去判断的。
查找控件的方法:
1.通过名字 XCUIElement*masterVC = app.buttons[@"Edit"];
2.通过路径和索引[[app.windows.otherElements.otherElements.navigationBars.buttons elementBoundByIndex:(1)]tap];
3.通过控件类型 [[app childrenMatchingType:XCUIElementTypeAlert].element tap]
通过以上这三种方式,所有的控件都可以得到,以通过名字查找控件为主,其他两种方法作为辅助,可以高效完成测试编码。
如何知道控件属性:1.当测试执行到某个需要分析的界面时,设置断点,然后通过po App接口打印Dom树。Dom树记录了当前页面的控件结构,可以通过这种方式来查找一个控件的具体路径,或者它有什么具体的属性,然后通过这些路径或属性来定位这个控件。这种方法效率一般,但是能够解决几乎所有的问题
2.第二种方法是通过Xcode提供的开发者工具,入口是Xcode→Open Developer Tool→Accessibility Inspector。通过Accessibility Inspector工具,可以查看某个控件的具体信息,能看到它的大部分属性,但是没有坐标属性,也不能查看路径。这种方法的优点是效率高,缺点是一些极端的问题还是没有办法解决。
重点:谷歌的EarlGrey也是不错的自动化测试框架