Lewati ke isi

UAT — Domain SDM / HR (Sumber Daya Manusia)

User Acceptance Testing untuk modul kepegawaian Scola. Mencakup data pegawai, penggajian, cuti, kehadiran staf, dokumen digital, dan riwayat jabatan.

Tanggal: 2026-03-26 SSOT Ref: docs/domains/hr/README.md


1. Scope & Roles

Roles Terlibat

Role Akses Utama
Head Admin Full HR management (CRUD pegawai, payroll, cuti, dokumen, riwayat)
Admin Staff View pegawai, kelola dokumen
Principal HR overview dashboard, view summary
Teacher / Counselor View payslip pribadi, ajukan cuti, self-attendance
Foundation Chairman View payroll cost summary

Fitur yang Diuji

  1. Database Pegawai (list + detail)
  2. Penggajian (payroll management + payslip personal)
  3. PPh 21 Auto-calculation
  4. BPJS Auto-deduction
  5. THR Auto-calculation
  6. Cuti & Izin (request + approval + policy)
  7. Kehadiran Staf (self-attendance + report)
  8. Dokumen Kepegawaian Digital
  9. Riwayat Jabatan / Kepegawaian
  10. Dapodik/SIMPATIKA Export
  11. Principal HR Overview
  12. Foundation Payroll Cost View

2. Test Scenarios

2.1 Database Pegawai

# Scenario Role Steps Expected
PE-01 View daftar pegawai Head Admin Buka /hr/employee List pegawai tampil dengan nama, departemen, jabatan, status
PE-02 Tambah pegawai baru Head Admin Klik "Tambah" → isi form → Submit Pegawai baru tersimpan, muncul di list
PE-03 Edit data pegawai Head Admin Klik pegawai → Edit → Ubah data → Simpan Data terupdate
PE-04 View detail pegawai Head Admin Klik nama pegawai Detail lengkap: biodata, PTKP, BPJS, PKG, keluarga
PE-05 Filter pegawai Head Admin Filter berdasarkan departemen/status List terfilter sesuai kriteria

2.2 Penggajian (Payroll)

# Scenario Role Steps Expected
PY-01 Buat payslip pegawai Head Admin Buka /hr/payslip/create → pilih pegawai + periode → Compute Payslip ter-generate dengan komponen gaji lengkap
PY-02 Verify komponen gaji Head Admin Buka payslip → cek lines Gaji pokok, tunjangan, potongan BPJS, PPh21 tampil benar
PY-03 Batch payslip Head Admin Buka /hr/payslip-batch → pilih periode → Generate Semua payslip batch ter-generate
PY-04 View payslip pribadi Teacher Buka /hr/my-payslips List payslip milik sendiri (bukan pegawai lain)
PY-05 Detail payslip pribadi Teacher Klik payslip → view detail Komponen gaji, potongan, net salary tampil
PY-06 Payroll report Head Admin Buka payroll report → pilih periode Summary: total gross, deductions, net per departemen

2.3 PPh 21 Auto-calculation

# Scenario Role Steps Expected
TX-01 PPh 21 TK/0 Head Admin Compute payslip pegawai TK/0, gaji 10jt PTKP=54jt, PKP dihitung, tarif progresif 5% diterapkan
TX-02 PPh 21 K/2 Head Admin Compute payslip pegawai K/2, gaji 15jt PTKP=67.5jt, biaya jabatan max 500rb, PPh21 bulanan benar
TX-03 Biaya jabatan cap Head Admin Pegawai gaji >10jt Biaya jabatan = 500.000 (max cap)
TX-04 PKP negatif Head Admin Pegawai gaji rendah <4.5jt TK/0 PKP=0, PPh21=0 (tidak negatif)
TX-05 Bracket 15% Head Admin Pegawai PKP 100jt/tahun Layer 1: 60jt×5% + Layer 2: 40jt×15%

2.4 BPJS Auto-deduction

# Scenario Role Steps Expected
BJ-01 BPJS Kesehatan Head Admin Compute payslip, pegawai punya BPJS KES Potongan 1% employee, 4% company (max gaji 12jt)
BJ-02 BPJS JHT Head Admin Compute payslip JHT employee 2%, company 3.7%
BJ-03 BPJS JP Head Admin Compute payslip JP employee 1%, company 2% (max gaji 9.077.600)
BJ-04 BPJS JKK & JKM Head Admin Compute payslip JKK 0.24%, JKM 0.3% (company only, tidak di payslip)
BJ-05 Salary cap KES Head Admin Pegawai gaji 15jt BPJS KES dihitung atas dasar 12jt (cap)
BJ-06 Config management Head Admin Buka /hr/config/bpjs → update rates Rates tersimpan, payslip baru pakai rate terbaru

2.5 THR Auto-calculation

