วันอาทิตย์ที่ 7 กุมภาพันธ์ พ.ศ. 2559

Test-Driven Development with Python - Chapter. 1

Test-Driven Development (TDD)

      Test-Driven Development (TDD) คือรูปแบบการพัฒนา app โดยการเริ่มจากการสร้างตัว test ก่อน แล้วจึงเขียนโค้ดของโปรแกรม เปรียบได้กับการวาง spec ของโปรแกรมที่เราต้องการก่อนจึงค่อยสร้างโปรแกรมตาม spec ที่เราวางไว้ ช่วยให้สามารถสร้างโปรแกรมได้ตามความต้องการ การสร้างตัว test ย่อยๆของแต่ละส่วนสามารถทำให้รู้ตำแหน่งที่เกิด bug ได้โดยไม่ต้องไล่โค้ดทั้งหมด อีกทั้งยังสามารถลอง test โค้ดในขณะกำลังสร้างได้เรื่อยๆ

Functional Test  Unit Test เเละ Refactoring

     Functional Test คือการทดสอบในมุมมองของ user เป็นการมอง app ที่เราทดสอบจากด้านนอกเปรียบเสมือน "black box" โดยไม่สนใจว่ามีการทำงานอย่างไรอยู่ภายใน สนใจเพียงว่า output ที่ได้นั้นมีการทำงานที่ถูกต้องตรงตามความต้องการหรือไม่
     Unit Test คือการทดสอบในมุมมองของ programmer คือการมอง app โดยสนใจที่ตัวโค้ด เป็นการ test ที่ช่วยในแก้ bug ในการเขียนโค้ด ตรวจสอบว่าโค้ดที่เราเขียนนั้น error ตรงไหน อย่างไร ช่วยให้สามารถเขียนโค้ดได้ถูกต้อง ไม่มี bug 
     Refactoring คือ การกลับมาปรับปรุงโค้ดที่เคยเขียนไปแล้วและทำงานได้อย่างถูกต้องแล้ว ให้สั้นลง กระชับมากขึ้น ทำงานได้เร็วมากขึ้น อ่านได้ง่ายมากขึ้น ลดความซับซ้อนของโค้ด 

Functional Test

  •     การสร้าง Project ของ Django สำหรับเก็บ web app ของเรา

    1. สร้างไฟล์ functional_tests.py สำหรับเป็นตัวทดสอบ functional test ซึ่งตัว Functional Test เราจะใช้ library ของ Selenium ในการเขียน
    2. สร้างที่สำหรับเก็บโปรเจคด้วยคำสั่ง

 
   $ django-admin.py startproject superlists
 

     จะสร้างโฟล์เดอร์ชื่อ superlists และมีไฟล์ย่อยๆดังนี้
.
├── functional_tests.py
└── superlists
    ├── manage.py
    └── superlists
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py
 
 3. ย้ายไฟล์ functional_tests.py เข้าไปอยู่ในโฟล์เดอร์ superlists อันนอกโดยคำสั่ง
 
   $ mv functional_tests.py superlists/
        
  • การรัน Development Server ของ Django
      การทดสอบ functional test จะเป็นที่จะต้องสร้าง Server ขึ้นมาสำหรับรัน functional test โดยใช้คำสั่ง
 
   $ python3 manage.py runserver
        
      จะได้ Server บน IP 127.0.0.1 port 8000

  •     การรัน Functional Test นั้นต้องรันบน Server ข้างต้นซึ่งรันโดยใช้คำสั่ง
 
   $ python3 functional_tests.py
        

Git Repository

     Git Repository คือ library หนึ่งที่สำหรับใช้จัดการ version control system (VCS) ซึ่งจะผูกมัดกับไฟล์และบันทึกแต่ละ version ของไฟล์งานเราไว้ หากเราเขียนโค้ดแล้วเกิดบัคเราก็สามารถเรียกเวอร์ชั่นก่อนหน้าเพื่อที่จะเรียกกลับมาดูหรือเขียนใหม่ต่อจากเวอร์ชั่นก่อนหน้าที่จะบัคได้

    การสร้าง Git Repository ใหม่เราจะเข้าไปในโฟลเดอร์ superlists แล้วใช้คำสั่ง
 
   $ git init .
        
    จะสร้าง Repository เปล่าๆขึ้นมาให้เรา
    เราสามารถเพิ่มส่วนที่เหลือก็คือไฟล์งานต่างๆของที่อยู่ใน superlists ซึ่งเป็น current folder ของเราในตอนนี้โดยการใช้คำสั่ง

 
   $ git add .
        
    โดยที่ "." หมายถึง current folder
    การเรียกดูการเปลี่ยนแปลงของ Git Repository ใช้คำสั่ง

 
   $ git status
        
    ซึ่งจะแสดงว่าไฟล์ที่เราผูกมัด (commit) ไว้กับ git อันไหนมีการแก้ไขบ้าง ไฟล์ไหนที่เราพึ่งทำการผูกมัด ไฟล์ไหนที่ git ติดตาม (tracked)และไฟล์ไหนที่เราไม่ได้ให้ git ติดตาม (untracked)
    การยืนยันไฟล์ที่มาจาก git add ให้เข้าไปใน Git Repository ใช้คำสั่ง

 
   $ git commit
        
    ซึ่งจะเก็บไฟล์ที่ add เข้ามาใหม่และบันทึกการแก้ไขไฟล์ไว้เป็นเวอร์ชั่นใหม่และมีการเปิดหน้า nano ให้เขียน comment ไว้เพื่อให้เรารู้ว่าตอนนี้โปรแกรมที่เราเขียนนั้นสำเร็จไปถึงไหนแล้ว เวลาเรียกกลับมาดูจะได้หาได้ง่าย
 
   $ git diff
        
เป็นคำสั่งที่จะแสดงการแก้ไขไฟล์ที่เราผูกมัดไว้อย่างละเอียด ว่ามีการเพิ่มเข้าลบออกอย่างไร
 
   $ git commit -m "<comment>"
        
-m คือเราสารมารถเขียน comment ต่อท้ายคำสั่งได้เลยโดยไม่ต้องเข้าไปแก้ในหน้า nano
 
   $ git log --oneline
       
    จะแสดงเวอร์ชั่นและ comment ต่างๆที่เราได้บันทึกไว้ 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น