ช่วงวันหยุด Developer มาหาหนังสืออ่านเพื่อเพิ่มเติมความรู้กันดีกว่า
ผมขอแนะนำหนังสือเกี่ยวกับการทดสอบระบบ Web application
ชื่อว่า The Way of the Web Tester
ปล. หนังสือเล่มนี้ยังเขียนไม่เสร็จนะครับ
อยู่ในขั้น Beta อยู่ แต่มันน่าอ่านมาก ๆ
เหมาะตั้งแต่ผู้เริ่มต้นจนถึงประสบการณ์สูง ๆ
โดยในหนังสือเล่มนี้จะอธิบายถึงสิ่งจำเป็นต่อการทดสอบระบบ Web Application
เพื่อให้พร้อมสำหรับการทดสอบแบบอัตโนมัติ เช่น
- ความหมายของคำต่าง ๆ ซึ่งทีมต้องเข้าใจตรงกัน
- วิธีการที่ดีในการจัดการชุดการทดสอบ เช่น การเขียนและจัดการโครงสร้าง เป็นต้น
แบ่งเนื้อหาออกเป็น 2 ส่วน คือ
- ความรู้พื้นฐานสำหรับการสร้าง Automated testing สำหรับระบบ web
- ลงมือเขียน code และการสร้าง Automated test ที่ดี
มาดูรายละเอียดกันหน่อย
ส่วนที่ 1
โดยเริ่มจากการอธิบายเรื่อง Pyramid Testing
เพื่อทำให้เข้าใจว่า สิ่งที่เรากำลังจะสร้างขึ้นมานั้นคืออะไรกันแน่ ?
เนื่องจาก developer ส่วนใหญ่เข้าใจไม่ตรงกัน !!
แถมชนิดของการทดสอบมันก็เยอะอีกด้วย
ดังนั้นจำเป็นต้องเข้าใจส่วนที่ 1 ก่อนนะครับ
มีเป้าหมายหลักเพื่อ
เพิ่มความเร็วของการทดสอบ และ feedback ที่รวดเร็ว
เนื่องจากการรอผลการทดสอบนาน ๆ มันไม่ใช่เรื่องดีแน่นอน !!
ดังนั้นควรเข้าใจแนวคิดของ Pyramid testing ก่อน
ซึ่งคิดโดยคุณ Mike Cohn ในหนังสือ Succeeding with Agile: Software development with Scrum
แยกแต่ละเรื่องออกเป็นบท ๆ ไป ดังนี้
ประกอบไปด้วย
ชั้นบนสุดคือ User Interface หรือ UI Testing
หรือบางครั้งเรียกว่า End-to-End testing
เป็นการทดสอบเหมือนผู้ใช้งานจริง ๆ
ชั้นรองลงมาคือ Integration testing
คล้าย ๆ กับ UI Testing เพียงแต่ไม่ทดสอบผ่าน UI
แต่ทดสอบในระดับ service แทน
เหมือนการเขียนเส้นเชื่อมต่อระหว่างจุดเข้าด้วยกัน
ชั้นล่างสุดคือ Unit testing
เป็นส่วนที่เล็ก เร็ว แรงที่สุด
เป็นการทดสอบในระดับ code ของนักพัฒนานั่นเอง
โดยแนะนำให้อ่านจากบนลงล่างนะครับ
และที่สำคัญสามารถจับคู่กับ Web Architecture ได้ดังนี้
ส่วนการทำงานจริง ๆ มีข้อแนะนำดังนี้
- ให้เริ่มจาก unit testing ให้มากที่สุด
- ใช้ UI testing เท่าที่จำเป็น เนื่องจากมันใช้เวลาทดสอบสูง และ เปลี่ยนแปลงบ่อย
ส่วนที่ 2
จะลงในรายละเอียดของการสร้างชุดการทดสอบเลย
ถ้าไม่ใช่ Developer อาจจะธาตุไฟเข้าแทรกได้ง่าย ๆ เลย
โดยมีตัวอย่างเขียนด้วยภาษา Ruby ซึ่งเข้าใจได้ง่าย
เช่น
- รูปแบบการเขียน code
- เรื่องการตั้งชื่อ
- เรื่องการ Spacing และ Tab
- การจัดการกับ code ที่ซ้ำซ้อน
- การจัดการโครงสร้างของชุดการทดสอบ
- การใช้งาน Test double หรือ Mocking
- การแยกส่วนการทำงานต่าง ๆ ออกจากกัน
- แนวคิดของ Test-Driven Development (TDD)
โดยสรุปแล้ว Web developer ไม่น่าพลาดหนังสือเล่มนี้ครับ
เนื่องจากพื้นฐานเป็นสิ่งที่สำคัญอย่างมากสำหรับการพัฒนาที่ยั่งยืน
ถ้าฐานไม่แข็งแกร่งก็ยากที่จะขึ้นสูงได้