SlideShare a Scribd company logo
SnapshotとRunScript
⾃⼰紹介
harumidiv
http://harumi.sakura.ne.jp/wordpress/
@u11238123
だれのあし (今回の検証アプリ)
「あし」をテーマにした
クイズアプリ
https://apps.apple.com/us/app/だれのあし-脳トレiq謎解き⾜クイズアプリ/id1465352189
UITestを書く
ボタンに⽂字が⼊っているとそれが出てしまう!
もう⼀度録画すると…
ボタンが複数あったら失敗します
iOS13で録画が死んでいる
• iOS13のシミュレータで録画機能が動かないバグがある!!
• 試した環境はXcode11.1、12のOSで録画すれば⼤丈夫
• 最新の環境だったら治ってるかも?
http://harumi.sakura.ne.jp/wordpress/2019/10/03/ios13でuitestの録画機能が死んでいる/
• iOS13のシミュレータで録画機能が動かないバグがある!!
• 試した環境はXcode11.1、12のOSで録画すれば⼤丈夫
• 最新の環境だったら治ってるかも?
http://harumi.sakura.ne.jp/wordpress/2019/10/03/ios13でuitestの録画機能が死んでいる/
iOS13からはコマンドで録画開始をする必要がある
GUIから撮影することはできなくなったらしい…
Snapshotを撮影する
こんなのが⾃動で作成される
Fastfile
Snapfile
こんなのが⾃動で作成される
Fastfile
Snapfile
撮影するデバイス
撮影する⾔語
実⾏するスキーマ
保存するディレクトリ
古いスクリーンショットを消すよ
起動引数
実⾏コマンド
こんなのが⾃動で作成される
忘れやすいので注意!
Fastlane Snapshot
•利点
•⽋点
遅い!!!
• アプリ申請でそのまま使える
• iOSSnapshotTestCaseより簡単
• Mockが必要になることが多くコードが抽象化され綺麗になる
StatusBarをきれいにする
SimulatorStatusMagic
• ステータスバーを綺麗にするライブラリ
http://harumi.sakura.ne.jp/wordpress/2019/04/08/swiftでsimulatorstatusmagicを使ってみた/
時間に注⽬
RunScriptでJsonをテストする
使っているJson
{
"quiz": [{
"image": "simauma.png",
"answer": "しまうま",
"choice": {
"a": "きりん",
"b": "いぬ",
"c": "しまうま",
"d": "かんがるー"
},
...
}]
}
壊れるところ
{
"quiz": [{
"image": "simauma.png",
"answer": "しまうま",
"choice": {
"a": "きりん",
"b": "いぬ",
"c": "しまうま",
"d": "かんがるー"
},
...
}]
}
クラッシュしないから発⾒しにくい…
UnitTest書いてるけどあまり動かさないし…
クラッシュしないから発⾒しにくい…
UnitTest書いてるけどあまり動かさないし…
CIコケるとやる気がなくなる…
クラッシュしないから発⾒しにくい…
UnitTest書いてるけどあまり動かさないし…
CIコケるとやる気がなくなる…
クラッシュしないから発⾒しにくい…
ビルドしたときにわかったらいいのに…
そうだ!RunScriptでテストしよう!
UnitTest書いてるけどあまり動かさないし…
CIコケるとやる気がなくなる…
クラッシュしないから発⾒しにくい…
ビルドしたときにわかったらいいのに…
Scriptを作る
Scriptを作る
Scriptを作る
Scriptを作る
ValidateJson.swiftmain.sh
Scriptを作る
ビルドしてみると…🤔
Scriptを作る
ファイルに実⾏可能権限がない!!
Scriptを作る
ファイルに実⾏可能権限がない!!
Scriptを作る
Scriptを作る
出⼒できた! 🎉
あとはコードを直すだけ
main.shValidateJson.swift
実際に壊して確認してみる
(実演)
UITestのいろは
UITestでSchemeを使う
http://harumi.sakura.ne.jp/wordpress/2019/04/07/uitestでschemeを使いたかった/
• ビルド環境の⽅に⼊れてテストの⽅に⼊れ忘れてるのをよくやる
UserDefaultを消す
UITest
AppDelegate
http://harumi.sakura.ne.jp/wordpress/2019/04/26/uitest実⾏時に端末に保存されているuserdefaultを削除する/
Dynamic Typeを指定する
• -UIPreferredContentSizeCategoryNameで指定できる
http://harumi.sakura.ne.jp/wordpress/2019/04/18/xcuitestでdynamictypeを変更する/
Dynamic Typeを指定する
• 指定可能なサイズ
http://harumi.sakura.ne.jp/wordpress/2019/04/18/xcuitestでdynamictypeを変更する/
アプリを削除する
http://harumi.sakura.ne.jp/wordpress/2019/04/03/xcuitestでアプリを削除する/
注意点!
http://harumi.sakura.ne.jp/wordpress/2019/04/03/xcuitestでアプリを削除する/
• 削除ボタンを押した時のイベントを分岐しないといけない
おわり

