วันพฤหัสบดีที่ 23 มีนาคม พ.ศ. 2560

ทำการทดสอบ WebApp ด้วยวิธี Test-Driven Development

Test-Driven Development 

เป็นการเขียน โค้ดเพื่อทดสอบการทำงานของโค้ด
เพื่อเราจะได้ไม่ต้องทดสอบการทำงานเอง


ซึ่งสามารถตรวจสอบแบบ 


  • user point of view ( functional tests ) หรือ อาจจะเรียกว่า  user story คือ เมื่อผู้ใช้กดปุ่มนี้พิมพ์อย่างงี้จะได้ผลลัพท์อย่างงี้ไหม
  • programmer point of view  ( unit tests ) เป็นการทดสอบ ฟังก์ชั่น เมธอด ใน class ภายในโปรแกรม

ขั้นตอนการทำ test-driven development


  1. เริ่มให้ทดสอบด้วย functional tests
  2. เมื่อไม่ผ่านให้ทำการใช้ unit test เพื่อทดสอบการทำงานของโค้ด
  3. หากไม่ผ่าน unit test ให้ทำการแก้ไข unit test จนกว่าจะผ่าน
  4. รัน functional tests อีกครั้ง

การ Test นั้นจะใช้คำว่า
assert เพื่อทำการเปรียบเทียบค่า 2 ค่า

Unit Test เช่น
[ ตัวอย่างในบทที่ 3 ]

การทำงานของ django


  1. มี HTTP request เข้ามาสำหรับ url นั้นๆ
  2. Django ตัดสินใจว่าใช้ view ไหนกับ request ที่เข้ามา (resolve)
  3. view จะประมวลผล request และ ส่ง HTTP Response กลับไป ( เช่น หน้าเว็บhtml )

from django.core.urlresolvers import resolve
from django.test import TestCase
from lists.views import home_page #1

class HomePageTest(TestCase):

    def test_root_url_resolves_to_home_page_view(self):
        found = resolve('/')  #2
        self.assertEqual(found.func, home_page)  #3
จะเป็นการเช็คว่า เมื่อเราให้ django ตัดสินใจ (resolve) url ที่เป็น '/' (คือหน้าแรกของเว็บเราเลย)
มันจะเรียกฟังก์ชั่นทที่ชื่อ home_page ไหม


Red/Green/Refactor and Triangulation(โครงข่ายสามเหลี่ยม?)

มีขั้นตอนดังนี้ 
  • ทำการเขียนโค้ดให้เกิดการ fails ( เรียกว่า Red )
  • ทำการเขียนโค้ดสั้นๆที่ทำให้ pass test ( เรียกว่า Green ) เขียนโค่ดแบบให้ผ่านพอไม่จำเป็นต้องดี
  • ทำการ Refactor เพื่อให้โค้ดนั้นทำงานได้ ( เขียนโค้ดให้ดี )

[ link ] http://chimera.labs.oreilly.com/books/1234000000754/index.html

commit เพิ่มเติม : เพื่ม userstory, bookmark

>>  add userstory ทำการเพิ่ม userstory ใน functional tests >>  add bookmark for user เพิ่มระบบ Bookmark โดยการสร้าง model ขึ...