1228 คำ
6 นาที
CISA Series ตอนที่ 28 : D3 - Testing + IS Auditor Tools (UAT, certification, CAATs ใน SDLC)
สารบัญ

ผมเพิ่งเข้าใจว่าทำไม ITF, GAS, SCARF, snapshot, parallel simulation — ชื่อทั้งหมดที่ฟังเหมือน sci-fi — จริงๆ คือ ส่วนขยายของ auditor เอง ไม่ใช่เครื่องมือของ developer

ตอนผมอ่าน Section 3.5 รอบแรก ผมรู้สึก intimidated มากครับ alphabet soup เต็มไปหมด UAT, QAT, ITF, GAS, SCARF, CAATs — และทั้งหมดดูเป็นเรื่องของ developer ที่ผมไม่ใช่ ผมต้องหยุดอ่านหลายครั้งเพราะรู้สึกว่ามันไม่ใช่โลกของผม

จุดที่ทำให้ผมเริ่มไม่กลัวคือตอนเข้าใจว่าบทนี้แบ่งเป็น 2 ฝั่งชัดเจน ครับ ฝั่งหนึ่งคือ testing ที่ “ทีมโปรเจ็คทำ” (Unit, Integration, System, UAT, QAT) — ตรงนี้ auditor มีหน้าที่ “ตรวจว่าทำเพียงพอไหม”; ฝั่งสองคือ tools ที่ “auditor ใช้ทดสอบเอง” (ITF, GAS, SCARF) — ตรงนี้คือเครื่องมือของผมในฐานะ auditor ไม่ใช่ของทีม dev

พอแยกสองฝั่งออก ความรู้สึก intimidated หายไปเยอะครับ เพราะผมไม่ต้องเป็น developer ที่เขียน code ตามมาตรฐาน QAT ผมแค่ต้องเข้าใจมากพอที่จะถามว่า “QAT ผ่านแล้วทำไมยังต้องทำ UAT” หรือ “ITF กับ test environment ต่างกันยังไง” คำถามพวกนี้ผมตอบได้ — แม้ผมจะไม่ได้เป็นคน implement ระบบเอง

มี application control แล้ว แต่ control ที่ “design ดี” ไม่จำเป็นต้อง “ทำงานจริง” เสมอไป

นี่คือเรื่องของ Section 3.5 testing คือ quality gate ก่อน go-live และเป็นจุดที่ IS auditor มี dual role:

  1. ตรวจว่า testing process ของบริษัทเพียงพอไหม (ตรวจคนอื่น)
  2. ใช้ testing tool ของตัวเองเพื่อ verify control independently (ทดสอบเอง)

บทนี้คุยทั้ง 2 มิติ testing ที่ทีมโปรเจ็คทำ + tools ที่ auditor ใช้


Mental Model: Testing แต่ละแบบตอบคำถามคนละข้อ#

ก่อนเริ่ม ขอวาง mental model ก่อนครับ testing ไม่ใช่กิจกรรมเดียว แต่เป็น family ของ activity ที่แต่ละแบบตอบคำถามคนละข้อ

Testingคำถามที่ตอบ
Unit testingModule นี้ทำงานถูกตามที่ design ไหม
Integration testingModule หลายตัวทำงานร่วมกันได้ไหม
System testingระบบทั้งระบบทำงานตาม spec ไหม
Recovery testingระบบ recover ได้เมื่อ fail ไหม
Security testingคนที่ไม่ได้ authorize เข้าระบบได้ไหม
Load testingระบบรับข้อมูลปริมาณมากได้ไหม
Volume testingระบบ handle data volume ที่คาดได้ไหม
Stress testingระบบรับ concurrent users สูงสุดได้เท่าไหร่ก่อน fail
Performance testingระบบตอบสนองในเวลาที่ acceptable ไหม
QATระบบตรง technical specification ไหม
UATระบบทำงานตรงกับ business process จริงไหม

