SDET(Software Development Engineer in Test) คืออะไร?

     หลายคนคงคุ้นกับคำว่า Test, QA, QA Automation Engineer แต่อาจจะไม่คุ้นกับคำว่า SDET(Software Development Engineer in Test) ซึ่งปัจจุบันตำแหน่งงานเปิดใหม่กำลังมองหา SEDT มากขึ้นซึ่ง SDET นั้นก็คือ Developer ที่สามารถเขียนโปรแกรมได้และสามารถทำ Test รวมถึงเขียน Automation Tests ได้ด้วย ตำแหน่งงาน SEDT ถูกนิยามจาก Microsoft จากนั้นถูกใช้อย่างแพร่หลายในปัจจุบัน
     ปัจจุบัน SDET ถูกพูดถึงและจ้างงานเพิ่มมากขึ้นเช่น Google และ Amazon ในอนาคตตำแหน่งนี้มีแนวโน้มจะมาแทนที่ Manual Test และ QA Automation Engineer


SDET ทำอะไรบ้าง?

     การทำงานของ SDET นั้นจะต่างจาก Automated Test หรือ Manual Test เพราะ 2 ตำแหน่งนี้จะเน้นการทำสอบหลังจาก Software เสร็จแล้วแต่ SDET จะพัฒนาร่วมกับ Developer ในทุกๆ Phase การทำงานของ SDLC สิ่งที่ SDET จะทำในการพัฒนาซอฟต์แวร์ได้แก่

1. เลือก Automated Framework: SDET จะวิเคราะห์ซอฟต์แวร์ว่าเป็นลักษณะใดเช่น Web Application, Mobile Application หรือ API เป็นต้น ซึ่งประเภทของ Application จะส่งผลในการเลือก Tools ที่จะนำมาใช้ นอกจาก Automated Tools แล้ว SDET ยังต้องเลือก Tools ที่นำมาใช้ทดสอบแบบ Non-Functional Test อีกด้วย
2. สร้าง Test Scripts: ในกรณีที่ทีมมี Manual Test เพียงอย่างเดียว SDET ก็เข้าไปช่วยสร้าง Test Scripts ขึ้นมาเพื่อให้สามารถทำ Automated ได้ หรือหากมี Feature ใหม่ๆเพิ่มขึ้นมาก็จะเข้าไปสร้าง Test Scripts ด้วยเช่นกัน
3. Test Data Management: สร้าง Data ที่ใกล้เคียงกับการใช้งานจริงๆ โดยทั่วไปแล้วข้อมูลที่นำมาทดสอบระบบมักเป็นข้อมูลที่ไม่ใช่ข้อมูลที่ลูกค้าใช้งานจริง แต่ SDET จะให้ความสำคัญกับ Data ว่า ข้อมูลที่นำมาทดสอบควรเป็นข้อมูลที่ใกล้เคียงกับข้อมูลจริง โดยอาจจะต้องติดต่อประสานงานกับหลายฝ่ายเพื่อให้ได้ข้อมูลมา
4. Set Infrastructure: จะ Set up Infrastructure โดยจะนำ Automated Build เชื่อมต่อกับการ Deploy ของซอฟต์แวร์ปกติเพื่อทำให้เป็นระบบอัตโนมัติมากที่สุด(CI/CD)
5. Repost: จัดทำรายงานการทดสอบผลที่ผ่าน ไม่ผ่าน ต่างๆ
6. Exploratory Testing: เข้าไปทดสอบระบบแบบ Manual Test ว่าสามารถใช้งานจริงได้หรือไม่ เนื่องจากบางครั้งเราไม่สามารถทำให้ทุกอย่าง Automated ได้ 100% ยังคงมีบางส่วนที่เราต้องใช้คนเข้าไปทดสอบเพื่อดูผลลัพธ์
7. Coaching: SDET สามารถสอนงานเพื่อส่งมอบตัว Automated หรือ Framework ที่สร้างให้ เพื่อให้ทีมสามารถนำไปใช้งานต่อได้

