ตอบด้วยคำถาม
- อยู่ดึกเข้ามาทำวันเสาร์ ยังถือว่า time boxed iteration ได้หรือไม่?
- ถ้า unit testing เป็นของ developer และดีพอแล้ว จะมี QA ทำไม?
- ถ้า developer ทำ test แล้วยังต้อง มี QA ทำไมไม่ให้ QA เป็นคนทำ test อย่างเดียว, developer จะได้มีเวลาโค้ดเพื่อสร้าง value ได้มากขึ้น
- ถ้า developer อู้ ทำน้อยแต่โหวตมากๆ จะทำอย่างไร?
- ทำทั้งหมดนี้แล้วจะ commit ได้หรือไม่ว่าทั้งหมดเสร็จเืมื่อไหร่?
เรื่องการ testing เนี่ย unit testing ก็เหมือนกับ white box testing เราเขียนโดยที่เรารู้ code และก็เป็นแค่การ test ในส่วนๆหนึ่งไม่ได้ test การประกอบร่างกับส่วนอื่นๆมากนัก
การ Test ยังมี functional test, performance test, capacity test, exploratory test โอ๊ย อีกมากมายอ่ะค่ะ QA ไม่ได้ตกงานแน่นอน
นอกจากนี้ QA ยังมีความสำคัญมาก กับการสร้าง exit criteria ของ story ที่สมบูรณ์มากขึ้น เพราะด้วยมุมมองของ QA จะทำให้เราไม่ได้มองแต่ happy path (เช่น user ใส่ username password ถูกก็ต้อง login ได้) แต่จะมอง sad path (เช่น user ใส่ username password ผิด ก็ต้องบอกเค้าว่าผิด) และ bad path (เช่น user ใส่ตัวอักษรประหลาดที่อาจะทำให้เกิด exception ใน program ได้ ก็ต้อง handle อย่างสวยงาม) ด้วย นั่นคือ หน้าที่ของ QA QA ที่ดีจะมีมุมมองที่ครอบคลุมเช่นนี้ แล้วเค้าก็จะสร้างประโยชน์ให้กับ project ได้อย่างมากมาย


[...] This post was mentioned on Twitter by Prathan D. and Prathan D., Agile Sixty-Six. Agile Sixty-Six said: New post: QA ไม่ตกงาน (http://bit.ly/92Rzq4) by sinapam #agile66 [...]
ขอมาช่วยตอบในหมวกของ Tester นะครับ
จริงๆ ในบ้านเมืองเราผมว่าคำว่า Quality Assurance (QA) ยังมีน้อยนะครับ ที่จะทำได้ตรงตาม Role จริงๆ ณ ตอนนี้ QA ในบ้านนี้เมืองนี้ ทำงานจริงๆ เท่ากับ Tester
1. Developer/Programmer จะต้อง Test อะไร?
Unit Testing และ Integration Testing เป็น 2 Test Types หลักๆ ที่ Developer/Programmer จะต้องดำเนินการทดสอบ
Developer/Programmer ทำ Unit Testing เพื่อทดสอบ Functional ของ Module/Function ที่พัฒนา code ขึ้นมาว่าทำงานถูกต้องครบถ้วนทุกเงื่อนไข ตรงตาม Software Specification และ Requirement หรือไม่
Developer/Programmer ทำ Integration Testing เมื่อถึงเวลาที่จะต้องนำ code มาร่วมร่างกับทีมงานตัวเอง หรือทีมงานอื่นๆ ที่ร่วมกันพัฒนาใน Project นั้นๆ เพื่อทดสอบว่า ที่พัฒนา code ขึ้นมาว่าทำงานถูกต้องครบถ้วนทุกเงื่อนไข ตรงตาม Software Specification และ Requirement หรือไม่
2. Tester จะทำอะไรหล่ะที่นี้?
Tester จะดำเนินการทดสอบในส่วนของ System Testing พูดง่ายๆ ก็คือทดสอบระบบทั้งหมดว่าทำงานถูกต้อง และถูกพัฒนาออกมาตรงตาม Requirement ของลูกค้า หรือไม่
Performance Testing , Security Testing, Compatibility Testing และ อื่นๆ เป็น Test Types ที่ Tester จะต้องดำเนินการทดสอบด้วย ทั้งนี้ ทั้งนั้น ขึ้นอยู่กับว่า Project นั้น หรือ องค์กร นั้น กำหนด Acceptance Criteria ไว้อย่างไร ในการ Release
3. Developer/Programmer และ Tester จะต้องทำ Regression Testing
Regression Testing คืออะไรหล่ะนี่ เกิดมาเพิ่งเคยได้ยิน และเคยทำแต่ Re-Test มองการแบบ ง่ายๆ
Re-Test คือการทดสอบว่า Defect/Bug ที่ได้รับแจ้งมานั้น ถูกแก้ไขเรียบร้อย และทำงานถูกต้อง
Regression Testing คือการทดสอบว่า Software ทั้งระบบยังทำงานถูกต้องเช่นเดิมหรือไม่ หลังจากมีการ Change เกิดข้ึนใน Code และมี Defect/Bug เกิดขึ้นมาเพิ่มเติมอีกหรือไม่
ดังนั้นทั้ง Developer/Programmer และ Tester จะต้องทำ Regression Testing ด้วย เพื่อตรวจสอบว่าเกิดผลกระทบใดๆ กับ Software หรือไม่ หลังจากมีการ Change เกิดขึ้นครับ
ปล. Change นอกจาก Code แล้ว ยังรวมถึงเรื่องของการเปลี่ยน Platform / OS / Hardware ด้วยครับ
สรุป
ไม่ว่าการทดสอบ (Testing) จะดำเนินการโดยใครก็ตามที่อยู่ในทีมพัฒนา Project นั้น Developer/Programmer หรือ Tester เองก็ตาม จุดประสงค์เบื้องต้นคือ
1. ลดความเสี่ยง และปัญหาที่จะเกิดขึ้น ให้ได้มากที่สุด การส่งมอบงานให้ลูกค้า
2. เพิ่มความมั่นใจให้ Software
ดังนั้นทั้ง Developer/Programmer และ Tester มิมีวันตกงาน หรือจะไม่มีงานทำครับ เพราะว่า Bug Never Dies!!!
สุดท้ายฝากไว้ 2 links เผื่อจะช่วยให้เห้นภาพมากขึ้นครับ
Test ไปเพื่ออะไร? แล้วใคร Test อะไร? ( http://www.welovebug.com/software-testing/test-objectives-and-who-tests/ )
ตัวอย่าง ทำไม Regression Testing ถึง สำคัญ? ( http://www.welovebug.com/software-testing/example-of-why-regression-testing-is-so-important/ )
โอ้ว ขอบคุณมากค่า… ดีใจจัง มี QA เทพมาช่วยเสริมให้ด้วย