[TH] บทบาทของ QA ใน Extreme Programming
--
ก่อนที่เราจะเข้าเนื้อหาถึงหน้าที่บทบาทของ QA ใน Extreme Programmingนั้น เรามาทำความเข้าใจสั้นๆก่อน ว่าExtreme Programmingมันคืออะไร
Extreme Programming(XP) คือการทำงานพัฒนาซอฟแวร์ภายใต้ปรัชญาAgile ที่จะเน้นความสนใจไปที่คุณภาพของsoftwareและคนในทีม โดยXPนั้นเป็นpracticeในscrum frameworkที่เน้นสนับสนุนการใช้software development practicesตามหลักการอย่างเหมาะสม โดย5 คุณค่าของ XP คือ Communication, Simplicity, Feedback, CourageและRespect
สั้นๆเลยคือ มันเป็นPractice ที่เป็นsub-setของscrumอีกที ตามภาพด้านล่างนี้
XP ช่วยให้การพัฒนามีความใกล้ชิดกับลูกค้าและได้รับfeedbackแบบเร็วมากขึ้น
บทบาทของ QA ใน Extreme Programming
XP ช่วยผลักดันให้ QA มีหน้าที่take initiative มากกว่ามีหน้าที่เบื้องหลังเฉยๆ โดย XP นั้น ย้าย QA จากการทำงานในส่วนเบื้องหลังมาเบื้องหน้า เป็นenabler and acceleratorแทน
เริ่มแรกเลยคือ QA นั้นจะเข้ามาช่วยลูกค้ากำหนดพฤติกรรมของระบบ ด้วยการทำ User Acceptance Tests ให้early-version releases โดยจะต้องวางแผนให้สามารถรันได้อย่างมีความคล่องตัว ไม่ว่าจะเป็นการรันเมื่อไหร่ก็ได้ตามใจสั่ง หรือรันทุกครั้งที่มีเวอร์ชั่นใหม่ โดยควรจะรันด้วยใครก็ได้ในทีม รวมถึงลูกค้าด้วย
จากนั้นลูกค้าต้องมีส่วนเข้ามาช่วยให้feedbackในส่วนของ Acceptance Tests ที่ QA ทำขึ้นมา ว่าสนองกับสิ่งที่ต้องการให้ออกมาหรือไม่ และต้องมาให้feedbackของEarly-version releases ที่ทำขึ้นมาเพื่อให้ลูกค้าเห็นเวอร์ชั่นเริ่มต้นของsoftwareตามที่ตกลงกันไว้ในrequirement (ซึ่งงานตรงนี้ต้องมีความเสถียรและผ่านการอนุมัติเพื่อreleaseจาก QA แล้ว) คำว่าเวอร์ชั่นเริ่มต้นตรงนี้คือหมายความว่า เริ่มต้นในเชิงfeatures ซึ่งจะพัฒนาเพิ่มเติมเข้ามาได้ในอนาคต
หลังจากQAช่วยลูกค้าในการคัดกรองความต้องการผ่านการออกแบบAcceptance Tests และเมื่อลูกค้าให้feedbackและปรับปรุงทุกอย่างตามความต้องการเรียบร้อยแล้ว QAจะนำมันมาทำ Automated test scripts ซึ่งจะเป็นการเขียนเคสE2Eที่ต้องใช้ความรู้และประสบการณ์ด้าน technical และ software testing มาใช้ เพื่อให้สามารถตรวจสอบพฤติกรรมที่คาดหวัง รวมถึงเพิ่มเติมส่วนการเทสดักจับสิ่งที่อาจจะเกิดขึ้นโดยไม่คาดคิดจากsoftware
ในส่วนของdeveloperนั้น ก็จะต้องมีการทำงานในรูปแบบเดียวกัน คือเขียนโค้ดออกมาให้ตามเทสเคสที่ออกแบบไว้ โดยใช้เทคนิคtest-driven development (TDD) ซึ่งจะเป็นการพัฒนาsoftwareที่ให้ความสำคัญการเขียนโค้ดunit testก่อนเขียนตัวโค้ดproduct ข้อดีของTDDคือ โค้ดทุกส่วนที่ทำออกมานั้น จะถูกบังคับให้ต้องผ่านunit testก่อนที่จะปล่อยออกมาให้เทสและให้ใช้ ทำให้เรามั่นใจได้ว่าผลลัพท์ของโค้ดและงานที่ออกมา จะมีความตรงกับสิ่งที่ต้องการที่ออกแบบไว้สูง
หลังจากที่โบได้มีโอกาสทำงานกับ Thoughtworks และได้ลองXP practiceในโลกแห่งความจริง เลยอยากแชร์เพิ่มในแง่มุมของบทบาทของQA ระหว่างสปริ้น โดยมันจะมีกิจกรรมดังนี้
- Kick-Off: จะมีBA, QA, UX/UI Designer, Dev ร่วมคุยกันเกี่ยวกับuser story ticketที่จะกำลังจะเริ่มdevelop เพื่อเคลียร์ความเข้าใจในrequirement และอุดช่องโหว่
- Deskcheck: จะมีBA, QA, UX/UI Designer, Dev ร่วมคุยกันเกี่ยวกับuser story ticketที่develop เสร็จแล้ว ส่วนใหญ่จะบนlocal environment เพื่อให้เห็นงานที่เพิ่งได้รับทำมาว่าเบื้องต้นนั้นทำถูกไหม มีการเขียนunit testที่ครอบคลุมหรือเปล่า ในส่วนนี้หากมีอะไรที่BA, QAมองเห็นว่าต้องแก้ สามารถตีกลับไปแก้ได้เลยอย่างรวดเร็ว
In conclusion,
ในหลายๆการสำรวจพบว่า ทีมที่ลองเอา Extreme Programmingมาใช้ เมื่อทำสำเร็จ คนส่วนมากเห็นด้วยว่าเป็นการทำงานที่ทำให้QAเครียดน้อยลง และDevส่งงานออกมาให้ลูกค้าได้มากขึ้น พร้อมคุณภาพของโค้ดที่ดีขึ้น
สรุปได้ว่าใน XP QA ช่วยเติมเต็มวงจรการพัฒนา ช่วยเข้ามารับรองว่า สิ่งที่ขอไปเป็นสิ่งที่อยากได้ และสิ่งที่อยากได้ถูกทำออกมาอย่างถูกต้อง และมีบทบาทและความสัมพันธ์ต่อคนอื่นในทีม ดังนี้
- Customers/Product: ได้ช่วยขัดเกลาสิ่งที่ลูกค้าต้องการ ช่วยวิเคราะห์business valueและทำให้จัดลำดับ priority ของงานได้ชัดเจนขึ้นโดยช่วยให้ความเห็นในทั้งเชิงความซับซ้อนของtechnical และโยงความสัมพันธ์ของแต่ละrequirementในเชิง business
- Developers: ช่วยให้ dev เข้าใจว่าลูกค้าต้องการ product แบบไหน ต้องสร้างยังไง จะมีการเทสยังไง “What is the right thing and how to make the thing right” และช่วยให้เห็นภาพรวมสิ่งที่ต้องการในมุมมองของ end user
- ในทีมQAด้วยกัน: ช่วยกันทำความเข้าใจความต้องการของusers และออกแบบเทสให้ตรงตามความต้องการของผู้ใช้ ผ่านfeedbackของลูกค้าและPerspectiveคนอื่นในทีมอย่าง BA, UX/UI Designer