手機自動化測試和持續整合

48
ಋ秚ᛔ㵕玕介手 瞱媲碉 ݳCarl Su Nov 01, 2015

Upload: carl-su

Post on 16-Apr-2017

3.950 views

Category:

Presentations & Public Speaking


2 download

TRANSCRIPT

Page 1: 手機自動化測試和持續整合

Carl Su Nov 01, 2015

Page 2: 手機自動化測試和持續整合

• Hacking Thursday

• CI/CD

Page 3: 手機自動化測試和持續整合

• PyCon APAC: Introduction to Robot Framework

• COSCUP 2015 Git Workflows

Page 4: 手機自動化測試和持續整合
Page 5: 手機自動化測試和持續整合

• (CI/CD)

Page 6: 手機自動化測試和持續整合
Page 7: 手機自動化測試和持續整合

Page 8: 手機自動化測試和持續整合
Page 10: 手機自動化測試和持續整合
Page 12: 手機自動化測試和持續整合

iOS

• UIAutomation

• JavaScript

Page 13: 手機自動化測試和持續整合

Android

• 2.3 Instrumentation

• 4.2 UiAutomator

• Java

Page 14: 手機自動化測試和持續整合

Firefox OS

• Marionette WebDriver

• Python JavaScript

Page 15: 手機自動化測試和持續整合
Page 16: 手機自動化測試和持續整合

• open source

• App

Page 18: 手機自動化測試和持續整合

Appium

1. App

2.

3.

4.

Java, Objective-C, JavaScript, PHP, Python, Ruby, C#, Perl

Robot Framework

Page 19: 手機自動化測試和持續整合

• App

• Web App

• App

Page 20: 手機自動化測試和持續整合

Demo

Page 21: 手機自動化測試和持續整合
Page 22: 手機自動化測試和持續整合

Appium • client-server REST API

• Selenium WebDriver JSON Wire Protocol

• TouchAction / MultiAction API

• Selenium Grid

Page 23: 手機自動化測試和持續整合

• class xpath

• Appium Inspector

• Finding and interacting with elements

Page 24: 手機自動化測試和持續整合

Appium Inspector

Page 25: 手機自動化測試和持續整合

iOS

Page 26: 手機自動化測試和持續整合

Appium

• git clone git://github.com/appium/appium.git

• ./reset.sh --ios --dev

• node .

Page 27: 手機自動化測試和持續整合

Appium Ruby Console• page • text_exact 'UICatalog'

• id('ButtonsExplain').name

• text(resolve_id('ButtonsExplain')).name

• page_class

• x

Page 28: 手機自動化測試和持續整合

• cell_names = tags('UIATableCell').map { |cell| cell.name }

• cell_names.each do |name|

• wait { text_exact(name).click }

• wait { text_exact name.split(',').first }

• wait { back }

• end

Page 29: 手機自動化測試和持續整合

Page Objects

• Selenium Wiki : Page Objects

Page 30: 手機自動化測試和持續整合

• git clone https://github.com/appium/tutorial.git

• rake ios[test]

Page 31: 手機自動化測試和持續整合

appium.txt• [caps]

• platformName = "iOS"

• platformVersion = "9.1"

• deviceName = "iPhone Simulator"

• app = "./<your_app>.app"

• name = "Ruby iOS Tutorial"

Page 32: 手機自動化測試和持續整合

Continuous Integration

Page 33: 手機自動化測試和持續整合

(CI)• Automated

• Build

• Continuous: CI

• Continuous integration:

• (Continuous integration, CI)

Page 34: 手機自動化測試和持續整合

Git

• GitHub Flow

• GitLab Flow

• COSCUP Git workflows

Page 35: 手機自動化測試和持續整合

Jenkins •

• Subversion, Git, Mercurial

• GitHub, GitLab, Bitbucket

Page 37: 手機自動化測試和持續整合

• #!/bin/bash --login • cd ~/Documents/mopcon2015/

tutorial/projects/ruby_ios

• rake ios[test]

Page 38: 手機自動化測試和持續整合

Demo

Page 39: 手機自動化測試和持續整合

• Apple Developer ID

• (certificate) (provisioning profile)

• iPad / iPhone

• .ipa

• Xcode

Page 40: 手機自動化測試和持續整合

Appium

Page 41: 手機自動化測試和持續整合

(iOS)• session App

• Sauce Labs

• App

• UI accessibility

Page 42: 手機自動化測試和持續整合

(Android)• (< 4.2) session

App

• (< 4.2) Web App

• (< 4.2) App

• UI

Page 44: 手機自動化測試和持續整合
Page 45: 手機自動化測試和持續整合

• (CI/CD)

Page 46: 手機自動化測試和持續整合

Appium

1. App

2.

3.

4.

Java, Objective-C, JavaScript, PHP, Python, Ruby, C#, Perl

Robot Framework

Page 47: 手機自動化測試和持續整合

(CI)• Automated

• Build

• Continuous: CI

• Continuous integration:

Page 48: 手機自動化測試和持續整合

Q & A