โลกของ automated testing พัฒนาไปไกลมากตั้งแต่ผมเริ่มเขียนโค้ดครั้งแรก และดูเหมือนทุกเดือนจะมีเครื่องมือหรือเทคนิคใหม่ๆ ที่ทำให้มันดีขึ้นไปอีก แต่ความท้าทายก็ยังคงอยู่ในเรื่องวิธีทดสอบฟังก์ชันการทำงานของโค้ดของเราอย่างมีประสิทธิภาพและประสิทธิผล เมื่อมันกระจายอยู่บนระบบแบบ distributed บทนี้จะแจกแจงปัญหาที่เกี่ยวข้องกับการทดสอบระบบที่มีความละเอียดสูง และนำเสนอวิธีแก้ปัญหาบางอย่างที่จะช่วยให้คุณมั่นใจได้ว่าคุณสามารถ release ฟังก์ชันการทำงานใหม่ของคุณได้
การทดสอบครอบคลุมเนื้อหากว้างมาก แม้ว่าเราจะพูดถึง เฉพาะ automated test เท่านั้น ก็ยังมีสิ่งที่ต้องพิจารณาอีกมากมาย และเมื่อมี microservices เข้ามา เราก็เพิ่มระดับความซับซ้อนขึ้นไปอีกชั้นหนึ่ง การเข้าใจว่าเรามีเทสต์ประเภทต่างๆ อะไรบ้างที่สามารถรันได้นั้นสำคัญมาก เพื่อช่วยให้เราสร้างสมดุลระหว่างแรงที่บางครั้งขัดแย้งกัน คือการนำซอฟต์แวร์เข้าสู่ production ให้เร็วที่สุดเท่าที่จะทำได้ กับการมั่นใจว่าซอฟต์แวร์ของเรามีคุณภาพเพียงพอ เมื่อพิจารณาถึงขอบเขตของการทดสอบโดยรวมแล้ว ผมจะไม่พยายามสำรวจหัวข้อนี้อย่างกว้างขวาง แต่บทนี้จะเน้นไปที่การดูว่าการทดสอบสถาปัตยกรรมแบบ microservice นั้นแตกต่างจากการทดสอบระบบที่กระจายตัวน้อยกว่า เช่น monolithic application แบบ single-process อย่างไร
สถานที่ที่การทดสอบเกิดขึ้นก็เปลี่ยนไปเช่นกันตั้งแต่หนังสือฉบับพิมพ์ครั้งแรก แต่ก่อนหน้านี้การทดสอบส่วนใหญ่จะทำก่อนที่ซอฟต์แวร์จะไปถึง production แต่ตอนนี้เรามองการทดสอบ application ของเรามากขึ้นเรื่อยๆ เมื่อมันไปถึง production แล้ว ซึ่งยิ่งทำให้เส้นแบ่งระหว่างกิจกรรมด้านการพัฒนากับกิจกรรมที่เกี่ยวข้องกับ production เลือนลางลงไปอีก นี่เป็นสิ่งที่เราจะสำรวจในบทนี้ ก่อนที่จะไปสำรวจการทดสอบใน production อย่างละเอียดมากขึ้นใน Chapter 10