Technical

169 wordpress feature image (12)

Coding Interview ยังไงให้คนรู้ว่ามีของ

พี่กิ่งเป็นคนนึงที่จะทำ coding interview เวลาต้องสัมภาษณ์ตำแหน่ง Automation QA ค่ะไม่ใช่เพราะอยากเช็คว่าเขียนโค้ดเก่งแค่ไหนนะคะแต่อยากรู้ว่ามีวิธีรับมือกับปัญหายังไงบ้าง ที่ผ่านมาสัมภาษณ์มาหลายคน สิ่งที่เห็นประจำเลยคือ “หลายคนไม่กล้าทำ” มีทั้งคนที่ขอไม่ทำเลย บอกว่าทำไม่ได้แล้วก็จบแค่นั้นบางคนขอเอากลับไปทำที่บ้านบางคนนิ่งไปเลย แล้วนั่งทำเงียบๆ ไม่ถามอะไร . พี่กิ่งเข้าใจทุกคนนะคะ เพราะน่าจะกดดันมาก อยู่ๆ มาโดนขอให้เขียนโค้ดให้ดูบางคนอาจจะคิดว่า คนสัมภาษณ์ต้องการเห็นคำตอบที่ perfect, syntax เป๊ะ รันผ่านในครั้งเดียว แต่จริงๆ แล้ว อยากบอกทุกคนว่า พี่กิ่งไม่ได้ให้คะแนนอะไรพวกนั้นเลยค่ะ 💡 สิ่งที่อยากเห็นจริงๆ คือ “วิธีคิด” ต่างหาก คำถาม coding มักจะเป็นแค่จุดเริ่มต้น เพื่อที่จะดูวิธีการจัดการกับปัญหาค่ะเช่น ดูว่าถ้าให้โจทย์ไปแล้ว จะทำยังไง จะถามเพื่อเช็คให้แน่ใจก่อนมั้ย หรือจะโดดลงไปเขียนโค้ดเลยมีการจัดลำดับความคิดของตัวเองก่อนมั้ย หรือคิดไปโค้ดไป สุยๆ ไปตามทาง บางทีอาจจะมีคำถามต่อหลังจากนั้นอีก เช่น จะเทสยังไง คิดว่ามีตรงไหนที่จะเจอบั๊กได้บ้าง บางคนที่ได้ไปต่อ ก็ไม่ใช่คนที่เขียนโค้ดได้เป๊ะแบบเอามารันได้จริง ก็มีบ่อยไปค่ะ . และความจริงก็คือ QA อย่างเรา […]

Coding Interview ยังไงให้คนรู้ว่ามีของ Read More »

169 wordpress feature image (8)

วาง Data ผิดที่ แก้นิดเดียว พังทั้งก้อน

พอถึงจุดนึง Automation Test ของเราจะเริ่ม “หนัก” มีใครกำลังเจอบ้างคะ . ไม่ใช่หนักเพราะมี test case เยอะ มีข้อใหม่ๆ เพิ่มขึ้นทุกวัน แต่มันหนักเพราะ ทุกครั้งที่กลับมาอ่าน เราจะงง และต้องใช้เวลาทำความเข้าใจมากกว่าเดิมคนในทีมต้องมาทำต่อ ก็งง “ตัวแปรนี้มาจากไหนเหรอ เอาไว้ทำอะไร”ส่งให้ Dev ช่วยดูก็งง ให้ Business ช่วยเช็ค ก็งง หรือไม่ก็ แก้ requirement นิดเดียว แต่ Test พังหลายที่รัน local ผ่าน แต่ขึ้น CI แล้วต้องไปลุ้นตลอด . ส่วนใหญ่เรามักจะคิดว่า ก็ Test มันซับซ้อนขึ้น เยอะขึ้น มันก็เป็นเรื่องธรรมดาแต่จริงๆ ปัญหามักไม่ได้อยู่ที่โค้ดของ Automation Test ของเราค่ะหลายครั้งที่พี่กิ่งเจอ ต้นเหตุส่วนหนึ่งมาจาก test data ที่กระจัดกระจายอยู่เต็มไปหมดเพราะเราไม่ได้วางมันไว้ให้ถูกที่ตั้งแต่แรก . ลองนึกภาพตามดูค่ะ

วาง Data ผิดที่ แก้นิดเดียว พังทั้งก้อน Read More »

169 wordpress feature image (6)

เทสอันเดิมเดี๋ยวผ่าน เดี๋ยวไม่ผ่าน ผีหลอกหรือเปล่า

