ペアテストをやってみて

はじめに

こんにちは。VoicyでQAエンジニアをやっております まっつん です。

今回は開発者と一緒にテスト設計(ペアテスト)をやってみてどうだったかという話をしてみようかと思います。

※記事内では「分析、設計、実装」全て含めてテスト設計と表現します。

そもそもどうしてペアテストをやったの?

VoicyにはQAエンジニアが私一人しかおらず、それまではチーム外から色々なチームのテスト業務を請け負うような形でした。
複数のチームから「xxxxxx機能を開発したのでテストお願いしますー」のような感じで依頼され、それをほぼ全て一人でテストするような感じです。

仕様理解して、テスト設計して、テスト実行して。 それを複数のチーム分。

ん〜無理っ!手が足りません。

最初はかろうじてテストをこなせる状態(ヘルプしてもらいながらなんとかギリギリ)でしたが、Voicyも成長中の会社でどんどんエンジニアも増え、チームも増え、すぐにテストが追いつかなくなってしまいました。

そこで各チーム内で自律的にテスト活動回せる状態にするために、まずは1つのチームに帯同してQA関連、テスト関連の知識の共有を行うことにしました。
(最初は目的を明文化できいませんでしたが...)

そのための手段の一つとして開発者とのペアテストを行うことにしました。

どのようにしてペアテストをやったの?

手探りでやっていたり、時間の制約などで毎度同じではありませんでしたが、概ね以下のような流れでペアテストを行なっていました。

  1. これまでどのような感じでテストを行なっていたかを確認
  2. 仕様を整理し、テスト対象となる機能の洗い出し
  3. 洗い出した機能をテスト観点一覧と突き合わせて必要なテスト観点の抽出
  4. 状態遷移図やデシジョンテーブルなどを用いて複雑な条件を整理
  5. テストケースの作成

開発者と私の二人で「どういう考えで観点を抽出したか」「なぜこういったことを考慮する必要があるのか」などを会話しながらテスト設計を行いました。

ペアテストをやってみてわかったこと

Voicyのエンジニアはほとんどが中途入社で背景もバラバラです。
当然これまでのテストの経験もバラバラで、前職でもテスト設計をしていた人、ほぼテスト設計なんてやったことがなかった人など様々です。

にもかかわらず、テスト設計をお願いしただけでは、ほぼ全員がいきなりテストケースを書き始めるということが分かりました。

時ど場合によって必ずしも悪いことではありませんが、機能が複雑な場合これでは漏れが出る可能性が高くなってしまいます。

JSTQBによると、テストプロセスは計画から終了作業までを含めて、以下の5つに分けられています。

1,4,5の部分は一旦置いておいたとしても、テストケースを作成する上で本来必要な「分析」「設計」を飛ばして「実装」を行なっている訳なので、テストが漏れてしまうリスクが上がってしまいます。

もう一点はテスト活動そのものへの向き不向きがはっきりしていることです。

本人のモチベの有無に関わらず、性格的に向いている方と向いていない方に分かれるように感じました。
概ね予想通りではありましたが、大雑把だったり、細かいことが苦手だったりする方は他の方よりも少し苦手そうに見えました。

ペアテストをやったことのメリット
  • ペアテストを行なった開発者のテストに関するスキルが向上した
  • テストや品質に対するモチベーションが上がった

メリットとしてはこの2点に尽きるかと思います。
テスト関連のスキルが向上したということは、もともと目標としていた「各チーム内で自律的にテスト活動回せる状態にする」に一歩近づいたことになります。

またモチベーションが上がった ≒ 興味が沸いた ともとれ、興味がある方がスキルの向上も早くなるはずです。

ペアテストをやったことのデメリット
  • 1人でテスト設計するよりも工数がかかってしまう

これに関しては当たり前ですが、ペアテストをやっているうちは2人分の工数がかかってしまいます。
また1度や2度で劇的にスキルアップすることも難しいため継続的にペアテストを行えないのであれば、ペアテストを行うことがマイナスになってしまうことも考えられます。

まとめ

今回はペアテストをやってみてどうだったかをお話ししてみました。
時間こそかかりますが、1対1で行える分知識もしっかり共有することができ、テスト関連の教育を行う上ではとても有効な手段だと感じています。
次は別のチームに帯同してまたペアテストを行えればと思っていますので、そこでまた新しい発見があれば共有したいと思います。