สวัสดียามค่ำของวันเสาร์ที่ 13 มีนาคม 2553 ครับ เปิดหัวเรื่องของวันนี้ด้วยคำว่า Case Study เนื่องด้วยเรื่องที่จะแบ่งปันในค่ำคืนนี้เป็น Case ที่เกิดขึ้นจริง หรือที่ฝรั่งมักจะใช้คำว่า Base on True Story ครับ และเกิดขึ้นใน ห้องน้ำ อ้าว งง งง งง กันเลยทีเดียวครับ ถ้าอยากรู้ว่า Software Testing ไปเกี่ยวข้องอะไรกับ ห้องน้ำ อ่านกันต่อไปครับ Case Study นี้เกิดขึ้นเมื่อเกือบจะ 2 ปีแล้วครับ และติดตึงอยู่ในสมองน้อยๆ ของผมมานานเลยทีเดียว ว่าจะเขียน ว่าจะเขียน และว่าจะเขียน ลง welovebug มานานสองนาน แต่จนแล้วจนรอดก็ไม่ได้เขียนสักที ค่ำคืนนี้เลยตั้งใจว่าจะเขียนมันออกมา เผื่อจะได้เป้นประโยชน์ไม่มากก็น้อยสำหรับเพื่อนพ้องน้องพี่ทั้ง Software Tester, Programmer และ Developer ครับ โจทย์ที่เจอจนต้องเอาต้องเอา ตีx ก่ายหน้าผาก [...]
หลังจากที่ไป download grails มาจาก github เห็นว่ามี folder นึงที่น่าสนใจคือ grails-functional-tests คำถามแรกคือ มันคืออะไร ? เพราะว่าปกติทำแต่ unit test ธรรมดาทั่วไป รูปจาก www.grails.org ดังนั้นจึงไปทำการค้นหาพบว่า function test มันเป็น plugin ตัวหนึ่งของ Grails อยู่ที่นี่ Functional Test Plugin และมีการเปรียบเทียบกับ WebTest ไว้ที่นี่ หลังจากที่ไปอ่านมา ได้ข้อสรุปคร่าวๆ ว่า Functional Test คือ – plugin ของ grails – HTTP Testing นั่นเอง โดยข้างในมันคือ HtmlUnit หรือตัวยิง web – ใช้ DSL ของ groovy [...]
ไม่มีอะไรดีเท่าการทดลอง เริ่มต้นด้วยการติดตั้ง – ชุด PHP ด้วย xampp (appserv ก็ ok แล้วแต่รสนิยม) – ตามด้วย Pear เวอร์ชันล่าสุด เพราะ PHPSpec require php และ pear เวอร์ชันค่อนข้างใหม่ – ติดตั้ง PHPSpec ขอข้ามวิธีติดตั้งละกันครับ(ตาม link ก็ได้) เพราะอยากจะให้เห็นการเขียน spec มากกว่า require_once ‘LazyDog.php’; class DescribeLazyDogEating extends PHPSpec_Context { private $_dog = null; public function before() { $this->_dog = new LazyDog(“Neng”); } public function itShouldGetFullAfterEatRiceTwice() { [...]
เอา 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 [...]