งานนี้จัดเป็นครั้งที่ 3 แล้ว ผมไปทั้ง 3 ครั้งเลย ชอบงานนี้มาก ^^ ส่วนนี้เป็นบล็อกผมเกี่ยวกับงานครั้งที่ 2 และบรรยากาศงานครั้งแรก
งานนี้หลักๆ แล้วจะเกี่ยวกับ software testing ซึ่งเป็นสิ่งที่ขาดไม่ได้เลยในการพัฒนาซอฟต์แวร์ การพัฒนาซอฟต์แวร์สมัยนี้ต้องเขียนชุดทดสอบกันตั้งแต่เริ่มแรกเลยทีเดียว ครั้งที่ 3 นี้จะมีเรื่อง Agile มาเอี่ยวเยอะหน่อย เพราะว่าเป็นการพัฒนาแนวใหม่และเน้นการมีคุณภาพของซอฟต์แวร์ ดังนั้น software testing จึงเป็นเรื่องที่เกี่ยวข้องโดยตรง
การที่ได้ฟังและได้พูดคุยกับผู้เชี่ยวชาญในสาขานั้นๆ ถือว่าเป็นการพัฒนาตัวเองอย่างหนึ่ง ดังนั้นใครที่อยากพัฒนาตัวเองไม่ว่าจะทั้งด้านการพัฒนาซอฟต์แวร์หรือการทดสอบระบบ งานแบบนี้ไม่ควรพลาดนะ ครั้งนี้ผมไม่ได้อยู่จนจบได้ฟังมาแค่ 4 หัวข้อเลยนำมาแบ่งปันสำหรับคนที่ไม่ได้ไป ถ้าเขียนอะไรผิดพลาดไปรบกวนแก้ให้ด้วยนะครับ 😉
หัวข้อที่ 1 Handling Non-Functional Requirements Testing โดย อ. ดร. ศศิพร อุษณวศิน
- เราต้องฟังปัญหาและทำความเข้าใจ ห้ามสร้าง assumption เอง
- มุมมองของคุณภาพ เป็นสิ่งที่ลูกค้าตัดสินใจว่าดีหรือไม่ดี ไม่ใช่คนพัฒนา
ต่อมาได้เปรียบเทียบ functional กับ non-functional requirement ซึ่งพวก functional คือพวกระบบหรือฟังก์ชั่นที่ลูกค้าต้องการว่าระบบเราจะทำอะไรได้บ้าง ส่วน non-functional คือพวกคุณภาพ เป็นสิ่งที่ทำให้ functional ดีขึ้น เช่น ค้นหาข้อมูลอย่างรวดเร็ว ระบบมีความปลอดภัยสูง
วิธีจัดการ non-functional จะจัดการได้ยากกว่าแบบ functional ให้เราคิดอยู่เสมอว่าอย่างแรกคือต้องเก็บ requirement ให้ดีก่อน แล้วสิ่งที่ตามมาจะดี ความต้องการของลูกค้าต้องชัดเจน ต้องวัดได้ว่า fail/success ต้องเป็นสิ่งที่ยอมรับได้ ต้องเป็นสิ่งที่ทำได้จริง และต้องติดตามได้ว่าใครทำอะไร เมื่อไหร่ อย่างไร อ. ได้แนะนำ user story ว่ามีประสิทธิภาพมากเพราะเป็นภาษาที่ลูกค้
ต่อมาให้สร้าง metric หรือตาราง ออกมาดูว่า functional นั้นๆ ต้องมี non-functional อะไรบ้าง เราจะจับประเด็นของ non-functional ได้ specific และ measurable (สามารถวัดได้) สิ่งที่วัดไม่ได้ เช่นพวก usability เราอาจจะใช้ prototype ช่วย และเราควรจะมีทางเลือกให้เค้า เรื่อง usability เป็นสิ่งที่กว้างมาก และยาก เราต้องหาตัวชี้วัดมาให้ได้ และการ test จะส่งผลต่อ user satisfaction มีหลายระดับ เช่น เบื้องต้นอาจจะมีแค่ design 1 หน้ากระดาษ ต่อไปก็อาจจะให้ทดลองใช้ได้ แต่ยังใช้ได้ไม่สมบูรณ์ หรืออาจจะทดลองเป็นส่วนๆ
อ. ได้พูดถึงงานวิจัยของ Virzi (1992) และ Nielsen & Landauer (1993) ว่าควรจะมี user สัก 5 คนขึ้นไปมาร่วมทดสอบ usability และ user ควรจะเป็น user ของระบบจริงๆ ถ้าเป็นไปได้ก็ควรจะเริ่
ตอนท้ายของ session นี้มี อ. อีกท่านหนึ่งขึ้นมาปิดท้าย (ผมจำชื่อไม่ได้) เล่าถึงประสบการณ์ที่ล้มเหลวที่
หัวข้อที่ 2 Our Features = User's Bugs โดย อ. @rawitat
เจ้าของ session มาจัดทอร์คโชว์เพราะลืมเอาสไลด์
เริ่มต้น session นี้ อ. ได้นิยามคำว่าบักไว้ว่า บักคืออะรไก็ตามที่ทำให้ user รำคาญ ให้ทุกคนเข้าใจตรงกันก่อน
บักที่แก้ยากตามประสบการณ์ของผู้พูด (+ ความเห็นจากผู้ฟัง) คือบักที่ทดสอบบนเครื่องเราแล้
สาเหตุคือ ผู้พัฒนาซอฟต์แวร์พยายามมี feature มาให้ผู้ใช้มากเกินไป คือมันเป็นสิ่งที่เราอยากให้ user ใช้ แต่ไม่ได้ถามเลยว่าเค้าจะอยากใช้หรือเปล่า ยกตัวอย่างเรื่องนาฬิกาที่มีปุ่
อ. ได้ให้ take-away message ว่า "ไม่มีใครอยากใช้โปรแกรมของคุณ เค้าแค่อยากได้สิ่งที่
แล้วก็ The best software doesn't exist. ในความหมายของ อ. หมายถึง เราได้ผลลัพธ์มาเองโดยเราไม่
หัวข้อที่ 3 Achieving Zero Defects with Agile Methods โดย Varokas
ผู้พูดออนไลน์มาจากอเมริกา โดยมีประสบการณ์ทำ Agile มา 2 ปีกว่าๆ วันนี้จะมาพูดว่าใช้ Agile อย่างไรให้ไม่มี defect เลย สิ่งที่สำคัญที่มีผลกระทบมากสุ
TDD จะสามารถทำให้ design ดีขึ้นอีกด้วย ยกตัวอย่างเช่น ถ้าเราเขียนโค้ดเกี่ยวกับเวลา date = new Date() แบบนี้จะทำให้ QA ไม่สามารถทดสอบได้ทุกวัน ถ้า QA จะทดสอบฟังก์ชั่นนี้ ก็จะต้องไปเปลี่ยน system date เอาเอง แต่ถ้าเราออกแบบให้มีตัว mock up ตัว date ขึ้นมา จะทำให้เราสามารถทดสอบตอนไหนก็ได้ อีกทั้ง QA ยังทำงานง่ายขึ้นอีกด้วย
ต่อมาได้ไปพูดถึงหน้าที่ของ QA โดยข้อสงสัยอันดับแรกคือ ถ้าเราทดสอบโค้ดของเราแล้วเราก็มั่นใจว่าเราไม่มีบัก ทำไมเราถึงต้องมี QA? จริงๆ แล้ว QA จะมาช่วยทดสอบระบบไม่ว่าทั้
การทำ Continuous Delivery ทำให้เราตอบสนองกับการเปลี่
วิธีต่อมาที่ช่วยให้เกิด zero defect คือ One thing at a time คือทำทีละอย่าง เราแก้ไปทีละอย่าง เสร็จไปทีละอย่าง ดีกว่าที่ต่องคนต่างทำ มีหลายงาน เวลาเกิดปัญหาขึ้นมันจะแก้ได้
วิธีสุดท้ายที่ช่วยได้การทำ code review หรือ pair programming แนะนำว่าการทำ code review ควรจะทำทีละน้อยๆ เวลาแก้จะได้แก้น้อยๆ
หัวข้อที่ 4 ATDD - Make Love, Not (QA/DEV) War to Work โดย @kluak110 กับ @sinapam
กล่าวถึงว่าจะเป็นการดีถ้
Acceptance Test-Driven Development (ATDD) คืออีกวิธีหนึ่ง มีหลักการเดียวกับ TDD แต่ในที่นี้เราจะเขียน Acceptance Test ก่อนการเขียนโค้ด โดยปกติ developer จะรอ Acceptance test จาก QA ก่อน แล้วค่อยเริ่มเขียนโค้ด จากความเห็นของผู้พูด Acceptance test คือ requirement แต่จะมาอยู่ในรูปแบบที่ developer กับ QA เข้าใจตรงกัน
ต่อมาได้เล่าประสบการณ์ให้ฟังว่าช่วงจะเริ่มทำ ATDD นั้น developer จะว่าง ไม่มีงานทำ ระหว่างรอ QA ซึ่ง QA จะรู้สึกว่าต้องรับผิ
ผู้พูดมีหน้าสไดล์สรุปสั้นๆ ไว้ว่า
TDD = Design
ATDD = Conversation
ในช่วงท้ายเป็น demo พูดถึงอุปกรณ์ทำ ATDD เช่น พวก Robot Framework หรือ Selenium และอื่นๆ ก่อน แล้วค่อยยกตัวอย่าง requirement ตามด้วยการเขียน acceptance test ที่จะดูเป็นภาษาคน แล้วเราค่อยแปลงไปเป็นโค้ดที่ยั
จบเพียงเท่านี้.. หวังว่าจะบล็อกนี้จะเป็นความรู้ให้กับคนที่พลาดงานครั้งนี้นะครับ ถ้ามีทีมงานมาอ่านก็ขอให้มี #BugDayBKK2013 และปีต่อๆ ไปด้วยนะครับ ^^
สุดท้ายขอขอบคุณทุกคนที่มาร่วมแชร์ความรู้ให้นะครับ -/\-