เอา TDD ก่อน Java – JUnit .Net – NUnit Ruby – Test::Unit PHP – PHPUnit Python – PyUnit, py.test JavaScript – JSUnit ตามด้วย BDD Java – JBehave, Instinct หรือ JDave .Net – NSpec Ruby- RSpec PHP – PHPSpec Python – doctest JavaScript – JSSpec ที่เคยใช้จริงๆ คงจะเป็น JUnit, NUnit, Test::Unit และ RSpec ครับ ฝั่ง ActionScript ของ [...]
จริงๆ เรื่องการ test บน Rails เนี่ย ผมกะว่าจะเขียนมานานละ ช่วงนั้นมี Test Driven Development(TDD) กำลังแรงจาก Extreme programming ไอ้ผมก็เขียน test case บน Rails ก็ปกติดี แต่บังเอิญว่า Behavior Driven Development(BDD) เพิ่งเกิดพอดี เลยยังลังเลว่าจะเขียนเรื่องนี้เลยดีไหม พอดีเจ้านายผมอยากให้เขียน test ในลักษณะที่รวมสิ่งแวดล้อมรอบด้านด้วย ใน 1 test case ของผมเลยค่อนข้างจะรุงรัง เช่น การ login ก็ตรวจมันตั้งแต่การ validate, login ผ่านหรือเปล่า สมมติว่าผ่าน ต้องจำค่า user เอาไว้แล้ว redirect ไปไหน?? หรืออีก test case นึง กรณีที่ไม่ผ่าน จะ redirect ไปไหน [...]
จาก post อันนี้ ผมก็เจอ comment 2 อัน คือ ความหมายใช่เลย..แต่บางทีใน software requirement อาจจะระบุไม่ละเอียดมาก เลยทำให้พอถึงช่วง UAT ที่ผู้ใช้งานระบบ(ที่ละเอียดหน่อย) เข้ามาทดสอบแล้วบอกว่ายังขาดโน่น ขาดนี่ ทำงานไม่ได้ตาม business ต้องการ ก็ต้องกลับไปเริ่มต้นใหม่อีก และ เทสไปเทสมา พบว่ามีหลายอย่างที่ทาง developer ยังทำไม่เรียบร้อยเลยครับ ส่งมาได้ไง มาดูว่า test first จะช่วยอะไรกับสองปัญหาข้างบนได้บ้าง เริ่มแรกหลังจากได้ requirement มา programmer อย่างผม ก็ต้องอ่านๆๆ แล้วก็อ่าน แล้วก็สรุป ว่าต้องเขียนอะไรบ้าง(ผมจะเรียกว่า spec ละกัน หรือจะเรียกว่า test case ใน TDD ก็ได้) แล้วก็เขียนลงใน spec file ตัวอย่างด้านล่างคือ Ruby code ที่ใช้ใน [...]
programmer ก็ช่วย test ได้ครับ ผมทำงานในทีมเล็กๆ ไม่มีเงิน หรือคนมากพอที่จะไปจ้าง หรือสร้างทีม tester เพราะฉะนั้น โปรแกรมเมอร์นี่แล จะต้องแบ่งเบาภาระการ test ให้กับทีม สิ่งที่ programmer ช่วยได้ คือการใช้ Test driven development(TDD) เป็นตัวช่วย สิ่งที่ผมเคยฟาดฟันมาก่อน คือการใช้ unit test ทำการ test source code ในทุกๆ unit ไม่ว่าจะเป็นตัวแปรเอย method(หรือบางคนจะเรียกว่า function)เอย หรือ integration test ที่เขียนยังไงก็ไม่ครอบคลุม จนมีฝรั่งใจดี สร้างสิ่งที่เรียกว่า Behavior driven development(BDD) นี่แหละ ใช่เลย แทนที่เราจะมองให้เป็น unit ทำไมเราไม่มองให้เป็นพฤติกรรม(behavior) ทดสอบที่พฤติกรรมไปเลย มันก็เลยเป็นการรวมกันของ unit test กับ integration [...]