FutureQuest

FutureQuest

  • Home
  • Courses
  • Blog
  • Contact

วัยรุ่นเทสดี : Part1 -ทำไม Developer ต้องทำ Software Testing

Written by

Thitipong Suhuttaporn

in

Software Testing
July 25, 2025

สวัสดีเหล่า Developer วัยรุ่นไฟแรง! เคยใจหายแว๊บกันไหมครับ? หลังจากที่ deploy ฟีเจอร์ใหม่ขึ้น Production ไปแล้ว ลูกค้าตัวจริงกลับโทรมาแจ้งว่า “ระบบใช้งานไม่ได้ค่ะ” 😱 เหงื่อแตกพลั่กทันที. เราต้องรีบหาต้นตอของปัญหาให้เจอทันที. ทุกนาทีที่ผ่านไปคือความเสียหายทางธุรกิจ.
อาการเหล่านี้แหละครับ คือสัญญาณว่าเราขาด “เกราะป้องกัน” ที่ดีให้กับซอฟต์แวร์ของเรา และเกราะที่ว่านั่นก็คือ การทดสอบซอฟต์แวร์ (Software Testing) นั่นเอง
บทความนี้คือตอนแรกของซีรีส์ “วัยรุ่นเทสดี” ที่จะพาทุกคนไปเปลี่ยนจากคนเขียนโค้ดธรรมดา ให้กลายเป็น Developer สุดเท่ที่ส่งมอบงานคุณภาพ พร้อมเกราะป้องกันบั๊กเต็มพิกัด!

Contents

Toggle
  • ทำไมต้องทำเทส? มันสำคัญยังไง?
  • แนะนำให้รู้จักกับ pytest
  • ลงมือทำ First Test กับ pytest
    • เตรียม Environment ให้พร้อม
      • ติดตั้ง Python
      • ติดตั้งและตั้งค่า Visual Studio Code
      • เปิด project ใน VS Code
      • สร้าง Virtual Environment (ขั้นตอนสำคัญ!)
      • ติดตั้ง pytest ใน Virtual Environment
    • สร้างไฟล์และโฟลเดอร์สำหรับโปรเจกต์
    • เขียนโค้ดที่โปรแกรมหลัก
    • เขียนเทสแรกของเรา!
    • รันเทสใน VS Code
      • วิธีที่ 1: ใช้ Terminal ใน VS Code
      • วิธีที่ 2: ใช้ Test Explorer (แนะนำ!)
  • เทสที่ไม่ผ่าน จะแสดงผลอย่างไร?
  • Reference

ทำไมต้องทำเทส? มันสำคัญยังไง?

หลายคนอาจจะคิดว่า “ทำไมต้องเสียเวลาทำเทสด้วย ในเมื่อโค้ดมันก็ทำงานได้อยู่แล้ว” แต่จริงๆ แล้ว การทำเทสมีประโยชน์มากกว่าที่คิด
การทำเทสไม่ใช่แค่การหาบั๊ก แต่ยังช่วยให้เรา:

  • มั่นใจในคุณภาพ – ทำให้เรามั่นใจว่าโค้ดที่เขียนขึ้นมานั้นทำงานได้ตามที่คาดหวัง และไม่มีผลกระทบต่อฟีเจอร์อื่นๆ
  • ลดความเสี่ยง – การทำเทสช่วยลดความเสี่ยงในการ deploy ฟีเจอร์ใหม่ๆ เพราะเราสามารถตรวจสอบได้ว่าโค้ดที่เขียนขึ้นมานั้นทำงานได้ตามที่คาดหวัง และไม่มีผลกระทบต่อฟีเจอร์อื่นๆ
  • เพิ่มความมั่นใจในการ Refactor – เมื่อเราต้องปรับปรุงโค้ด การมีเทสที่ครอบคลุมจะช่วยให้เรามั่นใจว่าโค้ดยังทำงานได้ถูกต้องหลังจากการเปลี่ยนแปลง
  • เป็นเอกสารประกอบโค้ด – เทสที่ดีจะอธิบายได้ว่าโค้ดควรทำงานยังไง รับค่าอะไรเข้ามา แล้วต้องคืนค่าอะไรกลับไป มันคือเอกสารประกอบโค้ดที่ดีที่สุดเลยล่ะ
  • ช่วยในการสื่อสาร – เทสที่เขียนดีจะช่วยให้ทีมงานเข้าใจโค้ดได้ง่ายขึ้น และช่วยให้การสื่อสารระหว่างทีมพัฒนากับ QA หรือ Product Owner เป็นไปอย่างราบรื่น

การทำเทสจึงไม่ใช่ภาระ แต่เป็นการลงทุนเพื่อ ความมั่นใจในคุณภาพ ของโค้ดที่เราเขียนขึ้นมาเองกับมือ