ทุกแบบต้องทำ ไม่ใช่เลือกอย่างใดอย่างหนึ่ง

กับดัก: Load testing = Stress testing

ไม่ใช่ครับ load = data volume, stress = concurrent users คนละ dimension ของ performance


QAT vs UAT — กับดักคลาสสิคของ exam#

นี่คือกับดักที่ออกข้อสอบบ่อยที่สุดของ Section 3.5

QAT — Quality Assurance Testing#

คนทำ: ทีม IT / QA team

ตอบคำถาม: ระบบทำงาน ตรงกับ technical specification ที่เขียนไว้ไหม

ตัวอย่าง:

  • API ตอบกลับใน 200ms ไหม (ตรง spec)
  • field “amount” รับค่าได้ถึง 999,999,999.99 ไหม (ตรง spec)
  • ระบบ handle 1,000 concurrent users ได้ไหม (ตรง spec)

UAT — User Acceptance Testing#

คนทำ: end users — คนที่จะใช้ระบบจริงหลัง go-live

ตอบคำถาม: ระบบทำงาน ตรงกับ business process จริง ไหม

ตัวอย่าง:

  • ฝ่ายบัญชีปิดเดือนด้วยระบบใหม่ — workflow ใช้งานได้จริงไหม
  • พนักงานขาย create quote → convert เป็น order → ออก invoice ได้ใน 3 click ไหม
  • ระบบรองรับ exception case ที่ business เจอจริง (เช่น customer ขอลด VAT ผ่าน workflow approval) ไหม

ทำไมต้องมีทั้งคู่#

QAT ผ่านไม่ได้แปลว่า UAT จะผ่าน เพราะ specification อาจ “ถูกต้องแต่ไม่ตรงกับความต้องการจริง”

ตัวอย่างที่เห็นบ่อย: spec เขียนว่า “ระบบต้องรองรับการอนุมัติ 3 ระดับ” implement ตามนั้น QAT ผ่าน แต่ UAT พบว่า process จริงต้องการ 4 ระดับสำหรับ transaction เกิน 1 ล้าน spec ผิดตั้งแต่แรก

UAT คือ โอกาสสุดท้าย ที่ end user จะบอกว่า “นี่ไม่ใช่สิ่งที่ฉันต้องการ” ก่อนระบบ go-live ที่แก้ยากกว่ามาก

กับดัก ⚠️: UAT delegate ให้ vendor ได้

ผิดครับ vendor มีแรงจูงใจให้ตัวเองผ่าน buyer ต้องทำเอง ใช้ test cases ที่ buyer เขียน + รัน test ในสภาพแวดล้อมที่ buyer ควบคุม

เรื่องนี้ผูกกลับไป ตอน 25 vendor acquisition trap


Other Testing Types ที่ทดสอบบ่อย#

Alpha + Beta Testing#

  • Alpha — ทดสอบโดยทีมภายในก่อนปล่อยออกนอกบริษัท
  • Beta — ทดสอบโดยกลุ่ม user จริงนอกบริษัท ก่อนปล่อย mass

Pilot Testing#

ปล่อยให้ user บางส่วน ใช้ก่อน เก็บ feedback แล้วค่อยขยาย ลดความเสี่ยงจากการ rollout ทันที

White Box vs Black Box Testing#

  • White box — ทดสอบโดยรู้โครงสร้างภายใน (logic paths, code branches) developer / programmer ใช้
  • Black box — ทดสอบจาก functionality ภายนอก ไม่สนโครงสร้างภายใน end user / QA ใช้

กับดัก: White box = ครอบคลุม 100%

ผิด ทดสอบ logic paths ทุกเส้นใน application ใหญ่เป็นไปไม่ได้ในทางปฏิบัติ เป้าหมายคือ adequate coverage ของ critical path

Regression Testing#

หลังแก้ไข code ใดๆ ทดสอบว่า ส่วนที่ดีอยู่แล้วยังทำงานได้ตามปกติ ไม่ใช่เน้นเฉพาะส่วนที่แก้

