受け入れ試験仕様(Given When Then) - smileygames/dipper GitHub Wiki

dipper 受け入れ試験仕様(Given / When / Then)

本書は dipper の要求仕様を満たしているかを確認するための
ブラックボックス受け入れ試験仕様である。

内部実装には依存せず、
観測可能な挙動(DDNS更新・ログ・キャッシュ・通知)のみを評価対象とする。


1. IP 取得・更新基本動作

TC-01 IPv4 有効・IP 変化なし

Given

  • IPV4=on
  • 前回 IPv4 と現在 IPv4 が同一
  • DDNS 更新ゲートが有効

When

  • dipper を 1 回実行する

Then

  • DDNS 更新は行われない
  • 更新しない理由がログに出力される

TC-02 IPv4 有効・IP 変化あり

Given

  • IPV4=on
  • 前回 IPv4 と現在 IPv4 が異なる
  • DDNS 更新ゲートが有効

When

  • dipper を 1 回実行する

Then

  • IPv4 の DDNS 更新が 1 回行われる
  • 更新結果がログに出力される

TC-03 IPv4 無効

Given

  • IPV4=off
  • IPV4_DDNS=on

When

  • dipper を実行する

Then

  • IPv4 の取得処理は行われない
  • IPv4 の DDNS 更新は行われない
  • 無効理由がログに出力される

2. IPv6 動作

TC-04 IPv6 有効・DDNS 有効

Given

  • IPV6=on
  • IPV6_DDNS=on
  • IPv6 アドレスが取得可能

When

  • dipper を実行する

Then

  • IPv6 の取得が行われる
  • 条件を満たせば IPv6 の DDNS 更新が行われる

TC-05 IPv6 有効・DDNS 無効

Given

  • IPV6=on
  • IPV6_DDNS=off

When

  • dipper を実行する

Then

  • IPv6 は取得される
  • IPv6 の DDNS 更新は行われない

3. 定期更新(UPDATE_TIME)

TC-06 定期更新時間未到達

Given

  • UPDATE_TIME=1d
  • 前回更新から 1 日未満

When

  • dipper を実行する

Then

  • 定期更新は行われない

TC-07 定期更新時間到達

Given

  • UPDATE_TIME=1d
  • 前回更新から 1 日以上経過

When

  • dipper を実行する

Then

  • DDNS 定期更新が行われる
  • 更新ログが出力される

4. IP 変更チェック(DDNS_TIME)

TC-08 IP チェック時間未到達

Given

  • DDNS_TIME=5m
  • 前回チェックから 5 分未満

When

  • dipper を実行する

Then

  • IP チェックは行われない

TC-09 IP チェック時間到達

Given

  • DDNS_TIME=5m
  • 前回チェックから 5 分以上経過

When

  • dipper を実行する

Then

  • IP チェックが行われる
  • 変化があれば DDNS 更新判定が行われる

5. IP キャッシュ更新

TC-10 IP キャッシュ更新無効

Given

  • IP_CACHE_TIME=0

When

  • dipper を実行する

Then

  • IP キャッシュの更新は行われない

TC-11 IP キャッシュ更新有効

Given

  • IP_CACHE_TIME=1h
  • 前回キャッシュ更新から 1 時間以上経過

When

  • dipper を実行する

Then

  • IP キャッシュが更新される

6. DDNS 更新回数制御(負荷抑制)

TC-12 連続実行時の抑止

Given

  • 直前に DDNS 更新が行われている
  • 更新抑止ゲートが有効

When

  • 短時間で dipper を再実行する

Then

  • DDNS 更新は行われない
  • 抑止理由がログに出力される

7. エラー処理・通知

TC-13 IP 取得失敗

Given

  • IP 取得処理が失敗する状態

When

  • dipper を実行する

Then

  • DDNS 更新は行われない
  • エラーログが出力される

TC-14 DDNS 更新失敗

Given

  • DDNS API がエラーを返す

When

  • dipper を実行する

Then

  • エラーがログに出力される
  • 状態はキャッシュに記録される

TC-15 エラーメール通知有効

Given

  • EMAIL_ADR が設定されている
  • ERR_CHK_TIME が有効
  • エラー状態が発生している

When

  • dipper を実行する

Then

  • エラー通知メールが送信される
  • 通知間隔は ERR_CHK_TIME に従って抑制される

8. マルチドメイン対応

TC-16 複数ドメイン更新

Given

  • 複数ドメインが設定されている
  • 各ドメインの更新条件が有効

When

  • dipper を実行する

Then

  • 各ドメインに対して適切に DDNS 更新が行われる
  • 結果が個別にログ出力される

合格判定基準

以下が満たされていれば合格とする。

  • 不要な DDNS 更新が行われないこと
  • 必要な更新が 1 回だけ行われること
  • 挙動の理由がログから判断できること
  • キャッシュ状態が実行結果と矛盾しないこと