การทดสอบเป็นองค์ประกอบที่ขาดไม่ได้ในกระบวนการพัฒนาซอฟต์แวร์สมัยใหม่ แต่เทสต์เคสเองก็เป็นโค้ดที่นักพัฒนาเขียนขึ้นเช่นกัน จึงอาจก่อให้เกิดปัญหาได้ในบางครั้ง บทความนี้แนะนำมุมมองเกี่ยวกับเทสต์เคสที่ “มีประโยชน์” จากแง่มุมเชิงวัตถุ (ภาษาเกาหลี)

ประเด็นสำคัญคือ การทดสอบคือ [โมดูลที่มีหน้าที่ทดสอบโมดูลอื่นที่ถูกห่อหุ้มไว้] นั่นหมายความว่าเทสต์เองก็เป็นส่วนหนึ่งของโค้ดที่ถูกพัฒนาอย่างแท้จริง ดังนั้นจึงต้องปฏิบัติตามหลักการเชิงวัตถุและปรับปรุงรวมถึงรีแฟกเตอร์อย่างต่อเนื่องเช่นกัน หากเป็นเช่นนั้น ก็สามารถอนุมานตามหลักการ SOLID ได้ว่า เทสต์เคสไม่ควรเข้าถึงหรือพึ่งพาองค์ประกอบภายในที่เป็นรูปธรรมของโมดูลที่ถูกทดสอบ (เช่น private เมธอด) สิ่งที่เทสต์เคสควรตรวจสอบมีเพียงความรับผิดชอบเชิงนามธรรมของโมดูลนั้นเท่านั้น ดังนั้น การทดสอบจึงควรทำผ่าน external interface ของโมดูลที่สะท้อนความรับผิดชอบดังกล่าวเท่านั้น

โดยส่วนตัวแล้ว ผมคิดว่าเนื้อหานี้น่าจะเป็นหนึ่งในหลายด่านที่ผู้เริ่มต้นเขียนโปรแกรมต้องก้าวข้ามให้ได้ ตอนที่ผมเริ่มเรียนเรื่องเชิงวัตถุใหม่ ๆ ในคลาสก็เคยได้ยินคำอธิบายว่า “ไม่ควรทดสอบ private เมธอดโดยตรง” รวมถึงเหตุผลของมัน แต่พูดตามตรง ตอนนั้นผมยังไม่เข้าใจอย่างถ่องแท้ กว่าผมจะพอเข้าใจประเด็นข้างต้นได้ ก็ผ่านไปอีกนานพอสมควรหลังจากนั้น

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น