T&T United Inc.

Knowledge over the Air

【連載】iOS/Androidアプリ開発入門「サーバ連動アプリを開発しよう!」 (6) ローカルでの単体・結合テスト

      2015/03/12

みなさん、こんにちは!

本連載もいよいよ山場を迎えました。

これまで同様、本格的なアプリを開発するためには「何を知っておかなければならないか」「何を勉強すればいいか」を中心に書いていきたいと思います。

前回までで、アプリの設計・実装が完了しましたので、今回は、ローカルでの単体・結合テストを行っていきたいと思います。

早速はじめていきましょう。

スポンサーリンク

テストの種類とツールを知る

本格的なアプリを開発するには、本格的なテストが欠かせません。

ということで、テストについて学んでいきましょう。

テストの種類

ソフトウェアのテストにはいろいろな種類があります。

有名なところで、単体テスト(ユニットテスト)、結合テスト、総合テスト。

ほかにも、性能テストや移行テストといった毛色の違うテストもあります。

業界ではこれらの単語が普通に飛び交っていますので、もしご存知なければこの機会にそれぞれのテストの意味と違いを調べて、マスターしてください。

テストのツール

テストのツール(ライブラリ)もいろいろなものがあります。

一番有名なものは、ユニットテストを行うための「XXUnit」というシリーズです。

JUnitPHPUnitなど、言語ごとにツールが揃っています。

その他、性能テストを行うためのJMeterや、UIテストを行うためのKIF(iOS用)、Espresso(Android用)といったツールもあります。

さらに、ビルドとテストを自動化するツールとしてJenkinsというツールが人気を博しています。

テストのタイミング

アプリの仕様と設計が明確な場合、テスト駆動開発(TDD)を取り入れることで、バグの少ない堅牢なアプリを開発することができます。

反対に、アプリの仕様が変更される可能性が高い場合(自社開発アプリによく見られる)、せっかく書いたテストコードが無駄になる可能性が高いため、テストは後回しにし、先にとにかく動くコードを書く作戦が有効です。

ものづくりでもソフトウェア作りでも、品質=コストであることに変わりはありません。

と同時に、品質=ユーザーの期待でもあります。

コストをかけて高品質なソフトウェアを作ることが求められているのか否か、プロジェクトのステータスや、納期、予算をもとに現実的に考えましょう。

実際にテストを実施する

さて、現実的に、どのようにテストを実施すればよいでしょうか。

開発に入る前に、テスト計画を立案することは良い習慣ですね。

APIのテストを実施する

まずは手始めに、サーバ側のAPIのテストを行ってみましょう。

クライアント(アプリ)の入力に対し、期待される出力が得られるか、最も効率的にテストできる方法です。

ツールは、Chromeブラウザの拡張機能として提供されている「Postman – REST Client (Packaged App)」を使います。

メソッドとパラメータを指定してAPIを呼び出したり、リクエストとレスポンスのヘッダーを確認したりできます。

RESTなAPIをテストするのに最適なツールです。

モデルのユニットテストを実施する

APIの簡単なテストが終わったら、モデルのユニットテストを行いましょう。

(1) サーバ側のモデルのユニットテスト

MVCフレームワークに装備されている標準のテストフレームワークを使えば十分です。

CakePHPであれば、PHPUnitをベースとしたテストフレームワークが提供されています。

(2) アプリ側のモデルのユニットテスト

こちらも標準のXCTest(iOS)、またはJUnit(Android)を使えば十分です。

コントローラーのユニットテストに進む

モデルのユニットテストが終わったら、コントローラーのユニットテストに進みましょう。

こちらも、標準のPHPUnit、XCTest、JUnitなどをベースとして行うことができます。

以降のテストは手動で十分

これ以降のテスト(ビューのテスト、結合・総合テスト)は、費用対効果の面を考えると、初期的には手動で十分です。

エクセルで画面ごとに分けて試験項目を作り、実機を操作して動作を確認していきます。

実力のある方は、自動化に挑戦してみると良いと思います。

第6回のまとめ

実装が終わったら、テストを行いましょう。

  • プロジェクトのステータスと納期と予算から、求められる品質レベルを現実的に設定する
  • 品質=コスト、品質=ユーザーの期待と心得る
  • Postmanを使ってAPIの簡単なテストを実施する
  • XXUnitシリーズを使ってモデルとコントローラーのユニットテストを実施する
  • それ以降のテストは手動で十分(余力があれば自動化)

本日は以上です。

連載目次

iOS/Androidアプリ開発入門「サーバ連動アプリを開発しよう!」

(10) 開発の旅をうまく乗り切る(最終回)
(9) バックグラウンドでメール送信
(8) サーバの監視とデータのバックアップ
(7) リモートサーバ(本番環境)の構築
(6) ローカルでの単体・結合テスト
(5) コントローラーとビューの実装
(4) モデル実装
(3) API実装
(2) 画面設計・データベース設計・API設計
(1) 開発環境の構築

スポンサーリンク

 - コラム, 連載 ,