โมเดลประเมินคุณภาพบริการ
โมเดลประเมินคุณภาพบริการ SERVQUAL SERVPERF Kano Model NPS CSAT CES Gap Analysis Customer Satisfaction Loyalty
| Model | Developer | Measures | Questions | Best For |
|---|---|---|---|---|
| SERVQUAL | Parasuraman et al. | Gap (Expect-Perceive) | 44 ข้อ | Gap Analysis เชิงลึก |
| SERVPERF | Cronin & Taylor | Performance Only | 22 ข้อ | ทำนาย Satisfaction |
| Kano Model | Noriaki Kano | Feature Classification | คู่คำถาม/Feature | จัดลำดับ Feature |
| NPS | Fred Reichheld | Loyalty (Recommend) | 1 ข้อ | วัด Loyalty ง่ายเร็ว |
| CSAT | - | Satisfaction | 1-3 ข้อ | วัด Satisfaction เฉพาะจุด |
| CES | Gartner | Effort | 1 ข้อ | วัดความง่ายในการใช้ |
SERVQUAL Implementation
# === SERVQUAL Gap Analysis ===
from dataclasses import dataclass
@dataclass
class SERVQUALDimension:
dimension: str
description: str
example_questions: str
weight: float
dimensions = [
SERVQUALDimension("Tangibles",
"สิ่งที่จับต้องได้ อุปกรณ์ สถานที่ บุคลากร",
"สถานที่สะอาด อุปกรณ์ทันสมัย บุคลากรแต่งตัวดี",
0.11),
SERVQUALDimension("Reliability",
"ความน่าเชื่อถือ ให้บริการตรงตามสัญญา",
"ให้บริการตรงเวลา แก้ปัญหาได้ ทำตามที่สัญญา",
0.32),
SERVQUALDimension("Responsiveness",
"การตอบสนอง รวดเร็ว เต็มใจ",
"พนักงานตอบรวดเร็ว เต็มใจช่วยเหลือ แจ้งเวลาบริการ",
0.22),
SERVQUALDimension("Assurance",
"ความมั่นใจ ความรู้ สุภาพ น่าเชื่อถือ",
"พนักงานมีความรู้ สุภาพ ให้ความมั่นใจ ปลอดภัย",
0.19),
SERVQUALDimension("Empathy",
"ความเข้าใจ ดูแลเอาใจใส่ เฉพาะบุคคล",
"เข้าใจความต้องการ ดูแลเฉพาะบุคคล เวลาสะดวก",
0.16),
]
# Sample Gap Scores
@dataclass
class GapScore:
dimension: str
expectation: float
perception: float
gap: float
priority: str
gaps = [
GapScore("Tangibles", 4.2, 3.8, -0.4, "Low"),
GapScore("Reliability", 4.8, 3.5, -1.3, "Critical"),
GapScore("Responsiveness", 4.5, 3.2, -1.3, "Critical"),
GapScore("Assurance", 4.3, 4.0, -0.3, "Low"),
GapScore("Empathy", 4.0, 3.6, -0.4, "Medium"),
]
print("=== SERVQUAL Dimensions ===")
for d in dimensions:
print(f" [{d.dimension}] Weight: {d.weight}")
print(f" Desc: {d.description}")
print("\n=== Gap Analysis ===")
for g in gaps:
print(f" [{g.dimension}] E:{g.expectation} P:{g.perception} Gap:{g.gap} [{g.priority}]")
Kano Model Analysis
# === Kano Model Feature Classification ===
@dataclass
class KanoFeature:
feature: str
functional: str
dysfunctional: str
category: str
action: str
features = [
KanoFeature("WiFi ฟรีในร้าน",
"Like (ถ้ามี WiFi ชอบ)",
"Dislike (ถ้าไม่มี ไม่ชอบ)",
"One-dimensional",
"ลงทุนให้ WiFi เร็ว ยิ่งเร็วยิ่งพอใจ"),
KanoFeature("ห้องน้ำสะอาด",
"Expect (ถ้ามีก็ปกติ)",
"Dislike (ถ้าไม่มี ไม่พอใจมาก)",
"Must-be",
"ต้องทำให้ได้ ไม่ได้เพิ่ม Satisfaction แต่ขาดไม่ได้"),
KanoFeature("Welcome Drink ฟรี",
"Like (ถ้ามี ดีใจมาก)",
"Neutral (ถ้าไม่มี ก็ไม่เป็นไร)",
"Attractive",
"ทำได้จะ WOW ลูกค้า สร้างความประทับใจ"),
KanoFeature("สีผ้าม่านในร้าน",
"Neutral (ไม่สนใจ)",
"Neutral (ไม่สนใจ)",
"Indifferent",
"ไม่ต้องลงทุนมาก ลูกค้าไม่สนใจ"),
KanoFeature("เพลงดังมาก",
"Dislike (ถ้ามี ไม่ชอบ)",
"Like (ถ้าไม่มี ดี)",
"Reverse",
"ต้องลดหรือเอาออก ลูกค้าไม่ต้องการ"),
]
print("=== Kano Features ===")
for f in features:
print(f"\n [{f.feature}] → {f.category}")
print(f" Functional: {f.functional}")
print(f" Dysfunctional: {f.dysfunctional}")
print(f" Action: {f.action}")
NPS & CSAT Tracking
# === NPS & CSAT Implementation ===
@dataclass
class NPSResult:
period: str
promoters: int
passives: int
detractors: int
nps: int
trend: str
nps_data = [
NPSResult("Q1 2024", 45, 30, 25, 20, "Baseline"),
NPSResult("Q2 2024", 50, 28, 22, 28, "Up +8"),
NPSResult("Q3 2024", 55, 25, 20, 35, "Up +7"),
NPSResult("Q4 2024", 60, 22, 18, 42, "Up +7"),
]
@dataclass
class MetricComparison:
metric: str
question: str
scale: str
measures: str
when_to_use: str
metrics = [
MetricComparison("NPS",
"คุณจะแนะนำบริการนี้มากแค่ไหน",
"0-10",
"Loyalty (แนะนำต่อ)",
"วัด Brand Loyalty ระยะยาว ทุก Quarter"),
MetricComparison("CSAT",
"คุณพอใจกับบริการนี้มากแค่ไหน",
"1-5 หรือ 1-7",
"Satisfaction (พอใจ)",
"วัด Satisfaction เฉพาะ Touchpoint ทุกครั้ง"),
MetricComparison("CES",
"การใช้บริการนี้ง่ายมากแค่ไหน",
"1-7",
"Effort (ความง่าย)",
"วัดหลัง Support Interaction หรือ Transaction"),
]
print("=== NPS Tracking ===")
for n in nps_data:
print(f" [{n.period}] NPS: {n.nps} ({n.trend})")
print(f" P:{n.promoters}% Pa:{n.passives}% D:{n.detractors}%")
print("\n=== Metric Comparison ===")
for m in metrics:
print(f" [{m.metric}] {m.measures}")
print(f" Q: {m.question}")
print(f" When: {m.when_to_use}")
เคล็ดลับ
- SERVQUAL: ใช้ SERVQUAL เมื่อต้องการ Gap Analysis เชิงลึก
- Kano: ใช้ Kano จัดลำดับ Feature ลงทุน Attractive Feature สร้าง WOW
- NPS: ถาม Follow-up เสมอ "ทำไมให้คะแนนนี้" เพื่อหาสาเหตุ
- Combine: ใช้หลาย Model ร่วมกัน NPS + CSAT + CES ครอบคลุม
- Action: วัดแล้วต้อง Action ไม่ใช่แค่เก็บข้อมูล
การนำความรู้ไปประยุกต์ใช้งานจริง
แหล่งเรียนรู้ที่แนะนำ ได้แก่ Official Documentation ที่อัพเดทล่าสุดเสมอ Online Course จาก Coursera Udemy edX ช่อง YouTube คุณภาพทั้งไทยและอังกฤษ และ Community อย่าง Discord Reddit Stack Overflow ที่ช่วยแลกเปลี่ยนประสบการณ์กับนักพัฒนาทั่วโลก
เปรียบเทียบข้อดีและข้อเสีย
จากตารางเปรียบเทียบจะเห็นว่าข้อดีมีมากกว่าข้อเสียอย่างชัดเจน โดยเฉพาะในแง่ของประสิทธิภาพและความสามารถในการ Scale สำหรับข้อเสียส่วนใหญ่สามารถแก้ไขได้ด้วยการเรียนรู้อย่างเป็นระบบและวางแผนทรัพยากรให้เหมาะสม
SERVQUAL คืออะไร
โมเดลวัดคุณภาพบริการ Gap Expectation Perception 5 มิติ Tangibles Reliability Responsiveness Assurance Empathy 22 ข้อ Parasuraman
SERVPERF ต่างจาก SERVQUAL อย่างไร
SERVPERF วัด Performance อย่างเดียว 22 ข้อ สั้นกว่า ทำนาย Satisfaction ดีกว่า SERVQUAL วัด Gap 44 ข้อ ทั้งสองใช้ 5 มิติเดียวกัน
Kano Model คืออะไร
แบ่ง Feature 5 ประเภท Must-be One-dimensional Attractive Indifferent Reverse Functional Dysfunctional Questionnaire จัดลำดับความสำคัญ
NPS คืออะไร
Net Promoter Score วัด Loyalty 0-10 Promoters 9-10 Passives 7-8 Detractors 0-6 NPS = %P - %D ค่า -100 ถึง +100 ง่าย ถาม 1 ข้อ
สรุป
โมเดลประเมินคุณภาพบริการ SERVQUAL SERVPERF Kano NPS CSAT CES Gap Analysis Customer Satisfaction Loyalty Feature Priority Action