Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
バージョンアップの対応を軽減するためのサービスの構築
Toshiyuki Hirata
スマホアプリディレクターが考えていること
Kazuaki KURIU
iOSアプリ開発のCI環境 - Jenkins編 -
Toshiyuki Hirata
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
Bluepillを使ったiOS自動テストの並列化
Toshiyuki Hirata
iOSアプリ UIテスト自動化入門
Shingo Tamaki
バージョンアップ対応を軽減するサービス:マスティフ
Toshiyuki Hirata
iOSで利用できるデバイスファームのメリット・デメリットの紹介
Shunsuke Maeda
1
of
25
Top clipped slide
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Sep. 6, 2016
•
0 likes
2 likes
×
Be the first to like this
Show More
•
4,994 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
「iOSDC Reject Conference days2」の発表資料です。
Toshiyuki Hirata
Follow
Software Engineer in Test at DeNA
Advertisement
Advertisement
Advertisement
Recommended
iOSアプリにおけるリリースフローとCI環境
Toshiyuki Hirata
4.1K views
•
11 slides
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
Toshiyuki Hirata
1.5K views
•
12 slides
Appiumを用いたwebブラウザ自動テスト
yumi_chappy
1.9K views
•
17 slides
STFとAppiumをもちいたAndroidアプリの自動テスト
Toshiyuki Hirata
6K views
•
17 slides
Xcodeの管理を楽に - Jenkins編 -
Toshiyuki Hirata
3.1K views
•
10 slides
fastlane x iOSアプリのCI
Toshiyuki Hirata
1.8K views
•
15 slides
More Related Content
Slideshows for you
(20)
バージョンアップの対応を軽減するためのサービスの構築
Toshiyuki Hirata
•
6.1K views
スマホアプリディレクターが考えていること
Kazuaki KURIU
•
2.1K views
iOSアプリ開発のCI環境 - Jenkins編 -
Toshiyuki Hirata
•
3.1K views
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
•
17.5K views
Bluepillを使ったiOS自動テストの並列化
Toshiyuki Hirata
•
1.7K views
iOSアプリ UIテスト自動化入門
Shingo Tamaki
•
15.6K views
バージョンアップ対応を軽減するサービス:マスティフ
Toshiyuki Hirata
•
1.9K views
iOSで利用できるデバイスファームのメリット・デメリットの紹介
Shunsuke Maeda
•
4.8K views
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Koji Hasegawa
•
8.9K views
DroidKaigi_devicefarm
Shunsuke Maeda
•
6.2K views
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
•
4.6K views
fastlane snapshotの並列実行についてまとめてみた
Toshiyuki Hirata
•
2.6K views
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
•
5.4K views
Pull request時の画面差分取得の自動化
Shunsuke Maeda
•
6.2K views
20141018 selenium appium_cookpad
Kazuaki Matsuo
•
20.5K views
コードレビューをより良くする Danger x Android
Toshiyuki Hirata
•
3.7K views
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
•
4.5K views
iOSにおけるコードレビューを一歩先へ進める
Shunsuke Maeda
•
2.5K views
JaSST'16 Tokyo モバイルセッション
mirer
•
1.2K views
Android e2e testing at mercari
Vishal Banthia
•
4.6K views
Similar to iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
(20)
20170209 ios/android app_build/test pipeline
Masashi Kurita
•
2.1K views
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
SEGADevTech
•
4K views
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
•
8.8K views
Introduction to Visual Studio App Center
Takeshi Fujimoto
•
361 views
【Agile Conference tokyo 2011】 継続的フィードバック
智治 長沢
•
1.6K views
Open STF Plugin 作ってみた
justice_sm
•
1K views
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
•
3.7K views
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
智治 長沢
•
600 views
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
•
1.3K views
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
智治 長沢
•
4.5K views
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
•
4K views
DeNAにおけるSWETの役割
Toshiyuki Hirata
•
6.7K views
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
•
2.1K views
Androidリリース作業の効率化(2)
Kenichi Kambara
•
37K views
5minQues - SWET近況報告
Masaki Nakagawa
•
5.9K views
Androidテスティング実践3 ユニットテスト・CI編
株式会社 NTTテクノクロス
•
4.1K views
Sharoid Service Menu
sharoid
•
384 views
Androidテスティング実践2 システムテスト編
株式会社 NTTテクノクロス
•
3.6K views
テスト自動化の現場で困ること SI-Toolkitが解決すること
yuichi_kuwahara
•
1.5K views
Androidアプリケーション開発中級研修 前編
株式会社 NTTテクノクロス
•
4.7K views
Advertisement
More from Toshiyuki Hirata
(8)
iOSにおけるパフォーマンス計測
Toshiyuki Hirata
•
785 views
iOSにおけるパフォーマンス計測
Toshiyuki Hirata
•
4.2K views
iOSにおける自動テストの並列化
Toshiyuki Hirata
•
1.9K views
UIテスト(Espresso)の高速化をさらにすすめる
Toshiyuki Hirata
•
18K views
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
•
1.8K views
UIテストの実行時間を短縮させる方法
Toshiyuki Hirata
•
5.2K views
我が家のLINEを中心とした情報共有
Toshiyuki Hirata
•
1.8K views
レビューのコストを削減するための施策
Toshiyuki Hirata
•
3.5K views
Recently uploaded
(20)
AIEXPO_CDLE名古屋紹介
KotaMiyano
•
4 views
【DL輪読会】大量API・ツールの扱いに特化したLLM
Deep Learning JP
•
93 views
社内ソフトスキルを考える
infinite_loop
•
87 views
統計学の攻略_正規分布ファミリーの全体像.pdf
akipii Oga
•
239 views
点群SegmentationのためのTransformerサーベイ
Takuya Minagawa
•
13 views
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 views
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
7 views
3Dプリンタって いいね
infinite_loop
•
59 views
ChatGPT + LlamaIndex 0 .6 による チャットボット の実装
Takanari Tokuwa
•
61 views
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
25 views
ヘッドレス化したbaserCMS5とその機能
Ryuji Egashira
•
10 views
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
Deep Learning JP
•
56 views
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
242 views
通信プロトコルについて
iPride Co., Ltd.
•
7 views
TestSIP (1).pdf
DeependraSingh712859
•
2 views
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
•
32 views
Voyager: An Open-Ended Embodied Agent with Large Language Models
harmonylab
•
5 views
Üslup ve tercüme.pdf
1Hmmtks
•
2 views
統計学の攻略_推測統計学の考え方.pdf
akipii Oga
•
246 views
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
Deep Learning JP
•
101 views
Advertisement
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Copyright © DeNA
Co.,Ltd. All Rights Reserved. iOSDC Reject Conference days2 2016/08/31(Wed) 平田敏之@DeNA iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 自己紹介 平田 敏之 ⁃ 経歴 • GWの開発 → ホムペサービスの開発、iOSアプリの開発 → SWET ⁃ SWET(Software Engineer in Test) • ミッション ⁃ DeNAサービス全般の品質向上 ⁃ DeNAエンジニアの開発生産性向上 • 事業サポートチーム / テスト基盤チーム ⁃ 私がやっていること(の一部) • クライアントアプリ周りのテスト戦略、自動テストの開発 • CI/CD環境整備 • テスト基盤環境の開発
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 本発表のゴール 皆さんが、自らのアプリでテストを書き始める そして、テストについて苦悩する苦悩する 苦悩したことを勉強会などで共有する 約1年後 iOSDC2017にテスト関係で発表を申し込む 誰か1人でもiOSDC2017でテスト関係で発表する
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 今日、皆さんに話すこと iOSアプリ開発でテストってどうしていますか? E2Eテストしていますか? マニュアルテストにまかせていませんか? テストは(基本的に)書いたほうが良い しかし、iOSアプリ開発におけるテストって「何ができるのか」「何からはじめ たら良いか」分かっていなかったりしませんか? iOSアプリ開発においても(以前より)色々できるようになってきています そこで、どのようなものがあるのか(の一部)を皆さんに紹介します ⁃ 色々とありますが、「コレだ」というベストのものは無く、プロジェクト に応じて利用するものは変えたほうが良い
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 今日の発表の流れ 最近のiOSアプリ開発のテスト環境についての紹介 1. テストを書くために • UIテスティングフレームワーク 2. 書いたテストを動かすために • 実行環境 3. 継続的にテストを動かし続けるために • CI環境 テスト環境の例を紹介 ⁃ テスト環境があるときのリリースフローの例を紹介 まとめ
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 本日話さないこと 以下については話しきれませんので省略 ⁃ 自動テストのテスト戦略 ⁃ 自動テストの書き方 ⁃ UIテストを書き続けるつらみ ⁃ Appleのつらみ ⁃ CI環境のつらみ • ここは少々Kyobashi.swift#2で話しました ここらへんは別の機会に
Copyright © DeNA
Co.,Ltd. All Rights Reserved. iOSアプリ開発をとりまくテスト環境(の一例) UIテスティングフレームワーク 実行環境 CI XCUITest AWS Device Farm Jenkins EarlGrey Xamarin Test Cloud CircleCI Appium iOSシミュレーター iOS実機 Androidに比べるとツライ面もあるが以前よりは良くなっている ※他にも多数あります※
Copyright © DeNA
Co.,Ltd. All Rights Reserved. UIテスティングフレームワーク 一番注意して選ぶべきところ 別に1つで全てのテストを書かなくても良いのです
Copyright © DeNA
Co.,Ltd. All Rights Reserved. UIテスティングフレームワーク プロダクトコードと一緒 ⁃ XCUITest • Apple純正 • OS ver: iOS9 〜 ⁃ EarlGrey • Google製 プロダクトコードとは別(アプリがあればOK) ⁃ Appium • iOS / Androidに対応 • RspecやJUnitなどが使える
Copyright © DeNA
Co.,Ltd. All Rights Reserved. サンプルアプリ x UIテスティングフレームワーク [Swiftで書かれた簡単なアプリ] 機能説明 ⁃ 上記のタブをタップしたら下部の ページが対応するページに遷移する 今回のサンプルテストは以下 ⁃ Action: • 上部の2をタップ ⁃ Result: • 下部のページが2と書かれたページに遷 移する サンプルアプリ
Copyright © DeNA
Co.,Ltd. All Rights Reserved. XCUITest import XCTest class SampleUITest: XCTestCase { private let app: XCUIApplication = XCUIApplication() override func setUp() { super.setUp() continueAfterFailure = false app.launch() } override func tearDown() { super.tearDown() app.terminate() } //testというprefixが必要 func test上部の2のタブをタップするとページ2に遷移する() { let pageNumber = “2” app.scrollViews.otherElements.staticTexts[pageNumber].tap() XCTAssertTrue(app.scrollViews.elementBoundByIndex(1).staticTexts[pageNumber].exists) } } サンプルコード ユニークなidを利用せずにテス トコードを書いた場合の例 .existsは、その要素が存在するか どうかでtrue/falseが返ってくる。 ※従ってhidden=trueでもtrueが 返ってくる。
Copyright © DeNA
Co.,Ltd. All Rights Reserved. EarlGrey import XCTest class SampleUITest: XCTestCase { let earlgray = EarlGrey() override func setUp() { super.setUp() } override func tearDown() { super.tearDown() } //testというprefixが必要 func test上部の2のタブをタップするとページ2に遷移する() { let pageNumber = 2 let pageLabel= “label-” + pageNumber earlgray .selectElementWithMatcher(grey_accessibilityLabel(pageNumber )).performAction(grey_tap()) earlgray .selectElementWithMatcher(grey_accessibilityLabel(pageLabel)).assertWithMatcher(grey_sufficientlyVisible()) } } サンプルコード SetupはCocoaPodsを使っておこなうことを推奨。 基本的に要素にuniqueなidをふることを推奨している。 (テストを書く上では当然な行為だと思います) 要参考 https://github.com/google/EarlGrey/blob/1.0.0/docs/api.md
Copyright © DeNA
Co.,Ltd. All Rights Reserved. Appium describe “画面遷移テスト” do before(:each) do end after(:each) do end let(:pageNumber) { “2” } it “上部の2のタブをタップするとページ2に遷移する” do find_element(:name, pageNumber).click() pageTitle= find_element(:name, “label” + pageNumbe).text expect(pageTitle).to eq(pageNumber) end end サンプルコード(Rspec) AppiumはXCTestやEarlGreyとはアー キテクチャーが異なる点に注意 ※左のコード以外にも必要なコードがあります。 上記のサンプルコードはRspecなので、describe/itなどが使えます。 要素の取得には、accessibilityIdentifierやaccessibilityLabelやXpathを使用しておこないます。 上記の例では、accessibilityLabelを使用しています。
Copyright © DeNA
Co.,Ltd. All Rights Reserved. UIテストを書くときのTips iOSシミュレーターのAcccessibility Inspectorは便利 要素にuniqueなidは必須 ⁃ 無くても書けるが後で苦労する テスト名は分かりやすくする ⁃ 無理して英語にしなくても良い 頑張り過ぎない ⁃ 単にスクリーンショットを撮るレベルにするのも1つの手 CIに載せておいて、結果が全員が見えるようにしておく ⁃ 手元だけで動く状態だと確実に廃れていく
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 自動テストの実行環境 Androidに比べて非常に面倒なのがコレですよね
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 自動テストの実行環境(1/2) AWS Device Farm ⁃ 利用できるテスティングフレームワークが限られている • Appium Java Junit / Java TestNG / Python • Calabash • UI Automation • XCTest • XCUITest Xamarin Test Cloud • Cucumber(C# / Ruby) iOSシミュレーター • CI環境であるMac上で起動 • あくまでもシミュレーター (自前の)iOS実機 • CI環境であるMacに接続している必要がある
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 自動テストの実行環境(2/2) AWS Device Farm ⁃ 💰 定額 250 USD/デバイススロット/月 ⁃ 💰 0.17 USD/分 Xamarin Test Cloud ⁃ 💰 ¥178,200(税抜き)/年間 → 1日1時間 / 1デバイス ⁃ 💰 ¥682,200(税抜き)/年間 → 1日5時間 / 3デバイス iOSシミュレーター ⁃ シミュレーターだから.. ⁃ (基本的に)mac1台につき1iOSシミュレーター (自前の)iOS実機 ⁃ CI環境に接続されたiOS実機を用いる形 • Jenkinsなどのようなオンプレミスでないと無理 • 資産をいかすならコレが良いのだけど運用がなかなか..
Copyright © DeNA
Co.,Ltd. All Rights Reserved. CI環境 プロジェクトの状況に応じて決めるのが良い
Copyright © DeNA
Co.,Ltd. All Rights Reserved. CI環境 Jenkins(オンプレミス) ⁃ ど定番だが学習コストや運用コストがかかる ⁃ なんでも出来るがJenkinsおじさんも出来やすい ⁃ 見た目に抵抗がある人も… • blueocean pluginで多少は良くなる ⁃ LTS 2.7.2 (https://jenkins.io/changelog-stable/) CircleCI(クラウド) ⁃ さくっと簡単に利用できる優れもの • ただしiOSは有料になってしまいました… ⁃ Bitriseというのもあります ⁃ 痒いところに手が届かない ⁃ Enterprise版もある
Copyright © DeNA
Co.,Ltd. All Rights Reserved. Jenkins 2.7.1(LTS) + blueocean plugin Jenkinsも進化しています
Copyright © DeNA
Co.,Ltd. All Rights Reserved. 今回紹介するテスト環境一式 Jenkins x XCUITest x iOSシミュレーター ※この環境だとさくっとすぐにはじめられます※
Copyright © DeNA
Co.,Ltd. All Rights Reserved. iOSアプリ開発のテスト環境の例(1/2) lane :test do scan( sdk: 'iphonesimulator', device: ENV[“device”], workspace: "sample-ios-swift.xcworkspace", scheme: "sample-ios-swift", configuration: "Debug", output_directory: 'test-report/', buildlog_path: 'test-report/', output_types: 'html, junit', clean: true ) end Jenkins x XCUITest x iOSシミュレーター XCUITest • テストの実行はfastlane/scanを使用 • 実行するdeviceは環境変数で渡す • テストの結果はJUnit形式、htmlファイルで出力 Jenkins (Mac上で動作) Jenkinsのjobの設定 • ビルドパラメータを用意 • 対象branch • ソースコード管理(Git)でのBranch Specifierで利用する • 対象device • groove scriptで動的表 • Dynamic Parameter pluginを利用 • xcrun simctl listコマンドを使ってiOSシミュレーター一覧は取得可能 •※実機の場合はmobiledeviceを利用するとIDも取得できる • ビルドのシェルの実行でテストを実行 • fastlane test • 出力結果を集計して表示 • JUnit pluginを利用 • 出力結果をslackにpost • slack pluginを利用 fastlaneの例
Copyright © DeNA
Co.,Ltd. All Rights Reserved. iOSアプリ開発のテスト環境の例(2/2) Jenkinsにおけるテスト結果の表示 ⁃ 右画像のように表示される • 全てが成功した場合の例 Jenkinsにおけるテスト結果の通知 ⁃ Slackに下画像のように通知される ⁃ テストが落ちた場合は、mentionが飛ばされる
Copyright © DeNA
Co.,Ltd. All Rights Reserved. テスト環境がある場合のリリースフロー例 1. WIPでPRを出す 2. 機能を実装する 3. 上記機能のテスト観点を記述しレビュー依頼 ⁃ 主にQA担当者がチェックする ⁃ これにより手動で検証する箇所を把握する 4. 上記機能のテストコードを実装 5. PR中においてはテストフレーズでテストを動かす ⁃ 例) build this please: アプリをビルドする ⁃ 例) test this please: 自動テストを実行する • これを詠唱のように長くしてみようというアホな案を出したが、当然却下された.. 6. コードのレビューはテストが全て通った後におこなう 7. 全レビュー後、merge 8. QA検証へ ⁃ 自動テストで担保している箇所は特にやらない
Copyright © DeNA
Co.,Ltd. All Rights Reserved. まとめ テスト周りは以前より色々とできるようになりました 開発環境と同様にテスト環境を整えるのはプロダクトにおいて重要 iOSアプリ開発のテスト環境を用意してみましょう ⁃ 環境を変えやすいようにしつつ作るのがベターです そして、テストをどんどん書いてみましょう ⁃ その先の苦悩は別の勉強会で
Advertisement