feature-image-postman-101
feature-image-postman-101

ทําเทสมาตั้งนาน Postman ผ่านตามาก็บ่อย แต่ไม่เคยลองเล่นกับมันจริงๆจังเลย จนวันนี้มีโอกาสได้ยินชื่อนี้กลับมาเข้าหูอีก เลยพบว่าเจ้า Postman นี่มีประโยชน์มากเลย สําหรับการทํา API testing 🙂 เหมาะสําหรับให้ QA หรือ Dev. เอาไปใช้เล่นเลย

Postman คืออะไร?

มันเป็นเครื่องมือแสนง่ายที่ไว้ใช้ในการทํา API testing (มันคือการทดสอบว่า Dev. ได้สร้าง API ขึ้นมาถูกต้องมั้ย? เช่น รับ arguments, header แบบนี้ได้มั้ย แล้ว response ที่ได้กลับมาถูกต้องมั้ย? criteria ของ arguments รับได้มั้ย เช่น email ต้องถูก format เป็นต้น) ให้สะดวกสบายมากมายเลย ซึ่งเจ้า Postman นี้มีบนทุก platform เลยก็ว่าได้ แต่ที่จะนิยมใช้กันจาก chrome extension มากกว่า 🙂

postman-overview
postman-overview

แล้วทําไมต้อง Postman?

จริงๆเครื่องมือในการทํา API testing ในตลาดก็มีหลายตัวมาก แต่ที่ดังๆก็จะมีสองตัวนี้

  1. Advance REST Client 1,105,437 users
  2. Postman 3,435,793 users

แต่เนื่องจากด้วย features ของ Postman มีหลากหลายรูปแบบมากกว่าแถมยังเหมาะกับการทํางานเป็นทีม คนก็ใช้มากกว่า Advance REST Client กว่า2ล้านคน!

คนส่วนใหญ่จะใช้ Postman กัน เพราะฉะนั้น QA automation รู้ไว้ก็จะดีกว่าไม่เคยได้ยินมาเลย จะได้มีประโยชน์การทํางานแบบง่ายๆ คนฉลาดต้องขี้เกรี้ยจ 🙂 ต้องหาเครื่องทุ่นแรงตัวเองเสมอ

Postman ฟรีหรอ?

ก็ถ้าๆเราใช้ Postman คนเดียว ไม่ได้ทํางานเป็นทีมใหญ่ๆ แล้วต้องมีการ share collections กันระหว่างทีม มันก็จะฟรีน่ะ 🙂 สามารถใช้สร้าง request และ ยิงได้ไม่จํากัดเลย รวมไปถึงสามารถ share collections, ใช้ test scripts อะไรก็ได้หมดเลยยยย (ถ้าเราจะ share ให้เพื่อน จริงๆก็ได้น่ะ export เอาเป็น json file หรือ url แล้วส่งให้เพื่อนก็ได้ ไม่ต้องซื้อ Pro version จะได้ไม่เสียตังค์)

ส่วนเจ้า Postman Pro มันก็เพิ่มตัวสําคัญๆมาก็คือเรื่องทํางานกันเป็นทีมนั้นแหละ เช่น Team Library of Collections ที่จะรวม Collection ของทั้งทีมไว้ แบบสมมุติทีมมี 5 คน มี 5 collections มันก็จะ cloud รวมกันไว้ในหน้าเดียว แล้วเราก็เลือกใช้ของเพื่อนได้ หรือ แบบดู change ของ API testing เมื่อมีคนในทีมเปลี่ยนใน activity feed ก็ได้

postman-product-comparison
postman-product-comparison

Postman ทํา Automate ก็ได้น่ะ?

ถ้าคนลองเปิด Postman ขึ้นมา จะเห็นว่ามันเป็นหน้า UI หยุยยับไปหมด แต่จริงๆเราสามารถทําให้มัน run ผ่าน command line ได้น่ะ แล้วเอาไปผูกกับ Jenkins เพื่อทํา API testing แบบง่ายๆ ระหว่าง build ก็ได้ เพื่อให้มั่นใจว่า API ที่เปลี่ยนไป ไม่ได้ break compatibilty หรือ มันตายไปแล้ววววว 🙂 ง่ายๆเลยการจะรันผ่าน command line ก็แค่ไปใช้ NodeJs ตัวนึงที่ชื่อว่า Newman 

ซึ่งการใช้งานของมันก็ง่ายๆเลย คือเา export API testing collections ของเราออกมาเป็น Json ไฟล์ หรือ export ออกมาเป็น Url ก็ได้ แล้วใช้ Newman ชี้ไปที่นั้น แค่นั้นมันก็จะรันเหมือนเรากดผ่านหน้า UI ได้เลย

