🐶

ベンチャー企業でQAチームを立ち上げました

2023/12/05に公開

1. はじめに

Social Databank Tech Blog Advent Calendar 2023の5日目です。
今回はSocial Databank(以下SDB)でQAチームを立ち上げた話をします。

SDBにQAチームができたのが1年前。それまでQAという組織が存在せず、各メンバーがそれぞれの機能・コードをレビューし、リリースを行なっていました。
そのため、サービスの規模や開発メンバーが増えるにつれて以下の課題が発生しました。

  1. 品質が各メンバー・PJに依存する
    a. 検証項目が作成する人によって粒度が変わる
    b. テストコードを書くPJとそうでないPJがある
    c. 仕様が特定のメンバーに属人化している
  2. 品質に関するルールや規定がない
    a. 障害が発生しても有識者が場当たり的に対応している
    b. リリースに関する判定基準がない

以上の理由から、QAチームを立ち上げ組織全体の品質向上を目指すことにいたしました。

2. QAチームの取り組み

QAチーム立ち上げの際は、以下のことを意識しました。

  • 大きな変更は行わない
    • 大きく変更すると導入のコストや学習コストが増加し、機能リリースにリソースを割けない
  • 小さな成功を積み重ねる
    • 成果が出ないとどんどん辛くなる。小さなことでも成果を出せるように、取り組みの規模を小さくする
  • QAチームから導入する
    • 成果が出るかわからないものは説明しづらい。QAから実施し、成果のあるものを広めていく
  • 闇雲に指標・ツールを導入しない
    • 目的なしに指標・ツールを導入しても、目的と手段が入れ替わる。小さな成果の積み重ねから、必要があれば導入を検討する

こちらの方針もとに、各課題を解決するための活動を開始しました。

テストファーストを意識する

まずは、大きな改善をせず各メンバーの品質意識を高める取り組みを行いました。そのために、テストファーストを意識する組織づくりを実施いたしました。

ここで言う「テストファースト」は、「テストコードを書いてそれを通るコードを作成する」ではなく、「開発チーム全体が早めのテストを意識するように開発していく」という広義の意味合いで取り組みを行いました。

具体的な流れは以下の通りとなっております。

  1. 要件が検討されている段階で簡易のテスト設計を行う(ここではテストケースまで作成しない)
  2. テスト設計の段階で不明な要件、検討漏れ、テストに必要なデータ等が見つかれば、すぐに開発メンバーにフィードバックする
  3. 要件が作成され実装されると同時にQAチームも本格的なテスト設計を行う(できればこの段階でテストコード作成にも挑戦してみる)
  4. 実装とテスト設計を同時並行に走らせ、疑問点や問題点をすぐに共有するようにする
  5. 実装が終わると同時にテスト実施が開始できるようにする

上記を行うことで、

  • テスト担当者はどのようなテストを行うのか
  • テスト担当者が行うテストを満たすを行っているか
  • 事前に必要なデータ・環境はないか

を考えるようになり、テスト開始前に要件の漏れや実装を確認する流れを作ることができました。
また、運用フロー図やドキュメントフォーマットをできる限り簡素に作成し、実践しながら改善を行いました。

勉強会の開催

QAチームを立ち上げる中で、開発部全体で勉強会を開催する流れができてきました。
そのため、その流れに乗ってQAチームでも品質の勉強会を開催することにいたしました。

まずは、品質に関する知識を学習するために以下の講義を開催いたしました。

  • 品質初級講座
    • 新卒〜3年目までを対象としたソフトウェアにおける品質とは何かを説明する講座
  • テスト項目の作成方法
    • どのようにテスト項目を作成するのか、観点の出し方から作成方法を実際の開発チケットをもとに実践する講座
  • プロセス改善
    • 運用プロセスの改善・仕組み化のやり方と、これまで、これからのSDBで実施中のプロセス改善についての講座


Notionで作成した講義資料

テスト自動化の導入

手動テストを増やしただけでは、いずれ人手の限界を迎えます。そのため、テスト自動化に取り組むことで一定の品質を担保しリリース速度の向上を目指しました。

自動テストを導入するにあたっては、まずはどのような自動化ツールを導入するのがいいかを検討いたしました。
検討にあたって「Playwright」と「Cypress」が有名であったため、両者を比較しPlaywrightを導入することに決定いたしました。


PlaywrightとCypressの比較

そして、現在どのような目的でどの機能を自動化するか、自動化全体のテスト計画を作成しております。

障害発生からポストモーテムまでのフローを整備

障害発生時は各自が声をかけ、障害対策用のチャンネルに集まり対策を検討・実施しておりました。
しかし、属人化しているところもあったので、以下のような障害発生からポストモーテムまでのフローを整理し、障害対応に取り組みました。


障害の対応の流れ(一部抜粋)

参考資料のURL

3. 今後の取り組み

現在SDB内での品質意識は徐々に高まって来ていると感じています。そのため、今後の目標としてテスト自動化・非機能に注力したいと考えています。

自動のテストを増やすことで、一定の品質を担保し手動では実施の難しかったテストを取り組めるようになります。
また、非機能に関する改善を増やすことで、機能・非機能両面から品質を担保できるような組織づくりを行いたいと思っております。

ソーシャルデータバンク テックブログ

Discussion