แนะนำให้รู้จักกับ pytest

ในโลกของ Python มีเครื่องมือสำหรับเขียนเทสอยู่หลายตัว แต่ตัวที่โดดเด่น เป็นที่นิยม และใช้ง่ายเหมือนปอกกล้วยเข้าปากก็คือ pytest นั่นเอง

ทำไมต้อง pytest?

โค้ดสั้นกระชับ – ใช้แค่คำสั่ง assert ธรรมดาๆ ของ Python ก็เทสได้แล้ว ไม่ต้องจำ method ชื่อยาวๆ แบบ assertEqual, assertTrue ให้วุ่นวาย

อ่านผลเทสง่ายมาก – ตอนเทสพัง pytest จะบอกละเอียดเลยว่าค่าที่คาดหวัง (Expected) คืออะไร แล้วค่าที่ได้จริงๆ (Actual) คืออะไร ทำให้ดีบั๊กง่ายสุดๆ

ทรงพลังและขยายร่างได้ – มีของเล่น (Plugins) ให้ใช้เยอะมาก ตั้งแต่การทำ Mocking, การวัด Coverage ไปจนถึงการรันเทสแบบขนาน เพิ่มความเร็วในการเทส

Fixtures สุดเจ๋ง – (อันนี้ของเด็ด เดี๋ยวตอนต่อๆ ไปจะเล่าให้ฟัง) เป็นวิธีเตรียมข้อมูลหรือ Environment สำหรับเทสที่ทรงพลังและทำให้โค้ดเทสเราสะอาดขึ้นมาก

เอาล่ะ พูดมาเยอะแล้ว ลงมือกันเลยดีกว่า!

ลงมือทำ First Test กับ pytest

มาลองเขียนเทสแรกของเรากันเลยดีกว่า รับรองว่าง่ายกว่าที่คิด

เตรียม Environment ให้พร้อม

ก่อนจะเริ่มเขียนเทส เราต้องเตรียมสภาพแวดล้อมให้พร้อมก่อน ตั้งแต่การติดตั้ง Python ไปจนถึงการใช้ VS Code

ติดตั้ง Python

ถ้ายังไม่มี Python ในเครื่อง ให้ไปดาวน์โหลดจาก python.org เลือกเวอร์ชันล่าสุด (แนะนำ 3.8 ขึ้นไป)

ตรวจสอบว่าติดตั้งสำเร็จแล้วโดยเปิด Command Prompt แล้วพิมพ์:

python --version

ถ้าเห็นเวอร์ชัน Python แสดงว่าเรียบร้อยแล้ว

ติดตั้งและตั้งค่า Visual Studio Code

ดาวน์โหลด VS Code จาก code.visualstudio.com

เปิด VS Code ขึ้นมาแล้วติดตั้ง Extension สำคัญๆ

Python (โดย Microsoft) – สำหรับเขียน Python

Python VSCode Ext

Python Test Explorer – เพื่อรัน pytest ผ่าน GUI

python test explorer ext

Python Indent – จัดการ indentation ให้สวยงาม


เปิด project ใน VS Code

เปิด PowerShell ขึ้นมา

# 1. สร้างโฟลเดอร์สำหรับ project
mkdir wai_roon_test_dee

# 2. เข้าไปยังโฟลเดอร์ project ที่สร้างขึ้น
cd wai_roon_test_dee

# 3. เปิด VS Code ในโฟลเดอร์นี้
code .

ตอนนี้เราก็จะได้ project เปล่าๆขึ้นมาเเล้ว

สร้าง Virtual Environment (ขั้นตอนสำคัญ!)

Virtual Environment เป็นสิ่งสำคัญมาก เหมือนกับการสร้าง “ห้องแยก” สำหรับโปรเจกต์แต่ละตัว เพื่อไม่ให้ package ปะปนกัน

เปิด terminal ของ VSCode ขึ้นมา ไปที่ menu Terminal ที่ menu bar ด้านบน → New Terminal

สร้าง Virtual Environment

python -m venv .venv
venv_created

virtual environment ถูกสร้างขึ้นมาเรียบร้อยเเล้ว

เปิดใช้งาน Virtual Environment บน Windows

.\.venv\Scripts\activate

เมื่อ activate สำเร็จจะเห็น (.venv) ปรากฏหน้าชื่อ path ใน Command Prompt

ติดตั้ง pytest ใน Virtual Environment

ตอนนี้ให้ติดตั้ง pytest ใน virtual environment ที่เราเพิ่งสร้าง:

pip install pytest

ตรวจสอบว่าติดตั้งสำเร็จหรือไม่โดยการดูว่า pytest version อะไรที่ถูกติดตั้ง

pytest --version
pytest 8.4.1

