読者です 読者をやめる 読者になる 読者になる

Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

モダンなテスト管理プロセスのためにテスト管理ツール3つを比較検討したはなし

f:id:daipresents2:20170326215034p:plain



こんにちは。メルカリのテストエンジニアとして、スマホアプリのテスト自動化をぶりぶりしている@daipresentsです。

テスト自動化をすすめるにあたり、効率のよいテストを作るために、既存のテストケースについて調べる機会がありました。その過程で現状のQAプロセスも確認したのですが、以下のようなテストケース管理の課題があることがわかりました。

  1. それぞれのテストエンジニアが、それぞれの方法で、それぞれのテストケースを管理しているため、ナレッジが横につながりにくい。
  2. 共有されているリグレッションテスト項目の更新が追いついておらず、情報が古くて使いにくい。
  3. 人数が増えてきて、ふりかえりや改善がやりにくい。

1については、現在、職能横断的なチーム構成になっているため、プロジェクトやプロダクトに集中できる環境である反面、それぞれのチームにいるQAエンジニアどうしのつながりが薄れてしまうことが原因に感じました。

2については、テストの自動化をするにしても、そもそも自動化対象のケースを信頼できないという課題。スピードによって犠牲になった部分がじわじわと表面化してきたように感じました。

3については、1と似ていますが、「テスト」という同じ命題に対して、人数が増えてきたため横串でどうしていくのかという課題です。議論は面倒だし、改善は疲れます。なにより目の前の仕事は忙しい。やがて「ふりかえらない」が「ふりかえれない」となり、課題や問題がどんどんたまり、働くモチベーションを奪ってしまう可能性も秘めています。

なぜテスト管理ツールなのか

これらの課題に対するアクションとして、テスト管理ツールの導入が浮かびました。ツールに期待する要件は以下です。

  • タコツボ化問題: ツールでテストケースを一元管理できて、知識を蓄積できる。さらに、その知識を探しやすいこと。
  • 情報が古い問題: 簡単に更新できること。仕様変更といった歴史的経緯を見える化するために更新をトラッキングできること。
  • 横串問題: 「ひとつのものをみんなで見る」環境ができること。これによって、課題にアクションしやすい雰囲気を醸成するきっかけになれば最高。

僕はこれまでに、RedmineやJenkinsなど、開発を支援するツールをいろいろ調査・検証・導入サポートしてきました。このあたりのコツやポイントは勉強会でも発表してきましたが、導入はひとつのきっかけでしかありません。

今回の場合、ツールにもっとも期待するのは、「ツール利用によって、作業の流れがひとつにまとまっていく。これによって誰がやっても同じ手順となり、暗黙知が減り、成果が最適化されていく」という点です。個性の必要のない作業フローであればひとつになればいいし、ムダやムラが減ればその分、別の価値に時間を使えます。

ツールの調査方法について

対象となるツールについては、知っているものや興味のあるものをあつめ、投票で上位3サービスにしぼりました。環境を自分で持ちたくないのでSaaSが対象です。

QASymphony

f:id:daipresents2:20170326221127p:plain

Top 15 Best Test Management Tools of 2017 – Our Reviewsという記事でも一番目に登場するQASymphonyは、テストケースの管理だけでなく、GitHub上に登録された自動テストを呼び出して継続的デリバリをするためのJIRAプラグインなども提供しています。品質にスコープを当てた要件管理からリリースまでの全部入りソリューションです。

TestRail

f:id:daipresents2:20170326221039p:plain

シンプルでUIも使いやすいドイツのサービスです。Redmineに似たインターフェースなので、日本のユーザには使いやすい印象があります。

TestLodge

f:id:daipresents2:20170326220951p:plain

料金設定がケースや実行結果数ごとにになっているのが特徴的なのがこのTestLodgeです。要件とケースが紐付けやすいため、大切な情報をこのツールに集約することができます。

SaaSだと他にKintone、Test link、Quality Center、Testcollabなどが候補に上がりました。SaaS以外だとSquashTMが一番人気でしたが、デモサイトを見る限り我々が求める要件を満たせてなかったので比較対象に入れていません。

チェックした要件について補足すると、上にも要件を書きましたが、それ以外のものも追加しています。

まず、自動化における要件として、外部サービス連携など、完全に自動化するのは難しいテストのために「自動化されているテストとそうでないテストが簡単に分類できること」が必要でした。あとは、テストを実行するテスターとテストスクリプトで、進捗を共有したかったので、「テストケースのステータス変更がAPI経由でできること」も入れています。

