EP.4 ได้หน้าอย่าลืมหลัง ได้ Success อย่าลืม Alternative

Warittaya W.
WeLoveBug dot Com
Published in
4 min readJul 10, 2023

เส้นทางสู่การเป็น Tester 🐞 Bootcamp by WeLoveBug (4–6 กรกฎาคม 2566)

สัปดาห์นี้ผู้ร่วมเดินทางทุกท่านได้เข้ามาทำงานและเรียนรู้ร่วมกัน ณ SCK Dojo แบบตัวเป็นๆ เพื่อการปรับตัวและทำความคุ้นเคยซึ่งกันและกัน ดังนั้น บทความใน EP. นี้จะอัดแน่นไปด้วยเนื้อหาให้ทุกท่านได้อ่านและรับมอบความรู้ไปพร้อมๆ กัน ในหัวข้อการทำ Automation Test “E2E Testing with Postman” และ “การ Query ข้อมูลด้วย SQL”

Day 1 🗓️ 4 กรกฎาคม 2566

เริ่มต้นเช้าอันสดใสด้วยการเรียน Automation Test “E2E Testing with Postman” — ส่งมอบความรู้และประสบการณ์โดยพี่บอย

API (Application Programming Interface)

“API” ใช้การสื่อสารและแลกเปลี่ยนข้อมูลในรูปแบบของ Web Service ด้วยการใช้ HTTP (Hypertext Transfer Protocol) โดยข้อมูลที่แลกเปลี่ยนกันนั้นมักอยู่ในรูปแบบ JSON (JavaScript Object Notation)

รูปแบบการเขียน JSON (JavaScript Object Notation)

JSON เป็นข้อมูลรูปแบบ Text ที่เก็บข้อมูลแบบ Key และ Value โดยการเขียนข้อมูลชนิด JSON มีรูปแบบคือ Field Name ที่ครอบด้วยเครื่องหมาย “ ”(double quote), เครื่องหมาย : (colon), value แล้วครอบทั้งหมดด้วยเครื่องหมายปีกกา { } เสมอ

'{"key": "value"}'

URL (Uniform Resource Locator)

ที่อยู่ (Address) ของข้อมูลหรือหน้าเว็บไซต์ต่าง ๆ ที่เราต้องการเข้าถึง อาจเรียกได้ว่าเป็น ที่อยู่ของเครื่อง Server ที่เราต้องใช้ในการส่ง Request เปรียบเสมือนการส่งพัสดุที่จำเป็นจะต้องรู้ “เลขที่บ้าน” ของผู้รับพัสดุ

https://dminer.in.th/api/v1/product

ส่วนประกอบของ URL

{protocol}://{hostname}:{port}/{path}

1. Protocol Identifier (Scheme)

Protocol Identifier หรือ Scheme เป็นส่วนที่อยู่ข้างหน้าสุดของ URL เป็นส่วนที่ทำให้สามารถเข้าถึงข้อมูลต่าง ๆ โดย Protocol Identifier (Scheme) ที่เราคุ้นเคยกันดี ได้แก่ HTTP หรือ HTTPS

HTTP VS. HTTPS

หากทุกคนสังเกตเวลาเราใช้งานหน้าเว็บไซต์ต่างๆ เราจะเห็นความแตกต่างได้อย่างชัดเจน นั่นคือ HTTPS จะมี icon รูปกุญแจปรากฎข้างหน้าสุดของแถบ URL เสมอ นั่นหมายความว่า HTTPS เป็น Protocol ที่มีความปลอดภัยสูงกว่า HTTP แต่ทั้งคู่ก็ยังมีการทำงานที่เหมือนกัน

โดย HTTPS นั้นจะมีสิ่งที่เรียกว่า Certificate ซึ่งจะฝังอยู่ใน Web Browser และ Certificate นี้จะทำหน้าที่เป็นกุญแจ เพื่อการเข้ารหัสและปลดล็อคและเพิ่มความปลอดภัยในการใช้งาน

HTTPS ที่มี icon แสดงอยู่เสมอ

2. Host name

Hostname หรือชื่อเรียกของ Hosting ซึ่งถูกแปลงมาจาก IP Hosting ให้เป็นชื่อที่เข้าใจง่ายแทนการจำเป็นค่าตัวเลข หากเทียบกับการส่งพัสดุก็จะเปรียบได้กับ “ชื่อของผู้รับ” ที่ต้องถูกจ่าหน้าบนพัสดุ

3. Port

ทำหน้าที่กำหนดประเภทการรับส่งข้อมูลของเครือข่ายที่ถูกต้องไปยังอีกตำแหน่ง โดย Server จะทำการเชื่อมต่อกับ Port ใด Port หนึ่งและส่งข้อมูลเว็บไซต์กลับมาซึ่งเครื่องของเราก็จะได้รับบน Port เดียวกัน

4. Path

เส้นทางที่นำไปสู่ไฟล์หรือตำแหน่งต่างๆ ของข้อมูลบน Web Server

