MasaoApril's Library.

Software Testingなネタを書いてみた。

システムテスト自動化カンファレンス2014(6)「社内スマホアプリのビルド配信ツールによる自動化事例」

 2014/12/14(日)にテスト自動化研究会(STAR)主催のシステムテスト自動化カンファレンス2014で聴講したセッションから数回に分け、まとめたものを紹介しています。

セッション(再掲)

1.オープニング:1時間で分かるSTA /鈴木 一裕 →<資料>
2.テスト自動化のパターンと実践 /.reviewrc →<資料1>/<資料2>/<資料3>
3.GUI自動テストの保守性を高めるには /伊藤 望 →<資料>
4.状態遷移テストにおけるテスト設計と実行の自動化 /きょん →<資料>
5.ビルドプロセスとCI /長谷川 孝二 →<資料>
6.社内スマホアプリのビルド配信ツールによる自動化事例 /赤根 稔朗(Yahoo! JAPAN)
7.Test Automation Patterns 2014 冬コレ!/松木 晋祐 →<資料>

 前回は「5.ビルドプロセスとCI」でしたが、今回は「6.社内スマホアプリのビルド配信ツールによる自動化事例」について紹介します。

6.社内スマホアプリのビルド配信ツールによる自動化事例 /赤根 稔朗(Yahoo! JAPAN)

[1]アプリ開発サイクルの課題

(a)リリースサイクル

(a-1)「(前回のリリース)→1.分析→2.意思決定→3.開発→4.リリース」

 1ヶ月 or 2週間で1つのサイクル

(a-2)クラッシュが多いため、「バグ修正にしましょう」というサイクルもある。

(b)エンジニアが回す開発サイクル

 1.開発→2.テスト→3.フィードバック

(c)課題

(c-1)複数人で開発
<課題>

 ○○さんの環境でしかビルドが通らない

<アプローチ>

 クリーンな環境を整備する。

(c-2)アプリの実機インストール
<課題>

 PCに繋がないとインストールできない

<アプローチ>
  1. ワイヤレスでインストールできるようにする
    →古いバージョンもインストールできるようにしている。
  2. アーカイブのバージョン管理
(c-3)検証環境別のアプリが欲しい
<課題>

 本番用やテスト用、環境が増加するとその分増える。

<アプローチ>

 環境毎のビルドも設定変更で対応できるようにする。
(開発者の学習コストを少しかけることが前提)

(c-4)アプリ用のCI
<課題>

 学習コストが大きい。

<アプローチ>

 リポジトリの場所を教える。

[2]自動化で解決したこと

(a)自動化で解決したこと

(a-1)ビルド
  1. iOS/Android両対応
  2. 単体テスト対応
  3. Web API
  4. ローカルでビルドしたものも対応
(a-2)アプリ配信
  1. 新しいバージョンのビルドをメール通知
  2. QRコードでURL展開
(a-3)社内展開
  • 社内のコミュニティで公開されているため、テストエンジニアがテストできるようになっている。

(b)自動化の仕組み@Jenkins

(b-1)動的ジョブ作成

 ビルド設定をJenkinsに渡し、各環境の設定をした上でビルドする。

(b-2)ビルド実行
  1. ビルド開始を通知
  2. リポジトリをチェックアウト
  3. 単体テスト実行
  4. テスト実行出力
  5. (...略)
  6. ipaファイル作成
  7. 結果のアップロード
  8. ビルド完了をメールで通知

(c)大変だったこと

(c-1)アプリ毎にプロジェクト構成が様々

 利用者とのコミュニケーションが大切。

(c-2)企業イントラのネットワーク環境
(c-3)Apple独自仕様
(c-4)公開されていないマイナーなアップデート情報
(c-5)iOS/OSX/XCodeのアップデートサイクル早い

[3]困ったときの情報入手先

(a)StackOverFlow

(b)iOSフォーラム

(c)GitHub

所感

 開発ライフサイクルの中でボトルネックになる定型的な業務に着目して、社内ツールを開発されて社内に展開した話を聞いて、私の所属している会社で実施しているQC活動を思い出しました。現場の業務内容から「何が困っているか?」「問題や課題に対し、どのような手段で解決するか?」を整理して、どの問題から取り組むかを実践していきたい。
 自動化を行うと作業ミス減少の効果が期待できるので、現在進行中の案件で「定型的な作業」を見つけ、自動化するか否か検討してみようと思います。