よりよいテストを目指した取り組み〜はじめてのテスト分析編〜

こんにちは、エムティーアイの田熊です。モバイルアプリの開発をメインで行っています。 今回はモバイルアプリチームでのテストと、改善の取り組みついてお話します。

モバイルアプリチームのテスト状況

モバイルアプリの開発チームは複数ありますが、基本的にテストを専門で行う人はおらず開発者自身がテストを行います。 多くのチームは単体テストまでを自動化しており、高いレベルのテストについては手動で実施しています。

モバイルアプリの開発チームには標準的なテストプロセスやノウハウといったものがなく、テストで何をするかは個人に依存しています。 ところが多くのメンバーはテストに対するモチベーションが高くなく、テスト技術が高いとは言えない状態です。悲しいことに。

私の所属しているチームではこれまでの課題を解決するために、自分自身のチームにおけるテストの改善に取り組み始めました。 その一環として今まで意識的に実施していなかったテスト分析について、開発メンバーで一緒に作業をする機会を作りました。

これまでのテスト設計は、作成者の思いつきでテストケースが作られている場合がほとんどでした。 いきなりテストケースを作る前に、何をテストしたいのか掘り下げて考える時間を作りましょうというのが今回の狙いです。

やったこと

ある1機能の機能テストについての分析を開発メンバー3人で行いました。 まずテストの用語を知らないメンバーが多かったので、JSTQBシラバスをベースに、テスト分析は何をすべき活動なのかを確認しました。

私達は今回の活動の成果物として、以下の2つを設定しました。

  • どんなテストをするかを洗い出す
  • テスト観点を洗い出す

分析の手段はマインドマップを選択しました。理由は、取っ掛かりやすさです。 既に用語の理解でメンバーの体力が消耗されていたため、手段は学習が簡単なものを選択しました。 マインドマップの作成にはホワイトボードシートを使用しました。机の上で書けるし、アルコールティッシュで綺麗に消せるのでおすすめです。

分析作業は、以下の手順で行いました。

  1. マインドマップで機能分解
  2. 分解された機能についてどんなテストをしたいかを掘り下げて考える
  3. どんなテストをしたいかのそれぞれの項目を抽象化し、テスト観点として設定する

今回はボトムアップ的に進めました。 作業開始当初は、テスト観点としてどういったものを挙げていけばいいのかイメージができなかったためです。 具体的なテスト内容からテスト観点を導きだすような手順を取っています。

機能分解は全員プロダクトについての知識があるのでスムーズに進みました。 どんなテストをしたいかについても、正常系異常系含め活発に意見が出てきました。その中で仕様の考慮不足を発見し、一度作業を中断して確認の時間をとりました。

1番苦労したのはテスト観点として落とし込む作業です。 どんなものが観点になるのか(例えば、境界値チェックはテスト観点かについて話し合いました)、どこまで抽象化するのかやどんな名前をつければわかりやすいか、落としどころを見つけるのに苦労しました。 ああでもないこうでもないと議論を繰り返しながら、最終的に17個のテスト観点を洗い出しました。

よかったこと

分析活動の結果

  • 開発メンバー間で用語やテスト分析についての認識を共有できた
  • 何がテストしたいのかを掘り下げて考えることができた
  • テストの全体像が見渡せる成果物ができた
  • 共通で使用できるようなテスト観点が作成できた
  • 仕様の考慮不足を発見できた

あたりが達成できたことがよかったです。 特に用語やテスト分析の認識を共有できたことが大きく、今後の取組がすすめやすくなるのではと思っています。

今後

今回はプロトタイプ的に一部の開発メンバーでのみ作業を行いました。 まずは同様のメンバーが1人でテスト分析と分析結果をテストケースに落とし込むことができるようになることを目指しています。その上で他メンバーへの展開を行い、チーム全体で定着していけたらと思っています。

終わりに

よりよいテストを作るためにやらなければいけないことはまだまだ沢山あります。 また別の取り組みについてお話できるよう、頑張っていきたい所存です。