# Scenario Role Steps Expected
TH-01 THR full (≥12 bulan) Head Admin Set is_thr_payment=True, pegawai masa kerja >1th THR = 1 bulan gaji pokok + tunjangan tetap
TH-02 THR proporsional (<12 bulan) Head Admin Pegawai masa kerja 6 bulan THR = 6/12 × upah total
TH-03 THR prorate (resign) Head Admin Pegawai resign, final payslip THR prorate berdasarkan bulan kerja tahun berjalan
TH-04 THR not in period Head Admin Normal payslip (bukan periode THR) THR = 0 (rule tidak aktif)

2.6 Cuti & Izin

# Scenario Role Steps Expected
LV-01 Ajukan cuti tahunan Teacher Buka /hr/my-timeoff → ajukan cuti Request terkirim, status "Pending"
LV-02 Approve cuti Head Admin Buka /hr/leave/approvals → approve Status berubah "Approved", saldo berkurang
LV-03 Reject cuti Head Admin Reject request cuti Status "Rejected", saldo tidak berkurang
LV-04 Saldo cuti Teacher View saldo cuti pribadi Saldo akurat: sisa = total - terpakai
LV-05 Leave policy config Head Admin Buka /hr/leave/types → edit policy Jenis cuti, saldo awal, carry-over tersimpan
LV-06 Cuti melebihi saldo Teacher Ajukan cuti > saldo tersedia Sistem tolak / warning

2.7 Kehadiran Staf

# Scenario Role Steps Expected
AT-01 Self check-in Teacher Check-in via attendance page Waktu check-in terekam
AT-02 Self check-out Teacher Check-out via attendance page Waktu check-out terekam, durasi dihitung
AT-03 Attendance report Head Admin Buka /hr/attendance → filter periode Rekap kehadiran per pegawai tampil
AT-04 Late detection Head Admin Pegawai check-in terlambat Status "Late" muncul di report

2.8 Dokumen Kepegawaian Digital

# Scenario Role Steps Expected
DC-01 List dokumen Head Admin Buka /hr/documents Daftar dokumen pegawai dengan filter jenis & status
DC-02 Tambah dokumen Head Admin Klik "Tambah" → isi form → upload file → Simpan Dokumen tersimpan dengan attachment
DC-03 Filter by type Head Admin Pilih filter "SK Pengangkatan" Hanya dokumen SK Pengangkatan tampil
DC-04 Expiry warning Head Admin Dokumen dengan expiry <30 hari Tanggal kadaluarsa highlighted
DC-05 Cek file attachment Head Admin Klik dokumen yang ada file Icon file check hijau untuk yang ada attachment
DC-06 Access control Teacher Akses /hr/documents Hanya dokumen milik sendiri yang tampil
DC-07 Archive dokumen Head Admin Ubah status dokumen → "Diarsipkan" Status berubah, dokumen tetap ada tapi di-archive

2.9 Riwayat Jabatan / Kepegawaian

# Scenario Role Steps Expected
EH-01 List riwayat Head Admin Buka /hr/employment-history Timeline riwayat jabatan semua pegawai
EH-02 Tambah riwayat promosi Head Admin Tambah → Jenis "Kenaikan Pangkat" → isi detail Riwayat tersimpan, previous values auto-filled
EH-03 Tambah mutasi Head Admin Tambah → Jenis "Mutasi/Pindah Tugas" → isi departemen baru Riwayat tersimpan dengan dept sebelumnya
EH-04 Filter by change type Head Admin Filter "Kenaikan Pangkat" Hanya riwayat promosi tampil
EH-05 Search pegawai Head Admin Ketik nama pegawai Filter realtime berdasarkan nama
EH-06 Timeline icons Head Admin View timeline Icon berbeda per jenis perubahan (promosi=biru, mutasi=amber, dll)

2.10 Dapodik/SIMPATIKA Export

# Scenario Role Steps Expected
DP-01 Export data siswa Head Admin Buka Dapodik Export → tipe "Peserta Didik" → Export File Excel dengan format Dapodik (NISN, NIK, biodata)
DP-02 Export data GTK Head Admin Tipe "GTK" → Export File Excel GTK (NUPTK, NIP, sertifikasi)
DP-03 Export rombel Head Admin Tipe "Rombongan Belajar" → Export File Excel rombel (wali kelas, jumlah siswa)
DP-04 Skip incomplete data Head Admin Uncheck "Sertakan Data Tidak Lengkap" → Export Data tanpa NISN/NIP di-skip, statistik akurat

2.11 Principal & Foundation Views

# Scenario Role Steps Expected
PR-01 Principal HR overview Principal Buka HR dashboard Summary pegawai, attendance, leave stats
FD-01 Foundation payroll cost Foundation Chairman Buka payroll cost view Total cost per departemen, breakdown

