kubell Creator's Note

ビジネスチャット「Chatwork」のエンジニアのブログです。

ビジネスチャット「Chatwork」のエンジニアのブログです。

読者になる

チーム内のテスト管理のフロー改善について

こんにちは。認証チームのいまひろです。

こちらはkubell Advent Calendar 2024 シリーズ2の12月9日の記事になります。

さて、認証チームでは、Jiraを使用してプロジェクト管理を行い、TestRailを使用してテスト管理を行なっています。

機能開発は、Jira上に作成された課題(ストーリーチケット)単位で行われ、課題内のユーザーストーリーを満たしていることを保証するために、TestRailによるテスト管理が行われています。

そのため、Jiraの課題の中にTestRailのテスト管理がシームレスなフローとして組み込まれていると、開発のプロセスが全体的に管理しやすくなり、生産性や品質向上につながることが期待できます。

この記事では、チームに導入したテスト管理のフロー改善についてお話しさせていただきます。

課題完了までのステップ

認証チームでは、課題の完了条件を満たしていることを保証するためのテストをTestRailで管理しています。

課題完了までのステップは下記の通りで、いくつかのステップで問題点が存在していました。

  1. テストケース作成
    TestRailの管理画面でテストケースの作成を行うため、テスト作成者ごとに記述形式やテスト粒度が異なってしまう

  2. TestRailのTest Run作成

  3. 課題とTest Runの紐付け
    課題とTest Runの紐付けが課題にTest Runのリンクを貼るという手作業となっていたため、抜け漏れが発生してしまう

  4. Test Runのテスト実施

  5. 課題完了
    Test Runの実施結果が課題と紐づいていないため、正しい状態で課題が完了されているかどうかを把握できない

これらの問題は、テストプロセスの効率性と信頼性を低下させ、最終的にはプロダクトの品質に影響を与えてしまうため、改善に取り組みました。

改善の取り組み

具体的には、以下の2つの仕組みを導入することにより改善を図りました。

  • Gherkin記法からTestRailのテストケースを作成できる仕組みの導入
  • 課題の中でTest Runの実施状況を把握できるJiraの拡張アプリの導入

Gherkin記法からTestRailのテストケースを作成できる仕組みの導入

BDD(Behavior Driven Development)でも使用されるGherkin記法で記述したテキストベースのテストケースからTestRailのテストケースを作成する仕組みを導入しました。

Gherkin記法は下のような Given - When- Then の単純な形式での記述を強要するため、テスト作成者を問わずに、均質なテストを作成することができます。

Feature: ユーザーログイン

  Scenario: 有効な資格情報でのログイン成功
    Given ユーザーがログインページにいる
    When ユーザーが有効なユーザー名とパスワードを入力する
    And ユーザーがログインボタンをクリックする
    Then ユーザーはダッシュボードページにリダイレクトされる
    And ユーザーはウェルカムメッセージを見る

また、テストケースをGitHubで管理することが可能となり、プルリクエストのレビューが必須となることで、テスト品質の向上も期待できます。

さらに、IDEでテストケースを作成することができるため、Gherkin記法のdescriptionで因子や水準を丁寧に記述することで、AIによる補完機能を活用することができ、短時間で安定したテストを作成することができるようになりました。

課題の中でTest Runの実施状況を把握できるJiraの拡張アプリの導入

TestRailとJiraの連携を強化するため、TestRailの実施状況を把握できるtestrail-extension-for-jiraというJira拡張アプリを導入し、Jira上でのテスト実施の追跡を効率化しました。

テストが全てパスしたとき

テストにFAILEDがあるとき

改善後のステップ

  1. Gherkin記法でのテストケース作成
    Gherkin記法で記述したテストケースを作成します。テキストベースなのでIDEを活用でき、テスト作成者を問わずに、均質なテストを作成することができるようになりました。

  2. プルリクエストの作成
    作成したテストケースのプルリクエストを作成します。これにより、テストケースのレビューと承認プロセスが確立されました。また、このタイミングで、自動的にTestRail上にテストケースが作成されるようになりました。

  3. TestRailのTest Run作成

  4. Jira拡張アプリを使用した課題とTest Runの紐付け
    作成したTest RunをJiraの課題のTest Runパネルに紐づけます。これにより、テスト状況が直接Jira上で確認できるようになりました。

  5. Test Runのテスト実施

  6. 課題完了
    Jiraの自動化の機能を利用して、課題に紐付くTest Runが全てパスしていないと課題を完了できないようにしているため、テスト完了時のみ課題を完了することができるようになりました。

課題とTest Runの紐付け

改善後の成果

新しい仕組みを導入し、テスト管理のフローを改善することで、多くの成果を得ることができました。

  • Gherkin記法の使用が強制されることで、テストケースの品質が均一化しました
  • IDEでのテストケース作成が可能になり、AIの補完機能の恩恵を受けることができ、テストケースの作成速度が向上しました
  • プルリクエストのレビュープロセスが追加されることで、テストケースの品質が向上しました
  • Jiraの課題上で、視覚的に課題の完了条件を満たしているかどうかがわかるようになりました
  • ワークフロー制御により、Test Runのテストをパスしていない課題が完了されてしまう、ということがなくなりました

まとめ

今回のテスト管理フローの改善により、チームの開発効率性と生産性だけでなく、テスト品質自体も向上できたように思います。

今は過渡期だからということなのかもしれませんが、GUIベースからテキストベースに変更する(退行させる?)ことで、AIの恩恵を受けることができる点については、自分的には面白いなと思いました。