มาคุยเรื่อง Automation Test กันต่ออีกซักหน่อย กับอีกหนึ่งปัญหาที่ทำให้“เมื่อวานยังรันผ่านอยู่เลย ทำไมวันนี้เฟลอีกแล้ว ไม่มีใครแก้อะไรซักนิด” เคยเจอกันมั้ยคะเมื่อวาน pass วันนี้ fail ลอง rerun ดูซักหน่อย pass อีกแล้ว ยังไม่ได้แตะโค้ดสักบรรทัดอยากจะจับ Automation Test ของเรามาถามว่าเกิดอะไรขึ้น ทำไมผีเข้าผีออกทำอะไรตามใจแบบนี้ บอกเลยว่าคุณไม่ได้เจออยู่คนเดียว(ใช่ค่ะ พี่กิ่งก็เคยเจอ กว่าจะหาทางแก้ปัญหาได้ บางทีใช้เวลาเป็นเดือน) และส่วนใหญ่มันไม่ได้เกิดจาก tool ไม่ดี หรือ เราเขียนไม่ดีหรอกค่ะอีกหนึ่งในสาเหตุที่เจอบ่อยๆ คือ วิธีที่เราจัดการกับ test data วันนี้จะพาไปเจาะลึกอีกหนึ่งเรื่องที่มักจะทำให้เจอปัญหาบ่อยๆ ค่ะคือ Static Data กับ Dynamic Data . 🧊 Static Data คืออะไร คือค่าที่เรากำหนดไว้ตายตัวใน test เลย บางทีเราเรียกว่า hardcode ค่ะเช่น บอกไปเลยว่าใช้ username: “test01@test.com”

เทสอันเดิมเดี๋ยวผ่าน เดี๋ยวไม่ผ่าน ผีหลอกหรือเปล่า Read More »

169 wordpress feature image (4)

วิธีเตรียมเทสให้พร้อมก่อนรัน ที่ทำให้ debug ง่ายขึ้น

มีคำถามที่พี่กิ่งได้ยินบ่อยมากตอนบอกให้ใครแตก e2e ยาวๆ ออกเป็น scenario ย่อยๆ คือ “แล้วเราจะรันสเต็ปเดิมซ้ำหลายรอบเหรอ”“แบบนี้เทสก็จะเพิ่มขึ้นเยอะเลย”“จะไม่เสียเวลารันนานเกินไปเหรอ” พี่กิ่งจะมาเล่าสิ่งที่เคยเจอให้ฟังค่ะ . ตอนที่พี่กิ่งเริ่มเขียน automation test ใหม่ๆ ก็เขียนเป็น flow ยาวๆ เหมือนกันค่ะคิดว่าไหนๆ ก็เทสแล้ว ก็ทำให้ครบไปทีเดียวเลย Login -> สร้าง product -> verify -> แก้ไข product -> verify -> ลบทิ้ง รันผ่านก็ดีใจ รันครั้งเดียว ไปใส่ result ว่าผ่านได้หลายข้อเลย แต่พอมันพังขึ้นมา… ก็งงว่ามันพังตรงไหนเสียเวลาไล่หาไปอีกเป็นวัน . รอบสอง “ฉันจะแยก” ทีนี้ก็ทำแบบที่เราคุยกันไปโพสก่อนหน้านี้ค่ะไปแตก test scenario ออกให้ย่อยลงไปอีก เพื่อให้มันเทสแค่อย่างเดียว ตอนนี้การ “แก้ไข product” ก็เลยมี test scenario แยกออกมาเป็นของตัวเองทำให้อ่านง่ายขึ้นมาก

วิธีเตรียมเทสให้พร้อมก่อนรัน ที่ทำให้ debug ง่ายขึ้น Read More »

169 wordpress feature image (1)

Scenario เดียวเช็คทุกอย่าง… แล้วก็พังหมด!!!

ใครเคยเขียน scenario แบบนี้บ้างคะ Scenario: ทดสอบการ checkoutGiven ผู้ใช้ login แล้วWhen เพิ่มสินค้าลงตะกร้าAnd กรอกที่อยู่จัดส่งAnd เลือกวิธีชำระเงินAnd กด confirm orderThen ระบบแสดงหน้า order successAnd ส่ง email ยืนยันAnd ตัดยอดบัญชีWhen ผู้ใช้ดู order historyThen เห็น order history ถูกต้อง . Scenario เดียว เทสมันให้หมดทุกอย่างไหนๆ ก็ทำไปแล้ว ก็เทสให้ครบไปเลย จะได้ไม่เสียเวลา พี่กิ่งเข้าใจความรู้สึกนี้มากๆ เลยค่ะเพราะเป็นคนนึงที่เคยทำแบบนี้มาก่อน! แล้วก็ต้องมาชดใช้กรรม หาวิธีแก้สิ่งที่ตัวเองทำไว้ 😅 เพราะจริงๆ scenario ด้านบน ถือว่าไม่ได้ทำตามหลักของ BDD แล้วค่ะ . ❌ ปัญหาคืออะไร? Scenario ที่ดี ต้องเทสแค่ 1 behavior

