การเขียน Test Script ด้วย Postman

Puttapong Khemcharoen
Scale360 Engineering
3 min readJan 29, 2018
ขอขอบคุณภาพจาก scotch

ในหัวข้อนี้เราจะมาพูดถึงการเขียน Postman test script กัน โดยเนื้อหาจะมีการ ใช้ environment, การใช้ data file(support csv,json) ในการทำงาน, และการใช้ Postman runner ในการทำ test script มาเริ่มกันเลยดีกว่า

  1. อันดับแรกผมจะสมมุติเหตุการขึ้นมาก่อน โดยมีเนื้อหาดังนี้
  • ผมมี service อยุ่ สองตัว โดยที่ ตัวที่หนึ่งนั้น เป็นระบบล็อกอิน เพื่อขอ token เป็นการยืนยันตัวตนในการใช้ service อื่นๆ (Login for Access Token) และอีก service หนึ่งเป็นระบบจัดการเกี่ยวกับ User Search History โดยมีความสามารถคือ สามารถดูประวัติการค้นหาล่าสุดได้ (recently search), สามารถเพิ่ม keyword ที่ใช้ search ของ user ได้ (insert search history by keyword), และ สามารถเคลียประวัติการค้นหาได้ (Clear history search)
  • เหตุการคือ (Scenario) User สามารถค้นหาข้อมูลต่างๆภายในระบบได้ โดยการล็อกอินเข้ามา (Call Service Login) เพื่อทำการค้นหาข้อมูล โดยเราจะทำการบันทึกข้อมูลการค้นหาของ User (Call Insert Keyword), และเมื่อ User เข้ามาใหม่อีกครั้ง เขาสามารถมองเห็นประวัติการค้นหาล่าสุดของเขา(Call Recently Search), และสุดท้าย User ต้องการลบประวัติการค้นหาของตัวเองออกทั้งหมด (clear history search)

2. ผมจะทำการสร้าง Postman Folder และ สร้างไฟล์ ต่างๆ ให้ตรงตามเงื่อนไขด้านบนนะครับ

ภาพตัวอย่าง การจัด Collection ในรูปแบบ BDD Flow

จากภาพคุณจะเห็นได้ว่าผมพยายามที่จะจัด หมวดหมู่ให้มันโดยที่

  • Resource จะเป็น Folder ไว้สำหรับเซ็ต environment ต่างๆ เพื่อเอาไว้ใช้ในการเก็บค่าต่างๆโดยที่ environment จะมีโครงสร้างเหมือนการประกาศตัวแปร เป็น “Key: value” ในที่นี่เราจะทำการเก็บค่า URL ของ service, และ username, password ในการ Login token
  • Test Script Flow จะเป็น Folder ที่เก็บไฟล์ end-point ในการยิง service ต่างๆ และเราจะเขียน test ลงไปในแต่ละ service เพื่อเช็คว่ามันทำงานถูกต้องตามสิ่งที่เราต้องการไหม
  • หมายเหตุ: การเซ็ต environment คุณสามารถทำได้หลากหลายวิธี อาทิเช่น คลิกขวา edit ที่ collection name แล้วไปที่หัวข้อ variable ก็สามารถตั้งค่าเป็นตัวแปรที่เอาไว้ใช้กับ collection นั้นๆได้, หรือการเพิ่ม environment โดยตรงจาก ปุ่มรูปเฟือง ด้านขวาบนของหน้าจอ ที่มีเมนู Manage Environment, หรือแม้กระทั่งเพิ่มจาก code ซึ่งในที่นี่เราจะใช้วิธีนี้กัน

3. ต่อมาการเขียน Tests ในกรณีนี้ผมจะเริ่มไล่ไปตาม Flow โดยขอเริ่มต้นที่

  • Step 1). Login Access Token
