ผู้คนมักจะเปรียบเทียบ Postman และ JMeter ในฐานะคู่แข่งและถามว่าอันไหนดีกว่ากัน การเปรียบเทียบแบบนั้นไม่ถูกต้อง Postman ตรวจสอบว่า API ทำงานได้อย่างถูกต้องหรือไม่ JMeter ตรวจสอบว่า API สามารถรองรับการเข้าชมจำนวนมากได้หรือไม่ อันหนึ่งตอบคำถามว่า “เอนด์พอยต์นี้ส่งข้อมูลที่ถูกต้องกลับมาหรือไม่” ในขณะที่อีกอันตอบคำถามว่า “เอนด์พอยต์นี้ยังคงทำงานได้เมื่อผู้ใช้ 2,000 คนเข้าใช้งานพร้อมกันหรือไม่” เครื่องมือทั้งสองอยู่ในจุดที่แตกต่างกันของวงจรการทดสอบ
การเข้าใจผิดระหว่างสองสิ่งนี้อาจนำไปสู่ข้อผิดพลาดที่แท้จริง ทีมงานรัน Postman collection เห็นเครื่องหมายถูกสีเขียว และคิดว่า API พร้อมสำหรับการใช้งานจริง ทั้งที่พวกเขาไม่เคยวัดเวลาตอบสนองภายใต้การทำงานพร้อมกัน หรือพวกเขาเริ่มการทดสอบโหลดด้วย JMeter และสงสัยว่าทำไมมันถึงไม่ตรวจจับฟิลด์ JSON ที่ผิดรูปแบบ บทความนี้จะอธิบายความแตกต่างอย่างชัดเจน เพื่อให้คุณเลือกเครื่องมือที่เหมาะสมกับงานที่คุณกำลังทำ
Postman สร้างขึ้นมาเพื่ออะไร
Postman เป็นไคลเอนต์ API และแพลตฟอร์มการทำงานร่วมกัน คุณสร้างคำขอ จัดระเบียบเป็นคอลเลกชัน แนบตัวแปรสภาพแวดล้อม และเขียนสคริปต์ทดสอบ JavaScript ที่ทำงานหลังจากแต่ละการตอบกลับ งานหลักของมันคือความถูกต้องในการทำงาน: การตรวจสอบรหัสสถานะ, เนื้อหาการตอบกลับ, ส่วนหัว และรูปแบบ Schema
สคริปต์ทดสอบ Postman ทั่วไปมีลักษณะดังนี้:
pm.test("Status is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response has a user id", function () {
const body = pm.response.json();
pm.expect(body).to.have.property("id");
pm.expect(body.id).to.be.a("number");
});
นี่คือการทดสอบแบบคำขอเดียวที่ขับเคลื่อนด้วยการยืนยัน Postman จะรันแต่ละคำขอหนึ่งครั้ง ประเมินการตรวจสอบของคุณ และรายงานผลว่าผ่านหรือไม่ผ่าน Collection Runner สามารถวนซ้ำคอลเลกชันด้วยไฟล์ข้อมูล และ Postman CLI สามารถรันคอลเลกชันเดียวกันใน Pipeline ได้ แต่หลักการยังคงเดิม: ยืนยันว่า API ทำงานตามที่ระบุไว้ในสัญญา หากคุณต้องการเจาะลึกเกี่ยวกับการเขียนการตรวจสอบเหล่านี้ โปรดดูคู่มือของเราเกี่ยวกับ การยืนยัน API
Postman มีประโยชน์มากในช่วงการพัฒนาและบูรณาการ นักพัฒนาที่สร้างเอนด์พอยต์ใหม่จะตรวจสอบมันแบบโต้ตอบ วิศวกร QA เปลี่ยนคำขอเหล่านั้นให้เป็นชุดทดสอบ Regression ทั้งทีมใช้พื้นที่ทำงานร่วมกัน ไม่มีส่วนใดเกี่ยวข้องกับการวัดปริมาณงาน (Throughput)
JMeter สร้างขึ้นมาเพื่ออะไร
Apache JMeter เป็นเครื่องมือทดสอบโหลดและประสิทธิภาพ คุณกำหนด Thread Group ซึ่งเป็นคำศัพท์ของ JMeter สำหรับกลุ่มผู้ใช้จำลอง กำหนดจำนวนเธรดที่จะรัน ความเร็วในการเพิ่มขึ้น (ramp up) และจำนวนครั้งที่วนซ้ำ จากนั้น JMeter จะส่งคำขอเหล่านั้นพร้อมกันและบันทึกค่า Latency, Throughput และอัตราข้อผิดพลาด
คำถามที่ JMeter ตอบได้นั้นเป็นเชิงปริมาณ เวลาตอบสนองเปอร์เซ็นไทล์ที่ 95 เมื่อมีผู้ใช้ 500 คนใช้งานอยู่คือเท่าใด อัตราคำขอเท่าใดที่ทำให้อัตราข้อผิดพลาดเกิน 1 เปอร์เซ็นต์ การเชื่อมต่อฐานข้อมูลจะกลายเป็นคอขวดเมื่อมี 300 เซสชันพร้อมกันหรือไม่ คุณไม่สามารถรับตัวเลขเหล่านี้ได้จากเครื่องมือที่ส่งคำขอทีละครั้ง
JMeter ยังรองรับนอกเหนือจาก HTTP สามารถขับเคลื่อนการสอบถามฐานข้อมูล JDBC, การส่งข้อความ JMS, FTP, SMTP และ TCP ดิบได้ ความหลากหลายนี้สำคัญเมื่อคุณทดสอบโหลดทั้งระบบ ไม่ใช่แค่เอนด์พอยต์ REST เพียงจุดเดียว สิ่งที่ต้องแลกมาคือการตั้งค่าที่ซับซ้อนกว่า: Thread Group, Sampler, Listener, Timer และ Assertion ถูกกำหนดค่าผ่าน GUI บนเดสก์ท็อป และการรันจริงจังจะเกิดขึ้นในโหมด non-GUI จาก Command Line เพื่อความแม่นยำ หากคุณยังใหม่ในสาขานี้ ภาพรวม การทดสอบประสิทธิภาพ ของเราจะอธิบายเมตริกหลักๆ
การเปรียบเทียบเคียงข้างกัน
ตารางด้านล่างแสดงความแตกต่างในทางปฏิบัติ
| ด้าน | Postman | JMeter |
|---|---|---|
| วัตถุประสงค์หลัก | การทดสอบ API เชิงฟังก์ชันและการบูรณาการ | การทดสอบโหลด, การทดสอบความเครียด และการทดสอบประสิทธิภาพ |
| คำถามหลัก | การตอบกลับถูกต้องหรือไม่? | API สามารถรองรับโหลดได้หรือไม่? |
| รูปแบบการทำงานพร้อมกัน | คำขอทีละหนึ่งครั้ง (Runner วนซ้ำตามลำดับ) | ผู้ใช้จำลองจำนวนมากทำงานพร้อมกัน |
| โปรโตคอล | HTTP, HTTPS, GraphQL, WebSocket, gRPC | HTTP, JDBC, JMS, FTP, SMTP, TCP และอื่นๆ |
| การเขียนสคริปต์ | สคริปต์ทดสอบ JavaScript | Groovy, BeanShell, Java Sampler |
| ผลลัพธ์ | การยืนยันผลผ่าน/ไม่ผ่านต่อคำขอ | เปอร์เซ็นไทล์ของ Latency, Throughput, อัตราข้อผิดพลาด |
| ความยากในการเรียนรู้ | เป็นมิตรกับผู้เริ่มต้น | ซับซ้อนกว่า เหมาะสำหรับวิศวกรประสิทธิภาพ |
| ขั้นตอนที่เหมาะสมที่สุด | การพัฒนา, การบูรณาการ, Regression | การตรวจสอบความสามารถในการรองรับและรับความเครียดก่อนการเผยแพร่ |
| การรายงาน | ผลการทดสอบ, รายงาน Postman CLI | แดชบอร์ด HTML, กราฟรวม |
ความแตกต่างที่สำคัญที่สุดคือรูปแบบการทำงานพร้อมกัน Collection Runner ของ Postman จะวนซ้ำ แต่ไม่ได้จำลองผู้ใช้หลายร้อยคนเข้าถึงเอนด์พอยต์พร้อมกันในทันที สถาปัตยกรรมทั้งหมดของ JMeter มีอยู่เพื่อทำสิ่งนั้นโดยเฉพาะ
ควรใช้ Postman เมื่อใด
ใช้ Postman เมื่อความถูกต้องเป็นคำถามหลักที่ต้องการคำตอบ ใช้เมื่อคุณกำลังพัฒนาเอนด์พอยต์ใหม่และต้องการข้อเสนอแนะอย่างรวดเร็วเกี่ยวกับรูปแบบคำขอและการตอบกลับ ใช้เพื่อสร้างชุดทดสอบ Regression ที่ทำงานในทุก Pull Request ใช้เมื่อผู้ที่ไม่ใช่นักพัฒนาในทีมต้องการสำรวจ API โดยไม่ต้องเขียนโค้ด ใช้สำหรับการ ทดสอบ Contract Testing ซึ่งคุณยืนยันว่า API ยังคงตรงกับ Schema ที่เผยแพร่
Postman ยังเหมาะกับการทำ Continuous Integration (CI) ด้วย คุณส่งออกคอลเลกชัน รันด้วย Postman CLI หรือ Newman ภายใน Pipeline ของคุณ และจะทำให้ Build ล้มเหลวหากการยืนยันผิดพลาด นั่นคือ Functional Regression ไม่ใช่ Load Testing และควรทำในทุกๆ Commit
Postman ยังจัดการงานประจำวันที่เกี่ยวข้องกับ API คุณสามารถบันทึกตัวอย่างการตอบกลับ จัดทำเอกสารเอนด์พอยต์ในขณะที่คุณสร้างมัน จำลองบริการที่ยังไม่มีอยู่ และแชร์พื้นที่ทำงานเพื่อให้ทั้งทีมเห็นคำขอเดียวกัน ไม่มีส่วนใดที่เกี่ยวข้องกับประสิทธิภาพ แต่ทั้งหมดนี้ช่วยเร่งวงจรการสร้างและตรวจสอบให้เร็วขึ้น ประเด็นคือ Postman เป็นเพื่อนคู่คิดในการพัฒนา: มันอยู่ข้างคุณในขณะที่คุณเขียน API และยังคงมีประโยชน์หลังจากนั้นในฐานะเครือข่ายสำหรับ Regression
การอ่านผลลัพธ์ของ JMeter
การรัน JMeter จะสร้างตัวเลข และคุณต้องรู้ว่าตัวเลขใดมีความสำคัญ เวลาตอบสนองเฉลี่ยเป็นค่าที่มีประโยชน์น้อยที่สุด เนื่องจากคำขอที่รวดเร็วไม่กี่รายการสามารถบดบังคำขอที่ช้าจำนวนมากได้ ตัวเลขที่ควรจับตามองคือเปอร์เซ็นไทล์ Latency ที่เปอร์เซ็นไทล์ที่ 90, 95 และ 99 บอกคุณว่าผู้ใช้ที่ช้าที่สุดของคุณประสบกับอะไร และนั่นคือผู้ใช้ที่จะบ่น เปอร์เซ็นไทล์ที่ 95 ของ 1.8 วินาที หมายความว่า 5 เปอร์เซ็นต์ของคำขอใช้เวลานานกว่านั้น ซึ่งเป็นปัญหาจริงแม้ว่าค่าเฉลี่ยจะดูดีก็ตาม
Throughput คือตัวเลขที่สอง เป็นจำนวนคำขอที่ระบบดำเนินการเสร็จสิ้นต่อวินาที และบอกให้คุณทราบถึงความสามารถที่แท้จริงของ API ภายใต้โหลดที่คุณใช้ อัตราข้อผิดพลาดคือตัวเลขที่สาม การรันที่รายงานเวลาตอบสนองที่รวดเร็วแต่มีอัตราข้อผิดพลาด 6 เปอร์เซ็นต์นั้นไม่ถือว่าสำเร็จ; นั่นหมายความว่า API สามารถรองรับได้โดยการทิ้งคำขอเท่านั้น คุณควรอ่านทั้งสามค่านี้รวมกัน และควรอ่านที่ระดับการทำงานพร้อมกันที่ตรงกับการเข้าชมจริงของคุณ การทดสอบที่ผู้ใช้ 50 คนไม่ได้บอกอะไรคุณเกี่ยวกับพฤติกรรมที่ผู้ใช้ 1,000 คน
ควรใช้ JMeter เมื่อใด
ใช้ JMeter เมื่อ Scale เป็นคำถามหลักที่ต้องการคำตอบ ใช้ก่อนการเปิดตัวเพื่อหาอัตราคำขอที่ทำให้เวลาตอบสนองแย่ลง ใช้เพื่อตรวจสอบว่ากฎ Autoscaling ทำงานได้อย่างถูกต้องภายใต้การเข้าชมที่ต่อเนื่อง ใช้สำหรับการทดสอบ Soak Test ที่รันเป็นชั่วโมงเพื่อค้นหา Memory Leak และ Connection Exhaustion ใช้สำหรับการทดสอบ Spike Test ที่จำลองผู้ใช้ที่เข้ามาพร้อมกันจำนวนมาก เช่น การขายแบบ Flash Sale
ผลลัพธ์ของ JMeter เป็นข้อมูลสำหรับการวางแผนกำลังการผลิต หาก Latency ที่เปอร์เซ็นไทล์ที่ 95 ยังคงต่ำกว่า 400 มิลลิวินาทีเมื่อมีผู้ใช้พร้อมกัน 1,000 คน แต่เพิ่มขึ้นเกิน 2 วินาทีที่ 1,500 คน คุณได้พบขีดจำกัดสูงสุดแล้ว ตัวเลขนั้นขับเคลื่อนการตัดสินใจด้านโครงสร้างพื้นฐาน การรัน Postman ไม่สามารถสร้างตัวเลขนี้ได้ สำหรับคำแนะนำแบบมีโครงสร้างเกี่ยวกับการสร้างการทดสอบเหล่านี้ บทช่วยสอนการทดสอบประสิทธิภาพ API ของเราครอบคลุมเวิร์กโฟลว์ตั้งแต่ต้นจนจบ
เป็นส่วนเสริมซึ่งกันและกัน ไม่ใช่คู่แข่ง
กลยุทธ์การทดสอบที่สมบูรณ์จะใช้ทั้งสองอย่าง ระหว่างการพัฒนา Postman จะตรวจสอบว่า API ส่งคืนข้อมูลที่ถูกต้อง ก่อนการเผยแพร่ JMeter จะตรวจสอบว่า API ให้บริการข้อมูลที่ถูกต้องนั้นรวดเร็วพอสำหรับผู้ใช้ที่คาดการณ์ไว้ การข้ามขั้นตอนใดขั้นตอนหนึ่งจะทำให้เกิดช่องว่าง API สามารถทำงานได้อย่างสมบูรณ์แบบแต่ก็ยังล่มได้เมื่อมีผู้ใช้ 200 คน API สามารถทำงานได้อย่างรวดเร็วมากแต่ก็ยังคืนค่าที่ผิดพลาดได้
โมเดลความคิดที่ดีคือ Pipeline การตรวจสอบเชิงฟังก์ชันจะรันเร็วและบ่อยครั้ง ในทุก Commit เพื่อตรวจจับการเปลี่ยนแปลงพฤติกรรมที่ไม่พึงประสงค์ การทดสอบโหลดจะรันน้อยลง บ่อยครั้งก่อนการเผยแพร่หรือหลังจากการเปลี่ยนแปลงโครงสร้างพื้นฐานที่สำคัญ เพื่อตรวจจับการเปลี่ยนแปลงความสามารถในการรองรับ ถือว่าทั้งสองเป็นการทำงานสองขั้นตอน ไม่ใช่สองตัวเลือกสำหรับตำแหน่งเดียว
ลองพิจารณาตัวอย่างที่เป็นรูปธรรม ทีมงานเผยแพร่เอนด์พอยต์ค้นหา การทดสอบด้วย Postman ยืนยันว่ามันคืนผลลัพธ์ที่ถูกต้อง แบ่งหน้าได้อย่างถูกต้อง และปฏิเสธคำค้นหาที่ผิดรูปแบบ ทุกการตรวจสอบเป็นสีเขียว ดังนั้นเอนด์พอยต์จึงถูกรวม สองสัปดาห์ต่อมา การตลาดผลักดันให้มีการเข้าชมเพิ่มขึ้นสิบเท่าจากปกติ และเวลาในการค้นหาเพิ่มขึ้นเป็นแปดวินาที เนื่องจากทุกคำค้นหาไปกระตุ้นการสแกนฐานข้อมูลที่ไม่มี Index การทดสอบเชิงฟังก์ชันไม่เคยมีโอกาสจับสิ่งนี้ได้เลย; พวกเขาส่งคำขอหนึ่งครั้งไปยังระบบที่ว่างอยู่ การรัน JMeter ที่มีการทำงานพร้อมกันอย่างสมจริงจะเปิดเผย Index ที่ขาดหายไปก่อนการเปิดตัว บทเรียนไม่ได้อยู่ที่ Postman ล้มเหลว แต่อยู่ที่ทีมงานรันการทดสอบเพียงประเภทเดียวจากสองประเภทที่เอนด์พอยต์ต้องการ
ความล้มเหลวในทางตรงกันข้ามก็เกิดขึ้นเช่นกัน ทีมงานหมกมุ่นอยู่กับตัวเลขโหลด ปรับแต่ง API ให้รองรับผู้ใช้ 5,000 คน และเผยแพร่ ภายใต้โหลดนั้น เอนด์พอยต์คืนราคาที่ผิดพลาดเนื่องจากข้อผิดพลาดในการแคชที่ส่งข้อมูลเก่า และไม่มีการทดสอบโหลดใดๆ ที่ยืนยันเนื้อหาการตอบกลับ ความเร็วที่ไร้ความถูกต้องก็เป็นเพียงคำตอบที่ผิดอย่างรวดเร็วเท่านั้น คุณต้องการมุมมองทั้งสองอย่าง และไม่มีเครื่องมือใดที่ให้ได้ทั้งสองอย่าง
Apidog เหมาะสมตรงไหน
หากการรันและดูแลเครื่องมือสองตัวแยกกันเป็นภาระ Apidog ได้รวมการออกแบบ API, การดีบัก, การทดสอบฟังก์ชันอัตโนมัติ และ Mock Server เข้าไว้ในแพลตฟอร์มเดียว คุณออกแบบ Schema, ส่งคำขอ, สร้างสถานการณ์ทดสอบด้วยการยืนยันแบบภาพ และเชื่อมโยงขั้นตอนเข้ากับชุดทดสอบอัตโนมัติโดยไม่ต้องออกจากแอป สำหรับการทดสอบโหลดและ Stress Testing, Apidog มีการทดสอบประสิทธิภาพที่รันกรณี API ที่คุณบันทึกไว้ภายใต้ผู้ใช้เสมือนที่กำหนดค่าได้ เพื่อให้การครอบคลุมการทำงานและประสิทธิภาพอยู่ในพื้นที่ทำงานเดียวกัน
แนวทางเครื่องมือเดียวนี้ช่วยลดค่าใช้จ่ายในการส่งออก, ซิงค์ และสลับบริบทของการเชื่อม Postman และ JMeter เข้าด้วยกัน คุณสามารถ ดาวน์โหลด Apidog และทดลองใช้คุณสมบัติการทดสอบได้ฟรี หากคุณต้องการเปรียบเทียบตัวเลือกก่อน การรวบรวม ทางเลือก Postman ที่ดีที่สุดสำหรับการทดสอบ API ของเราได้นำเสนอเครื่องมือหลายตัวมาเปรียบเทียบเคียงข้างกัน
คำถามที่พบบ่อย
Postman สามารถทำการทดสอบโหลดได้หรือไม่?
ไม่ได้ในทางที่มีความหมายนัก Collection Runner จะวนซ้ำคอลเลกชันตามลำดับ และ Postman เพิ่งเพิ่มคุณสมบัติการทดสอบประสิทธิภาพขั้นพื้นฐานในแอปเดสก์ท็อป แต่มันไม่เทียบเท่ากับเครื่องมือที่สร้างขึ้นมาโดยเฉพาะสำหรับการทำงานพร้อมกันที่สมจริง การควบคุมการเพิ่มโหลด หรือ Latency Percentile โดยละเอียด สำหรับการทดสอบโหลดอย่างจริงจัง ควรใช้ JMeter, k6, Gatling หรือโมดูลการทดสอบประสิทธิภาพของ Apidog
JMeter สามารถทำการทดสอบ API เชิงฟังก์ชันได้หรือไม่?
ทำได้ โดยใช้ Response Assertion ที่ตรวจสอบรหัสสถานะและเนื้อหาของ Body แต่ GUI ของ JMeter นั้นไม่สะดวกสำหรับการทดสอบฟังก์ชันที่เน้น Assertion และจุดแข็งของมันคือการทำงานพร้อมกัน ไม่ใช่การตรวจสอบความถูกต้อง ทีมส่วนใหญ่จะทำการทดสอบฟังก์ชันใน Postman หรือ Apidog และสงวน JMeter ไว้สำหรับการทดสอบโหลด
JMeter ยากกว่า Postman ในการเรียนรู้หรือไม่?
ใช่ อินเทอร์เฟซของ Postman ใช้งานง่าย และคุณสามารถส่งคำขอได้ภายในไม่กี่นาที JMeter แนะนำ Thread Group, Sampler, Timer และ Listener รวมถึงการฝึกฝนการรันการทดสอบในโหมด non-GUI เพื่อผลลัพธ์ที่แม่นยำ คาดว่าจะใช้เวลาเรียนรู้ที่นานกว่า โดยเฉพาะอย่างยิ่งหากคุณไม่เคยทำงานด้านประสิทธิภาพมาก่อน
ฉันจำเป็นต้องใช้เครื่องมือทั้งสองหรือไม่?
หากคุณเผยแพร่ API ที่รองรับการเข้าชมจริง คุณจำเป็นต้องมีการทดสอบทั้งสองประเภท คุณไม่จำเป็นต้องมีผลิตภัณฑ์ทั้งสองอย่าง แพลตฟอร์มอย่าง Apidog ครอบคลุมการทดสอบเชิงฟังก์ชันและการทดสอบประสิทธิภาพไว้ในที่เดียว ซึ่งช่วยลดความจำเป็นในการดูแล Toolchain แยกกันสองชุด
เครื่องมือใดที่ตรวจจับการสอบถามฐานข้อมูลที่ช้าได้?
JMeter ภายใต้โหลด คำขอ Postman เพียงครั้งเดียวต่อระบบที่ว่างอยู่อาจคืนผลลัพธ์ได้อย่างรวดเร็ว แม้ว่า Query จะไม่มีประสิทธิภาพก็ตาม ปัญหาจะปรากฏขึ้นก็ต่อเมื่อมีการเข้าชมพร้อมกันที่แย่งชิงการเชื่อมต่อฐานข้อมูล การทำงานพร้อมกันของ JMeter จะเปิดเผยคอขวดนั้น; การทดสอบเชิงฟังก์ชันแบบต่อเนื่องมักจะไม่ทำ
k6, Gatling และ Locust อยู่ในตำแหน่งใด?
พวกมันเป็นทางเลือกของ JMeter ไม่ใช่ Postman k6, Gatling และ Locust ล้วนเป็นเครื่องมือทดสอบโหลดที่แข่งขันกับ JMeter และมักจะนิยมการทดสอบที่กำหนดด้วยโค้ดมากกว่า GUI หากคุณพบว่าอินเทอร์เฟซของ JMeter ไม่สะดวก เครื่องมือใดๆ เหล่านี้ก็คุ้มค่าที่จะลอง ไม่มีเครื่องมือใดที่เข้ามาแทนที่การทดสอบ API เชิงฟังก์ชัน ดังนั้นการแบ่งแยก Postman กับเครื่องมือทดสอบโหลดจึงยังคงอยู่
ควรทำการทดสอบโหลดบ่อยแค่ไหน?
บ่อยน้อยกว่าการทดสอบเชิงฟังก์ชันมาก การตรวจสอบเชิงฟังก์ชันจะรันในทุก Commit เนื่องจากรวดเร็วและจับการเปลี่ยนแปลงพฤติกรรมที่ไม่พึงประสงค์ได้ การทดสอบโหลดนั้นช้าและใช้ทรัพยากรมาก ดังนั้นทีมส่วนใหญ่จึงรันก่อนการเผยแพร่ หลังจากการเปลี่ยนแปลงโครงสร้างพื้นฐานที่สำคัญ และตามกำหนดเวลาเป็นระยะๆ เช่น รายสัปดาห์ การรันการทดสอบโหลดเต็มรูปแบบในทุก Commit นั้นไม่ค่อยคุ้มค่าทั้งเวลาและค่าใช้จ่าย