ใน VS Code ให้กด Ctrl+Shift+P แล้วพิมพ์ “Python: Select Interpreter” เลือก interpreter ที่อยู่ในโฟลเดอร์ .venv ที่เราสร้างไว้

สร้างไฟล์และโฟลเดอร์สำหรับโปรเจกต์

ตอนนี้เราจะสร้างโครงสร้างไฟล์สำหรับโปรเจกต์เครื่องคิดเลขของเรา ใน VSCode ให้สร้างไฟล์และโฟลเดอร์ตามโครงสร้างนี้:

wai_roon_test_dee/
├── src/
|   └── calculator.py
├── tests/
|   └── test_calculator.py
└── conftest.py

อธิบายโครงสร้าง:

  • src โฟลเดอร์สำหรับเก็บโค้ดโปรแกรมหลักของเรา
  • tests/ โฟลเดอร์สำหรับเก็บไฟล์เทสทั้งหมด
  • test_calculator.py ไฟล์เทสสำหรับ calculator (สังเกตการตั้งชื่อ test_ นำหน้า)
  • conftest.py ไฟล์สำหรับกำหนด fixtures หรือการตั้งค่าทั่วไปสำหรับเทส (เราจะใช้ในตอนต่อไป)

หลังจากสร้าง folder สำหรับ project เรียบร้อยเเล้ว เรามาเริ่มเขียนโค้ดกันได้เลย

เขียนโค้ดที่โปรแกรมหลัก

ในไฟล์ calculator.py ใส่ฟังก์ชันบวกเลขง่ายๆ เข้าไป

# src/calculator.py

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

เขียนเทสแรกของเรา!

ตอนนี้มาถึงส่วนสำคัญของการทดสอบการทำงานของโค้ดที่เราเขียนพึ่งเขียนไปใน calculator.py
ให้เราเขียนโค้ดเทสสำหรับฟังก์ชัน add ของเรา ในไฟล์ tests/test_calculator.py

🔍 กฎการตั้งชื่อสำหรับ pytest (สำคัญมาก!)

ก่อนเขียนโค้ด มาทำความเข้าใจกฎการตั้งชื่อของ pytest กันก่อน:

การตั้งชื่อไฟล์เทส:

  • ต้องขึ้นต้นด้วย test_ หรือลงท้ายด้วย _test.py
  • ✅ ถูกต้อง: test_calculator.py, test_user.py, calculator_test.py
  • ❌ ผิด: my_tests.py, testing_calculator.py

การตั้งชื่อฟังก์ชันเทส:

  • ต้องขึ้นต้นด้วย test_
  • ใช้ชื่อที่บอกว่าเทสอะไร เป็น snake_case
  • ✅ ถูกต้อง: test_add_positive_numbers(), test_divide_by_zero()
  • ❌ ผิด: add_test(), testAdd(), check_addition()

การตั้งชื่อคลาสเทส (ถ้าใช้):

  • ต้องขึ้นต้นด้วย Test
  • ✅ ถูกต้อง: TestCalculator, TestUserLogin
  • ❌ ผิด: CalculatorTest, Calculator_Test

ทำไมต้องเป็นแบบนี้? pytest ใช้ระบบ auto-discovery หมายความว่ามันจะไปหาไฟล์และฟังก์ชันที่ตั้งชื่อตามกฎเหล่านี้โดยอัตโนมัติ ถ้าตั้งชื่อผิด pytest จะไม่เห็นเทสของเรา!

ตอนนี้มาเขียนโค้ดเทสกันเลย 🚀

# tests/test_calculator.py

# อย่าลืม import ฟังก์ชันที่เราจะเทสเข้ามาด้วย
from src.calculator import add, subtract

# เทสฟังก์ชันบวกเลข
def test_add_positive_numbers():
    # เทสการบวกเลขบวกสองตัว สังเกตการตั้งชื่อ: test_ + สิ่งที่เทส + สถานการณ์

    # ยืนยันว่า ผลลัพธ์ของการเรียก add(1, 2) ต้องเท่ากับ 3
    assert add(1, 2) == 3

def test_add_negative_numbers():
    # เทสการบวกเลขลบสองตัว ชื่อฟังก์ชันบอกได้ชัดเจนว่าเทสอะไร
    
    # ยืนยันว่า ผลลัพธ์ของการเรียก add(-1, -1) ต้องเท่ากับ -2
    assert add(-1, -1) == -2

def test_add_mixed_numbers():
    # เทสการบวกเลขบวกกับเลขลบ เพิ่มเทสเคสเพื่อให้ครอบคลุมมากขึ้น
    assert add(5, -3) == 2
    assert add(-10, 15) == 5

# เทสฟังก์ชันลบเลข
def test_subtract_positive_numbers():
    assert subtract(5, 2) == 3

def test_subtract_negative_numbers():
    assert subtract(-5, -2) == -3
    
