Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
テストフィクスチャ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日木曜日
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...
インメモリストアを使う
_store = [_coordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
...
アプリケーション
データを再現して
テスト実行する
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日木曜日
Upcoming SlideShare
Loading in …5
×

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

2,599 views

Published on

potatotips#5 at COOKPAD
LT

  • Be the first to comment

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

  1. 1. テストフィクスチャTips (主にCoreData) 2014.03.12 potatotips#5 at COOKPAD @nowsprinting/Koji Hasegawa 14年3月13日木曜日
  2. 2. 自己紹介 • @nowsprinting/Koji Hasegawa • フリーランス (iOS/Androidアプリ受託開発) • テスト自動化研究会、Androidテスト部 • 著書『Androidアプリテスト技法』(共著) 『iOSアプリ テスト自動化入門』3.18発売 14年3月13日木曜日
  3. 3. 都内の大きな書店では 今週末から並ぶかも? 3.18 発売! 14年3月13日木曜日
  4. 4. Agenda • テストフィクスチャとは • CoreDataをインメモリストアで使用する • アプリケーションデータを再現してテスト 実行する 14年3月13日木曜日
  5. 5. テストフィクスチャとは 14年3月13日木曜日
  6. 6. テストフィクスチャとは • テスト実行環境、前提条件の集合 • コンテキスト • [setUp]やテストメソッドの中で整え、 [tearDown]でクリアする • テストの再現性、独立性を確保 14年3月13日木曜日
  7. 7. 再現性 • そのテストケースを何度実行しても、 いつ実行しても検証結果が変わらない 独立性 • 他のテストケースの実行結果に依存し ない 14年3月13日木曜日
  8. 8. CoreDataをインメモリ ストアで使用する 14年3月13日木曜日
  9. 9. インメモリストアとは • アプリインストール先のストレージでは なく、メモリ上にDBを作る • テスト実行ごとに、常に空のDBを得る ことができる • I/Oが発生しないので高速(のはず) 14年3月13日木曜日
  10. 10. 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日木曜日
  11. 11. インメモリストアを使う _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日木曜日
  12. 12. アプリケーション データを再現して テスト実行する 14年3月13日木曜日
  13. 13. • 実際にアプリを操作して得られたアプリ ケーションデータを保存し、テスト実行 ごとに再現する • 大量データや、DBのマイグレーションの テストなどで有効 14年3月13日木曜日
  14. 14. 実機のデータを取り出す ※iOSシミュレータではFinderで取り出すことができます 拡張子”.xcappdata”ファイルとして保存 14年3月13日木曜日
  15. 15. データを設定して実行 Scheme設定画面でxcappdataを設定 14年3月13日木曜日
  16. 16. その他、フィクスチャ系 • テストフィクスチャをファイルで バンドルする • NSUserDefaultsをクリアする 方法が『iOSアプリ テスト自動化入門』 には書いてあります 14年3月13日木曜日
  17. 17. 14年3月13日木曜日

×