クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

AIが書いたコードのテスト

このレッスンのあとで: 使う前に、例と端の場合を使って、テストを書ける。

60分のレッスンコマンド2件AI コーディングエージェントのラボ:opencode でコードを説明・修正し、その結果を確かめる

生成コードのテストとは

テストとは、関数に決まった入力を与えて、期待する答えが返るかを調べる小さなプログラムです。AIアシスタントが書いたコードも、使う前にテストで確かめます。

読んで正しく見えても、特別な入力で壊れるコードは多くあります。テストは、その壊れ方を先に見つけます。

このレッスンのゴール

メモ

使う前に、例と端の場合を使って、テストを書ける。

今日のキーワード

ことばいみれい
テストケース入れる値と、期待する答えの1組です。
期待値正しければ返るはずの答えです。
境界値結果が変わる境目と、その前後の値です。999, 1000, 1001
端の場合空やゼロなど、ふつうでない入力です。
回帰テスト直したあとに、前のテストを動かし直すことです。

学生が入力するセルは、このプレビューでは空白です。

先に期待値を決めてから動かす

テストで大切なのは、答えを見る前に、期待値を自分で決めておくことです。答えを見てから決めると、出た値を正しいと思い込みます。

次のコードは、「1000円以上で1割引」と頼んで返ってきたものと考えます。

1000円の割引を確かめる

コード: python
def lunch_price(price):
    # 1000円以上なら1割引にする、という頼みでした。
    if price > 1000:
        return price * 9 // 10
    return price

print(lunch_price(1500))
print(lunch_price(1000))

# 1000円ちょうどの期待値は何でしょうか。出た値と比べます。

境界値の選び方

入れる値期待値ねらい
999999境目の1つ下
1000900境目ちょうど
1001900境目の1つ上

学生が入力するセルは、このプレビューでは空白です。

空や、ありえない値でも試す

もう1つの攻めどころが、端の場合です。空の入力、ゼロ、マイナス、表にない名前を、わざと入れます。

次の Run は、ラボの売店のコードに、表にない商品とマイナスの金額を渡して表示します。何も変えず、見るだけです。最初の状態では、£-0.20 と undefined が出ます。

端の場合を表示する

コマンド
docker exec -w /home/node/project agent node -e 'const s = require("./shop"); console.log(s.asPounds(-20), s.total(["tea"]))'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

「テストが全部通ったから、コードは正しい」と考える人がいます。通ったのは、書いたケースの範囲だけです。書いていない入力は、まだ誰も確かめていません。

直したら、全部のテストを動かし直す

コードを1か所直すと、別の場所が壊れることがあります。直したあとは、前のテストも全部動かし直します。これを回帰テストと呼びます。

ラボには5つのテストがあります。次の Run で動かすと、最初の状態では4つが通り、1つが失敗します。

ラボのテストを動かす

コマンド
docker exec -w /home/node/project agent node --test

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

このラボとソースについて: AI コーディングエージェントのラボ:opencode でコードを説明・修正し、その結果を確かめる

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。