จะเขียนเทสไปทำไม?

ต่อเนื่องจากคราวที่แล้วที่ผมตั้งคำถามไปว่า Pair Programming ไปทำไม?

วันนี้ก็ถึงเวลาที่ต้องมานั่งถามกันอีกละว่า จะเขียนเทสไปทำไม แล้วบางคนนะ จะให้ทำ TDD กันอีก โอยย ชีวิตมันจะยากไปไหน

ถามแบบนี้มันดูถูกกันชัดๆ

ความจริง การสร้างซอฟท์แวร์สักตัว มันก็เหมือนคุณเปิดร้านขายอาหารวันแรก ถ้าลูกค้ามาซื้อไปกินแล้วพบว่า รสชาติมันห่วยบรม เนื่องจากคุณเพิ่งจะ Kick Off ร้านนี้เมื่อสามวันก่อน โดยที่คุณก็ไม่เคยทำอาหารชนิดนี้มาก่อน และพอเตรียมทุกอย่างเสร็จ ก็ถึงวันเปิดร้านแล้ว คุณไม่ทันได้ลองชิม แต่ก็ได้เวลาเปิดร้านแล้ว

ลูกค้าที่มากินไปวันแรก เขาไม่ประทับใจแล้ว และคุณก็รู้ตัวตอนที่ร้านยังเปิดอยู่ คุณก็เลยเติมน้ำปลา เติมน้ำตาล เทผงชูรสลงไปเพิ่ม ยกหม้อไปต้มใหม่ ให้ลูกค้าในร้านนั่งรอไปก่อน ซึ่งลูกค้าที่กินไปก่อนหน้านี้เขาก็จำไว้ละ

ส่วนลูกค้ารายถัดไป อาจจะรู้สึกว่า อืม ก็พอกินได้ แต่ก็ยังไม่ดีมากนัก ไม่คุ้มค่า แถมยังติดเค็มไปสักหน่อย กินเสร็จคอแห้งผาดเลย แถมยังมี fix bug จนต้องนั่งรอกันไป วันหลังไม่มาละ

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

ครับ นั่นแหล่ะครับคือชีวิตของการที่ไม่มีเทส

การเขียนเทส ถ้าจะให้เปรียบกับร้านก๋วยเตี๋ยวลูกชิ้นปลา ผมคงต้องเริ่มจากการปั้นลูกชิ้น และทดสอบดูว่าเมื่อต้มเสร็จ มันมีขนาดพอเหมาะกับการกินไหม ความหนึบได้ตามต้องการหรือยัง สีซีดไปไหม รสเค็มไป หวานไปยังไง จนได้สูตรที่ต้องการ

จากนั้นผมอาจจะไปต้มซุป แล้วชิมดูว่า เข้มข้นพอดีไหม รสชาติเค็มไป หวานไป หอมหรือยัง

ผมอาจจะต้องทดสอบวัตถุดิบอีกหลายอย่าง สุดท้าย ผมต้องทำ integrate test ด้วยการเอามันมารวมกันเป็น เส้นเล็กน้ำลูกชิ้นปลา สูตรปกติ แล้วชิมดูว่า ปริมาณ รสชาติ ความหอม อุปกรณ์การกิน เครื่องปรุง มันเหมาะสมกับราคาที่ตั้งไว้หรือยัง

ผมอาจจะอยากรู้ไปถึงว่า วันนึงผมรับลูกค้าได้กี่ราย ในช่วงเวลาเดียวกันนั่งได้กี่โต๊ะ แล้วพวก async process ที่สั่งผ่าน lineman ผ่าน grab เราจะทำให้เขาไหวไหม ต้องเพิ่ม node (ลูกจ้าง)เท่าไร

เรื่องพวกนี้บางครั้งเราจะเริ่มเห็นมันชัดขึ้นตอนที่เราทำเทสด้วยซ้ำ

เอาเป็นว่า เรื่องการทำเทสมันสำคัญในแทบจะทุกการกระพริบตาเลยทีเดียว ถ้าเราอยู่กับมันไม่เป็น ชีวิตเราก็ต้องหลั่งอะดรินาลีนกันอยู่ร่ำไปนั่นแหล่ะครับ

--

--