テストケース練習:複雑な純粋関数②
仕様
hr.icon
テーマ:個人向けローンの審査結果を判定する関数を実装します。
関数の仕様:
https://scrapbox.io/files/6911ff6211108340d90e6f51.png
審査後の結果
code: ts
type LoanDecision =
| { status: 'approved'; interestRate: number; amount: number }
| { status: 'rejected'; reasons: string[] } // 複数の否決理由
interestRateは金利のこと。
https://scrapbox.io/files/6911ff59b70bfea4e8c05f9c.png
https://scrapbox.io/files/691200ae2e84065c70e2ebd4.png
テストケース洗い出し
hr.icon
引数のグルーピング
table: Grouping
年齢 19/70、20/69、40
年収 299、300、1000
勤続年数 0、1、10
信用スコア 599、600、850
借入金額 年収*3、年収*5、年収*5+1
テストケース一覧
1つ1つの条件を固定で見ていく
table: 年齢
No. 条件 他条件 期待
1 19/70 他は成功 年齢が否決理由
2 20/69 他は成功 成功
3 40 他は成功 成功
table: 年収
No. 条件 他条件 期待
1 299 他は成功 年収が否決理由
2 300 他は成功 成功
3 1000 他は成功 成功
table: 勤続年数
No. 条件 他条件 期待
1 0 他は成功 勤続年数が否決理由
2 1 他は成功 成功
3 10 他は成功 成功
table: 信用スコア
No. 条件 他条件 期待
1 599 他は成功 信用スコアが否決理由
2 600 他は成功 成功
3 850 他は成功 成功
table: 借入金額
No. 年収 借入金額 他条件 期待
1 1000 5001 他は成功 借入金額が否決理由
2 1000 5000 他は成功 成功
3 1000 3000 他は成功 成功
どれか2つ以上の条件が否決になる(適当に3つほどサンプリング)
全ての条件が否決になる(1ケース)
金利の結果も見ておく
table: 金利検証
No. 信用スコア 期待
1 600/699 3.5
2 700 2.5
3 850 2.5