จากบทความเรื่อง Microservices Testing ทั้ง 3 parts จาก InfoQ นั้น ประกอบไปด้วย
เป็น 3 บทความที่ทำให้เราเห็นแนวทาง
ของการทดสอบระบบงานที่ออกแบบตามแนวคิด Microservices
จึงทำการสรุปแนวทางคร่าว ๆ ไว้ดังนี้
มาดูสิ่งที่สำคัญมาก ๆ ว่ามีอะไรบ้าง ?
การจัดการกับ dependency ต่าง ๆ ที่ service ต้องใช้งาน
น่าจะเป็นปัญหาหลักของการทดสอบ
ยิ่งเป็นการทดสอบที่ใกล้ชิดกับผู้ใช้งานเท่าไร
การจัดการและควบคุม dependency ต่าง ๆ ยิ่งยากและมากขึ้นเท่านั้น
โดย dependency ก็ประกอบไปด้วย database, Web Service, API เป็นต้น
ถ้าเราไม่สามารถจัดการได้แล้ว
ปัญหาตามมาเยอะมาก
เช่นทำให้การทดสอบในแต่ละครั้งช้ามาก
เพราะว่า ต้องเตรียมการเยอะ
ทำให้ไม่สามารถทดสอบซ้ำ ๆ ได้
บ่อยครั้งการทดสอบผ่านบ้าง ไม่ผ่านบ้าง
การทดสอบแบบ regression ทำไม่ค่อยได้หรือเป็นไปไม่ได้เลย
ส่งผลให้การทดสอบไม่น่าเชื่อถือ
การทดสอบที่เพิ่มเติมเข้ามาในโลกของ Microservices คือ Contract testing
เป็นเหมือนการสร้างสัญญาของการทำงานร่วมกัน
ระหว่างแต่ละผู้ใช้งานกับผู้ให้บริการ
ดังนั้นทั้งสองฝั่งจะยึดถือสัญญาฉบับนี้ร่วมกัน
ถ้ามีการเปลี่ยนแปลงใดๆ จำเป็นต้องเปลี่ยนแปลงสัญญานี้ด้วยเสมอ
เพื่อให้ทั้งสองฝ่ายรับรู้ มันคืออีกรูปแบบของการพูดคุยและทำงานร่วมกันนั่นเอง
แต่ละทีมควรต้องทำการพูดคุยและวางแผนกันว่า
จะจัดการ dependency ต่าง ๆ อย่างไร
เช่นการทำการ Mock, Stub, Fake, Container, Virtualization อะไรก็ว่าไป
หรือในส่วนของ API ก็จะมี API Mocking Tool เพียบให้ใช้งาน
เพื่อทำให้ทดสอบได้ง่ายขึ้น
อีกทั้งเรื่องของการเปลี่ยนแปลง ก็ต้องพูดคุยกันด้วย
เพราะถ้า dependency ที่ใช้งานมีการเปลี่ยนแปลง
แล้วผู้ใช้งาน dependency ไม่รู้ว่าเปลี่ยนแปลง
ปัญหาที่ตามมาคือ สิ่งที่จำลองไว้จะไม่ update ตาม
ดังนั้นเรื่องของการพูดคุยและทำงานร่วมกันของแต่ละทีม เป็นเรื่องที่สำคัญมาก ๆ
แน่นอนว่า การทำงานต้องเป็นทีม
ประกอบไปด้วย Architect, Developer, QA, Tester, Infrastructure เป็นต้น
ทีมต้องเข้าใจเป้าหมายร่วมกัน จากนั้นลงมือสร้างมันขึ้นมา
แนะนำให้ลองอ่านรายละเอียดเพิ่มเติมจากบทความข้างต้นอีกครั้ง
คิดว่าน่าจะเป็นประโยชน์ต่อการพัฒนาและทดสอบระบบงาน