More Related Content

Similar to SnapshotとRunscript

2007 It合宿 発表資料/佐瀬 武志
2007 It合宿 発表資料/佐瀬 武志2007 It合宿 発表資料/佐瀬 武志
2007 It合宿 発表資料/佐瀬 武志kurubushionline
 
Yidev201406.pub
Yidev201406.pubYidev201406.pub
Yidev201406.pub
itoz itoz
 
スマートフォンでの脱出ゲームの作り方
スマートフォンでの脱出ゲームの作り方スマートフォンでの脱出ゲームの作り方
スマートフォンでの脱出ゲームの作り方
Takao Uchikawa
 
20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発ta9mar
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
エピック・ゲームズ・ジャパン Epic Games Japan
 
テレニコツイ
テレニコツイテレニコツイ
テレニコツイjz5 MATSUE
 
iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3
codeal
 
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみたコードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
Shintaro Ito
 
AppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストにAppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストに
Hiramatsu Ryosuke
 
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
健一 辰濱
 
20140315 JAWS Days OpsWorks
20140315 JAWS Days OpsWorks20140315 JAWS Days OpsWorks
20140315 JAWS Days OpsWorks
Teruo Adachi
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 
iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1
codeal
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability SeminarVisso株式会社
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Atsushi Harada
 
多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える
sasaron 397
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
Shingo Tamaki
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
Drecom Co., Ltd.
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
Tokoroten Nakayama
 
Herlockサービス紹介
Herlockサービス紹介Herlockサービス紹介
Herlockサービス紹介
SONICMOOV CO.,LTD.
 

Similar to SnapshotとRunscript (20)

2007 It合宿 発表資料/佐瀬 武志
2007 It合宿 発表資料/佐瀬 武志2007 It合宿 発表資料/佐瀬 武志
2007 It合宿 発表資料/佐瀬 武志
 
Yidev201406.pub
Yidev201406.pubYidev201406.pub
Yidev201406.pub
 
スマートフォンでの脱出ゲームの作り方
スマートフォンでの脱出ゲームの作り方スマートフォンでの脱出ゲームの作り方
スマートフォンでの脱出ゲームの作り方
 
20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発20120422 日本androidの会 横浜支部 smartwatch開発
20120422 日本androidの会 横浜支部 smartwatch開発
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
テレニコツイ
テレニコツイテレニコツイ
テレニコツイ
 
iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3
 
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみたコードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
コードが書けない人が凶悪ノベルゲーム「ヤンデレ小杉」を作ってみた
 
AppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストにAppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストに
 
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
 
20140315 JAWS Days OpsWorks
20140315 JAWS Days OpsWorks20140315 JAWS Days OpsWorks
20140315 JAWS Days OpsWorks
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1iPhoneアプリ無料勉強会 vol1
iPhoneアプリ無料勉強会 vol1
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Herlockサービス紹介
Herlockサービス紹介Herlockサービス紹介
Herlockサービス紹介
 

SnapshotとRunscript