コラム
TOP >  コラム >  コラム詳細

Androidアプリのツボ  第11回 : テストをメンテナンスすることの重要性
はじめに


テストをメンテナンスすることの重要性

これまでの連載ではAndroidアプリケーションのテスト自動化について解説しました。

しかし、せっかく多大な労力をかけてテスト自動化に成功したとしても、メンテナンスされないテストコードは負債にすぎません。

テスト自動化の恩恵を受けるためには、CI(Continuous Integration:継続的インテグレーション)を導入し、継続的にかつ頻繁に自動化したテストを実行し、テストをメンテナンスしていくことが必要です。

Android開発でCIを実現するための手法について、2回に分けて解説していきたいと思います。

前述の「メンテナンスされないテストコードは負債」となってしまう原因は何でしょうか。

開発期間中は、一日に何度もアプリケーションコードがコミットされます。機能が追加されるかもしれませんし、仕様が変わるかもしれません。

このため、コミットに合わせてテストも修正していかないと、意味の無いテストコードになってしまいます。

不具合がないのにテストが失敗してしまったり、テスト対象の機能を正しくテストできていなかったり、テストされていない機能があったりすると、どのアプリケーションコードや機能の動作が保証できるのかわからなくなり、テストをしても必要な情報が得られません。




著者:宮田 友美
株式会社オープンストリーム(http://www.opst.co.jp/)において、アーキテクトとしてAndroidの調査・研究および案件支援に従事。約1年の育児休業を終え、2013年4月から職場に復帰。一児の母として業務に勤しむ毎日を送っている。Androidテスト部部長( http://www.android-tec.org)。

テストを実施することによって知りたい情報

● 不具合のあるソースコード・機能はどれか
● 新しい機能を追加したり、機能を変更した際に他の機能を壊したりしていないか(デグレードのチェック)
● テストが実施されている範囲はどこか(テストカバレッジ)
  など




アプリケーションコードとテストコードの乖離が大きくなればなるほど、放置されたテストケースを再び全て成功させるためにかかる労力は大きくなります。

読者の皆さんも、メンテナンスされずに放置されて、テストが通らなくなってしまったテストコードに遭遇し、途方に暮れた経験があるのではないでしょうか?

このような状態になってしまうと、テストが全て成功する状態にもっていくのは一筋縄では行きません。

そのまま活用されることなくテストコードが放置されてしまうと、テスト自動化にかかったコストも無駄になってしまいます。また、テストを再びメンテするにも大きなコストが必要となってしまいます。

こういった事態をさけるため、テスト自動化を実現する場合は次のことを必ず守る必要があります。




テスト自動化を実現する際に守るべきこと

● テストを頻繁に実行し、テストが失敗したらすぐにアプリケーションコードやテストコードを修正する
● アプリケーションコードを修正したらテストも合わせてメンテナンスする



上記のルールを守ることで、自動化したテストを”負債”ではなく大きな”資産”として運用できます。自動化したテストはプロジェクトの資産として活用出来るよう、日々メンテナンスしていきましょう。

メンテナンスのためには、全てのテストを頻繁に実行する必要があります。

しかし、テストを実行すること自体が開発の負担になってしまっては本末転倒です。

そこで、テストの実行自体も自動化してしまいましょう。


1| 2| 3| 4

>

>>



第10回 第12回


連載一覧

1| 2| 3

>

>>