postman-newman-cli
postman-newman-cli (https://www.npmjs.com/package/newman#using-newman-as-a-nodejs-module)

คงมีคนสงสัยว่า API testing ถูก export ออกมาเป็น Json แล้วมันจะทํางานได้ยังไง??? จะไปยิง test ได้ด้วยหรอ???

ข้างล่างนี้คือตัวอย่างของ Json ที่ถูก export ออกมา

example-collection-postman
example-collection-postman

จะเห็นได้ว่าที่มันตีกรอบสีแดงไว้ มันจะมีการเรียง order ของ request ที่จะยิงออกไปตามลําดับ และในแต่ละ request ที่ยิงออกไปก็จะระบุพวก Header, Method type และ raw data จริงๆที่เราจะส่งออกไป เพราะฉะนั้นเวลา Postman หรือ Newman เอาไปอ่าน มันก็จะอ่านค่าพวกนี้และยิงตามลําดับออกไปนั้นเอง

ส่วนเวลามันยิงเสร็จมันก็จะได้ reporter ออกมา ซึ่งเราสามารถตั้งได้ว่าให้มันเป็น type ไหนเช่น

  • Cli
  • Json
  • Junit

ที่ต้องตั้งยังงี้เพราะอะไร? เพราะเวลาเราเอาไป integrate กับ jenkins มันจะได้อ่านผลบนหน้า Jenkins ได้ง่ายๆเลย 🙂

ตัวอย่าง html reporter ของ postman จะมีสรุปให้ว่ายิงกี่ครั้ง assert อะไรแล้วอะไร Fail บ้าง

postman-html-report
postman-html-report

ตัวอย่าง reporter แบบ xml เพื่อให้ Jenkins

postman-xml-reporter-junit
postman-xml-reporter-junit

สามารถอ่านทั้งหมดได้ที่นี้เลย Newman หรือไปดู source code ที่ Github (หรือถ้าอยากดูแค่ตัวอย่าง report ลองเข้าไปดูที่นี้ก็ได้ reports )

เพียงแค่นี้มันก็สามารถทํางานร่วมกัน Jenkins ให้ครบ flow autoamte ได้แล้ว 🙂

Postman ยังมี extension Interceptor ด้วยน่ะ

โดยปกติแล้วเวลาใช้งานใน google chrome มันก็ยังมีปัญหาเรื่องของ header เวลาจะส่ง request ไปที่ API เพราะมันจะทําให้เราหลอก API ได้ ทีนี้เจ้า Postman ก็เลยทํา extension ตัวนึงชื่อ “Postman Interceptor” ทําหน้าที่เราให้เรา set header ตอนก่อนส่งได้ ซึ่งด้วยวิธีนี้จะทําให้เรา test ได้ง่ายขึ้น

postman-apps-extension
postman-apps-extension (https://www.getpostman.com/apps)

Postman Testing Script

แต่ที่ชอบสุดก็คงไม่พ้นการเขียน Testing ใน Postman เนี่ยแหละ 🙂

postman-writing-test
postman-writing-test (https://www.getpostman.com/docs/writing_tests)

เราสามารถเขียน testing บน Postman ได้เลย เพื่อความรวดเร็วของ API ที่เรา test อยู่ โดยกดไปที่ tab “Tests” แล้วก็เขียนได้เลย โดยการเขียนด้วย Postman จะเป็นการเขียนง่ายๆ เช่น response กลับมาเป็นอะไร, Http status

โดยเราสามารถดู references ได้ว่า เรามีอะไรให้ใช้บ้างจากที่นี้  Testing Example ไอ้เจ้าพวก tests[“…”] พวกนี้เป็น syntax ของ Postman เอง ซึ่งเราสามารถมาดูที่นี้ได้เลยว่ามีอะไรให้เลือกใช้บ้าง

สิ่งที่เด็ดและโดนใจมากที่สุดก็คือเรื่องของการแปลง HTTP request ที่เราใส่ไว้แบบ GET/POST กับพวก body พวกนั้นมาเป็น code ให้เราเลย!!!!!! โดยเราไม่ต้องเขียนโค้ดเองแม้แต่น้อย….สุดยอดมากๆๆ เช่น

example-postman-http-request
example-postman-http-request

มาเป็นงี้เลย

example-http-to-python
example-http-to-python

คือจาก http get request แปลงมาให้เป็น Python เลยอะ!!! ง่ายมาก เราไม่จําเป็นต้องเขียนอะไรเองเลย เป็นวิธีย่นเวลาในการทดสอบ request ได้ดีสุดๆ 🙂

โดยภาษาที่รองรับในการเขียน test มีเยอะมากเช่น

postman-testing-programming-language
postman-testing-programming-language

สรุปซะทีเหนื่อยละ

หลักๆแล้วการใช้ Postman เพื่อทําการ testing API เป็นเรื่องที่ง่ายมาก และสะดวกมากเมื่อจะเอาไปผูกกับ Jenkins อีก เพราะฉะนั้นการเรียนรู้ใช้ Postman เนี่ยมันจะทําให้เรามีตัวเลือกมากขึ้นเยอะเลย ไม่จําเป็นต้อนเขียน Script เพื่อทํา API Testing เพียงอย่างเดียว ใช้ของสําเร็จอย่าง Postman ก็ได้เหมือนกัน แถมเร็วกว่าเดิมด้วย 🙂

เพราะงั้นต่อไปถ้ามีการทํา API testing Postman นี้น่าจะเข้าหูบ้างล่ะ ว่าเหมาะสมเอาเข้ามาใช้หรือไม่

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Recent comment authors

This site uses Akismet to reduce spam. Learn how your comment data is processed.

newest oldest most voted
trackback

[…] เพราะฉะนั้น tools ต่างๆอย่าง Postman เราควรที่จะรู้ไว้อยู่แล้วล่ะ […]