前言
发布内测版的时候,每次在提交代码前、上传ipa包前、发布前都需要手动地跑一下主流程,比如在视频详情页划几页,在直播页划几个直播间等。都是比较重复且有规律的操作,可以利用自动化测试来代替手工操作。
我们在Jenkins上面打包时,会有一个UI自动化测试的选项,是架构组自己弄的一套自动化测试环境,想要自己搭建估计不太方便。所以需要有一套轻量级切足够易用的UI自动化测试框架。
XCUITest
简介
XCUITest是苹果在iOS9.3提供的自动化测试框架(iOS9.3之前提供的是UI Automation),Xcode自带的框架,不需要搭建其它环境,由于是苹果提供的框架,运行稳定。使用Swift或者OC编写测试用例(可能对于测试不是很友好)。
使用
func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication(bundleIdentifier: "appium.test")
app.launch() // 启动应用
for _ in 1 ..< 5 {
app.swipeUp() // 上划
}
for _ in 1 ... 3 {
app.swipeRight() // 右划
}
app.swipeDown() // 下划刷新
sleep(5) // 等待5s再执行下一步
app.cells.firstMatch.tap() // 点击当前的第一个cell
for _ in 1 ... 5 {
app.swipeUp() // 上划
sleep(2) // 等待2s再执行下一步
}
app.buttons["live_room_quit_btn"].tap() // 点击标志btn
}
通过id获取UI元素,需要先在代码设置accessibilityIdentifier:
_quitButton.accessibilityIdentifier = @"live_room_quit_btn";
Appium
简介
Appium是一个开源的、跨平台的自动化测试工具,支持iOS、Android和FirefoxOS平台。支持多种语言编写用例,对测试比较友好。
原理
在iOS平台中,需要把WebDriverAgent编译安装到手机上,WebDriverAgent用于跟苹果的XCTest框架交互,WebDriverAgent还会起一个服务,监听Appium客户端发送的指令。
整个流程就是这样子: 测试脚本 -> Appium -> 把脚本转化为json数据 -> 传输到WebDriverAgent -> 转化为XCTest可识别的指令 -> 控制app执行
使用
#! /usr/local/bin/python3
# -*- coding: utf-8 -*-
import time
import wda
import logging
if __name__ == '__main__':
bundle_id = "appium.test"
c = wda.USBClient()
s = c.session(bundle_id)
s.app_start(bundle_id)
for time in range(5):
s.swipe_up()
for time in range(3):
s.swipe_right()
s.swipe_down()
s.click(100, 200)
for time in range(5):
s.swipe_up()
s.close()
WebDriverAgent python-wda iOS 真机如何安装 WebDriverAgent Appium文档
其它自动化测试框架
注意点
不要在正式环境测试,避免短时间内出现多次请求,触发后台告警(灰度环境也属于正式环境)。