Scenario เดียวเช็คทุกอย่าง… แล้วก็พังหมด!!! Read More »

169 wordpress feature image

เขียน Scenario จนครบ แต่ Automation ก็ยังพังอยู่ดี

เขียน Automation Test Scenario เป็น Gherkin ไว้ 40 ข้อลองรันบนเครื่องก็ผ่านหมด ส่งขึ้นไปบน CI/CD ก็ผ่าน ทีมภูมิใจมาก เรามี Automation Test ที่ Test Coverage ดีเยี่ยม ครอบคลุมครบทุก requirement ผ่านไป 2 สัปดาห์ มีการอัพเดต UI เข้ามา 🔴 เทสพังไป 38 ข้อทีมต้องวิ่งวุ่นไปไล่อัพเดตจุดที่หน้า UI เปลี่ยน ปัญหาไม่ได้เกิดเพราะโค้ดพัง แต่เพราะเขียนผิดวิธีมาตั้งแต่แรก . เรื่องนี้เป็นอีกหนึ่งปัญหาที่เจอบ่อยมากๆ ในทีมที่เพิ่งทำ Automation Test ค่ะ วันนี้จะพาทุกคนไปรู้จักกับวิธีเขียน Scenario 2 แบบ คือ Imperative กับ Declarative กันค่ะและถ้าเลือกผิด ชีวิตอาจจะเปลี่ยนโดยไม่รู้ตัว . 📌 Imperative

เขียน Scenario จนครบ แต่ Automation ก็ยังพังอยู่ดี Read More »

169 wordpress feature image (2)

ทำไม Automation Test ที่เขียนถูก ถึงยังเชื่อไม่ได้เสมอไป

👻❌ เคยเจอผีหลอกตอนรัน Automation Test กันมั้ยคะ รันบนเครื่องตัวเองกี่รอบก็ผ่านหมด ผ่านตลอด ผ่านทุกครั้ง ไม่เคยติดปัญหาอะไรแต่พอเอาขึ้นไปรันรวมกับ Regression Test เท่านั้นแหละพังยับ!!! แล้วเราเอามาลองรันบนเครื่องตัวเองหลังจากเห็นมันพังเอ้า ก็ผ่าน สุดท้ายนั่งกุมหัว ไม่รู้จะทำยังไง 🤦‍♀️ แค่นั้นยังไม่พอ พอเป็นแบบนี้บ่อยๆ กลายเป็น Automation Test ที่ไม่ stable และไม่มีใครเชื่อมันซะงั้นสุดท้ายกลับมานั่งเช็ค manual เหมือนเดิม เพราะผล Automation Test มันเชื่อไม่ได้ อวสาน QA ร่างทอง Test ที่รันอยู่ก็ไม่มีใครเชื่อทีมก็ไม่แบ่งเวลาให้เขียน Automation Test เพราะไม่เห็นประโยชน์สุดท้ายก็รัน Manual เหมือนเดิม … ยังค่ะ ยังไม่จบแค่นี้ เราไม่อวสานกันง่ายๆ แบบนี้หรอกนะคะวันนี้พี่กิ่งจะพามาเจาะลึก “หนึ่งปัญหาสำคัญ” ที่ทำให้เกิดเหตุการณ์แบบนี้ได้ค่ะบางทีมันไม่ได้เกิดจากเขียนโค้ดไม่ดี หรือระบบมีบั๊กเยอะอะไรเลยค่ะแต่มันอาจจะเกิดจากปัญหาง่ายๆ จากสิ่งที่เรียกว่า “Test Data” ของเรา ที่มันไม่ independentคือไม่เป็นอิสระต่อกัน

ทำไม Automation Test ที่เขียนถูก ถึงยังเชื่อไม่ได้เสมอไป Read More »

169 wordpress feature image (1)

Gherkin ที่ดี = Automation ที่ไม่พัง