HTTP Headers

เป็นการระบุประเภทของภาษาที่ส่งไปและส่งกลับ ซึ่งเราจะกำหนดให้ Headers ให้อยู่ในรูปแบบ JSON

Accept: application/json
Content-Type: application/json
การกำหนด Headers ให้มีการส่งและตอบกลับในรูปแบบของ JSON

Methods

ในการส่ง Request จำเป็นอย่างยิ่งที่จะต้องระบุว่า Request ที่เราต้องการส่งไปยังนั้นต้องการใช้ Method ใด เนื่องจากการทำงานของแต่ละ Methods นั้นมีความแตกต่างกัน

ความหมายและการทำงานของแต่ละ Method
Methods ต่างๆ จาก Postman

หมายเหตุ: PUT == การเปลี่ยนแปลงข้อมูลทั้งหมด , PATCH == การเปลี่ยนแปลงข้อมูลบางส่วน

Collection

ข้อดีของการใช้ Postman คือการที่เราสามารถสร้าง Collection ได้เพื่อให้ง่ายต่อการค้นหาและทดสอบ หากงานของเรามีภาพรวมที่ใหญ่ เราควรจะแยก Collection ตามเรื่องโดยแยกเป็น 1 Collection ต่อ 1 เรื่อง

Response หรือการตอบกลับมายังผู้ใช้งานตาม HTTP Method ที่ได้ระบุไว้จาก Server

  • Response Status Code เป็นการเช็คสถานะของ Request นั้นๆ ว่าสำเร็จหรือไม่หรือ Server มี Errors เกิดขึ้นหรือเปล่า
  • Response Body เป็นข้อมูลที่ Server ส่งกลับมา ข้อมูลที่เราได้ทำการทดสอบในวันนี้นั้นอยู่ในรูปของ JSON
Test Script: Status Code: Code is 200 และ Response Body: JSON values check.

ในช่วงบ่ายเนื่องจากพี่บอยได้ให้แบบฝึกหัดสำหรับการได้ลองทำด้วยตัวเองไว้ โดยให้ลองเปลี่ยน Host และ Request ตามที่พี่บอยกำหนดใน Github ทุกคนช่วยกันฝึกและช่วยกัน Fix ร่วมกัน

Day 2 🗓️ 5 กรกฎาคม 2566

วันนี้ยังคงอยู่กันที่เรื่องของการทำ Automation Test “E2E Testing with Postman” — ส่งมอบความรู้และประสบการณ์โดยพี่บอย เช่นเคย

เนื้อหาของวันนี้เป็นการสร้าง Environment ขึ้นมา เนื่องจาก Host มีโอกาสที่จะถูกเปลี่ยนแปลงได้เสมอ ดังนั้นจึงต้องทำการ Set Host ขึ้นมาเพื่อให้สามารถใช้งานได้หลายๆ ที่และง่ายต่อการแทนที่

ตัวอย่างการสร้าง Environment โดยแต่ละ Environment จะมี Host ที่ต่างกัน

จากนั้นยามเย็นก็ต่อด้วยการเรียนการสอนจากพี่นัท ที่ยังคงเป็นเนื้อหาของการ Query ข้อมูลด้วย SQL ผ่าน Docker ซึ่งวันนี้เป็นวันสุดท้ายของการส่งมอบเนื้อหา SQL.

Transaction Control Command

เป็นคำสั่งหรือ Syntax ที่ใช้ร่วมกับคำสั่ง INSERT, UPDATE และ DELETE เท่านั้น และไม่สามารถใช้ได้ในขณะที่มีการสร้างหรือลบ Tables.

Start Command — ก่อนที่จะมีการใช้คำสั่งในกลุ่ม Transaction จะต้องทำการ Run: Start Command ก่อนเสมอ

START TRANSACTION;

COMMIT — ใช้เพื่อบันทึกการเปลี่ยนแปลงที่เรียกใช้ไปยังฐานข้อมูล

COMMIT;

ROLLBACK — เพื่อย้อนกลับการเปลี่ยนแปลงลักษณะคล้ายการทำ Undo.

ROLLBACK;

SAVEPOINT — เป็นการสร้างกลุ่มของข้อมูลที่ต้องการเปลี่ยนแปลง

SAVEPOINT SAVEPOINT_NAME;

เมื่อทำการแก้ไขหรือเปลี่ยนแปลงข้อมูลแล้ว และต้องการเรียกคืนข้อมูลที่ถูกแก้ไขให้กลับมา จะต้องใช้คำสั่ง ROLLBACK เพื่อ Undo หรือกู้คืนข้อมูลที่ถูกเปลี่ยนแปลงนั้นๆ กลับมาใหม่ได้

ROLLBACK TO SAVEPOINT_NAME;

Day 3 🗓️ 6 กรกฎาคม 2566

