受け入れ試験仕様(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=offIPV4_DDNS=on
When
- dipper を実行する
Then
- IPv4 の取得処理は行われない
- IPv4 の DDNS 更新は行われない
- 無効理由がログに出力される
2. IPv6 動作
TC-04 IPv6 有効・DDNS 有効
Given
IPV6=onIPV6_DDNS=on- IPv6 アドレスが取得可能
When
- dipper を実行する
Then
- IPv6 の取得が行われる
- 条件を満たせば IPv6 の DDNS 更新が行われる
TC-05 IPv6 有効・DDNS 無効
Given
IPV6=onIPV6_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 回だけ行われること
- 挙動の理由がログから判断できること
- キャッシュ状態が実行結果と矛盾しないこと