DEV Community

Cover image for Newman กับ Postman ต่างกันอย่างไร
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

Newman กับ Postman ต่างกันอย่างไร

Newman และ Postman ไม่ใช่คู่แข่งกัน แต่เป็นสองส่วนของเวิร์กโฟลว์เดียวกัน: Postman ใช้สร้างและดีบั๊กคำขอ API แบบมี GUI ส่วน Newman ใช้รันคอลเลกชันเดียวกันจากบรรทัดคำสั่งโดยไม่มี GUI เหมาะสำหรับ CI/CD, scheduled jobs และ automation ที่ต้องการผลลัพธ์ผ่าน exit code

ลองใช้ Apidog วันนี้

คำตอบสั้นๆ คือใช้ทั้งสองอย่างในคนละขั้นตอน: สร้างและตรวจสอบคอลเลกชันใน Postman จากนั้น export เป็น JSON แล้วให้ Newman รันใน pipeline บทความนี้สรุปวิธีใช้งานจริง ตั้งแต่การติดตั้ง การรันคอลเลกชัน การต่อกับ CI/CD ไปจนถึงข้อผิดพลาดที่ควรระวัง

Postman คืออะไร

Postman เป็นแพลตฟอร์ม API แบบกราฟิกสำหรับสร้างคำขอ จัดกลุ่มเป็น collection/folder และผูก environment ที่เก็บตัวแปร เช่น base URL, token หรือค่า config อื่นๆ หลังจากได้รับ response แล้ว Postman สามารถรัน JavaScript test script ในแท็บ Tests ได้ทันที

ตัวอย่าง test script:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Order total is a positive number", function () {
    const body = pm.response.json();
    pm.expect(body.total).to.be.a("number");
    pm.expect(body.total).to.be.above(0);
});
Enter fullscreen mode Exit fullscreen mode

Postman เหมาะกับงานแบบ interactive เช่น:

  • ดีบั๊ก endpoint ใหม่
  • ทดลองเปลี่ยน header/body/query parameter
  • ตรวจ response แบบ manual
  • สร้าง regression test suite
  • แชร์ collection ให้ทีมใช้ร่วมกัน

ถ้าต้องการเวิร์กโฟลว์การทดสอบ API ด้วย Postman แบบละเอียด ดูคู่มือ ทดสอบ API ด้วย Postman

ข้อจำกัดคือ Postman ไม่ได้ออกแบบมาเพื่อรันแบบ unattended ใน build server เพราะต้องเปิดแอปและใช้ Collection Runner ผ่าน GUI ซึ่งไม่เหมาะกับ pipeline

Newman คืออะไร

Newman คือ official command-line collection runner ของ Postman เป็นแพ็กเกจ npm แบบโอเพ่นซอร์ส ใช้รันไฟล์ collection JSON ที่ export จาก Postman ได้โดยตรง

ติดตั้ง Newman:

npm install -g newman
Enter fullscreen mode Exit fullscreen mode

รัน collection พร้อม environment:

newman run orders-api.postman_collection.json \
  --environment staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode

Newman จะรัน request ทั้งหมดใน collection, execute pm.test เหมือน Postman และแสดงผลใน terminal จุดสำคัญคือ Newman ใช้ runtime เดียวกับ Postman ดังนั้น test ที่ผ่านใน Postman Collection Runner ควรให้ผลลัพธ์เดียวกันเมื่อรันด้วย Newman

เมื่อ test ล้มเหลว Newman จะ exit ด้วย status code ที่ไม่ใช่ 0 ทำให้ CI/CD ตรวจจับได้ทันทีและ mark build เป็น failed

ตัวอย่างตรวจ exit code ใน shell:

newman run orders-api.postman_collection.json \
  --environment staging.postman_environment.json

echo $?
Enter fullscreen mode Exit fullscreen mode

ถ้า exit code เป็น 0 คือผ่าน ถ้าไม่ใช่ 0 คือมี error หรือ assertion failed

เปรียบเทียบ Postman กับ Newman

แง่มุม Postman Newman
อินเทอร์เฟซ แอปเดสก์ท็อปแบบกราฟิก บรรทัดคำสั่ง ไม่มี UI
การใช้งานหลัก สร้าง ดีบั๊ก สำรวจ API รันอัตโนมัติใน script หรือ CI/CD
รันที่ไหน เครื่องของนักพัฒนา CI server, terminal, scheduler
ค่าใช้จ่าย มีทั้งแผนฟรีและเสียเงิน โอเพ่นซอร์ส ฟรี
การติดตั้ง Desktop installer npm package หรือ Docker image
สคริปต์ทดสอบ เขียนและรันในแอป รันสคริปต์เดียวกันแบบ headless
การรายงานผล แสดงผลใน GUI CLI output และ reporter เช่น JUnit
เหมาะที่สุดสำหรับ การทำงานแบบ interactive การรันซ้ำได้แบบอัตโนมัติ

สรุปคือ collection JSON คือสะพานระหว่างสองเครื่องมือ: ออกแบบใน Postman แล้วรันอัตโนมัติด้วย Newman