ข้อแตกต่างระหว่าง SDET กับ QA Automation


Skills ที่ SDET ควรมี

  • Programming: SDET ต้องมีความรู้เกี่ยวกับ Code เป็นอย่างดี เพราะจะต้องเขียนและแก้ไข Code ด้วยตัวเอง
  • Communication: SDET ต้องสื่อสารกับ Stakeholders, Products, Developers และ Manual Testers เพื่อนำข้อมูลมาทำงานให้เกิดประสิทธิ์ภาพสูงสุด หากเทียบกันตำแหน่งอื่นๆในทีม SDET ถือเป็นเป็นตำแหน่งที่ต้องสื่อสารกับคนรอบๆมากที่สุดเลย
  • Multitasker: เนื่องจาก SDET เป็นลูกผสมระหว่าง DEV และ QA ดังนั้นในหลายๆงาน SDET ต้องมีส่วนร่วมในการพัฒนา ทำให้อาจจะต้องทำหลายๆงานพร้อมกันใน Sprint นั้นๆ เช่น 
    • เข้าร่วมประชุมกับ Stakeholder เพื่อทำความเข้าใจและทราบความต้องการของลูกค้า 
    • สร้าง Framework หรือ QA Tools เพื่อนำมาใช้ใน Project ซึ่งส่วนใหญ่ต้องคุยกับ QA
    • นำเสนอหรือตรวจสอบ Bug ต่างๆที่เกิดจาก Software
    • เข้า Design ของ Developer เพื่อนำแนวคิดมาวางแผนการทดสอบ
    • บางครั้งอาจจะต้องทำ Unit Test ร่วมกับ Developer
  • Creativity: หลายครั้งในการพัฒนาซอฟต์แวร์อาจจะมี Feature ใหม่ๆหรือปัญหาใหม่ๆหรือ Tools ใหม่ๆเข้ามา SDET เองควรเป็นคนนำเสนอแนวคิดใหม่ๆเพื่อให้แน่ใจว่าปัญหาต่างๆจะถูกแก้ไข
  • Risk management: เป็นคนที่สามารถจัดการความเสี่ยงต่างๆได้ดี สามารถบอกทีมได้ว่าจุดไหนที่อาจจะทำให้ซอฟต์แวร์เกิดความเสี่ยงได้ สามารถสื่อสารและให้ทีมเข้าใจถึงความเสี่ยงนั้นได้

Ten-Minute Build

     หากซอฟต์แวร์มีการเปลี่ยนแปลงเกิดขึ้น SDET จะมีการ Run Automated Test โดยใช้เวลาประมาณ 10 นาทีเป็นตัววัดว่า ซอฟต์แวร์ที่เปลี่ยนนั้นมีผลกระทบกับระบบหรือไม่

Reference:
- https://www.youtube.com/watch?v=W8yTI_CITFg

ป้ายกำกับ

แสดงเพิ่มเติม

บทความยอดนิยม

Software Development Life Cycle (SDLC) คืออะไร ทำไมจำเป็นต่อการพัฒนาซอฟต์แวร์

ม.ปลายอยากเข้าสายคอม วิทยาการคอม วิศวกรรมคอม เตรียมตัวอย่างไร ต้องมีพื้นฐานอะไรบ้าง

Automation testing หรือ การทดสอบซอฟต์แวร์อัตโนมัติ คืออะไร ทำไมถึงสำคัญต่อการทดสอบซอฟต์แวร์

วิธีเก็บ วิเคราะห์ รวบรวม requirement อย่างไรให้มีประสิทธิภาพ

Performance Test คือ อะไร วัดประสิทธิภาพของระบบ ล่มไม่ล่ม จะรู้ได้อย่างไร

8 สิ่งที่ AI จะมาเปลี่ยนโลกในอนาคต