สืบเนื่องจากเมื่อวานเย็น ทางทีมได้มีการพูดคุยถึง Plan และ Task ร่วมกับพี่หนุ่มถึงการนัดลูกค้ามาทำงานร่วมกัน แต่ด้วยทางทีมไม่พร้อมในเรื่องของการทำ Test Scenarios กล่าวคือ ที่ผ่านมาตลอดการทำงาน เราไม่เคยมีการวิเคราะห์และสร้าง Test Scenarios ในส่วนของ Alternative part เลย จุดนี้ทำให้งานของเรายังไม่สมบูรณ์และไม่สามารถไปต่อได้ (ไปต่อไม่ได้เพราะ Tester ก็ยังไม่เข้าใจ Business และ System ซึ่งหากลูกค้าถามหรือต้องการทราบ เราก็จะไม่สามารถตอบคำถามเขารวมถึงไม่สามารถ Design ออกมาได้ อีกทั้งยังทำให้เสียเวลาและเสียค่าใช้จ่ายเพิ่มขึ้น) พี่หนุ่มจึงจัดการสอนและส่งมอบความรู้ในเรื่องของการทำ Alternative Test Scenarios เสียก่อน

Alternative Test Scenarios หรือกรณีทดสอบที่ไม่สำเร็จ แบ่งออกเป็น 6 กลุ่ม ดังนี้

  1. ไม่เป็นไปตามเงื่อนไขทางธุรกิจ
  2. Connect Lost — ระบบไม่สามารถต่อเชื่อมถึงกันได้ เพราะมีปัญหาทาง Network.
  3. Server Down — Server ขาดการติดต่อหรือ Out of service
  4. Unstable — Server ไม่เสถียร
  5. Connection Timeout —ระบบ ไม่ตอบสนองกลับมาหรือตอบกลับมาช้ามาก
  6. Session Expire —การหมดอายุของ Session หากระบบไม่มีการรับ-ส่งข้อมูลภายในระยะเวลาที่กำหนด เพื่อให้ผู้อื่นสามารถเข้ามาใช้งานได้ โดยที่ระบบไม่รับภาระ Load ในการทำงานมากเกินไป

โดยกลุ่มที่ 2-6 สามารถเกิดขึ้นได้ที่โครงสร้างหรือ Architecture ดังนั้น เราจึงต้องทำความเข้าในเรื่องของ Architecture เสียก่อน

Three-Tier Architecture หรือ 3 Layes ที่มีการแยกการแสดงผล (Presentation Tier) การ, ประมวลผล (Logic Tier) และการจัดการข้อมูล (Data Tier) ออกจากกันประกอบไปด้วย

  1. Presentation Tier (Client) — ฝั่งของแอพพลิเคชั่นหรือเว็บไซต์/User Interface
  2. Logic Tier (Server) —ฝั่งของ การประมวลผลข้อมูลหรือการคำนวณ
  3. Data tier (Database) — ฝั่งของระบบจัดการฐานข้อมูล
Three-Tier Architecture

ในแต่ละ Tier มีการสื่อสารกันโดยมีในการเชื่อมต่อกันหรือที่เราเรียกว่า “IP Address” และมี “Port” ซึ่งหมายถึงประตูในการเข้าถึงห้องต่างๆ ภายในบ้านหรือภาย Tier นั่นเอง ซึ่งการเกิดกรณี Alternative มีโอกาสเกิดขึ้นได้ในทุกๆ การเชื่อมต่อเสมอ ฉะนั้นเราจึงต้องให้ความสำคัญกับกรณี Alternative ไม่น้อยไปกว่ากรณี Success ด้วย

จบไปแล้วกับการรับมอบความรู้ในสัปดาห์นี้ จัดกันแบบแน่นๆ ไปเลย โดยรวมแล้วในส่วนของ Automation Test ด้วย Postman ที่เป็นเรื่องใหม่ยังมีความงง แต่ตาลอยน้อยลงกว่าเดิม ซึ่งจะต้องมีการฝึกฝนเพิ่มขึ้นอีก ไม่ใช่เพียงขาของการทำ Automation Test แต่ในขาของการ Design ส่วนของ Test Scenarios ที่ไม่ได้เพียงกรณี Success เท่านั้นแต่ยังมีเรื่องของ Alternative ซึ่งมีความยากและต้องใช้ความเข้าใจในโครงสร้างหรือ Architecture พอสมควรจึงจะสามารถวิเคราะห์และรับมือกับปัญหาที่เกิดขึ้นได้

ติดตาม เส้นทางสู่การเป็น Tester 🐞 Bootcamp by WeLoveBug ได้ใน EP.5 สำหรับวันนี้ขอม้าไปก่อน แฮ่! ลาไปก่อน!

Photo by Fadi Xd on Unsplash

ฝนตกและอากาศเปลี่ยนแปลงบ่อย รักษาสุขภาพกันด้วยนะคะ, Take care ค่ะ

10 กรกฎาคม 2566

--

--