วันอังคารที่ 24 มีนาคม 2558 จะต้องไปแบ่งปันเรื่อง Automated Testing
ในงาน Thailand SPIN: Automated Testing มามะ มา “โชว์ของ” กัน ที่ Software Park Thailand
ดังนั้น จึงคิดว่าจะแบ่งปันเรื่อง คำแนะนำเกี่ยวกับ Automated Testing ดีกว่า
เพื่อทำให้เห็นแนวทางเพื่อนำไปเรียนรู้ และ ใช้งานต่อไป
ในการทำ Automated Testing นั้นมี 3 ส่วนหลักที่ต้องคิด
- Business values
- Technical skills
- Communication/Collaboration
โดยถ้าคุณขาดอย่างใดอย่างหนึ่งไป
มันจะส่งต่อผลที่คุณได้รับจาก Automated test อย่างมากมาย
มาดูกันว่าแต่ละข้อมันเป็นอย่างไร
1. เน้นที่ Business values
นั่นคือการเน้นไปที่ flow การทำงานหลักของระบบของคุณ
อะไรที่มันสำคัญๆ ก็ทำให้มันทดสอบแบบอัตโนมัติซะ
เช่น
- ถ้าระบบ e-commerce ในส่วนของการซื้อขายคือหัวใจหลัก ดังนั้นก็สร้างมันขึ้นมาซะ
- ถ้าระบบการค้นหาข้อมูล ในส่วนการค้นหาคือหัวใจหลัก ดังนั้นก็สร้างมันขึ้นมาซะ
ถ้าอะไรที่ไม่สำคัญ ก็อย่างเพิ่งไปทำ หรือ สนใจมากนัก
แต่ทำในสิ่งที่จำเป็นก่อนครับ
เนื่องจากในการสร้าง Automated test นั้น ต้องการทั้ง
- เวลา
- resource
- คน
ยังไม่พอ คุณยังต้องเลือกเครื่องมือที่เหมาะสมกับ ทีม และ ระบบ
เน้นย้ำว่า เหมาะสมกับทีมนะครับ
ไม่ใช่เอาเครื่องมือมาเป็นตัวตั้งในการสร้างนะ !!!
ไม่เช่นนั้น ระบบการทดสอบมันจะออกมาแย่ว่าที่คุณคิด
และคุณต้องตอบคำถามเหล่านี้ให้ได้อีกด้วย
- เป้าหมายของการทดสอบแบบอัตโนมัติคืออะไร ?
- ความสามารถของทีมเป็นอย่างไร ?
- ใครเป็นคนสร้าง ?
- ใครเป็นคนดูแล ?
- ใครนำไปใช้งาน ?
2. เน้นที่ Technical skills
เป็นอีกส่วนที่สำคัญมาก นั่นคือ ทีมก็ต้องมีความรู้ความสามารถเช่นกัน
ทั้งการเรียนรู้ระบบงาน ถ้าไม่เคยใช้งานระบบ หรือ ทดสอบแบบ manual แล้ว
ก็ไม่สามารถสร้างการทดสอบแบบอัตโนมัติได้หรอกนะ
ถึงจะทำได้ก็ออกมาไม่ดี
ตัวอย่างในระบบ web application
คุณจะต้องรู้เกี่ยวกับ locator ต่างๆ ในหน้า web นะ
เช่นการ inspect element ดังรูป
รวมทั้งความสามารถอื่นๆ เช่น การทำงานแบบ Asynchronous เป็นต้น
ยังไม่พอนะต้องมีความสามารถเรื่อง การ Configuration ระบบเพื่อให้ทดสอบได้ง่ายด้วย
คำถามที่เจอประจำ
เราจะสร้าง Automated test สำหรับ CAPTCHA อย่างไร ?
คำตอบ ?
สิ่งที่ต้องตอบให้ได้คือ
- เราจะทดสอบไปเพื่ออะไร ?
- มันมีประโยชน์อะไร ?
- คุ้มไหม ?
- คุณคิดว่าระบบ CAPTCHA จะทำงานผิดพลาดหรือไม่ ?
ถ้าคุณบอกว่า ยังไงก็ต้องทดสอบ !!
ผมมีวิธีการที่โง่สุดๆ ให้คือ
ทำการ configuration ให้ระบบไม่ต้องตรวจสอบ CAPTCHA ไงล่ะ
หรือกำหนดค่าของ CAPTCHA สำหรับการทดสอบไปเลยสิ
แต่มีบางคนบอกว่า มันไม่ใช่นะ
เราต้องสร้างระบบให้มันผ่านข้อมูลจาก CAPTCHA เลย
เราต้องเขียนระบบโดยใช้ความรู้เรื่อง Image Processing มาสร้าง
คำถามคือ คุณจะทำไปเพื่ออะไร ? และสิ่งที่ทำมันคุ้มหรือไม่ ?
3. เน้นไปที่ Communication
การพูดคุยเป็นสิ่งที่สำคัญมากๆๆๆ ของการสร้างทุกๆ อย่าง
โดยแต่ละคนที่เกี่ยวข้อง ควรที่จะพูดคุย และ ทำงานร่วมกันอยู่อย่างสม่ำเสมอ
เพื่อตกลงในสิ่งที่กำลังจะทำ รวมทั้งพร้อมรับต่อการเปลี่ยนแปลงด้วย
ดังนั้น ควรพูดคุยกันต้องแต่ก่อนการสร้างเลยนะ
ไม่ใช่มาพูดคุยเมื่อเกิดปัญหาเท่านั้น
มีคำพูดที่น่าสนใจ คือ
The best testing happens before a single line of code is written
เมื่อเราพูดคุย และ ทำงานร่วมกันอย่างสม่ำเสมอเล้ว
สิ่งที่เราจะได้รับกลับมาคือ Feedback ที่รวดเร็ว
มันทำให้เราสามารถรู้ตัวเราเองอยู่ตลอดเวลา
เพื่อนำมันมาปรับปรุงให้ดีขึ้นกว่าเดิม
ดังนั้น การทดสอบมันคือ หน้าที่ความรับผิดชอบของทุกๆ คนนะครับ
ผิดเราผิดร่วมกัน แล้วช่วยกันแก้ไขให้มันถูกต้อง
ถูกเราถูกร่วมกัน แล้วช่วยกันทำให้มันดียิ่งขึ้นไป
แล้วเจอกันในงานวันอังคารที่ Software Park ครับ