SlideShare a Scribd company logo
テストフィクスチャTips
(主にCoreData)
2014.03.12 potatotips#5 at COOKPAD
@nowsprinting/Koji Hasegawa
14年3月13日木曜日
自己紹介
• @nowsprinting/Koji Hasegawa
• フリーランス
(iOS/Androidアプリ受託開発)
• テスト自動化研究会、Androidテスト部
• 著書『Androidアプリテスト技法』(共著)
『iOSアプリ テスト自動化入門』3.18発売
14年3月13日木曜日
都内の大きな書店では
今週末から並ぶかも?
3.18 発売!
14年3月13日木曜日
Agenda
• テストフィクスチャとは
• CoreDataをインメモリストアで使用する
• アプリケーションデータを再現してテスト
実行する
14年3月13日木曜日
テストフィクスチャとは
14年3月13日木曜日
テストフィクスチャとは
• テスト実行環境、前提条件の集合
• コンテキスト
• [setUp]やテストメソッドの中で整え、
[tearDown]でクリアする
• テストの再現性、独立性を確保
14年3月13日木曜日
再現性
• そのテストケースを何度実行しても、
いつ実行しても検証結果が変わらない
独立性
• 他のテストケースの実行結果に依存し
ない
14年3月13日木曜日
CoreDataをインメモリ
ストアで使用する
14年3月13日木曜日
インメモリストアとは
• アプリインストール先のストレージでは
なく、メモリ上にDBを作る
• テスト実行ごとに、常に空のDBを得る
ことができる
• I/Oが発生しないので高速(のはず)
14年3月13日木曜日
CoreDataの初期化
- (void)setUp
{
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"YourModelName"
withExtension:@"momd"];
_model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
_coordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:_model];
NSString *docpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,YES) lastObject];
NSURL *storeURL = [NSURL fileURLWithPath:[docpath
stringByAppendingPathComponent: @"YourModelName.sqlite"]];
_store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
error:NULL];
_context = [[NSManagedObjectContext alloc] init];
_context.persistentStoreCoordinator = _coordinator;
}
14年3月13日木曜日
インメモリストアを使う
_store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
error:NULL];
_store = [_coordinator addPersistentStoreWithType:NSInMemoryStoreType
configuration:nil
URL:nil
options:nil
error:NULL];
14年3月13日木曜日
アプリケーション
データを再現して
テスト実行する
14年3月13日木曜日
• 実際にアプリを操作して得られたアプリ
ケーションデータを保存し、テスト実行
ごとに再現する
• 大量データや、DBのマイグレーションの
テストなどで有効
14年3月13日木曜日
実機のデータを取り出す
※iOSシミュレータではFinderで取り出すことができます
拡張子”.xcappdata”ファイルとして保存
14年3月13日木曜日
データを設定して実行
Scheme設定画面でxcappdataを設定
14年3月13日木曜日
その他、フィクスチャ系
• テストフィクスチャをファイルで
バンドルする
• NSUserDefaultsをクリアする
方法が『iOSアプリ テスト自動化入門』
には書いてあります
14年3月13日木曜日
14年3月13日木曜日

More Related Content

More from Koji Hasegawa

Blender-like SceneView Hotkeys Unity extensions
Blender-like SceneView Hotkeys Unity extensionsBlender-like SceneView Hotkeys Unity extensions
Blender-like SceneView Hotkeys Unity extensions
Koji Hasegawa
 
IntelliJ plugin の作りかた
IntelliJ plugin の作りかたIntelliJ plugin の作りかた
IntelliJ plugin の作りかた
Koji Hasegawa
 
AltUnityTesterを試してみた #gotandaunity
AltUnityTesterを試してみた #gotandaunityAltUnityTesterを試してみた #gotandaunity
AltUnityTesterを試してみた #gotandaunity
Koji Hasegawa
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Koji Hasegawa
 
テストの種類とBDD #33testing
テストの種類とBDD #33testingテストの種類とBDD #33testing
テストの種類とBDD #33testing
Koji Hasegawa
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
 
VRの入力デバイス #JAGVR
VRの入力デバイス #JAGVRVRの入力デバイス #JAGVR
VRの入力デバイス #JAGVR
Koji Hasegawa
 
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAAスマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAAKoji Hasegawa
 
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
Koji Hasegawa
 
Androidで使えるモックフレームワーク
Androidで使えるモックフレームワークAndroidで使えるモックフレームワーク
Androidで使えるモックフレームワーク
Koji Hasegawa
 
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようスマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
 
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっAndroidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Koji Hasegawa
 
Testterチーム2011年まとめ
Testterチーム2011年まとめTestterチーム2011年まとめ
Testterチーム2011年まとめKoji Hasegawa
 
Testter単体テストのビアレビュー報告
Testter単体テストのビアレビュー報告Testter単体テストのビアレビュー報告
Testter単体テストのビアレビュー報告
Koji Hasegawa
 
山吹色の茸疾走におけるテストの実例
山吹色の茸疾走におけるテストの実例山吹色の茸疾走におけるテストの実例
山吹色の茸疾走におけるテストの実例
Koji Hasegawa
 
Testterを叩け!
Testterを叩け!Testterを叩け!
Testterを叩け!
Koji Hasegawa
 
Atec mtg7 unittest
Atec mtg7 unittestAtec mtg7 unittest
Atec mtg7 unittest
Koji Hasegawa
 

More from Koji Hasegawa (17)

Blender-like SceneView Hotkeys Unity extensions
Blender-like SceneView Hotkeys Unity extensionsBlender-like SceneView Hotkeys Unity extensions
Blender-like SceneView Hotkeys Unity extensions
 
IntelliJ plugin の作りかた
IntelliJ plugin の作りかたIntelliJ plugin の作りかた
IntelliJ plugin の作りかた
 
AltUnityTesterを試してみた #gotandaunity
AltUnityTesterを試してみた #gotandaunityAltUnityTesterを試してみた #gotandaunity
AltUnityTesterを試してみた #gotandaunity
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
 
テストの種類とBDD #33testing
テストの種類とBDD #33testingテストの種類とBDD #33testing
テストの種類とBDD #33testing
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
VRの入力デバイス #JAGVR
VRの入力デバイス #JAGVRVRの入力デバイス #JAGVR
VRの入力デバイス #JAGVR
 
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAAスマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
スマートフォンアプリ開発と自動化 〜なじむ。実に!なじむぞ!〜 #AsianAA
 
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
スマートフォンアプリの色々自動化をはじめよう - at SonyDNA Meisters Salon 特別編
 
Androidで使えるモックフレームワーク
Androidで使えるモックフレームワークAndroidで使えるモックフレームワーク
Androidで使えるモックフレームワーク
 
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめようスマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
 
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっAndroidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
 
Testterチーム2011年まとめ
Testterチーム2011年まとめTestterチーム2011年まとめ
Testterチーム2011年まとめ
 
Testter単体テストのビアレビュー報告
Testter単体テストのビアレビュー報告Testter単体テストのビアレビュー報告
Testter単体テストのビアレビュー報告
 
山吹色の茸疾走におけるテストの実例
山吹色の茸疾走におけるテストの実例山吹色の茸疾走におけるテストの実例
山吹色の茸疾走におけるテストの実例
 
Testterを叩け!
Testterを叩け!Testterを叩け!
Testterを叩け!
 
Atec mtg7 unittest
Atec mtg7 unittestAtec mtg7 unittest
Atec mtg7 unittest
 

テストフィクスチャTips(主にCoreData) #potatotips