Pre-request สำหรับ Set Environment ( email, password, URL Service) ในการ login
ภาพตัวอย่าง JSON Response เมื่อ ล็อกอินเพื่อ Access Token
Test Script สำหรับเช็ค Status 200, field Token, และ status token, สุดท้ายคือนำค่า value token มาเซ็ต environment เพื่อนำไปใช้ในการยืนยันตัวตนสำหรับ insert search, recently search, clear history search
  • Step 2). Insert keyword into search history.
สร้างไฟล์ CSV ขึ้นมาโดยใช้ชื่อ Column เป็น keyword และใส่เนื้อหาเข้าไป
สำหรับ JSON Body เพื่ออ่านค่าจาก CSV ไฟล์ ตรง field keyword ให้ใส่ค่าตัวแปรเป็น “{{keyword}}” ตามชื่อ column ที่เราตั้งไว้ใน csv
ภาพตัวอย่าง JSON Response เมื่อเรายิง Service เพื่อ Insert keyword
Test Script สำหรับ check response ควรจะเป็น 201 สำหรับ create หรือ 200 สำหรับ update keyword ที่มีอยุ่แล้ว, และเช็คค่าที่ keyword ที่ json output ควรจะเป็นค่าเดียวกับที่ input เข้าไป
  • Step 3). View recently search history
ภาพตัวอย่าง เมื่อเรายิง Service เพื่อขอดูค่าที่เราค้นหาล่าสุด
Test Script สำหรับเช็คค่า Status 200 และค่า length ของ recently search ว่าควรจะมีค่าแค่ 1 ตามที่เรา insert เข้าไป
  • Step 4). Clear Search History
ภาพตัวอย่าง เมื่อเรายิง Service เพื่อลบ Keyword ที่เราใช้ค้นหาทั้งหมด
Test Script สำหรับเช็คค่า Status 200 และข้อความ field Data ควรจะเป็น “Success”

เป็นการเสร็จสิ้นในการเขียน Test script แบบ BDD คำแนะนำเพิ่มเติม เราสามารถดูผลลัพธ์หรือปริ้นค่าต่างๆที่ต้องการได้ผ่านคำสั่ง console.log(“ค่าที่ต้องการ”) และกดปุ่ม ALT +Ctrl + C เพื่อเปิดดู Postman Command line.

4. ต่อมาให้เราคลิ๊กที่ปุ่ม Runner และต่อมาให้คลิ๊ก Select file เพื่อเรียกไปหาไฟล์ CSV ของเรา จะเห็นได้ว่า Iterations จะเป็น 6 นั่นหมายถึง มันจะทำงาน 6 ครั้ง ตามจำนวน Rows ในไฟล์ CSV ที่เราใส่ค่าเข้าไป ให้เราตั้ง Delay ระหว่างจำนวนรอบเพื่อหน่วงเวลา บางครั้งข้อมูลอาจจะยังไม่ถูกลบ อาจทำให้เกิด Test fail ขึ้นได้

ภาพตัวอย่างการใช้ Postman Runner รัน Test Script พร้อมทั้ง select data file (support for JSON, CSV)
และนี่ก็เป็นภาพตัวอย่างของผลการใช้ Runner Test Script By Postman

จากทั้งหมดที่กล่าวมาข้างต้นก็เป็นการเขียน Test Script By Postman โดยมีการไล่ตาม BDD Flow ทั้งนี้ทั้งนั้น นี่เป็นเพียงตัวอย่างเล็กๆของ Postman ซึ่งตัวมันเองมีความสามารถทำอะไรได้มากกว่านี้ อาทิเช่น Postman BDD ที่คุณสามารถเขียน test ของคุณในรูปแบบ BDD ได้ด้วยเช่นกัน ในบทความต่อไปจะเป็นเรื่องของ Newman ในการ Test, and Reports และ Jenkins Pipeline.

อ้างอิงจาก

Postman Documents

Postman BDD library

PM API

--

--

Puttapong Khemcharoen
Scale360 Engineering

Jobs is a hat that you wear, it does not mentally who you are.