ども、山中です。👦
今回は、評価方法(テスト方法)を考えてみます。
主に単体テストについて考えます。✨
評価とは、「現実の結果=期待の結果」を試す事です。
この記事で言う「現実の結果」は、プログラム(実装)の事ですが、
「期待の結果」の「期待」は、プログラム(実装)以外で期待する場合があります。
関数の評価方法として、ドライバとスタブを使う方法があります。
ドライバもスタブも、初めて名前を聞く人は良く分からないと思いますが、
飲食店の客と裏方スタッフみたいなものです。
客がドライバで、裏方スタッフがスタブで、ウェイターが関数です。
テストなので、客も裏方スタッフもニセモノですが、それっぽく動きます。👆
評価、テストを始める時、「正しい期待結果」を先に書きますか?
「正しくない期待結果」を先に書きますか?
もし、「正しい期待結果」だけを書いたとして、テストし、テストOKが出たとします。
でも、待ってください。この場合、「そのテストの正しさ」はどのぐらい期待できますか?
テストの期待結果は、テスト対象の正しさを保証するものです。
「テスト自体の正しさは保証されない」という事実があります。
もしも、「テスト自体が正しくない場合」、「テストOK」は信用できません。
例えば、「実はテストコードを通っていなかった場合」であっても、
テスティングフレームワークはOKとしてしまう可能性があります。
いまいちピンと来ない人のために、会話で表現してみましょう。👆
上記の会話は、
「テスティングフレームワークが評価コードを評価せずに、テストコードをOKとした場合」
を表現したものです。
テスティングフレームワークが、会話の中の評価コード(2.)を評価した場合、
不正解になるはずですが、上記の会話では正解になっています。
先にわざとNGになるコードを書く事は、テストコード自体のバグを検出する事が可能になりますのでお勧めです。
以上、今回は評価方法についてのお話でした。😄👌
記事にしたい事をチラホラ書いていたのですが、
風呂敷が広がりすぎて収集しない場合が多いため、今回の記事は短めです。
次回の評価方法のお話は、組合せ問題について書く予定です。
閲覧ありがとうございました。😎😎✨
今回は、評価方法(テスト方法)を考えてみます。
主に単体テストについて考えます。✨
評価方法
評価方法を説明する前に、「何を評価したら良いのか?」を考えて見ます。評価とは、「現実の結果=期待の結果」を試す事です。
この記事で言う「現実の結果」は、プログラム(実装)の事ですが、
「期待の結果」の「期待」は、プログラム(実装)以外で期待する場合があります。
評価対象を関数とした時の、評価方法
関数の評価方法として、ドライバとスタブを使う方法があります。
ドライバもスタブも、初めて名前を聞く人は良く分からないと思いますが、
飲食店の客と裏方スタッフみたいなものです。
客がドライバで、裏方スタッフがスタブで、ウェイターが関数です。
テストなので、客も裏方スタッフもニセモノですが、それっぽく動きます。👆
(例) 客「パスタ(食べないけど)をくれ」 → ウェイター「パスタ作って」 → 裏方スタッフ「パスタ(食べられないけど)作るよ」 裏方スタッフ「パスタ(食品サンプル)作ったよ」 → ウェイター「パスタです」 → 客「ありがとう(食べないけど)」
評価方法の指針
「あえて、間違うという事の利点。」
「正しくない期待結果」を先に書きますか?
もし、「正しい期待結果」だけを書いたとして、テストし、テストOKが出たとします。
でも、待ってください。この場合、「そのテストの正しさ」はどのぐらい期待できますか?
テストの期待結果は、テスト対象の正しさを保証するものです。
「テスト自体の正しさは保証されない」という事実があります。
もしも、「テスト自体が正しくない場合」、「テストOK」は信用できません。
例えば、「実はテストコードを通っていなかった場合」であっても、
テスティングフレームワークはOKとしてしまう可能性があります。
いまいちピンと来ない人のために、会話で表現してみましょう。👆
(例) 1. テスティングフレームワーク君「ここで問題ですっ、4307171713 + 24783801 =?」 2. テストコードさん「4331855514」 3. テスティングフレームワーク君「正解!」 4. テストコードさん「いや、違うよ。4331955514が正解だよ」 5. テスティングフレームワーク君「えっ(汗」
上記の会話は、
「テスティングフレームワークが評価コードを評価せずに、テストコードをOKとした場合」
を表現したものです。
テスティングフレームワークが、会話の中の評価コード(2.)を評価した場合、
不正解になるはずですが、上記の会話では正解になっています。
先にわざとNGになるコードを書く事は、テストコード自体のバグを検出する事が可能になりますのでお勧めです。
以上、今回は評価方法についてのお話でした。😄👌
記事にしたい事をチラホラ書いていたのですが、
風呂敷が広がりすぎて収集しない場合が多いため、今回の記事は短めです。
次回の評価方法のお話は、組合せ問題について書く予定です。
閲覧ありがとうございました。😎😎✨