Screen Shot 2558-05-21 at 11.33.07 AM
คำถาม

Automated test มันควรเขียนด้วยภาษาเดียวกับที่ใช้พัฒนาระบบหรือไม่ ?

เป็นคำถามยอดนิยมของคนที่จะเขียน Automated test
ซึ่งสามารถตอบได้ดังนี้

ถ้าเป็นคำตอบในอดีตจะตอบว่า ใช่แล้ว

ควรที่จะเขียน automated test ด้วยภาษาเดียวกับที่ใช้พัฒนาระบบงาน
เนื่องจากมันจะช่วยเหลือทีมพัฒนาไม่ต้องไปศึกษาภาษาอื่นๆ
เนื่องจากทีมพัฒนาไม่ต้องเปลี่ยนภาษาไปมา
เนื่องจาก code ของการพัฒนา และ แก้ไขอยู่ที่เดียวกัน สะดวกดี
เนื่องจากง่ายต่อการทดสอบทั้ง unit test, integration test
เนื่องจากทีมพัฒนาสามารถช่วยเหลือได้ เมื่อเกิดปัญหาขึ้นมา
เนื่องจาก …

แต่ คำตอบที่ดีกว่าในปัจจุบันน่าจะเป็น แล้วแต่ทีมมากกว่า !!!

เนื่องจากในปัจจุบันนั้น มี Automated test framework
ที่พัฒนาด้วยภาษาอื่นๆ และมันง่ายต่อการศึกษา และ ใช้งาน
และไม่จำเป็นต้องไปผูกกับทีมพัฒนาอย่างเดียว
ไม่เช่นนั้นก็จะกลายเป็นคอขวดอีก

ลองคิดดูสิว่า Automated test ประกอบไปด้วย

  • Unit test
  • Integration test
  • Functional/Acceptance test
  • UI test

ในส่วนของ Unit test และ Integration test นั้น
ควรที่จะพัฒนาภาษาเดียวกับที่ใช้พัฒนาระบบงาน
เนื่องจากมันคือ ความรับผิดชอบหลักของทีมพัฒนา
หรือคุณยังไม่เขียน test กันอีกนะ ?

ViciousCircleofTestAutomation

แต่ในส่วนของ Functional/Acceptance test นั้น
สามารถใช้ภาษาอื่นๆ ได้นะ แต่ต้องพิจารณาดูว่า
ภาษานั้นๆ มันเหมาะสม และ ให้คุณค่ามากน้อยกว่าภาษาเดียวกันเพียงใด

ตัวอย่างเช่น

บางบริษัททำการแยกทีม QA/Tester ออกมาเลย
ถ้าภาษาที่ใช้พัฒนา Automated test ต่างจากภาษาที่ใช้พัฒนาระบบแล้ว
มันจะทำให้ทีม QA/Tester ยากต่อชีวิต
ดังนั้น ส่วนใหญ่มักใช้ภาษาเดียวกันซะเลย
เพื่อให้ share ความรู้และ library กันได้ง่ายๆ

แต่การหาคน หรือ จ้างคนที่มีความรู้ความสามารถทั้ง
เข้าใจ business model
เข้าใจการทดสอบระบบ
รวมทั้งต้องมีความรู้ technical skill ในภาษาต่างๆ เช่น Java, PHP, Python, Ruby และ C เป็นต้น
มันหายากมากๆ ไม่เช่นนั้นก็มีค่าตัวที่สูงมากมาย !!
ปล. คนในกลุ่มนี้เข้าอยากเขียน code กันนักหรอ !!!

คำถาม
ดังนั้น หาวิธีการอะไร ที่มันง่ายกว่าเดิมไหมนะ ?
คำตอบ
ลองใช้ภาษาอื่นๆ บ้างสิ
เพื่อเป็นการทำให้ทั้ง QA/Tester และ ทีมพัฒนา
มีมุมมองใหม่ๆ ในการพัฒนา Automated test
ที่สำคัญ ภาษาที่ใช้มันควรจะ

  • เป็นภาษาที่เข้าใจได้ง่าย
  • เป็นภาษาที่เรียนรู้ได้ง่าย
  • คนทั่วไปอ่านเข้าใจได้
  • สามารถทำงานแบบอัตโนมัติได้ง่าย

ตัวอย่างเช่น

แต่อย่างไรก็ตาม มันก็ขึ้นอยู่กับ

โครงสร้างขององค์กร และ ทีม
วัฒนธรรมขององค์กร และ ทีม
รวมไปถึงความสามารถของคน

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

Just do it นะครับ เพื่อนำมาเรียนรู้ และ ปรับปรุงต่อไป ..

Screen Shot 2558-05-21 at 11.26.38 AM