ในระบบที่ใช้ DevOps → regression test มักถูก automate เป็น test suite ที่รันทุก commit

Parallel Testing#

รันระบบใหม่ + ระบบเก่า พร้อมกันชั่วคราว เปรียบเทียบ output → ถ้าตรงกันต่อเนื่อง ระบบใหม่พร้อมรับ load เต็ม

กับดัก: Parallel = run ทั้ง 2 ระบบตลอดไป

ผิด เป็นเทคนิค validation ชั่วคราว เมื่อมั่นใจแล้วต้อง decommission ระบบเก่า

Sociability Testing#

ระบบใหม่ “อยู่ร่วม” กับระบบที่มีอยู่ในบริษัทแล้ว (database, network, other apps) โดยไม่รบกวนกันไหม


Data Integrity Testing#

เรื่องนี้เป็นเรื่องคู่ขนานกับ ACID ที่คุยใน ตอน 27 — ทดสอบว่า data integrity ในระบบ + ระหว่างระบบ ไม่เสียหาย

Relational Integrity#

ความสัมพันธ์ระหว่าง record ใน table ถูกต้องไหม เช่น primary key ไม่ซ้ำ, NOT NULL constraint ทำงาน

Referential Integrity#

Foreign key ชี้ไปยัง record ที่มีอยู่จริงไหม เช่น order ที่อ้าง customer_id = ต้องมี customer record นั้นจริง

ถ้า referential integrity break = มี orphan record ในระบบที่ไม่มีคนเป็น parent เป็น control gap ที่ทำให้ report ไม่ตรง

ACID Verification#

ทดสอบว่า:

  • Atomicity — fail ระหว่าง transaction ทำให้ rollback ครบไหม
  • Consistency — รัน transaction ที่ violate constraint ระบบ block ไหม
  • Isolation — รัน 2 transaction พร้อมกัน เห็นกันไหม
  • Durability — commit แล้วระบบล่ม ข้อมูลยังอยู่ไหม

IS Auditor’s Own Testing Tools — CAATs ใน SDLC context#

ถึงตรงนี้คือเนื้อหาที่ผมว่ามีค่าที่สุดของบท เครื่องมือที่ auditor ใช้ทดสอบเอง

ตอน Domain 1 ตอน 11 เราคุยเรื่อง CAATs (Computer-Assisted Audit Techniques) ในมุม continuous auditing ที่นี่เราคุย CAATs ในมุม SDLC เครื่องมือทดสอบ application controls ที่ auditor ใช้

ITF — Integrated Test Facility#

หลักการ: สร้าง “test entity” หลอกในระบบ production แล้วส่ง test transaction เข้าไปเหมือนเป็น real customer ดูว่าระบบ process ถูกไหม

ลองนึกถึงธนาคารที่มี “บัญชีทดสอบของ auditor” ซ่อนอยู่ในระบบ production auditor ส่ง dummy transaction ผ่านระบบจริงเพื่อดูว่า:

  • Edit checks ทำงานไหม
  • Calculation ถูกไหม
  • Workflow approval ตามที่ design ไหม

ข้อดี ทดสอบใน production environment จริง ไม่ใช่ test environment ที่อาจต่างจาก prod

ข้อระวัง:

  • Test entity ต้อง clearly separated จาก real data ป้องกัน test transaction ปนกับ real ใน report
  • Test transaction ต้องถูก reverse / cleanup หลังทดสอบ
  • Audit team ต้องประสานกับ operations เพื่อไม่ให้ระบบเข้าใจผิดว่ามี customer ใหม่

กับดัก: ITF = ใส่ test data เข้า production = ไม่ปลอดภัย

ไม่จริงเสมอไปครับ ITF ที่ planned ดี + test entity แยกชัดเจน = valid technique ที่ใช้ในธนาคารหลายแห่งทั่วโลก

GAS — Generalized Audit Software#

