Screen Shot 2558-03-20 at 9.26.23 AM
วันอังคารที่ 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 ดังรูป
Screen Shot 2558-03-20 at 11.38.49 AM

รวมทั้งความสามารถอื่นๆ เช่น การทำงานแบบ Asynchronous เป็นต้น

ยังไม่พอนะต้องมีความสามารถเรื่อง การ Configuration ระบบเพื่อให้ทดสอบได้ง่ายด้วย

คำถามที่เจอประจำ

เราจะสร้าง Automated test สำหรับ CAPTCHA อย่างไร ?

captcha

คำตอบ ?
สิ่งที่ต้องตอบให้ได้คือ

  • เราจะทดสอบไปเพื่ออะไร ?
  • มันมีประโยชน์อะไร ?
  • คุ้มไหม ?
  • คุณคิดว่าระบบ CAPTCHA จะทำงานผิดพลาดหรือไม่ ?

ถ้าคุณบอกว่า ยังไงก็ต้องทดสอบ !!
ผมมีวิธีการที่โง่สุดๆ ให้คือ
ทำการ configuration ให้ระบบไม่ต้องตรวจสอบ CAPTCHA ไงล่ะ
หรือกำหนดค่าของ CAPTCHA สำหรับการทดสอบไปเลยสิ

แต่มีบางคนบอกว่า มันไม่ใช่นะ
เราต้องสร้างระบบให้มันผ่านข้อมูลจาก CAPTCHA เลย
เราต้องเขียนระบบโดยใช้ความรู้เรื่อง Image Processing มาสร้าง
คำถามคือ คุณจะทำไปเพื่ออะไร ? และสิ่งที่ทำมันคุ้มหรือไม่ ?

3. เน้นไปที่ Communication

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

มีคำพูดที่น่าสนใจ คือ

The best testing happens before a single line of code is written

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

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

Screen Shot 2558-03-20 at 12.07.43 PM

แล้วเจอกันในงานวันอังคารที่ Software Park ครับ