さらに、ツール利用者であるテストエンジニアにも要件をまとめてもらいました。

各要件のチェックは、各ツールの無料トライアルを利用しました。実データを流し込んでいろいろいじってみましたが、見つからなかった機能や気がつけなかった機能もあるとおもいます。「いやそれできるよ」とかあれば、ぜひ教えてください。料金についても、調査時の最安プランを元にしています。詳しくは各ツールのサイトをご確認下さい。

要件チェック表

◎を3点、○を2点、△を1点で計算。

要件 TestRail TestLodge QASymphony
簡単なケース管理
ケースのトラッキング
簡単なテスト計画づくり(テストスコープ、アサインなど)
テストの進捗管理 △(担当者別一覧が見えない)
テスト結果管理
テスト結果の一括入力
バグ管理ツール連携
レポート出力
操作性
通知 ○(Email)
カスタムフィールド ○(でも設定見つからず)
自動テストからのステータス変更(API)
自動テストとの連携 ○(テストのキックまでできそう)
インポート/エクスポート ○(In:XML CVS, Out: XML CVS EXCEL ○(In: Goole Docs, Out: CSV XML HTML ○(In/Out: Excel)
英語化
料金プラン ○ 月$25/user(1-20 Users) ◎ 月$39(500 Test cases) ☓ 要問合せなので謎
合計 29点 22点 28点

かろうじてTestRailがナンバーワンとなりました。

デモの実演と結果発表

さらに、ここまでの調査結果をまとめて、テスト自動化エンジニアやテストエンジニアに集まってもらい、デモを交えながら実際の利用ケースをシミュレーションしました。

そのときのログがこちら。

  • 感想
    • 1箇所にテストケースがまとまっているのは とてもい
    • そのケースを育てることもできるし、個別に持っているケースをみなで使わせてもらうこともできるのがとてもいい
    • メルカリは「情報を取りに行く姿勢」を推奨しているので、検索が楽になるのはとてもいい
  • 使い方の話
    • アサインはTestRun(テスト実施の単位をどのツールもこう呼んでいた)ごと。そのTestRunを二人で作業するとなると、TestRun自体をわけたほうがよさそう。
    • TestRailだとOSごとにTestRunをわけるといったマトリクスも組めるがが、それをやると煩雑になる。
    • テスト計画やTestRunといったデータ単位については、使いながら最適化していく必要がある。
  • レグレッションテストについて
    • 自動化チームは、ステップごとにケース記述でき、シナリオが書きやすいため、Excelタイプよりこういったテスト管理ツールのほうが最適と感じた
    • 手動テストだと、ステップで書くのが煩雑。TestRailだとテストの目的とゴールだけ記述する「Exploratory Session」というテンプレートでテストケースを記述できるのでこれが最適かも

実際の使い方を考えた結果、TestRailを試験導入することになりました。

その後のこと

f:id:daipresents2:20170326223244j:plain

現在ではTestRailを使った実験がはじまっています。テストケースはすべてツールに流し込まれ、それぞれのケースの改善や見直しもはじまりました。

そして最近、これまで使っていたスプレッドシートを使わず、TestRailだけを使ってレグレッションテストを実行する実験もやりました。テスト実施者とテスト自動事項の担当者がひとつのテーブルに集まり、使い方を議論しながらのテスト実施です。

f:id:daipresents2:20170326224827p:plain

手動も自動も同じレポートで進捗管理したので一体感があり、近くで見ていてとても盛り上がったように感じました。自動化側はまだAPI経由のステータス更新ができていませんが、すぐに実現できそうです。

そして、実施後、こんなコメントが届きました。

ツール導入でこれまでのやり方を見直すきっかけにもなったが、それよりもこれまでに作ったテストケースを見つめ直す機会になった。

ツールをきっかけに、本来育てていきたいテストケースに意識が向いたのはとてもすばらしいことです。

まだレグレッションテストではじまったばかりですが、将来的には、新規機能開発のケースや、それ以外のテストにもツール活用を広げたいと思っています。今は人数が少なく手をつけられていませんが、いずれは自分たちでテスト管理ツールも作りこみたいところです。

最後に、テスト自動化チームのメンバー募集をはじめました! 国内外を問わず、

  • モバイルアプリの自動テスト
  • アプリのビルドパイプライン構築
  • 今回のような開発生産性向上のためのアクション

に興味のある方を絶賛募集しています。

興味のある方はぜひソフトウェアエンジニア(モバイルテスト)の募集要項をご確認くださいませー。