3. Security Test Cases

# Scenario Expected
SEC-01 Teacher akses payroll management Denied (hanya view payslip pribadi)
SEC-02 Teacher akses payslip pegawai lain Denied (employee ID check)
SEC-03 Teacher akses document repo Hanya dokumen milik sendiri
SEC-04 Teacher akses employment history Hanya riwayat milik sendiri
SEC-05 Non-HR user create payslip Denied (access rights check)
SEC-06 Foundation lihat detail per pegawai Denied (hanya summary)
SEC-07 API tanpa auth 403 / redirect login

4. Performance Test Cases

# Scenario Expected
PERF-01 Load 500+ pegawai List render <2 detik
PERF-02 Generate batch payslip 100 pegawai Proses selesai <30 detik
PERF-03 Dapodik export 1000 siswa File generate <10 detik
PERF-04 Document repo dengan 1000+ dokumen Filtered load <2 detik

5. Integration Test Cases

# Scenario Expected
INT-01 Payslip → Accounting (journal entries) Payslip posted → journal entry terbuat otomatis
INT-02 BPJS config → Payslip computation Perubahan rate → payslip baru pakai rate terbaru
INT-03 Leave approval → Attendance Cuti approved → attendance auto-filled
INT-04 Employee document → Employment history SK linked antara document dan history record
INT-05 Golongan change → Meal rate auto Ubah golongan di kontrak → meal rate auto-adjust

6. Regulatory Compliance Checklist

# Regulasi Verifikasi
REG-01 UU HPP 2021 — PPh 21 5 bracket tarif progresif (5%, 15%, 25%, 30%, 35%)
REG-02 PMK 168/2023 — Biaya Jabatan 5% max Rp 500.000/bulan
REG-03 PTKP 2024 TK/0=54jt, K/0=58.5jt, K/1=63jt, K/2=67.5jt, K/3=72jt
REG-04 BPJS Kesehatan Employee 1%, Company 4%, max gaji 12jt
REG-05 BPJS JHT Employee 2%, Company 3.7%
REG-06 BPJS JP Employee 1%, Company 2%, max gaji 9.077.600
REG-07 BPJS JKK (sekolah) 0.24% (risiko sangat rendah)
REG-08 BPJS JKM 0.3%
REG-09 SE Menaker 6/2016 — THR ≥12bln = 1 bulan upah, <12bln = proporsional
REG-10 Permendikbud — Beban Kerja Guru Min 24 jam/minggu tatap muka untuk TPG

7. Test Data Requirements

Pegawai Test Data

  • PNS Gol III/A, K/2, gaji 5jt → PPh 21 rendah
  • Guru Tetap Swasta, TK/0, gaji 10jt → PPh 21 medium
  • PPPK Gol IV/A, K/3, gaji 15jt → PPh 21 tinggi, BPJS cap
  • Honorer, gaji 3jt → PPh 21 = 0 (di bawah PTKP)
  • Guru baru (masa kerja 6 bulan) → THR proporsional

Dokumen Test Data

  • SK Pengangkatan (no expiry)
  • Sertifikat Pelatihan (expiry 1 tahun)
  • Kontrak Kerja (expiry 30 hari — warning)
  • Ijazah + Transkrip (with attachment)

8. Sign-off Checklist

Automation Baseline

  • tests/e2e/hr/payroll-crud.spec.ts — payroll CRUD smoke + payslip self-service
  • tests/e2e/critical/tier1_hr_workflow.spec.ts — dokumen kepegawaian, riwayat jabatan, dan cuti request → approval
  • tests/unit/services/hrDocument.service.spec.js
  • tests/unit/services/leaveApprovalPolicy.spec.js
  • tests/unit/services/principalHrOverview.service.spec.js
  • tests/unit/services/payroll.service.spec.js
  • tests/unit/services/foundation.service.spec.js

Automation di atas adalah baseline teknis. Sign-off produksi tetap membutuhkan verifikasi operasional oleh Head Admin, Principal, dan Foundation pada environment pra-produksi/produksi.

# Item PIC Status
1 Database pegawai CRUD Head Admin
2 Payroll computation (gaji + potongan) Head Admin
3 PPh 21 all brackets correct Head Admin
4 BPJS all programs correct Head Admin
5 THR auto-calculation Head Admin
6 Cuti workflow (request → approve) Teacher + Head Admin
7 Self-attendance check-in/out Teacher
8 Document repository CRUD Head Admin
9 Employment history tracking Head Admin
10 Dapodik export (siswa, GTK, rombel) Head Admin
11 Payslip self-service Teacher
12 Principal HR overview Principal
13 Foundation payroll cost Foundation
14 Security access control QA
15 Performance benchmarks QA

Approved by: __ Date: __