หลักการ: software ที่ auditor ใช้ทำ data analysis บน production data เช่น ACL, IDEA หรือ Python script ที่ auditor เขียนเอง

ใช้สำหรับ:

  • Parallel simulation — รัน calculation logic ของ auditor บน production data → เปรียบเทียบกับ output ของระบบ → ถ้าตรงกัน = control การคำนวณทำงาน
  • Exception identification — หา outlier, duplicate, missing record
  • Trend analysis — ดูพฤติกรรมข้อมูลข้าม period

ผูกกับ Domain 1: GAS เป็น CAATs หลักของ continuous auditing ทำได้ตลอด ไม่ใช่แค่ตอน go-live

Snapshot#

หลักการ: บันทึก state ของ data ก่อน transaction รันและหลัง transaction รัน → ดูว่า logic ของ transaction ทำงานตรงตาม design ไหม

ใช้สำหรับตรวจ logic ของ specific transaction ที่ซับซ้อน

Mapping#

หลักการ: identify ส่วนของ code ที่ ไม่เคย execute — เพราะ logic อาจ unreachable หรือมี dead code ที่อันตราย

Tracing / Logging#

หลักการ: บันทึก execution path ของ specific transaction — ดูว่ามันผ่าน logic branch ไหนบ้าง ตรงตามที่ design ไหม

SCARF — System Control Audit Review File#

หลักการ: ระบบฝัง logic ที่ trigger เมื่อเจอ transaction “ที่ผิดปกติ” → บันทึกไว้ใน SCARF file ให้ auditor review ทีหลัง

ลองนึกถึงระบบ banking ที่ฝัง logic ว่า “ถ้า transaction > 1 ล้านบาทจาก IP ต่างประเทศที่ไม่ใช่ customer ปกติ → log ไปที่ SCARF” auditor เปิด SCARF file ทุกสัปดาห์เพื่อ review

นี่คือ embedded audit auditor logic ฝังในระบบเลย

Test Databases / Parallel Simulation#

ทดสอบ application logic บน database ของตัวเอง (clone จาก production) แยกจากระบบจริง

Embedded Audit Data Collection#

ระบบบันทึกข้อมูลเฉพาะ event ที่ audit สนใจตลอดเวลา ไม่ใช่แค่ตอน auditor มาตรวจ

มุมที่ผู้บริหารต้องเข้าใจ: Auditor ที่ใช้ tools เหล่านี้ evidence ที่ได้ น่าเชื่อถือมากกว่า เอกสาร test results ที่บริษัทจัดเตรียมให้ เพราะเป็น independent testing ตรงตามหลัก audit evidence ใน Domain 1 ตอน 09-10


Production Promotion + Certification#

ทดสอบครบทุกแบบแล้ว ก่อนระบบ go-live ยังต้องผ่าน 2 ขั้นตอนสำคัญ:

Production Promotion Controls#

โค้ดที่ผ่านทดสอบแล้วต้อง promote ไปยัง production environment อย่างมีการควบคุม:

  • คนที่ promote ต้องไม่ใช่ developer ที่เขียนโค้ด (SoD)
  • Version ที่ promote ต้องตรงกับ version ที่ผ่านทดสอบเป๊ะ
  • มี audit trail ของการ promote (ใคร, เมื่อ, version ไหน, จาก/ไปที่ไหน)
  • มี rollback procedure ถ้า production ขึ้นแล้วเจอปัญหา

Certification + Accreditation#

  • Certification = process ที่ระบบถูก evaluate ว่า ตรงตาม security + business requirement ที่ตั้งไว้ โดยทีม technical
  • Accreditation = senior management อนุมัติให้ระบบขึ้น production โดย accept residual risk ที่ certification ระบุไว้

นี่คือจุดที่ executive accountability ฝังเข้ามา ผู้บริหารที่ accredit ระบบที่ยังมี risk สูง = รับผิดชอบ residual risk นั้นเอง