วิธีใช้ Newman ใน CI/CD

รูปแบบทั่วไปมี 5 ขั้นตอน:

  1. Export จาก Postman

    Export collection และ environment เป็นไฟล์ JSON

  2. Commit เข้า repository

    เก็บไฟล์ไว้ใน repo เดียวกับโค้ด เช่น:

   api-tests/
     orders-api.postman_collection.json
     staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode
  1. ติดตั้ง Newman ใน CI job ใช้ npm:
   npm install -g newman
Enter fullscreen mode Exit fullscreen mode

หรือใช้ Docker image:

   docker run --rm -v "$PWD:/etc/newman" postman/newman run /etc/newman/api-tests/orders-api.postman_collection.json
Enter fullscreen mode Exit fullscreen mode
  1. รัน collection ระบุ collection และ environment ให้ชัดเจน:
   newman run api-tests/orders-api.postman_collection.json \
     --environment api-tests/staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode
  1. ให้ exit code ตัดสินผล build ถ้ามี test fail Newman จะ exit non-zero และ CI จะ fail job

ตัวอย่าง GitHub Actions:

name: API Tests

on:
  pull_request:
  push:
    branches:
      - main

jobs:
  newman:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Newman
        run: npm install -g newman

      - name: Run API tests
        run: |
          newman run api-tests/orders-api.postman_collection.json \
            --environment api-tests/staging.postman_environment.json \
            --reporters cli,junit \
            --reporter-junit-export results.xml
Enter fullscreen mode Exit fullscreen mode

แฟล็ก --reporters cli,junit ช่วยให้ได้ทั้ง output ใน terminal และไฟล์ JUnit XML สำหรับแสดงผลใน CI dashboard

อ่านต่อได้ที่:

ตัวเลือกบรรทัดคำสั่ง Newman ที่ควรรู้

Newman มี flag หลายตัวที่ช่วยให้ pipeline เสถียรขึ้น

รันด้วยข้อมูลหลายชุด

ใช้ --iteration-data เพื่อรัน collection ซ้ำตามข้อมูลใน CSV หรือ JSON

newman run orders-api.postman_collection.json \
  --environment staging.postman_environment.json \
  --iteration-data test-data/orders.csv
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง orders.csv:

productId,quantity
p-1001,1
p-1002,3
p-1003,5
Enter fullscreen mode Exit fullscreen mode

ใน Postman script หรือ request สามารถเรียกใช้ตัวแปรเป็น {{productId}} และ {{quantity}}

จำกัดจำนวนรอบ

newman run orders-api.postman_collection.json \
  --iteration-count 3
Enter fullscreen mode Exit fullscreen mode

เหมาะกับการทดสอบซ้ำเพื่อดูความเสถียรของ endpoint

หยุดทันทีเมื่อเจอ failure

newman run orders-api.postman_collection.json \
  --bail
Enter fullscreen mode Exit fullscreen mode

เหมาะกับ pull request pipeline ที่ต้องการ feedback เร็ว

ตั้ง timeout ต่อ request

newman run orders-api.postman_collection.json \
  --timeout-request 10000
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างนี้กำหนด timeout request ละ 10 วินาที ลดความเสี่ยงที่ CI job จะค้างเพราะ service ไม่ตอบ

หน่วงเวลาระหว่าง request

newman run orders-api.postman_collection.json \
  --delay-request 500
Enter fullscreen mode Exit fullscreen mode

เหมาะกับ API ที่มี rate limit หรือระบบ staging ที่รับโหลดได้จำกัด

รันเฉพาะ folder

newman run orders-api.postman_collection.json \
  --folder "Smoke Tests"
Enter fullscreen mode Exit fullscreen mode

ใช้แยก pipeline ได้ เช่น:

  • Pull request: รันเฉพาะ Smoke Tests
  • Nightly build: รัน regression ทั้ง collection

ข้อผิดพลาดทั่วไปเมื่อย้ายจาก Postman ไป Newman

1. ลืมส่ง environment file

Request ที่รันผ่านใน Postman อาจ fail ใน Newman ถ้าตัวแปรอยู่ใน active environment แต่ไม่ได้ส่งไฟล์ environment ให้ Newman

ควรระบุเสมอ:

newman run orders-api.postman_collection.json \
  --environment staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode

2. Hardcode ค่าเฉพาะเครื่อง

หลีกเลี่ยงการ hardcode เช่น token, base URL หรือ user ID ใน request โดยตรง ให้ใช้ environment variable แทน:

{{baseUrl}}/orders/{{orderId}}
Enter fullscreen mode Exit fullscreen mode

แล้วจัดการค่าผ่าน environment file หรือ CI secrets

3. ใช้ token ที่หมดอายุ

ถ้า environment file มี token แบบ static pipeline อาจ fail เมื่อ token หมดอายุ ทางแก้คือเพิ่ม request สำหรับ login/auth แล้วเก็บ token ด้วย script

ตัวอย่าง:

const body = pm.response.json();
pm.environment.set("accessToken", body.access_token);
Enter fullscreen mode Exit fullscreen mode

