Testing Software มีกี่แบบ

1. Unit Tests

Unit Tests ถือเป็นเทคนิคพื้นฐานของ Software Testing ที่ทำโดย Programmer หรือ Developer เป็นหลักซึ่งวิธีการนี้จะเป็นการ Test โดยที่ไม่สนใจปัจจัยภายนอกต่างๆ หรือ Dependency module ใดๆ Unit tests จะเป็นการทดสอบที่มุ่งเน้นไปที่การทำงานของ Module ย่อยๆ เท่านั้น ไม่สนใจในส่วนอื่นๆ ทั้ง Memory, System หรือ Database ก็ตาม เราใช้ Unit tests ในการทดสอบในการตรวจสอบขั้นพื้นฐานในการทำงานของ Code ส่วนย่อย เพื่อจะได้รู้ว่ามันมีข้อบกพร่องตรงไหนบ้าง มันควรทำได้ง่าย รวดเร็ว ยิ่งทำส่วนนี้ได้ดีเท่าไรยิ่งส่งผลต่อภาพรวมของ Software ทั้งหมดด้วย

2. Integration Tests

Integration Tests เป็นการทดสอบขั้นที่สูงขึ้นกว่า Unit Tests โดยเป็นการทดสอบส่วนอื่นๆ ที่เกี่ยวข้องด้วย เช่น Network, Databases และ Document Frameworks เป็นต้น ซึ่งจุดประสงค์คือเป็นการทดสอบเพื่อตรวจสอบว่า แต่ละ Unit หรือ Module ย่อยทำงานสอดคล้องกันหรือไม่ บ่อยครั้งที่ Unit ย่อยๆ ทำงานร่วมกันแล้วเกิดปัญหา เช่น Unit A อาจจะไม่ให้ข้อมูลที่ถูกต้องกับ Unit B ซึ่งปัญหาลักษณะนี้มักจะเจอในขั้นทดสอบแบบ Integration Tests

3. Functional Tests

หลังจากที่ได้ทำ Integration Tests ไปแล้ว ต่อไปจะเป็นการนำการ Tests เหล่านั้นมาใช้ประโยชน์มากขึ้น โดย Functional Tests ถือเป็นขั้นตอนตรวจสอบคุณภาพ โดยเป็นการทดสอบ Software โดยมุ่งเน้นตรวจสอบความถูกต้องของ Output ที่ได้ว่าผลลัพธ์ออกมาตรงตาม Requirement ที่กำหนดมาแต่แรกหรือไม่ นั่นเอง

4. Smoke Tests

ที่มาของ Smoke Tests เป็นการเปรียบเทียบการทดสอบอุปกรณ์ที่ว่า ถ้ามีปัญหาหรือเกิดความผิดพลาดขึ้นมา ก็อาจเกิดไฟซ๊อตซึ่งทำให้เกิดควันขึ้นมานั่นเอง Smoke Tests มักรู้จักกันในชื่อ “Build Verification Testing” ซึ่งเป็นการ Test ครอบคลุมเฉพาะ Function หลักๆ ไม่ได้ลงลึกอะไรมากมาย ผลของการ Test ขั้นนี้ จะใช้เพื่อตัดสินใจว่าจะดำเนินการ Test ในขั้นต่อไปหรือไม่เท่านั้นเอง เรียกง่ายๆ ว่าถ้า Smoke Tests ผ่าน ก็ไปสู่การ Test อื่นๆ ต่อไปได้เลย แต่ถ้าเจอปัญหาก็ต้องหยุด เพื่อหา Bug ให้เจอว่าสาเหตุเกิดจากอะไร เกิดที่จุดไหน และแก้ไขให้เรียบร้อยเสียก่อน

5. Regression Tests

เมื่อมี Bug ที่ซับซ้อนเกิดขึ้นก็จะต้องถูกแก้ไข ซึ่งโดยทั่วไปมักจะส่งผลต่อ Strategy ของ Software Testing ด้วย สำหรับ Regression Tests เป็นการทดสอบหนึ่งใน Functional Tests ที่ทดสอบในส่วนของ Code หรือ Module ของระบบที่มีการเปลี่ยนแปลงนั่นเอง ซึ่งมักจะทำซ้ำๆ บ่อยๆ เพื่อให้แน่ใจว่ามันจะยังทำงานได้ถูกต้องและไม่ส่งผลกระทบต่อระบบ

6. Acceptance Tests

วิธีการทดสอบนี้ถือว่าเป็น วิธีการทดสอบ Software ในขั้นตอนท้ายๆ แล้ว Components แต่ละตัวจะถูก Test จากมุมมองของลูกค้าหรือ User โดยตรง ซึ่งในการทดสอบและมีการประทับตราเป็นลายลักษณ์อักษรว่าจะยอมรับได้หรือไม่ การ Test นี้เพื่อเป็นการประกันคุณภาพของ Software จากมุมมองของลูกค้า / User ปลายทาง เช่น การค้นหาข้อผิดพลาดต่างๆ ทดสอบโดยละเอียด และที่สำคัญการ Test ในขั้นนี้ควรเป็นสภาพแวดล้อมที่เหมือนหรือใกล้เคียงกับสภาพแวดล้อมของการใช้งานจริงให้มากที่สุด