มุม IS auditor: ดู certification + accreditation document ก่อนระบบ go-live ถ้าไม่มี / มีแต่ไม่ครบ = control gap ระดับ governance


ทำไมเรื่องนี้สำคัญกับ exam#

ผมเห็น 6 trap pattern หลักของ Section 3.5:

  1. UAT delegate ให้ vendor ได้ — ผิด buyer ทำเอง
  2. QAT = UAT — ผิด คนละทีม คนละคำถาม
  3. White box = 100% coverage — ผิด adequate coverage ของ critical path
  4. Parallel testing = ตลอดไป — ผิด เทคนิคชั่วคราว
  5. Stress = Load — ผิด stress = concurrent users, load = data volume
  6. ITF = ไม่ปลอดภัยเพราะใส่ test data ใน production — ผิด ถ้า planned ดี + test entity แยกชัด = valid

จำ 6 ข้อนี้ + ชื่อ tools (ITF, GAS, SCARF, snapshot, mapping, parallel simulation) — Section 3.5 ผ่านระดับแนวคิดไปแล้วเกินครึ่ง


สิ่งที่ผมเก็บได้จากบทนี้#

ในมุมผม Section 3.5 สอนเรื่องที่ใหญ่กว่า testing เยอะ — มันสอนว่า independence ของ auditor ไม่ใช่แค่ “ไม่เกี่ยวข้องกับ project” แต่คือ “มีเครื่องมือทดสอบของตัวเองที่ไม่พึ่ง output ของทีม” ครับ ถ้า auditor เชื่อแค่ test results ที่ทีมเตรียมให้ ก็คือไม่ได้ตรวจอะไรเลย ITF กับ GAS เลยไม่ใช่เครื่องมือที่ “เท่” — มันคือเครื่องมือที่ทำให้คำว่า “audit” มีความหมายจริง

ที่ผมคิดว่าจะติดอยู่ในใจเป็นพิเศษคือกฎ UAT ห้าม delegate ให้ vendor ครับ ฟังดูชัดเจน แต่ในความเป็นจริงคือกับดักที่หลายโปรเจ็คตกเพราะ vendor มี test team ที่พร้อมและ “ใจดี” ที่จะทำให้ ปัญหาคือ vendor มีแรงจูงใจให้ตัวเองผ่าน buyer ที่ delegate UAT ให้ vendor = จ่ายเงินซื้อ rubber stamp ของตัวเอง ตรงนี้เป็น insight ที่ผมเชื่อว่าจะติดตัวผมต่อแม้จบ CISA ไปแล้ว

อีกคู่ที่ผมต้องท่องคือ certification (technical) vs accreditation (management approval) — ก่อนระบบ go-live ทั้งสองต้องครบ ที่สำคัญคือ accreditation = senior management accept residual risk ไม่ใช่แค่เซ็นชื่อ — ใครเซ็นต้องรับผิดชอบความเสี่ยงนั้น ผูกกลับไปที่หลัก governance ทั้งหมดของ Domain 2

สิ่งที่ผมจดสำหรับวันสอบ — UAT = buyer ทำเอง, QAT ≠ UAT, White box ≠ 100% coverage, Parallel = ชั่วคราว, Stress (concurrent users) ≠ Load (data volume), ITF planned ดี = valid ไม่ใช่อันตราย หกอันนี้คือ trap pattern หลักของบท

ทดสอบครบ certified แล้ว approval แล้ว เหลือขั้นตอนสุดท้ายที่หลายโปรเจ็คล้มเหลวตรงนี้แม้ทุกอย่างผ่านมาแล้วทุกด่าน

Go-Live Day วันที่ความเสี่ยงสูงสุดของโปรเจ็คทั้งหมด

ตอนหน้าจะลง config management + release + migration + data conversion เรื่องของการ transition ที่มีหลายจุดที่อาจพังได้


อ้างอิง CRM (CISA Review Manual 28th Edition): Domain 3: Section 3.5 System Readiness and Implementation Testing