ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2015-05-08 (金) [長年日記]

[雑記]『iOSアプリ テスト自動化入門』読んだ

以前はGHUnitでユニットテストコードを書いていたのだけど、XcodeにXCTestが導入されて以降は恥ずかしながらさっぱり書かなくなってしまっていたので、勉強にと思って読んだ。

良いところ

  • 最初にテストを書く必要性をきちんと説明している
    • あまり長々と説明するのでなく、他の書籍やウェブ上のリソースへも適切なポインタが置かれている
  • 他プログラミング言語のテストフレームワーク経験者向けにも配慮した解説
    • XCTestのこれはJUnitだったらどれ、とか
    • BDDフレームワークについてはCucumber系かRSpec系か、とか
  • 迷いがちなXcodeの操作ではスクリーンショットと一緒に解説されている
    • Xcode 5.x時代の画面だが、Xcode 6.xでもそれほど違和感は無い
  • iOSアプリに特有のテストコードにおけるテクニックが幾つかあって参考になる
    • 外部からリソース取得しなければならない箇所をNSBundle bundleForClass:でテストターゲット内のバンドルリソースで代用する
    • setUp()とtearDown()でNSUserDefaultsやCore Dataのデータ初期化とクリアを行う、iPhone端末から吸い出したアプリケーションデータで差し替えてテストに使う
    • ヘッダファイルで外部に公開されていないメソッドを、テストコード側のカテゴリで宣言して呼び出し可能にする
  • xcodebuildの代替としてxctoolを使うことでカバレッジ・カバレッジ収集して可視化に利用する
    • Jenkinsでのジョブ設定例も交えて解説されている点が特に良い
    • Travis CIやCoverallsといったCI as a Serviceとの連携方法も解説されているところが今どき
  • サポートページサンプルコードが、出版から1年経過した2015-05現在も、きちんとメンテナンスされている

期待と違ったところ

  • XCTest以外のユニットテストフレームワーク、Mock/Stub系のフレームワークが多く紹介されているが、「で、結局どれが良いの?」が分からない
    • 同じ題材のテストコードをそれぞれの流儀で書いてあるので「お好きなものをどうぞ」なんだとは思う
    • 今からテストコード始めたいと考えて本書を手に取った人は、これが1番知りたいんでは……
  • E2Eテストのところも上記と同様で、UI AutomationとUI Automationをラップしたツールが幾つか紹介されているけど、「じゃあどれが良いのか」が分からなかった
    • UI Automationでのテクニックとしてアクセシビリティ系プロパティでメンテナンス性を良くしようというのは、Appiumなどのツールに手を広げたくなった時にも応用できて助かる
  • サンプルコードのスタイルが、XcodeのGUIメニューからクラスを作った時に自動生成されるObjective-Cコードとは明らかに異なるスタイルになっていて、何かのこだわり故か、紙面の都合のためか分からないが、気になってしまった
    • 巻末で外部リソースとしてスタイルガイドが紹介されているが、そのどれとも違う
    • こういう場合はAppleスタイルに揃えておく方が無難では……? 混ざった時に可読性が良くないように感じる
// 自動生成されたコード部分(Appleスタイル)
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

// 本書で実装されたサンプルコード部分
- (void)setCustomer:(Customer*)customer{
    self.nameLabel.text = customer.name;
    self.mailLabel.text = customer.mail;
    self.genderLabel.text = customer.genderString;
    self.ageLabel.text = [NSString stringWithFormat:@"%d", customer.age];
    self.marketDivisionLabel.text = customer.divisionString;
    
    GravatarAccessor *gravatar = [[GravatarAccessor alloc] initWithMail:customer.mail delegate:self];
    [gravatar requestAvatar];
}

総評

XCTest事始めとして手に取るにはとても良い本です。

サンプルコードもメンテナンス継続されててXcode 6.x + iOS 8.xでも今すぐ触って動かせるのは素晴らしい。

iOSアプリテスト自動化入門(長谷川 孝二)


最近のツッコミ

  1. ともお (2024-05-29(水)20:59)「真上からの恐怖🫨」
  2. いちごみるく (2024-05-29(水)20:59)「🩸」
  3. レモン (2024-05-29(水)20:59)「レモン」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2015-05-05 (火)) 最新 次の日記(2015-05-09 (土))» 編集