มีคำถามเกี่ยวกับการมาเป็น Test Automation Engineer ว่า
ควรมี technical skill อะไรบ้าง ?
เพื่อช่วยให้การทดสอบดีขึ้น
จากสิ่งที่ทำและเจอมา สามารถสรุปคร่าว ๆ ได้ดังนี้

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

มาเริ่มกันเลย

เรื่องแรก programming skill ให้เลือกสักภาษาก่อนเพื่อศึกษา

เนื่องจากการทำ automation test นั้นจำเป็นต้องเขียน script หรือ code เสมอ
แต่เป็นการเขียนในเชิงการทดสอบ ไม่ใช่การพัฒนาระบบงาน
แต่เรื่องนี้เป็นกำแพงอันยิ่งใหญ่ สำหรับ QA/Tester ที่ทำ manual มาตลอด หรือ non-technical
จึงต้องอาศัยวิธีคิด ความพยายามสูงกว่าคนอื่น ๆ

แต่ส่วนใหญ่มักจะหนีไปใช้เครื่องมือพวก

  • AI หรือ GenAI
  • Record and playback tool
  • Scriptless/No code/Low Code tool

ซึ่งมันคือการหนีนั่นเอง ดังนั้นจะไม่ได้มีความรู้ด้าน programming มากนัก
ก็จะไม่ได้สนใจเรื่องนี้เท่าไร เน้น tool ล้วน ๆ
จะส่งผลดีในช่วงแรก แต่ในการดูแลระยะยาวจะวุ่นวายหรือลำบากมาก ๆ
เช่นเกิด flaky test ขึ้นมาอีก
สุดท้ายจะบอกว่า ทดสอบแบบเดิมดีกว่า !!

แต่แน่นอนว่า มันก็คือ หนึ่งในการเรียนรู้เช่นกัน

เรื่องที่สองคือ การใช้งาน Version Control เช่น Git

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

แนะนำให้เริ่มที่ command line tool ก่อนนะครับ
อย่าเพิ่มเริ่มด้วย GUI tool
ยากหน่อยในการเริ่มต้น แต่พื้นฐานสำคัญมาก ๆ

อีกอย่างเรื่องของ การใช้ command line tool ต่าง ๆ ก็ฝึกเอาไว้
ถ้าเขียน shell script ได้ก็จะดียิ่งขึ้น

อีกอย่างเมื่อ test script มีการเปลี่ยน ก็จะเป็นต้องทำการ execute test ทั้งหมดทุก ๆ ครั้งอีกด้วย
ตรงนนี้ช่วยให้สามารถเพิ่มการทดสอบแบบอัตโนมัติ
ใน pipeline ของ CI/CD process ได้ง่ายอีกด้วย

ลด ละ เลิก การส่ง test script ผ่าน email หรือ chat tool กันได้แล้ว !!

เรื่องที่สาม เรียนรู้เรื่อง format file ต่าง ๆ ที่จำเป็นต่อการใช้งาน

ยกตัวอย่างเช่นส่วนใหญ่ต้องรู้ และ เขียนพวก JSON, YAML ได้
ก่อนนี้จะมีพวก XML, CSV เป็นต้น

หรือถ้าต้องการ validate โครงสร้างข้อมูลก็ต้องรู้ เช่น

  • JSON ต้องรู้ JSON Schema
  • XML ต้องรู้ XML Schema

เรื่องที่สี่ จะทดสอบระบบอะไรก็ต้องรู้เรื่องนั้น ๆ

ยกตัวอย่างเช่น ทดสอบ web application ผ่าน web browser
ก็ต้องมีความรู้เรื่องพื้นฐานของ web ก่อนด้วย เช่น

  • HTML/CSS/JavaScript พื้นฐาน
  • การเข้ามถึง element ต่าง ๆ เช่น id/name/xpath/css seclector
  • ใช้ web browser เช่น Google Chrome ก็ต้องเข้าใจ หรือใช้งาน DevTool ได้อย่างดีเช่นกัน

พวก Database ทั้ง SQL และ NoSQL
ถ้ามีความรู้จะช่วยให้เราเข้าใจโครงสร้างระบบมากยิ่งขึ้น

เรื่องที่ห้า ชุดเครื่องมือต่าง ๆ ในการทดสอบของแต่ละแบบ

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

  • UI test ของ web app
  • UI test ของ mobile app
  • API test ของ REST API, GraphQL
  • Service component test
  • Contract test
  • …..

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

เรื่องที่หก เข้าใจเรื่องของ Architecture ของระบบงาน หรือ Software design บ้าง

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

ดังนั้นอยากให้กลับมาดูเป็น Gray box หรือ white box testing มากยิ่งขึ้น
คือการเข้ามาดู หรือ เข้าใจโครงสร้าง หรือ architecture ของระบบงานให้มากขึ้น
เช่นระบบงานมี Frontend, Backend, Database, Caching, API gateway, Load balancer
จะช่วยทำให้เข้าใจมากขึ้นมาว่า
ควรจะมี test strategy อะไรบ้างที่เหมาะสม
เพื่อค่อย ๆ ทดสอบในแต่ละส่วนว่าถูกต้อง
ส่วนไหนต้องจำลอง (Test double) แบบไหน อย่างไร เครื่องมืออะไร
ส่วนไหนที่มีปัญหา หรือ คอขวด
อย่างเช่น Load balancer จะทดสอบอย่างไร ?
แนวทางในการเตรียม data test ให้เหมาะสม หรือ ไปจนถึงการ generate data test อีกด้วย
จากนั้นค่อยมาทำ End-to-end test ในขั้นตอนสุดท้าย !!

แต่เหนือสิ่งอื่นใด คือการฝึก ฝึก ฝึก ครับ
ลงมือศึกษา ลงมือทำ