レビューでは見つからないものを、非開発者のテストはどう捕まえるか

嘘

  • 成功メッセージは出たのに、何も保存されていない。コードを読んでわかるのは意図であって、結果ではありません。

混乱

  • 技術的には動作しているのに、誰も最後までたどり着けないフロー。これに気づけるのは人間だけです。

思い込み

  • 作った本人のアカウントでは動くが、それ以外の全員で失敗する。

  • 最初のアカウントを持つ当人には、まず見えません。

コード不要の4つのチェック

  • 実行して、リロードする。 「画面が更新された」と「保存された」を切り分けます。費用対効果が最も高いチェックです。

  • 別人として実行する。 2つ目のアカウントを使えば、権限まわりの思い込みはすぐ表に出ます。

  • わざと間違える。 不正な値を送信し、アプリが黙って失敗するのではなく、明確にそう伝えるかを確認します。

  • 何もない状態で実行する。 空の状態は最後に作られ、最もテストされません。

修正につながる報告の書き方

技術用語は一切要らず、3文で足ります。何をしたか(順番どおりに)。何を期待したか。代わりに何が起きたか。「フォームに入力して保存を押した、一覧に項目が出ると思った、リロードするまで一覧は空だった」——これだけで不具合の位置を直接指し示し、解釈の余地を残しません。

そしてこれ自体がひとつのチェックです。一度書き留めておけば、以降のあらゆる変更のあとに実行できます。

報告しても誰も動いてくれないとき

この役割で最もよくある不満は、本物の問題を見つけたのに放置されることです。たいていの原因は信じてもらえないことではなく、報告に着手できるだけの情報が含まれていないことです。

その差を埋めるのは3点です。どのアカウントの、どの環境かを書くこと。特定の種類のユーザーだけで起きる不具合は、別の不具合だからです。毎回起きるのか、たまに起きるのかを書くこと。断続的な事象と常に起きる事象は原因がまったく異なり、どちらかがわかるだけで1時間節約できます。そして期待した挙動を明示すること。半分のケースでは、意見の相違はコードではなく要件についてだったと判明し、それは早い段階で表に出す価値があります。

どれも技術用語を必要としません。これが、仕分けされるだけの報告と、実際に直る報告との差です。

チェックを自分より長生きさせる

非開発者によるテストの限界は、常に技能ではなく、一人の人間が再確認できる量でした。フローを平易な言葉で記述し、それを自動で実行させれば、誰かがフレームワークを習得しなくても、その天井は外れます。

ターミナルは一切必要ありません。TestSpriteのダッシュボードでプロジェクトを作成し、チェック内容を平易な言葉で記述して、アプリを指定するだけです。チームの開発者が同じことをコマンドラインから行いたい場合は、 CLI リポジトリにあります。

経路は2つあり、選択は実質「パイプラインを誰が持つか」で決まります。ダッシュボードから GitHub App を接続する方法はリポジトリへの変更が一切不要で、ビルドがすでに発行しているデプロイに反応します。 GitHub Actions のステップを追加する方法は、チェックをリポジトリ内に置くので、ビルドの他の部分と同じようにレビューを受けられます。

TestSpriteはあなたのチェックをどう恒久的な資産に変えるか

同僚に説明するのと同じようにフローを記述すれば、TestSpriteがそれをアプリに対して実行します。テストコードもフレームワークもターミナルも不要です。ダッシュボードでプロジェクトを作り、製品を指定し、例の3文を書く——何をしたか、何を期待したか、その後に何が成り立っているべきか。

以降は変更のたびに実行されます。この記事の4つのチェックは、手で繰り返すものではなくなり、あなたが別の仕事をしている間も機能し続ける記録になります。

価値は具体的です。何が起きるべきかというあなたの知識が、あなたの頭の中だけに留まらなくなる。それが、その貢献を他の全員から見えるようにし、あなたが次の仕事に移ったあとも残るものにします。

コードを学ぶ必要はありますか?

ありません。フローを平易な言葉で記述してください。あなたが加える価値は「何が起きるべきかを知っていること」であり、それはコーディングの技能ではありません。

自分のチェックが本物かどうか、どう確かめますか?

対象をわざと壊して、チェックが失敗することを確認してください。1分で済み、それが何かに繋がっている唯一の証明です。

開発者に報告を軽くあしらわれたら?

例の3文を使ってください。期待値を伴う具体的な手順は、「壊れています」よりはるかに退けにくいものです。

変更の前と後、どちらでテストすべきですか?

両方です。変更前から存在していたチェックは、その変更が何かを壊したかどうかを教えてくれます。そちらのほうが価値の高い方向です。

ひとつだけ確認するなら、何が最善ですか?

何かを実行して、リロードする。ここで失敗する製品は他のどこよりも多く、しかも5秒で済みます。

要点

コードを読めないことは、ここでは強みです。

非開発者によるソフトウェアテストは、嘘・混乱・思い込みという、コードレビューでは構造上見えない3つを捕まえます。リロードする、2つ目のアカウントを使う、わざと間違える、空の状態で試す。そしてチェックを書き留め、その場限りで終わらせないことです。