เป็นเวลาหลายปี การรัน Postman collections นอกแอปพลิเคชันเดสก์ท็อป หมายถึงเครื่องมือเดียว นั่นคือ Newman จากนั้น Postman ได้เปิดตัวเครื่องมือบรรทัดคำสั่งอย่างเป็นทางการของตัวเอง นั่นคือ Postman CLI และตอนนี้มีสองวิธีในการทำสิ่งที่คล้ายกัน ทั้งสองเครื่องมือสามารถรัน collections ได้โดยไม่ต้องใช้ GUI, ทั้งคู่สามารถทำงานร่วมกับ CI/CD pipelines ได้, และทั้งคู่รันสคริปต์ทดสอบเดียวกัน แล้วทำไมต้องมีสองเครื่องมือ และเครื่องมือใดควรอยู่ใน pipeline ของคุณ?
สรุปสั้นๆ: Newman เป็นตัวรันโอเพนซอร์สที่ไม่มีการผูกบัญชี ซึ่งเป็นมาตรฐานของชุมชนมาตั้งแต่แรกเริ่ม Postman CLI เป็นเครื่องมือที่ใหม่กว่า ซึ่งผูกกับบัญชีผู้ใช้และเชื่อมโยงผลการรันกลับไปยัง Postman cloud และรายงานผลลัพธ์ที่นั่น การเลือกที่ถูกต้องขึ้นอยู่กับว่าคุณต้องการให้ผลลัพธ์ถูกเก็บไว้ในแพลตฟอร์มของ Postman หรือชอบตัวรันที่ไม่ต้องการอะไรนอกจากไฟล์ collection บทความนี้จะเปรียบเทียบทั้งสองเครื่องมืออย่างตรงไปตรงมาเพื่อให้คุณตัดสินใจได้
Newman คืออะไร
Newman เป็นตัวรัน collection ผ่านบรรทัดคำสั่งดั้งเดิมของ Postman เป็นโอเพนซอร์ส, เผยแพร่ในรูปแบบแพ็กเกจ npm, และใช้งานได้ฟรีโดยสมบูรณ์ สามารถรันไฟล์ collection ที่ส่งออก (exported) จาก Postman, ดำเนินการทุกคำขอและการยืนยัน pm.test ทุกรายการ, และรายงานผลลัพธ์ผ่าน exit code
คุณสมบัติเด่นของ Newman คือความเป็นอิสระ ไม่จำเป็นต้องมีบัญชี Postman, API key, หรือการเชื่อมต่อเครือข่ายกับเซิร์ฟเวอร์ของ Postman คุณเพียงแค่ให้ไฟล์ JSON collection แก่มัน แล้วมันก็จะรัน สิ่งนี้ทำให้สามารถคาดเดาได้และง่ายต่อการทำความเข้าใจในสภาพแวดล้อมที่ถูกจำกัด
npm install -g newman
newman run checkout-api.postman_collection.json \
--environment staging.postman_environment.json
Newman ยังมีน้ำหนักเบาและสามารถขยายได้ มาพร้อมกับ CLI และ JUnit reporters, และชุมชนยังคงดูแล reporters เพิ่มเติม เช่น newman-reporter-htmlextra สำหรับการส่งออก HTML ที่สมบูรณ์ เนื่องจากเป็นแพ็กเกจ Node.js คุณยังสามารถเรียกใช้งานแบบโปรแกรมจากสคริปต์ได้ คำแนะนำของเราเกี่ยวกับ ความแตกต่างระหว่าง Newman และ Postman จะอธิบายว่ามันเกี่ยวข้องกับแอปพลิเคชันเดสก์ท็อปอย่างไร
Postman CLI คืออะไร
Postman CLI คือเครื่องมือบรรทัดคำสั่งอย่างเป็นทางการที่ Postman สร้างขึ้นและแนะนำในปัจจุบัน เป็นไบนารีเดี่ยวที่คุณติดตั้งด้วยสคริปต์ ไม่ใช่แพ็กเกจ npm และเชื่อมโยงกับบัญชี Postman ของคุณผ่าน API key
# ติดตั้ง (ตัวอย่างสำหรับ macOS/Linux)
curl -o- "https://dl-cli.pstmn.io/install/osx_64.sh" | sh
# ยืนยันตัวตน จากนั้นรัน
postman login --with-api-key YOUR_API_KEY
postman collection run checkout-api
ความแตกต่างที่สำคัญคือการเชื่อมโยงกับคลาวด์ เมื่อคุณรัน collection ด้วย Postman CLI มันสามารถดึง collection โดยตรงจาก Postman workspace ของคุณด้วย ID, และผลการรันจะถูกส่งกลับไปยังแพลตฟอร์ม Postman ซึ่งจะปรากฏในประวัติ workspace และแดชบอร์ด จุดเด่นที่สำคัญคือการกำกับดูแล API (API governance) และการตรวจสอบความปลอดภัย: Postman CLI สามารถรัน linting กับคำจำกัดความ API ของคุณในระหว่าง pipeline, แสดงการละเมิดสคีมาและกฎเป็นส่วนหนึ่งของกระบวนการสร้าง (build)
ดังนั้น Postman CLI จึงไม่ใช่แค่ตัวรัน collection บริสุทธิ์ แต่เป็นตัวแทน pipeline สำหรับแพลตฟอร์ม Postman มากกว่า หากทีมของคุณทำงานภายใน Postman cloud และต้องการให้ประวัติการรันและการกำกับดูแลรวมศูนย์อยู่ที่นั่น การรวมระบบนี้คือเหตุผลในการเลือกใช้
การเปรียบเทียบเคียงข้าง
| แง่มุม | Postman CLI | Newman |
|---|---|---|
| แหล่งที่มา | ซอร์สปิด, เครื่องมือทางการของ Postman | โอเพนซอร์ส |
| การติดตั้ง | สคริปต์ติดตั้ง, ไบนารีเดี่ยว | แพ็กเกจ npm |
| บัญชี Postman | จำเป็น (ล็อกอินด้วย API key) | ไม่จำเป็น |
| แหล่งที่มาของ Collection | ดึงจาก Postman cloud ด้วย ID, หรือไฟล์ในเครื่อง | ไฟล์ JSON ในเครื่อง |
| ผลการรัน | รายงานกลับไปยังแพลตฟอร์ม Postman | เอาต์พุตเทอร์มินัลและไฟล์ reporter |
| การกำกับดูแล/Linting API | มีมาให้ในตัว | ไม่รวมอยู่ด้วย |
| Reporters | จำกัด, ผลลัพธ์อยู่ใน Postman | CLI, JUnit, รวมถึง community HTML reporters |
| การใช้งานออฟไลน์ | จำกัด, ออกแบบมาเพื่อทำงานกับคลาวด์ | ออฟไลน์ได้อย่างสมบูรณ์เมื่อไฟล์อยู่ในเครื่อง |
| ความสมบูรณ์ | ใหม่กว่า | มาตรฐานชุมชนที่ก่อตั้งมายาวนาน |
| ค่าใช้จ่าย | ฟรี, แต่ผูกกับข้อจำกัดของ Postman plan | ฟรี, ไม่ต้องมีบัญชี |
แกนตัดสินใจคือ Postman cloud Postman CLI สร้างขึ้นเพื่อป้อนผลลัพธ์และการกำกับดูแลเข้าสู่แพลตฟอร์ม Postman Newman สร้างขึ้นเพื่อรันไฟล์และรายงานผลในเครื่อง โดยไม่มีการพึ่งพาเซิร์ฟเวอร์ของ Postman
ทั้งสองทำงานร่วมกับ CI/CD ได้อย่างไร
ทั้งสองเครื่องมือทำงานได้กับ CI provider ใดๆ รวมถึง Jenkins, GitHub Actions, GitLab CI และ CircleCI กลไกการทำงานแตกต่างกัน
สำหรับ Newman คุณจะคอมมิตไฟล์ JSON ของ collection และ environment ไปยัง repository ของคุณ, ติดตั้ง Newman ในงาน, รันมัน, และปล่อยให้ exit code ที่ไม่ใช่ศูนย์ทำให้ build ล้มเหลวเมื่อเกิดข้อผิดพลาดในการทดสอบ ทุกอย่างถูกบรรจุอยู่ใน repo และ pipeline ของคุณ คำแนะนำของเราเกี่ยวกับการ ทำให้การทดสอบ API เป็นแบบอัตโนมัติใน CI/CD และ การทำให้การทดสอบ API เป็นแบบอัตโนมัติด้วย GitHub Actions แสดงรูปแบบนี้
สำหรับ Postman CLI คุณจะเก็บ Postman API key เป็น secret ใน CI provider, ยืนยันตัวตน, และรัน collection ด้วย ID ของมัน Collection จะถูกดึงมาจาก Postman cloud แทนที่จะเป็นจาก repo และผลลัพธ์จะถูกส่งกลับไปยัง workspace สิ่งนี้ทำให้ source of truth อยู่ใน Postman ซึ่งบางทีมชอบ แต่บางทีมก็พบว่าเป็นการจำกัด
ความแตกต่างในทางปฏิบัติ: Newman เก็บการทดสอบที่ถูกเวอร์ชันร่วมกับโค้ดของคุณ เนื่องจากไฟล์ collection JSON อยู่ใน repo Postman CLI เก็บการทดสอบที่ถูกเวอร์ชันในแพลตฟอร์มของ Postman เนื่องจากมันดึงข้อมูลด้วย ID ตัดสินใจว่าทีมของคุณต้องการ source of truth แบบใดก่อนที่จะเลือก
มุมมองด้านการกำกับดูแล
คุณสมบัติเดียวที่แยกเครื่องมือทั้งสองออกจากกันอย่างชัดเจนที่สุดคือการกำกับดูแล API (API governance) Postman CLI สามารถรันการตรวจสอบสไตล์ postman api lint กับคำจำกัดความ API ที่เก็บอยู่ใน Postman workspace ของคุณ โดยประเมินตามกฎสำหรับการตั้งชื่อ, ความปลอดภัย, ความสมบูรณ์ของ schema, และความสอดคล้อง เมื่อการตรวจสอบนั้นทำงานภายใน pipeline, คำจำกัดความที่ละเมิดกฎจะทำให้ build ล้มเหลวก่อนที่การเปลี่ยนแปลงจะถูกรวมเข้าด้วยกัน
Newman ไม่มีคุณสมบัติเทียบเท่านี้ มันรัน collection และรายงานผลการทดสอบ ซึ่งเป็นขอบเขตของงานของมัน หากองค์กรของคุณให้ความสำคัญกับการบังคับใช้มาตรฐานการออกแบบ API โดยอัตโนมัติ ความสามารถนั้นมีเฉพาะใน Postman CLI และเป็นเหตุผลที่แท้จริงในการเลือกใช้ หากคุณไม่ได้บังคับใช้กฎการออกแบบใน pipeline คุณสมบัตินี้ก็ไม่เกี่ยวข้อง และความเรียบง่ายของ Newman ก็จะเหนือกว่า
สิ่งนี้ควรพูดอย่างตรงไปตรงมา เพราะมันเป็นการปรับมุมมองการเปรียบเทียบใหม่ Postman CLI ไม่ใช่แค่ "Newman ที่ใหม่กว่า" เท่านั้น มันเป็นเครื่องมือประเภทที่แตกต่างออกไป: ตัวแทน pipeline สำหรับแพลตฟอร์ม Postman ที่บังเอิญมี collection runner รวมอยู่ด้วย Newman เป็น และเป็นเพียงแค่ collection runner เท่านั้น เมื่อคุณมองด้วยวิธีนี้ การเลือกจะไม่ได้ขึ้นอยู่กับคุณสมบัติมากนัก แต่จะขึ้นอยู่กับว่าคุณต้องการผูกการทดสอบของคุณกับแพลตฟอร์ม Postman เลยหรือไม่
ข้อควรพิจารณาในการย้ายระบบ
ทีมที่ใช้ Newman อยู่แล้วบางครั้งก็ถามว่าควรเปลี่ยนไปใช้ Postman CLI หรือไม่ ไม่ค่อยมีเหตุผลที่ชัดเจนในการเปลี่ยนเท่าไหร่ Newman ยังคงได้รับการบำรุงรักษา, ยังคงฟรี, และยังคงทำงานได้กับ CI provider ทุกราย การเปลี่ยนไปใช้หมายถึงการเพิ่ม API key เป็น CI secret, การเปลี่ยนแปลงวิธีการดึง collections, และการยอมรับการพึ่งพา Postman cloud เว้นแต่คุณต้องการประวัติการรันแบบรวมศูนย์หรือการตรวจสอบการกำกับดูแลโดยเฉพาะ ค่าใช้จ่ายในการย้ายระบบจะสูงกว่าผลตอบแทนที่ได้รับ
ทีมที่เริ่มต้นใหม่ต้องเผชิญกับการเลือกที่น่าสนใจกว่า หากทีมยึดมั่นใน Postman เป็นเครื่องมือหลักและจ่ายเงินสำหรับแพลน Postman CLI จะเก็บทุกอย่างไว้ในระบบนิเวศเดียวกันและเป็นตัวเลือกที่เป็นธรรมชาติ หากทีมต้องการความยืดหยุ่น, การทดสอบที่ถูกเวอร์ชันใน repo, และอิสระจากคลาวด์ของผู้ให้บริการรายเดียว Newman หรือเครื่องมือที่ไม่ใช่ Postman ทั้งหมดจะสมเหตุสมผลกว่า ไม่มีคำตอบที่ถูกต้องสากล มีเพียงคำตอบที่เข้ากับวิธีการทำงานของทีมคุณอยู่แล้ว
คุณควรเลือกเครื่องมือใด
เลือก Newman หากคุณต้องการตัวรันที่ไม่ต้องพึ่งพาบัญชี, หากคุณต้องการให้การทดสอบถูกเวอร์ชันใน repository ของคุณ, หากคุณต้องการรายงาน HTML ที่สมบูรณ์ผ่าน community reporters, หรือหากคุณรันในสภาพแวดล้อมที่จำกัดซึ่งไม่อนุญาตให้เรียกใช้ Postman cloud ความเป็นอิสระและความสมบูรณ์ของ Newman ทำให้เป็นตัวเลือกเริ่มต้นที่ปลอดภัยสำหรับ pipeline ส่วนใหญ่
เลือก Postman CLI หากทีมของคุณทำงานอยู่ภายในแพลตฟอร์ม Postman, หากคุณต้องการให้ประวัติการรันและแดชบอร์ดรวมศูนย์อยู่ที่นั่น, หรือหากการกำกับดูแล API และการทำ definition linting ใน pipeline มีค่าสำหรับคุณ การรวมระบบคลาวด์ที่แน่นหนาเป็นข้อได้เปรียบที่แท้จริงสำหรับทีมที่ใช้ Postman เป็นหลัก
หากคุณกำลังชั่งน้ำหนักการตัดสินใจนี้ ควรพิจารณาว่าคุณต้องการผูกติดกับระบบนิเวศของ Postman เลยหรือไม่ สำหรับแนวทางอื่น ๆ โปรดดูคำแนะนำของเราเกี่ยวกับการ รัน Postman collections ใน CI โดยไม่ต้องใช้ Newman และมุมมองที่กว้างขึ้นของเราเกี่ยวกับการ ทดสอบ API โดยไม่ต้องใช้ Postman
ทางเลือกเครื่องมือเดียว: Apidog
ทั้ง Postman CLI และ Newman สมมติว่าคุณสร้างการทดสอบของคุณใน Postman Apidog ขจัดความแตกต่างนั้นออกไป คุณออกแบบ API, ดีบักคำขอ, และสร้างสถานการณ์การทดสอบอัตโนมัติด้วยการยืนยันแบบภาพในแอปพลิเคชันเดียว, จากนั้นรันสถานการณ์เหล่านั้นใน CI/CD ด้วย command-line runner ที่มาพร้อมเครื่องมือ ไม่มีขั้นตอนการส่งออกและไม่มีแพ็กเกจ runner แยกต่างหาก เพราะคำจำกัดความการทดสอบและเอนจินการทำงานเป็นผลิตภัณฑ์เดียวกัน
Apidog ยังรวมเอาการออกแบบ API, mock servers, และการทดสอบประสิทธิภาพไว้ด้วย ดังนั้นทีมจึงสามารถครอบคลุมวงจรชีวิตของ API ทั้งหมดโดยไม่ต้องเชื่อมโยงเครื่องมือหลายชิ้นเข้าด้วยกัน คุณสามารถ ดาวน์โหลด Apidog และใช้คุณสมบัติการทดสอบได้ฟรี รวมถึง CLI runner สำหรับ pipelines
คำถามที่พบบ่อย
Postman CLI จะมาแทนที่ Newman หรือไม่?
Postman วางตำแหน่ง Postman CLI ให้เป็นเครื่องมือบรรทัดคำสั่งที่แนะนำอย่างเป็นทางการ แต่ Newman ยังคงได้รับการบำรุงรักษาและใช้งานอย่างแพร่หลาย Newman ยังคงเป็นตัวเลือกที่ดีกว่าเมื่อคุณต้องการตัวรันที่ไม่มีการผูกบัญชีและมีการเก็บเวอร์ชันใน repo ทั้งสองน่าจะอยู่ร่วมกันได้อีกระยะหนึ่ง จึงไม่จำเป็นต้องรีบย้ายระบบ
Postman CLI ต้องใช้บัญชี Postman หรือไม่?
ใช่ Postman CLI ยืนยันตัวตนด้วย Postman API key และถูกออกแบบมาเพื่อเชื่อมโยงผลการรันกลับไปยัง Postman workspace ของคุณ ในทางตรงกันข้าม Newman ไม่ต้องการบัญชีและรันจากไฟล์ collection ในเครื่องเท่านั้น
เครื่องมือใดให้รายงานที่ดีกว่า?
Newman มีความยืดหยุ่นในการรายงานมากกว่าผ่าน community reporters โดยเฉพาะ newman-reporter-htmlextra สำหรับเอาต์พุต HTML ที่ละเอียด และ JUnit XML สำหรับ CI dashboards Postman CLI รายงานผลลัพธ์เข้าสู่แพลตฟอร์ม Postman โดยตรง ซึ่งสะดวกหากทีมของคุณทำงานที่นั่น แต่มีความยืดหยุ่นน้อยกว่าสำหรับไฟล์รายงานแบบสแตนด์อโลน
Postman CLI สามารถรันไฟล์ collection ในเครื่องได้หรือไม่?
Postman CLI สามารถรัน collections จากไฟล์ในเครื่องได้ แต่ถูกสร้างขึ้นโดยเน้นการดึง collections จาก Postman cloud ด้วย ID และรายงานผลลัพธ์กลับไป หากคุณต้องการเครื่องมือที่ถือว่าไฟล์ JSON ในเครื่องเป็น source of truth โดยไม่มีการเกี่ยวข้องกับคลาวด์ Newman จะเหมาะสมกับโมเดลนั้นมากกว่า
เครื่องมือใดเร็วกว่าใน CI?
สำหรับการรัน collection ล้วนๆ ความแตกต่างมีน้อยและขึ้นอยู่กับขนาดของ collection และสภาพเครือข่าย Newman มีรอยเท้าที่เล็กกว่าและไม่มีการเดินทางไปกลับคลาวด์ Postman CLI เพิ่มค่าใช้จ่ายในการยืนยันตัวตนและการซิงค์ผลลัพธ์ไปยังแพลตฟอร์ม สำหรับ pipeline ส่วนใหญ่ ให้เลือกตามความเหมาะสมของเวิร์กโฟลว์มากกว่าความเร็วที่แท้จริง