6 วิธีง่ายๆ ที่ทำให้ Test Stable ขึ้นได้ทันที . ไม่ว่าคุณจะเพิ่งเริ่มเขียน Gherkin เพื่อใช้เป็น Acceptance Criteriaหรือ เอาไปใช้เป็น Feature File ใน Automation Test อยู่แล้ว มีสิ่งนึงที่เราทุกคนเจอเหมือนกันค่ะ เขียน Scenario ไปหมดแล้ว Given-When-Then ครบทุกข้อแต่ทีมก็ยังอ่านไม่รู้เรื่อง ไม่มีใครเข้าใจว่าจะเทสอะไรหรือถ้าใช้ใน Automation Test อยู่ ก็พังหมดจนตามแก้แทบไม่ไหว ปัญหาไม่ใช่ว่า Gherkin ไม่ดีแต่อยู่ที่วิธีที่เราเขียนมันต่างหาก วันนี้พี่กิ่งเอา checklist 6 ข้อมาฝากกันค่ะเอาไปทำตามกันได้เลย . 📌 1. บอกว่า “ต้องการอะไร” ไม่ใช่ “ทำยังไง” Gherkin ที่ดี ต้องบอก behavior ค่ะ สิ่งที่ต้องการจะทำคืออะไรไม่ใช่ implementation ว่าทำยังไง ขั้นตอนเป็นยังไง เรามาลองดูตัวอย่างกันค่ะ ❌

Gherkin ที่ดี = Automation ที่ไม่พัง Read More »

169 wordpress feature image (31)

BDD ไม่ใช่แค่ Cucumber – การเข้าใจผิดที่อาจทำให้ทีมพัง

ทีมใครใช้ BDD กันอยู่บ้างคะ ตอนที่พี่กิ่งได้ยินคำว่า BDD ครั้งแรกมันมาคู่กับคำว่า Cucumber ค่ะ 🥒 แล้วทุกคนก็บอกว่าเราจะเริ่มเขียน Test และ Acceptance Criteria แบบนี้กันนะทุกคนก็ไปเริ่มทำตาม รวมทั้งพี่กิ่งด้วย ทั้งที่ตอนนั้นยังไม่รู้เลยว่า BDD คืออะไรรู้แค่ว่า Cucumber มันเขียน Given-When-Then แล้วเราก็เริ่ม ทำ BDD กัน จนผ่านมาซักพักนั่นแหละค่ะถึงได้รู้ว่าเราไม่ได้เข้าใจอะไรมันจริงๆ เลยสักนิด 😅 . 🤔 Cucumber ≠ BDD นี่คือความเข้าใจผิดที่เจอบ่อยที่สุดในวงการ QA เลยค่ะ BDD ไม่ใช่ CucumberBDD ไม่ใช่ GherkinBDD ไม่ใช่ Given-When-Then ไม่ใช่อะไรซักอย่าง แล้วมันคืออะไรกันแน่ จริงๆ แล้วทุกอย่างที่พูดไปมันคือคนละเรื่องกันเลยค่ะ . 💡 BDD คือ วิธีคิดและวิธีทำงานของทีม Behavior-Driven Development

BDD ไม่ใช่แค่ Cucumber – การเข้าใจผิดที่อาจทำให้ทีมพัง Read More »

169 wordpress feature image (28)

จงเรียนรู้ทุกอย่างแล้วลืมมันไปซะ!

💡 เลิกกางตำราเขียน Test Case แล้ว EP/BVA จะมีค่าขึ้นมาทันที จาก Test Design Workshop ครั้งที่แล้ว มีคำถามนึงที่คนถามเข้ามาเยอะก็คือ EP BVA ไอ้ตัวย่ออะไรพวกนี้เนี่ย มันคืออะไร ซึ่งวันนั้นพี่กิ่งบอกไว้ว่า ยังไม่ต้องสนใจ เพราะจริงๆแล้วเราไม่ควรเริ่มต้นจากสิ่งนี้ค่ะ  วันนี้เลยจะอยากมาขยายความเพิ่มเติมให้อีกนิด เผื่อว่าจะช่วยตอบคำถามของหลายๆ คนในวันนั้นได้นะคะ คิดว่าหลายๆ คนน่าจะเจอปัญหาคล้ายกัน ที่ตอนเรียนเราก็เข้าใจดีอยู่หรอกว่ามันคืออะไร แต่พอเจองานจริง เจอ Requirement จริง ก็ไม่รู้จะเอาไปใช้ยังไง หรือบางคนเริ่มมาก็กางตำรา ใส่เทคนิคเข้าไปรัวๆ เสร็จแล้วก็ไม่มั่นใจอยู่ดีว่า Test Case ครบหรือไม่ครบกันแน่ อย่างที่พี่กิ่งย้ำบ่อยๆ ค่ะ สิ่งที่สำคัญที่สุดคือ “วิธีที่เราเริ่มต้นคิด” ต่างหาก ที่จะบอกว่าเราเป็น QA ทั่วไป หรือ เป็น QA ร่างทอง ถึงตรงนี้ถ้าใครยังไม่รู้จักว่า EP BVA คืออะไร สามารถเข้าไปดูในโพสเก่าได้นะคะ ในนี้จะมีอธิบายพื้นฐานเอาไว้ เดี๋ยวเรามาลองตัวอย่าง Requirement

จงเรียนรู้ทุกอย่างแล้วลืมมันไปซะ! Read More »