Test-Driven Development
เป็นการเขียน โค้ดเพื่อทดสอบการทำงานของโค้ดเพื่อเราจะได้ไม่ต้องทดสอบการทำงานเอง
ซึ่งสามารถตรวจสอบแบบ
- user point of view ( functional tests ) หรือ อาจจะเรียกว่า user story คือ เมื่อผู้ใช้กดปุ่มนี้พิมพ์อย่างงี้จะได้ผลลัพท์อย่างงี้ไหม
- programmer point of view ( unit tests ) เป็นการทดสอบ ฟังก์ชั่น เมธอด ใน class ภายในโปรแกรม
ขั้นตอนการทำ test-driven development
- เริ่มให้ทดสอบด้วย functional tests
- เมื่อไม่ผ่านให้ทำการใช้ unit test เพื่อทดสอบการทำงานของโค้ด
- หากไม่ผ่าน unit test ให้ทำการแก้ไข unit test จนกว่าจะผ่าน
- รัน functional tests อีกครั้ง
การ Test นั้นจะใช้คำว่า
assert เพื่อทำการเปรียบเทียบค่า 2 ค่า
Unit Test เช่น
[ ตัวอย่างในบทที่ 3 ]
การทำงานของ django
- มี HTTP request เข้ามาสำหรับ url นั้นๆ
- Django ตัดสินใจว่าใช้ view ไหนกับ request ที่เข้ามา (resolve)
- view จะประมวลผล request และ ส่ง HTTP Response กลับไป ( เช่น หน้าเว็บhtml )
จะเป็นการเช็คว่า เมื่อเราให้ django ตัดสินใจ (resolve) url ที่เป็น '/' (คือหน้าแรกของเว็บเราเลย)fromdjango.core.urlresolversimportresolvefromdjango.testimportTestCasefromlists.viewsimporthome_page#1classHomePageTest(TestCase):deftest_root_url_resolves_to_home_page_view(self):found=resolve('/')#2self.assertEqual(found.func,home_page)#3
มันจะเรียกฟังก์ชั่นทที่ชื่อ home_page ไหม
Red/Green/Refactor and Triangulation(โครงข่ายสามเหลี่ยม?)
มีขั้นตอนดังนี้
- ทำการเขียนโค้ดให้เกิดการ fails ( เรียกว่า Red )
- ทำการเขียนโค้ดสั้นๆที่ทำให้ pass test ( เรียกว่า Green ) เขียนโค่ดแบบให้ผ่านพอไม่จำเป็นต้องดี
- ทำการ Refactor เพื่อให้โค้ดนั้นทำงานได้ ( เขียนโค้ดให้ดี )