⏰ ShiftForge

シフト管理システム - 自動テスト練習用

ShiftForge - シフト自動割当・勤怠集計システム

ShiftForge

シフト自動割当・勤怠集計システム - テスト自動化練習用

複雑な時間計算、法令チェック、自動割当アルゴリズムなどの自動テスト練習に最適なシフト管理システムです。
労働基準法準拠、夜間割増、残業計算、重複チェックなど実際の勤怠管理で使用される機能を体験できます。

ShiftForgeの特徴

実際の勤怠管理システムで使用される複雑な時間計算・法令チェック機能を忠実に再現

スタッフ管理機能

スキル設定: 複数職種・習熟度・必須資格
勤務制約: 最大/最小時間・連続勤務上限
希望休: 定期休・単発休・希望時間帯
可用性: 曜日別・時間帯別の出勤可能性

自動割当機能

需要スロット: 店舗×日×時間帯×必要人数
役割マッチング: スキル要件と保有スキル照合
最適化: 貪欲アルゴリズム・ヒューリスティック
手動調整: ドラッグ&ドロップで微調整

時間計算機能

実労働時間: 終了-開始-休憩時間
残業計算: 週40時間超過分の自動算出
夜間時間: 22:00-05:00の区間交差計算
端数処理: 分単位合算→15分切上げ設定可

法令チェック機能

休憩時間: 6h超45分・8h超60分必須
労働上限: 週40時間・月45時間制限
インターバル: 勤務間隔8時間以上確保
重複チェック: 同時刻複数シフト禁止

給与試算機能

基本給: 時給×実労働時間
残業割増: +25%(週40h超過分)
夜間割増: +25%(22:00-05:00)
深夜残業: +50%(夜間×残業の重複)

テスト重点項目

日跨ぎ: 21:30-06:15の夜間加算境界
休憩充足: 6h01m→45分、8h01m→60分
週境界: 月曜/日曜起点での週次合算
重複検証: 同一人物の時間重複検出

推奨テストシナリオ

実際の勤怠管理で発生する複雑なケースに基づいたテストパターン

01. 基本シフト作成

1. スタッフを登録(スキル・制約設定)
2. 需要スロット設定(店舗・時間帯・人数)
3. 自動割当実行・結果確認
4. 手動調整(ドラッグ&ドロップ)
5. 法令チェック・違反項目の修正

02. 時間計算・割増処理

1. 日跨ぎシフト(21:30-06:15)登録
2. 夜間時間(22:00-05:00)の正確な算出
3. 週40時間超過での残業計算
4. 深夜残業(夜間×残業)の重複割増
5. 端数処理(15分切上げ)の適用確認

03. 法令チェック・違反検出

1. 6h01m勤務→45分休憩不足の検出
2. 8h01m勤務→60分休憩不足の検出
3. 連続勤務インターバル8h未満の検出
4. 同一人物の時間重複シフト検出
5. 違反自動修正・再チェック実行

04. 大量データ・パフォーマンス

1. 100名×31日×3交代の大量データ作成
2. 自動割当アルゴリズムの処理時間測定
3. 月間勤怠集計の一括計算実行
4. CSV/ICS一括出力・ファイル検証
5. 手動編集後の整合性維持確認

テスト用サンプルデータ

自動テスト練習用のサンプルデータセット

基本シフトデータ

20名スタッフ×7日間の基本シフトパターン

スタッフ数: 20名
シフト期間: 7日間

違反パターンデータ

法令違反・重複・制約違反を含むテスト用データ

違反種別: 8種類
違反件数: 15件

大容量データセット

パフォーマンステスト用の大容量シフトデータ

スタッフ数: 100名
期間: 31日間

Playwright テスト課題例

実践的なテスト自動化課題で技術力向上

課題1: 自動修正ループ

オートフィル実行→違反アラート件数を取得→0になるまで「自動修正」ボタンを繰り返し押すループテストを実装

検証ポイント:
  • 違反件数の動的取得
  • 条件付きループ処理
  • 無限ループ防止策

課題2: ファイル出力検証

1ヶ月分ICSファイルをダウンロード→ファイル存在確認→件数・DTSTART/DTEND形式の詳細検査

検証ポイント:
  • ダウンロード完了の検出
  • ファイル内容のパース
  • ICS形式の検証

課題3: 重複検出テスト

複数人の重複シフトを意図的に作成→保存ボタン押下→ブロック動作と適切なエラーメッセージ表示を検証

検証ポイント:
  • バリデーション動作確認
  • エラーメッセージ内容検証
  • 保存処理の阻止確認

課題4: ドラッグ&ドロップ操作

シフトをドラッグ&ドロップで移動→時間重複チェック→法令違反の動的更新→整合性維持を総合検証

検証ポイント:
  • ドラッグ操作の実装
  • リアルタイム検証
  • UI状態の変化確認