ผู้ทดสอบต้องเขียนโค้ดหรือไม่
คำถามที่พบบ่อยมากว่าซอฟต์แวร์ การทดสอบ ผู้ปรารถนามีคือ... ผู้ทดสอบต้องเขียนโค้ดมั้ย??
ก่อนที่เราจะตอบคำถามนี้ จำเป็นต้องมีความเข้าใจอย่างถ่องแท้เกี่ยวกับบทบาทการทดสอบซอฟต์แวร์ต่างๆ
Software QA โดยทั่วไปจะแบ่งออกเป็น 2 ประเภท คือ
- นักวิเคราะห์คุณภาพ: QA จะตรวจสอบการทำงานและความสมบูรณ์ของการทดสอบ QA จะตรวจสอบซอฟต์แวร์หลังจากขั้นตอนการพัฒนาเท่านั้น บทบาท QA ไม่ใช่ด้านเทคนิคเหมือนกับนักพัฒนาและอาจไม่จำเป็นต้องเขียนโค้ด
- SDET (วิศวกรออกแบบซอฟต์แวร์ในการทดสอบ): ในขณะที่ SDET เป็นผู้เข้าใจการทำงานภายในของผลิตภัณฑ์ พวกเขาเข้าใจแนวคิดเกี่ยวกับฐานข้อมูล ภาษาการเขียนโปรแกรม ฯลฯ และยังมีส่วนร่วมในการออกแบบผลิตภัณฑ์ การออกแบบข้อมูล และอินเทอร์เฟซผู้ใช้ SDET ต้องทำงานในช่วงการพัฒนาและต้องมีความรู้ในการเขียนโค้ด ดังนั้นบทบาทของ SDET จึงมีความท้าทายมากกว่า และเกี่ยวข้องกับงานของทั้งนักพัฒนาและผู้ทดสอบ ผู้ทดสอบระบบอัตโนมัติ (ผู้ที่ใช้เครื่องมือเช่น คิวทีพี, Selenium) ยังสามารถจัดประเภทเป็น SDET ได้
ดังนั้นตามบทบาทของผู้ทดสอบ จึงสามารถระบุได้ว่าผู้ทดสอบควรต้องมีความรู้ด้านการเขียนโค้ดหรือไม่ ให้ตอบคำถามเพิ่มเติมสองสามข้อที่เกี่ยวข้องกับเรื่องนี้
เราจะเห็นสิ่งต่าง ๆ ต่อไปนี้ในระหว่างการสอนนี้
- ทักษะใดบ้างที่จำเป็นในการเป็นผู้ทดสอบที่ดี?
- ผู้ทดสอบคนไหนควรรู้?
- จำเป็นต้องมีความรู้ด้านการเขียนโค้ดมากน้อยเพียงใดจึงจะสามารถเป็นผู้ทดสอบที่ดีได้?
คุณสมบัติของผู้ทดสอบที่ดี
วิธีการทดสอบซอฟต์แวร์จะแตกต่างกันไปตามความต้องการและข้อกำหนดของผลิตภัณฑ์ซอฟต์แวร์ QA หรือผู้ทดสอบซอฟต์แวร์ที่ดีมีบทบาทสำคัญในกระบวนการทดสอบให้เสร็จสิ้น
คุณลักษณะของผู้ทดสอบที่ดีคือ
- ความรู้โดเมนที่ดี
- มีความคิดเชิงตรรกะที่ดีและ
- มีความรู้ทักษะการเขียนโปรแกรมเป็นอย่างดี
ผู้ทดสอบต้องใช้ความรู้การเขียนโค้ดมากน้อยเพียงใด
การเขียนโค้ดและการดีบักเป็นหน้าที่ของนักพัฒนา
แล้วคำถามก็เกิดขึ้น เหตุใดความรู้ด้านการเขียนโค้ดจึงมีความจำเป็นสำหรับผู้ทดสอบ?
มาดูเหตุผลบางประการว่าเหตุใดการเรียนรู้การเขียนโค้ดจึงมีความจำเป็นสำหรับนักทดสอบ
การทดสอบซอฟต์แวร์โดยพื้นฐานแล้วเกี่ยวข้องกับสองวิธี การทดสอบด้วยตนเอง และ การทดสอบระบบอัตโนมัติในระดับขั้นสูง การทดสอบสามารถจำแนกได้เป็นการทดสอบแบบกล่องขาว กล่องดำ หรือกล่องเทา เทคนิคการทดสอบที่แตกต่างกันนั้นต้องใช้ทักษะของผู้ทดสอบที่แตกต่างกัน
- ขณะทำการทดสอบแบบ Black box ผู้ทดสอบไม่จำเป็นต้องมีความรู้ด้านการเขียนโค้ด ผู้ทดสอบเพียงทดสอบซอฟต์แวร์โดยป้อนข้อมูล จากนั้นจึงตรวจสอบผลลัพธ์
- การทดสอบแบบ White Box หรือการทดสอบตามโค้ดต้องอาศัยความรู้เกี่ยวกับโค้ด การรู้แนวคิดการเขียนโปรแกรมต่างๆ เช่น C, C#, C++, แนวคิด RDBMSฯลฯ อาจเป็นประโยชน์
- ผู้ทดสอบต้องมีความรู้ด้านการเขียนโค้ดที่ดีเมื่อต้องทดสอบอัตโนมัติหรือทดสอบกล่องสีขาว เนื่องจากการทดสอบอัตโนมัติเกี่ยวข้องกับการครอบคลุมคำสั่ง การครอบคลุมโค้ด ความซับซ้อนของวงจรฯลฯ แนวคิดทั้งหมดเหล่านี้จำเป็นต้องมีความรู้ที่ดีเกี่ยวกับทักษะการเขียนโปรแกรมและฐานข้อมูล
- SQL (Structured Query Language)- บางครั้งการทดสอบจำเป็นต้องมีการตรวจสอบฐานข้อมูล ดังนั้นผู้ทดสอบจึงต้องมีความรู้พื้นฐานเกี่ยวกับ SQL คำสั่งเช่น –'select', 'create', 'update' และอื่นๆ
- SQL – การฉีด “การแทรก SQL” เป็นหนึ่งในเทคนิคที่ใช้ในการแฮ็กฐานข้อมูลโดยการใส่คำสั่งที่ไม่ต้องการ ความรู้ดีๆ เกี่ยวกับ Javaต้นฉบับ และ SQL คำสั่งมีประโยชน์ในการป้องกันภัยคุกคามความปลอดภัยของซอฟต์แวร์ดังกล่าว
- การทดสอบแบบ Agile- ใน การทดสอบที่คล่องตัว ทีมงานทั้งหมดมีหน้าที่รับผิดชอบต่อคุณภาพของซอฟต์แวร์ ตลอดกระบวนการที่คล่องตัว ผู้ทดสอบจะทำงานร่วมกับโปรแกรมเมอร์ตั้งแต่หนึ่งคนขึ้นไปเพื่อเขียนการทดสอบ ดังนั้นในการสร้างการทดสอบแบบอัตโนมัติ ผู้ทดสอบจึงจำเป็นต้องทราบโค้ด
เคล็ดลับสำคัญบางประการสำหรับนักวิเคราะห์ซอฟต์แวร์ QA
- ความรู้เกี่ยวกับการทดสอบด้วยตนเอง ภาษาสคริปต์ เช่น Javaต้นฉบับฯลฯ จะเพิ่มเครดิตให้กับทักษะการทดสอบของคุณ
- ในฐานะผู้ทดสอบ คุณควรสร้างความรู้พื้นฐานเกี่ยวกับภาษาการเขียนโปรแกรม เช่น Java, วีบีสคริปต์ ไม่จำเป็นต้องมี แต่จำเป็น ความรู้เกี่ยวกับแนวคิด SQL หรือแนวคิด DBMS ถือเป็นแนวทางปฏิบัติที่ดีสำหรับคุณ
นอกจากนี้ ยังมีเคล็ดลับทั่วไปบางประการที่สามารถช่วยนักวิเคราะห์ QA ของซอฟต์แวร์ได้
- ทักษะการสื่อสาร
- ความคิดเชิงวิเคราะห์
- ความถนัด
การเรียนรู้การเขียนโค้ดในการทดสอบซอฟต์แวร์นั้นมีประโยชน์อย่างมากต่อนักวิเคราะห์ QA หรือผู้ทดสอบตลอดอาชีพของพวกเขา
สรุป
Software QA โดยทั่วไปจะแบ่งออกเป็น 2 ประเภท คือ
- ผู้ทดสอบ QA: ไม่จำเป็นต้องมีความรู้ด้านการเขียนโค้ด
- สเด็ท: มันต้องใช้ความรู้การเขียนโค้ด
คุณสมบัติของผู้ทดสอบที่ดีคือ
- ความรู้โดเมนที่ดี
- มีความคิดเชิงตรรกะที่ดีและ
- มีความรู้ทักษะการเขียนโปรแกรมเป็นอย่างดี
ผู้ทดสอบจำเป็นต้องมีความรู้การเขียนโค้ดที่ดีเมื่อทำการทดสอบระบบอัตโนมัติ