testing-00
ช่วงวันหยุด Developer มาหาหนังสืออ่านเพื่อเพิ่มเติมความรู้กันดีกว่า
ผมขอแนะนำหนังสือเกี่ยวกับการทดสอบระบบ Web application
ชื่อว่า The Way of the Web Tester

ปล. หนังสือเล่มนี้ยังเขียนไม่เสร็จนะครับ
อยู่ในขั้น Beta อยู่ แต่มันน่าอ่านมาก ๆ
เหมาะตั้งแต่ผู้เริ่มต้นจนถึงประสบการณ์สูง ๆ

โดยในหนังสือเล่มนี้จะอธิบายถึงสิ่งจำเป็นต่อการทดสอบระบบ Web Application

เพื่อให้พร้อมสำหรับการทดสอบแบบอัตโนมัติ เช่น

  • ความหมายของคำต่าง ๆ ซึ่งทีมต้องเข้าใจตรงกัน
  • วิธีการที่ดีในการจัดการชุดการทดสอบ เช่น การเขียนและจัดการโครงสร้าง เป็นต้น

แบ่งเนื้อหาออกเป็น 2 ส่วน คือ

  1. ความรู้พื้นฐานสำหรับการสร้าง Automated testing สำหรับระบบ web
  2. ลงมือเขียน code และการสร้าง Automated test ที่ดี

มาดูรายละเอียดกันหน่อย

ส่วนที่ 1

โดยเริ่มจากการอธิบายเรื่อง Pyramid Testing
เพื่อทำให้เข้าใจว่า สิ่งที่เรากำลังจะสร้างขึ้นมานั้นคืออะไรกันแน่ ?
เนื่องจาก developer ส่วนใหญ่เข้าใจไม่ตรงกัน !!
แถมชนิดของการทดสอบมันก็เยอะอีกด้วย
ดังนั้นจำเป็นต้องเข้าใจส่วนที่ 1 ก่อนนะครับ

testing-01

มีเป้าหมายหลักเพื่อ
เพิ่มความเร็วของการทดสอบ และ feedback ที่รวดเร็ว
เนื่องจากการรอผลการทดสอบนาน ๆ มันไม่ใช่เรื่องดีแน่นอน !!

ดังนั้นควรเข้าใจแนวคิดของ Pyramid testing ก่อน
ซึ่งคิดโดยคุณ Mike Cohn ในหนังสือ Succeeding with Agile: Software development with Scrum
แยกแต่ละเรื่องออกเป็นบท ๆ ไป ดังนี้

testing-02

ประกอบไปด้วย
ชั้นบนสุดคือ User Interface หรือ UI Testing
หรือบางครั้งเรียกว่า End-to-End testing
เป็นการทดสอบเหมือนผู้ใช้งานจริง ๆ

ชั้นรองลงมาคือ Integration testing
คล้าย ๆ กับ UI Testing เพียงแต่ไม่ทดสอบผ่าน UI
แต่ทดสอบในระดับ service แทน
เหมือนการเขียนเส้นเชื่อมต่อระหว่างจุดเข้าด้วยกัน

ชั้นล่างสุดคือ Unit testing
เป็นส่วนที่เล็ก เร็ว แรงที่สุด
เป็นการทดสอบในระดับ code ของนักพัฒนานั่นเอง

โดยแนะนำให้อ่านจากบนลงล่างนะครับ
และที่สำคัญสามารถจับคู่กับ Web Architecture ได้ดังนี้

testing-03

ส่วนการทำงานจริง ๆ มีข้อแนะนำดังนี้

  • ให้เริ่มจาก unit testing ให้มากที่สุด
  • ใช้ UI testing เท่าที่จำเป็น เนื่องจากมันใช้เวลาทดสอบสูง และ เปลี่ยนแปลงบ่อย

testing-04

ส่วนที่ 2

จะลงในรายละเอียดของการสร้างชุดการทดสอบเลย
ถ้าไม่ใช่ Developer อาจจะธาตุไฟเข้าแทรกได้ง่าย ๆ เลย
โดยมีตัวอย่างเขียนด้วยภาษา Ruby ซึ่งเข้าใจได้ง่าย
เช่น

  • รูปแบบการเขียน code
  • เรื่องการตั้งชื่อ
  • เรื่องการ Spacing และ Tab
  • การจัดการกับ code ที่ซ้ำซ้อน
  • การจัดการโครงสร้างของชุดการทดสอบ
  • การใช้งาน Test double หรือ Mocking
  • การแยกส่วนการทำงานต่าง ๆ ออกจากกัน
  • แนวคิดของ Test-Driven Development (TDD)

testing-05

โดยสรุปแล้ว Web developer ไม่น่าพลาดหนังสือเล่มนี้ครับ

เนื่องจากพื้นฐานเป็นสิ่งที่สำคัญอย่างมากสำหรับการพัฒนาที่ยั่งยืน
ถ้าฐานไม่แข็งแกร่งก็ยากที่จะขึ้นสูงได้