テストの方針を相談

あなたはこの会話で何が起きて欲しいですか?

このチャットシステムのテストを書く必要があるのだけど、どうテストするのか整理したい

そのチャットシステムは、どんな種類のチャットシステムですか?

ユーザが入力して、キーワードを抽出して、質問をする

そのユーザは、どんな種類のユーザですか?

人間なんだけど、人間が毎回入力してテストするのは大変だから、機械的にテストしたい

その毎回は、どんな種類の毎回ですか?

NGKW

そのNGKWは、どんな種類のNGKWですか?

これはキーワード削除のコマンドなんだけど、それが質問文に使われるのは何かおかしい。移植の時にバグらせたに違いない。こういうのを人間を使わずにテストしたい。

その人間は、どんな種類の人間ですか?

文字列を送信する

その文字列は、どんな種類の文字列ですか?

普通の日本語だったりコマンドだったりする

その日本語は、どんな種類の日本語ですか?

キーワードを含んでる

そのキーワードは、どんな種類のキーワードですか?

質問に使うべき文字列

その文字列について、他に何かありますか?

キーワードを含んでない入力もあり得る

そのキーワードについて、他に何かありますか?

コマンドをキーワードに選んでしまうのバグ

そのキーワードは、どこにありますか?

入力された文字列の中にある

その文字列は、どこにありますか?

ネットワーク経由でサーバに与えられる

そのサーバは、どんな種類のサーバですか?

チャットシステムのカードが走ってる、テストしたい

そのチャットシステムについて、他に何かありますか?

色々修正したいが、壊れないようにしたい
> これはキーワード削除のコマンドなんだけど、それが質問文に使われるのは何かおかしい。移植の時にバグらせたに違いない。こういうのを人間を使わずにテストしたい。
この人間について、他に何かありますか?

人間の入力は時間がかかるからプログラムが代わりに入力して結果を観察したい

その人間は、どこにありますか?

NG

そのNGは、どんな種類のNGですか?

これもバグってるな

そのバグは、どんな種類のバグですか?

コマンド実行後に期待された出力が得られない

その出力は、どんな種類の出力ですか?

コマンド文字列に対して質問してはいけない、期待された出力を記述できればそれがテストになる

その出力について、他に何かありますか?

サーバからのレスポンスを直接読めばいい

そのサーバについて、他に何かありますか?

記憶を持つと厄介なので、テスト用に記憶のない環境を作ってそれを使う仕組みにしよう

その記憶は、どんな種類の記憶ですか?

ユーザごとの記憶が今後追加されるので、、ユーザ名をtestにして、テストの際にそのユーザを削除すればよい

あなたが価値を感じているのは何ですか?

テストされることによって、安心して修正できるようになる
このバグについて、他に何かありますか?

こういうのを、人間が使ってる時に発見すると、ユーザとしての自分と開発者としての自分ができて集中が削がれる

その人間は、どのあたりにありますか?

(質問無視)とりあえず、各種コマンドについてAPIを叩いてレスポンスを確認するコードを書こうっと

そのレスポンスは、どんな種類のレスポンスですか?

JSONでテキストだけが返ってくる。内部状態を確認したい時には別の仕組みが必要。Firebaseのレコードを直接ダウンロードして検証するのが良さそう。
> こういうのを、人間が使ってる時に発見すると、ユーザとしての自分と開発者としての自分ができて集中が削がれる
この人間は、何のようですか?

演劇をしながら共演者の演技指導してるみたい
> こういうのを、人間が使ってる時に発見すると、ユーザとしての自分と開発者としての自分ができて集中が削がれる
この人間は、どこから来るのですか?

作者だからバグを見ると直したくなるんだな

そのバグは、どこにありますか?

チャットシステムの中に

そのチャットシステムは、どこにありますか?

Herokuで動いてる、テストする時にはローカルで動かす方がいいか
> こういうのを、人間が使ってる時に発見すると、ユーザとしての自分と開発者としての自分ができて集中が削がれる
あなたはこの人間をどう知るのですか?

NG

そのNGについて、他に何かありますか?