จากนั้นใช้ใน header:

Authorization: Bearer {{accessToken}}
Enter fullscreen mode Exit fullscreen mode

4. Export collection แล้วลืมอัปเดต repo

ไฟล์ collection ใน repository เป็น snapshot ถ้าแก้ collection ใน Postman แล้วไม่ export ใหม่ CI จะยังรันเวอร์ชันเก่า

แนวทางที่ควรทำ:

  • ทุกการแก้ test ต้อง export ใหม่
  • commit collection และ environment พร้อมโค้ด
  • review diff ของ JSON ใน pull request
  • ทดสอบด้วย Newman local ก่อน push
newman run api-tests/orders-api.postman_collection.json \
  --environment api-tests/staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode

5. พึ่งพา Postman cloud/session มากเกินไป

คอลเลกชันที่อ้างอิง state จาก cloud sync หรือ login session อาจไม่ทำงานเหมือนเดิมเมื่อรันจากไฟล์ JSON ใน CI ให้ทดสอบไฟล์ export ด้วย Newman ในเครื่องก่อนเสมอ

ควรใช้ Postman หรือ Newman เมื่อไหร่

ใช้ Postman เมื่อมีคนกำลังทำงานกับ API โดยตรง:

  • ออกแบบ request ใหม่
  • ดีบั๊ก response
  • ทดลอง endpoint ของ third-party service
  • เขียนและปรับ test script
  • จัดระเบียบ collection

ใช้ Newman เมื่อต้องการให้ระบบรันเอง:

  • รัน test ทุก pull request
  • รัน nightly regression
  • รัน smoke test หลัง deploy
  • สร้าง API monitoring job แบบ scheduled
  • ส่งผลลัพธ์เข้า CI dashboard

ขอบเขตที่จำง่ายคือ:

Postman ใช้สร้างงาน ส่วน Newman ใช้รันงานอัตโนมัติ

ถ้าไม่ต้องการใช้ Newman เป็นตัวรันแยก ดูตัวเลือกเพิ่มเติมในคู่มือ รันคอลเลกชัน Postman ใน CI โดยไม่มี Newman

ทางเลือกแบบครบวงจร: Apidog

การใช้ Postman ร่วมกับ Newman ต้องดูแลหลายส่วน: export collection, sync ไฟล์ JSON, จัดการ environment และตั้งค่าตัวรันใน CI/CD

Apidog รวมงานออกแบบ API, debug request, automated testing และ CI/CD runner ไว้ในแพลตฟอร์มเดียว คุณสามารถสร้าง test scenario พร้อม assertion ในแอป แล้วนำไปรันใน pipeline ด้วย command-line runner โดยไม่ต้อง export/sync collection แยกเหมือน workflow แบบ Postman + Newman

Apidog ยังรองรับ API design, mock servers และ performance testing ใน workspace เดียวกัน คุณสามารถ ดาวน์โหลด Apidog และใช้ฟีเจอร์ทดสอบได้ฟรี

สำหรับการเปรียบเทียบเครื่องมือเพิ่มเติม ดูรายการ ทางเลือกที่ดีที่สุดของ Postman สำหรับการทดสอบ API

คำถามที่พบบ่อย

Newman เป็นตัวแทนของ Postman ใช่หรือไม่?

ไม่ใช่ Newman สร้างหรือแก้ไข collection ไม่ได้ ทำได้เพียงรัน collection ที่สร้างไว้แล้ว คุณยังต้องใช้ Postman หรือเครื่องมืออื่นเพื่อสร้าง request และเขียน test script

Newman มีค่าใช้จ่ายหรือไม่?

ไม่มี Newman เป็นโอเพ่นซอร์สและใช้ฟรี แจกจ่ายผ่าน npm package ส่วน Postman มีทั้งแผนฟรีและแผนเสียเงิน แต่ Newman เองไม่มีค่าใช้จ่าย

Test script จาก Postman จะทำงานเหมือนกันใน Newman หรือไม่?

ใช่ Newman ใช้ execution engine เดียวกับ Postman ดังนั้น pm.test, assertion และ request logic จะทำงานเหมือนกันเมื่อ export collection และ environment อย่างถูกต้อง

Newman รายงาน test failure อย่างไร?

Newman แสดงผลใน terminal และ exit ด้วย status code ที่ไม่ใช่ 0 เมื่อมี test fail CI/CD จึงตรวจจับ failure ได้ทันที นอกจากนี้ยังรองรับ reporter เช่น JUnit XML และ HTML สำหรับนำผลลัพธ์ไปแสดงใน dashboard

รัน Newman โดยไม่ติดตั้ง Node.js ได้ไหม?

ได้ ถ้าไม่ต้องการติดตั้ง Node.js โดยตรง ให้ใช้ Docker image postman/newman:

docker run --rm -v "$PWD:/etc/newman" postman/newman run \
  /etc/newman/api-tests/orders-api.postman_collection.json \
  --environment /etc/newman/api-tests/staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode

วิธีนี้เหมาะกับ CI environment ที่ไม่ต้องการจัดการ Node.js runtime เอง

Top comments (0)