10 KiB
Training System Test Flow
เอกสารนี้ใช้สำหรับทดสอบระบบตามโครงสร้างล่าสุดของโปรเจ็กต์:
Super AdminจัดการOrganizersAdminจัดการUsers,Courses,Training Records,Training Matrix,ReportsUserเห็นเฉพาะDashboard,Training Records,Reports- ใช้
usersเป็น person entity เดียวของระบบแล้ว ไม่ใช้employeesเป็น runtime module
1. Scope
ครอบคลุม flow หลักดังนี้:
- Authentication และ organizer access
- Organizer management
- User management
- Course management
- Training record CRUD
- Certificate upload
- Approval workflow
- Training matrix
- Dashboard
- Reports และ CSV export
- RBAC และ data scoping
2. Test Prerequisites
ก่อนเริ่มทดสอบ ให้ตรวจสอบว่า:
- ตั้งค่า
.env.localแล้ว - PostgreSQL ทำงานได้
- migrations ถูก apply แล้ว
- dev server รันได้ด้วย
npm run dev - มีข้อมูล master ของ
departmentsและpositions
บัญชีทดสอบที่แนะนำ:
super_admin1 คนadmin1 คนuser1 คน
ข้อมูลทดสอบขั้นต่ำ:
- 1 organizer
- 2 departments
- 2 positions
- 3 users
- 3 courses
3. Recommended Test Order
- Auth and access
- Organizer management
- User management
- Courses
- Training records
- Certificates
- Approval workflow
- Training matrix
- Dashboard
- Reports
- RBAC regression
4. Auth And Access
4.1 Sign In
ทดสอบ:
- เปิด
/auth/sign-in - login ด้วย
super_admin - login ด้วย
admin - login ด้วย
user
ผลที่คาดหวัง:
super_adminเข้า organizer flow ได้adminเข้า/dashboard/overviewได้userเข้า/dashboard/overviewได้
4.2 Sign Up Disabled
ทดสอบ:
- เปิด
/auth/sign-up - เรียก
POST /api/auth/register
ผลที่คาดหวัง:
- ผู้ใช้สมัครเองไม่ได้
- ระบบแจ้งชัดว่าต้องให้ admin สร้างบัญชีให้
4.3 Protected Routes
ทดสอบ:
- logout
- เปิด
/dashboard/overview - เรียก
/api/users
ผลที่คาดหวัง:
- หน้า dashboard redirect ไป sign-in
- protected API ตอบ
401
5. Organizer Flow
ใช้ super_admin
5.1 Organizer List
ทดสอบ:
- เปิด
/dashboard/organizers
ผลที่คาดหวัง:
- เห็นรายการ organizer ทั้งหมด
5.2 Create Organizer
ทดสอบ:
- สร้าง organizer ใหม่
ผลที่คาดหวัง:
- สร้าง organizer สำเร็จ
- master data ของ organizer ใหม่ถูก seed ให้
6. User Flow
ใช้ admin หรือ super_admin
6.1 User List
ทดสอบ:
- เปิด
/dashboard/users - search
- filter status
- sort
- pagination
ผลที่คาดหวัง:
- ตารางโหลดข้อมูลได้
- filter และ sort ทำงานถูกต้อง
6.2 Create User
ทดสอบ:
- กดเพิ่ม user
- กรอก
full name,email,phone,employee code - เลือก
departmentจาก dropdown - เลือก
positionจาก dropdown - ระบุ
hired date - สำหรับ
super_adminให้เลือก organizer ได้ - สำหรับ
adminorganizer ต้อง default จาก active organizer
ผลที่คาดหวัง:
- สร้าง user สำเร็จ
- user ใหม่มี membership ใน organizer ที่เลือก
6.3 Edit User
ทดสอบ:
- แก้ไข department, position, role, status
ผลที่คาดหวัง:
- ข้อมูลอัปเดตสำเร็จ
7. Sidebar Visibility
7.1 Super Admin
ผลที่คาดหวัง:
- เห็น
Dashboard,Organizers,Users,Courses,Training Records,Training Matrix,Reports
7.2 Admin
ผลที่คาดหวัง:
- เห็น
Dashboard,Users,Courses,Training Records,Training Matrix,Reports - ไม่เห็น
Organizers
7.3 User
ผลที่คาดหวัง:
- เห็นเฉพาะ
Dashboard,Training Records,Reports
8. Course Flow
ใช้ admin
8.1 Course List And Filters
ทดสอบ:
- เปิด
/dashboard/courses - search
- filter category
- filter status
ผลที่คาดหวัง:
- ตารางแสดงผลถูกต้อง
8.2 Create And Edit Course
ทดสอบ:
- สร้าง course ใหม่
- แก้ไขข้อมูล course
ผลที่คาดหวัง:
- create/update สำเร็จ
9. Training Record Flow
9.1 Admin Creates Training Record
ใช้ admin
ทดสอบ:
- เปิด
/dashboard/training-records - สร้าง record ใหม่
- เลือก
user - เลือก
course - กรอก date, type, hours, organizer, note
ผลที่คาดหวัง:
- สร้าง record สำเร็จ
- status เริ่มที่
pending
9.2 User Creates Own Training Record
ใช้ user
ทดสอบ:
- เปิด
/dashboard/training-records - สร้าง record ใหม่
ผลที่คาดหวัง:
- dropdown
userต้องมองเห็นได้เฉพาะตัวเอง - สร้าง record ของคนอื่นไม่ได้
9.3 List And Edit
ทดสอบ:
- list records
- filter by status
- filter by type
- เปิดหน้า detail/edit
ผลที่คาดหวัง:
adminเห็นทุก record ใน organizeruserเห็นเฉพาะ record ของตัวเอง
10. Certificate Flow
10.1 Upload Certificate
ทดสอบ:
- เปิดหน้า edit training record
- อัปโหลด
pdf,jpg,jpeg,png
ผลที่คาดหวัง:
- upload สำเร็จ
- metadata ถูกบันทึก
10.2 View And Delete
ทดสอบ:
- เปิดดูไฟล์ย้อนหลัง
- ลบ certificate
ผลที่คาดหวัง:
- เปิดไฟล์ได้
- ลบแล้วรายการหาย
11. Approval Workflow
11.1 Admin Review
ใช้ admin
ทดสอบ:
- เปิด
/dashboard/training-records?status=pending ApproveRejectRequest Changes- ใส่ reviewer note
ผลที่คาดหวัง:
- เปลี่ยน status ได้
- reviewer note ถูกบันทึก
11.2 User Restrictions
ใช้ user
ทดสอบ:
- พยายาม review record
- พยายามแก้ approved record
ผลที่คาดหวัง:
- review ไม่ได้
- approved record แก้ไม่ได้ตาม policy
12. Training Matrix
ใช้ admin
12.1 Create Rules
ทดสอบ:
- เปิด
/dashboard/training-matrix - เพิ่ม rule แบบ department -> course
- เพิ่ม rule แบบ position -> course
- กำหนด renewal period
ผลที่คาดหวัง:
- สร้าง rules สำเร็จ
12.2 Compliance
ทดสอบ:
- user ที่มี approved records ครบ
- user ที่ยังขาด course
- user ที่มี course หมดอายุ
ผลที่คาดหวัง:
- compliance คำนวณถูกต้อง
- missing courses แสดงถูกต้อง
13. Dashboard
13.1 Admin Dashboard
ใช้ admin
ผลที่คาดหวัง:
- เห็นภาพรวมระดับ organizer
- summary cards, charts, recent activity ใช้ข้อมูลจริง
13.2 User Dashboard
ใช้ user
ผลที่คาดหวัง:
- เห็นเฉพาะข้อมูลของตัวเอง
- ไม่เห็น organizer-wide management views
14. Reports
14.1 Admin Reports
ใช้ admin
ทดสอบ:
- เปิด
/dashboard/reports - filter ตาม user
- filter ตาม department
- filter ตาม expiring days
ผลที่คาดหวัง:
- ตารางรายงานอัปเดตตาม filter
- export CSV ได้
14.2 User Reports
ใช้ user
ทดสอบ:
- เปิด
/dashboard/reports - ทดลองแก้ query string เอง
ผลที่คาดหวัง:
- เห็นเฉพาะข้อมูลของตัวเอง
- server บังคับ self-scope แม้ปรับ URL เอง
- export CSV ได้เฉพาะข้อมูลของตัวเอง
15. RBAC Regression
15.1 Cross-Organizer Isolation
ทดสอบ:
- login ด้วย user ของ organizer A
- พยายามเปิดข้อมูลของ organizer B
ผลที่คาดหวัง:
- มองไม่เห็นข้อมูลข้าม organizer
15.2 Legacy Employee Routes
ทดสอบ:
- เปิด
/dashboard/employees - เปิด
/dashboard/employees/new
ผลที่คาดหวัง:
- ระบบพาไปหน้า
/dashboard/users
16. Final Regression Checklist
- sign-in / sign-out ทำงาน
- sign-up ถูกปิด
- sidebar แยกตาม role ถูกต้อง
- organizer flow ใช้งานได้
- users ใช้งานได้
- courses ใช้งานได้
- training-records ใช้งานได้
- certificate upload ใช้งานได้
- approval workflow ใช้งานได้
- training matrix ใช้งานได้
- dashboard ใช้งานได้
- reports และ CSV export ใช้งานได้
npm run buildผ่าน