def test_subtract_mixed_numbers():
    assert subtract(-5, 2) == -7
    assert subtract(5, -2) == 7

โค้ดเทสของเราก็คือฟังก์ชัน Python ธรรมดาๆ ที่ขึ้นต้นด้วย test_ และข้างในเราใช้ assert เพื่อ “ยืนยัน” ว่าสิ่งที่คาดหวังนั้นเป็นจริง

รันเทสใน VS Code

VS Code มีวิธีรันเทสที่สะดวกหลายแบบ

วิธีที่ 1: ใช้ Terminal ใน VS Code

กด Ctrl+Shift+` เพื่อเปิด Terminal ใน VS Code แล้วรันคำสั่ง

pytest -v

ถ้าทุกอย่างถูกต้อง เราจะเห็นผลลัพธ์แบบนี้

First test result

วิธีที่ 2: ใช้ Test Explorer (แนะนำ!)

  1. เลือกเมนู Testing ที่ ด้านซ้ายของ VS Code

2. เลือก “Configure Python Tests”

3. เลือก framework “pytest”

4. เลือกโฟลเดอร์ “tests”

5. VS Code จะแสดง Test Explorer ที่ sidebar ซ้ายมือ

6. คลิกปุ่ม ▶️ เพื่อรันเทสทั้งหมด

ถ้าทุกอย่างถูกต้อง เราจะเห็นผลลัพธ์สีเขียวๆ สบายตาแบบนี้:

เทส ผ่าน ทั้งหมด! สุดยอดไปเลย!

เทสที่ไม่ผ่าน จะแสดงผลอย่างไร?

การเห็นเทสพังก็สำคัญไม่แพ้กัน ลองกลับไปแก้ไฟล์ test_calculator.py ให้ผิดดูสักเทส

# tests/test_calculator.py
def test_add_negative_numbers():
    # ตั้งใจทำให้ผิด assert add(-1, -1) ควรจะได้ -2 แต่เราจะเช็คกับ 0
    assert add(-1, -1) == 0

แล้วรัน pytest อีกครั้ง…

คราวนี้เราจะเห็นผลลัพธ์สีแดงๆ พร้อมคำอธิบายที่ชัดเจนมาก

pytest บอกเราเป๊ะๆ เลยว่า AssertionError เกิดขึ้นที่ไฟล์ไหน ฟังก์ชันไหน บรรทัดไหน และที่เจ๋งที่สุดคือมันบอกว่า assert -2 == 0 นั้นเป็นเท็จ… โคตรชัด!

ถ้าใช้ Test Explorer ก็จะเห็นผลลัพธ์สีแดงๆ พร้อมข้อความอธิบายที่ชัดเจนใน UI ด้วย

ยินดีด้วย! คุณได้เขียนและรันเทสแรกด้วย pytest สำเร็จแล้ว วันนี้เราได้เรียนรู้ว่า:

  • การเทสไม่ใช่เรื่องน่าเบื่อ แต่เป็นหัวใจของซอฟต์แวร์คุณภาพดี
  • pytest คือเครื่องมือที่ช่วยให้การเทสเป็นเรื่องง่ายและมีประสิทธิภาพ
  • เราสามารถเขียนและรันเทสเบื้องต้น รวมถึงอ่านผลลัพธ์ทั้งตอนที่ผ่านและไม่ผ่านได้

ในตอนหน้า… เราจะมาลงลึกกันอีกหน่อย จะพาไปดูว่า assert ทำอะไรได้มากกว่าแค่ == และจะจัดการกับโค้ดเทสที่เริ่มเยอะขึ้นยังไงให้ยังคงความคลีนอยู่เสมอ

ติดตาม Part 2: เข้าใจ Assertions และการจัดระเบียบเทสอย่างโปรฯ กันได้เลย

Reference

  • pytest
pytest pytest-tutorial-series python Software Development tutorial วัยรุ่นเทสดี

Related Posts

  • What is AI? An Easy Guide For Everyone
    Date
    February 27, 2025
    Author
    Tomang Melonlearny
  • วัยรุ่นเทสดี : Part2 เข้าใจ Assertions และการจัดระเบียบเทสอย่างโปรฯ
    Date
    August 9, 2025
    Author
    Thitipong Suhuttaporn
  • Block-based Visual Programming
    Date
    April 22, 2025
    Author
    Tomang Melonlearny

Subscribe to our newsletter

for more insights and exclusive content delivered straight to your inbox

←Core Skills for 2025 and the Future
วัยรุ่นเทสดี : Part2 เข้าใจ Assertions และการจัดระเบียบเทสอย่างโปรฯ→

Comments

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

FutureQuest

Learn for our brighter future

Main Menu

Home

Courses

Blog

About Us

Contact Us

Resources

Privacy Policy

Term of Services

© 2025 futurequest.academy. All Rights Reserved.