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

無料レッスン

自分のケースでテストする

このレッスンのあとで: 自分で考えたケースで、AIのコードをテストできる。

50分のレッスンコマンドなし

ちょうど1mの棚

ある市役所では、粗大ごみの手数料を、品物の一番長い辺で決めています。50cm以下は300円、100cm以下は600円、それより長いと1,000円です。

申し込みサイトの計算は、AIが書いたコードでした。担当者は、30cmと150cmで試して、問題なしとしました。

ところが、ちょうど100cmの棚を申し込んだ市民に、1,000円と表示されました。

このレッスンのゴール

メモ

自分で考えたケースで、AIのコードをテストできる。

今日のキーワード

ことばいみれい
テストケース入力と、期待する結果の組です。
期待する結果要件から決めた、正しい答えです。
通常のケースふだんよく来る入力です。30cm
境界のケースルールが切り替わる、ちょうどの値です。100cm
異常なケースめったにないが、起こりうる入力です。0cm、マイナス

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

期待する結果は要件から決める

テストケースは、入力と期待する結果の組です。

期待する結果は、コードを実行する前に、要件から決めます。先に実行してから決めると、出てきた答えをそのまま正しいと思ってしまいます。

市役所の要件は「100cm以下は600円」です。だから、100cmの期待する結果は600円です。

やってみよう: 手数料のテスト

コード: python
# 粗大ごみの手数料: 50cm以下は300円、100cm以下は600円、それより長いと1000円。
# AIが書いた関数です。
def fee(length):
    if length <= 50:
        return 300
    if length < 100:
        return 600
    return 1000

# テストケース: [長さ(cm), 期待する手数料(円), 説明]
cases = [
    [30, 300, "通常: 小さな椅子"],
    [150, 1000, "通常: 大きな本棚"],
    [100, 600, "境界: ちょうど100cmの棚"],
]
for case in cases:
    result = fee(case[0])
    if result == case[1]:
        print("合格", case[2])
    else:
        print("失敗", case[2], "期待:", case[1], "結果:", result)

# 3つとも合格になるように、関数を1か所だけ直しましょう。

ケースは3種類から選ぶ

通常のケースは、毎日のように来る入力です。境界のケースは、ルールが切り替わるちょうどの値です。50cmや100cmがそうです。

異常なケースは、めったにないが起こりうる入力です。0cm、マイナスの長さ、空の入力などです。

AIは、通常のケースはよく当てます。まちがいは、境界と異常に隠れています。

手数料のテストケース

長さ種類期待する結果
30cm通常300円
150cm通常1,000円
50cm境界300円
51cm境界600円
100cm境界600円
0cm異常要件にない: 担当者に聞く

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

やってみよう: ケースを足す

コード: python
# 要件: 市役所の窓口は、8時30分から17時15分まで受け付けます。
# 時刻は「時」と「分」の2つの整数で渡します。
def is_open(hour, minute):
    now = hour * 60 + minute
    return now >= 8 * 60 + 30 and now <= 17 * 60 + 15

# ケースを足しましょう。通常、境界、異常を1つ以上ずつ書きます。
# [時, 分, 期待する結果(True か False)]
cases = [
    [10, 0, True],
]
for case in cases:
    print(case[0], "時", case[1], "分 期待:", case[2], "結果:", is_open(case[0], case[1]))

よくある誤解

注意

多くの人は、コードを書いたAIにテストも書かせれば十分だと考えます。AIが要件を読みちがえていたら、テストも同じまちがいをします。期待する結果は、自分で要件から決めましょう。

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