การทดสอบซอฟต์แวร์ (Software Testing) ถือเป็นขั้นตอนที่มีบทบาทสำคัญ เพื่อช่วยให้ Software นั้นมีความถูกต้องและมีประสิทธิภาพมากขึ้น การใช้วิธีทดสอบซอฟต์แวร์ที่ไม่ดี/ไม่เหมาะสม อาจทำให้ยากต่อการประมาณเวลาที่ใช้ในการพัฒนาซอฟต์แวร์ และมี Software Testing Life Cycle ที่ไม่แน่นอนอีกด้วย มาดูกันว่า 6 วิธีที่มักใช้กันทั่วไปใช้ในเรื่อง Software Testing มีอะไรบ้าง Show Unit Tests ถือเป็นเทคนิคพื้นฐานของ Software Testing ที่ทำโดย Programmer หรือ Developer เป็นหลักซึ่งวิธีการนี้จะเป็นการ Test โดยที่ไม่สนใจปัจจัยภายนอกต่างๆ หรือ Dependency module ใดๆ Unit tests จะเป็นการทดสอบที่มุ่งเน้นไปที่การทำงานของ Module ย่อยๆ เท่านั้น ไม่สนใจในส่วนอื่นๆ ทั้ง Memory, System หรือ Database ก็ตาม เราใช้ Unit tests ในการทดสอบในการตรวจสอบขั้นพื้นฐานในการทำงานของ Code ส่วนย่อย เพื่อจะได้รู้ว่ามันมีข้อบกพร่องตรงไหนบ้าง มันควรทำได้ง่าย รวดเร็ว ยิ่งทำส่วนนี้ได้ดีเท่าไรยิ่งส่งผลต่อภาพรวมของ Software ทั้งหมดด้วย Integration Tests เป็นการทดสอบขั้นที่สูงขึ้นกว่า Unit Tests โดยเป็นการทดสอบส่วนอื่นๆ ที่เกี่ยวข้องด้วย เช่น Network, Databases และ Document Frameworks เป็นต้น ซึ่งจุดประสงค์คือเป็นการทดสอบเพื่อตรวจสอบว่า แต่ละ Unit หรือ Module ย่อยทำงานสอดคล้องกันหรือไม่ บ่อยครั้งที่ Unit ย่อยๆ ทำงานร่วมกันแล้วเกิดปัญหา เช่น Unit A อาจจะไม่ให้ข้อมูลที่ถูกต้องกับ Unit B ซึ่งปัญหาลักษณะนี้มักจะเจอในขั้นทดสอบแบบ Integration Tests หลังจากที่ได้ทำ Integration Tests ไปแล้ว ต่อไปจะเป็นการนำการ Tests เหล่านั้นมาใช้ประโยชน์มากขึ้น โดย Functional Tests ถือเป็นขั้นตอนตรวจสอบคุณภาพ โดยเป็นการทดสอบ Software โดยมุ่งเน้นตรวจสอบความถูกต้องของ Output ที่ได้ว่าผลลัพธ์ออกมาตรงตาม Requirement ที่กำหนดมาแต่แรกหรือไม่ นั่นเอง ที่มาของ Smoke Tests เป็นการเปรียบเทียบการทดสอบอุปกรณ์ที่ว่า ถ้ามีปัญหาหรือเกิดความผิดพลาดขึ้นมา ก็อาจเกิดไฟซ๊อตซึ่งทำให้เกิดควันขึ้นมานั่นเอง Smoke Tests มักรู้จักกันในชื่อ “Build Verification Testing” ซึ่งเป็นการ Test ครอบคลุมเฉพาะ Function หลักๆ ไม่ได้ลงลึกอะไรมากมาย ผลของการ Test ขั้นนี้ จะใช้เพื่อตัดสินใจว่าจะดำเนินการ Test ในขั้นต่อไปหรือไม่เท่านั้นเอง เรียกง่ายๆ ว่าถ้า Smoke Tests ผ่าน ก็ไปสู่การ Test อื่นๆ ต่อไปได้เลย แต่ถ้าเจอปัญหาก็ต้องหยุด เพื่อหา Bug ให้เจอว่าสาเหตุเกิดจากอะไร เกิดที่จุดไหน และแก้ไขให้เรียบร้อยเสียก่อน เมื่อมี Bug ที่ซับซ้อนเกิดขึ้นก็จะต้องถูกแก้ไข ซึ่งโดยทั่วไปมักจะส่งผลต่อ Strategy ของ Software Testing ด้วย สำหรับ Regression Tests เป็นการทดสอบหนึ่งใน Functional Tests ที่ทดสอบในส่วนของ Code หรือ Module ของระบบที่มีการเปลี่ยนแปลงนั่นเอง ซึ่งมักจะทำซ้ำๆ บ่อยๆ เพื่อให้แน่ใจว่ามันจะยังทำงานได้ถูกต้องและไม่ส่งผลกระทบต่อระบบ วิธีการทดสอบนี้ถือว่าเป็น วิธีการทดสอบ Software ในขั้นตอนท้ายๆ แล้ว Components แต่ละตัวจะถูก Test จากมุมมองของลูกค้าหรือ User โดยตรง ซึ่งในการทดสอบและมีการประทับตราเป็นลายลักษณ์อักษรว่าจะยอมรับได้หรือไม่ การ Test นี้เพื่อเป็นการประกันคุณภาพของ Software จากมุมมองของลูกค้า / User ปลายทาง เช่น การค้นหาข้อผิดพลาดต่างๆ ทดสอบโดยละเอียด และที่สำคัญการ Test ในขั้นนี้ควรเป็นสภาพแวดล้อมที่เหมือนหรือใกล้เคียงกับสภาพแวดล้อมของการใช้งานจริงให้มากที่สุด แต่อันที่จริงในเรื่อง Software Testing นั้นยังมีวิธีต่างๆ อีกมากมายหลายวิธี ซึ่งขึ้นอยู่กับว่าจะใช้ในสถานการณ์ไหน หรือถ้าใครขยันทำการ Test ที่ละเอียดมากขึ้นเท่าไร ยิ่งทำให้ Software นั้นมีประสิทธิภาพมากยิ่งขึ้น ที่มา: http://testorigen.com/6-common-software-testing-methodologies/ อ้างอิง: http://softwaretestingfundamentals.com/smoke-testing/ , https://en.wikipedia.org/wiki/Smoke_testing_(software) ,https://en.wikipedia.org/wiki/Functional_testing สวัสดีค่ะ … ถึงเวลาซ๊ากที ฤกษ์งามยามดี กลิ่นดอกพญาสัตบรรณเลือนหาย แสงแดดสาดส่องแทนที่ ฤดูร้อนถามหา ณ เพลานี้เราได้พบกัน 🌼🌼 ก็ว่ากันตามหัวข้อของบทความ เรื่องราวเหมือนจะไม่เครียดแต่จริง ๆ ก็วิชาก๊านน วิชาการอยู่นะคะ ฮาา 😉 สำหรับเนื้อหาหลักของบทความนี้ (ตอนที่ 1) ผู้เขียนจะนำเสนอข้อมูลและแชร์ประสบการณ์ให้กับผู้อ่านทราบเกี่ยวกับกิจกรรมและขั้นตอนต่าง ๆ ของการทดสอบซอฟต์แวร์กันก่อนค่ะ ในตอนต่อไปเราจะลงลึกไปแต่ละขั้นตอนพร้อมตัวอย่าง และประสบการณ์ที่ผู้เขียนอยากจะแชร์ให้ผู้อ่านได้ทราบกันนะคะ (เผื่อว่าเราจะได้มาระดมสมอง ช่วยแสดงความคิดเห็นกันเข้ามา และ/หรือผู้อ่านจะมีข้อเสนอแนะให้กับผู้เขียน ถือว่าเป็นการแลกเปลี่ยนกันค่ะ) แต่ก่อนที่เราจะเข้าสู่เนื้อหาหลักของบทความนี้กันนั้น ผู้เขียน (ขอ) อธิบายนิยาม/ความหมายของ Software Testing รวมถึง Manual Testing, Functional Testing และ Blackbox Testing กันก่อนนะคะ เพื่อทั้งผู้อ่านและผู้เขียนจะได้ทบทวนกันซักหน่อย และทำความเข้าใจไปพร้อม ๆ กันค่ะ (อิอิอิ) 😊 Software Testing หรือการทดสอบซอฟต์แวร์ คืออะไรกันน่ะ ?
Manual Testing คืออะไร ?
อ่านถึงตรงนี้ผู้อ่านบางท่านอาจตั้งคำถามในใจ และ/หรืออุทาน ออกมาว่า “เดี๋ยวนี้เค้าทำ Automated Testing กันแล้วน่ะ ทำไมยัง Manual กันนี่ ! ” ก็เพราะว่า ………….. อืม ….. ยังไงผู้เขียนก็คิดว่า การที่เราจะตัดสินใจลงมือทดสอบแบบ Automated เลยแบบสุ่มสี่สุ่มห้า (รวมถึงเรื่องอื่นในชีวิต Drama ซะงั้น ฮาาา) โดยไม่ได้ดูถึงความเหมาะสมความคุ้มค่า ไอ้ที่เค้าว่าดีนั้น ก็อาจจะไม่ดีเพราะไม่ได้เหมาะสมกับการทดสอบโปรแกรมที่เราจะทดสอบก็ได้ และผู้เขียนเชื่อว่า เราจะ Automated ได้ดีนั้น ยังไงก็ต้อง Manual ได้ดีระดับหนึ่งก่อน มีความเข้าใจ และมีประสบการณ์มาก่อน เหมือนเป็นพื้นฐานที่สำคัญค่ะ อีกอย่างสุดท้ายเมื่อเรามีประสบการณ์การทดสอบซอฟต์แวร์ไประยะหนึ่งแล้ว เราก็จะพบว่าการทดสอบโปรแกรมหนึ่ง ๆ นั้น ยังไงก็ต้องทดสอบแบบ Manual ร่วมกับ Automated อยู่ดี จะ Automated 100% เลยก็อาจจะไม่ครอบคลุมทั้งหมดได้ Functional Testing คืออะไร ?
แล้ว Blackbox Testing ล่ะ คืออะไร ?
ทบทวนนิยาม/ความหมาย กันแล้ว ผู้เขียนขออธิบายในส่วนกิจกรรม ขั้นตอนการทดสอบซอฟต์แวร์ต่อเลยนะคะ ก่อนเริ่มการทดสอบซอฟต์แวร์ของทีมพัฒนาของผู้เขียนนั้น ผู้ทดสอบจะต้องได้รับการถ่ายทอดการทำงานของซอฟต์แวร์จากนักพัฒนาโปรแกรมจนเข้าใจเสียก่อน ซึ่งจริง ๆ ก็พอจะเข้าใจภาพรวมการทำงานของโปรแกรมที่จะทดสอบอยู่แล้วค่ะ เพราะผู้ทดสอบเองก็ได้เข้าไปมีส่วนร่วมตั้งแต่เก็บรวบรวมความต้องการของโปรแกรมแล้วก่อนเริ่มพัฒนาค่ะ – ตรงนี้ถือว่าได้มาทำความเข้าใจ ทบทวนร่วมกันอีกซักครั้งเพื่อให้เข้าใจตรงกันก่อนจะเริ่มทดสอบโปรแกรมของเรากันนะคะ เมื่อทดสอบเรียบร้อยแล้ว ผู้ทดสอบก็จะส่งมอบเอกสารซึ่งได้จากการทดสอบ (Test Report และ Defect Log) ให้กับนักพัฒนาโปรแกรมพร้อมกับการทบทวนผลการทดสอบร่วมกับทีมพัฒนาเพื่อรับทราบรายการข้อผิดพลาดและข้อเสนอแนะของโปรแกรมที่ได้จากการทดสอบ และนักพัฒนาโปรแกรมดำเนินการแก้ไขปรับปรุงโปรแกรมตามรายการเหล่านั้นต่อไปค่ะ เมื่อนักพัฒนาโปรแกรมแก้ไขปรับปรุงโปรแกรมเสร็จเรียบร้อยแล้ว ก็จะแจ้งให้กับผู้ทดสอบทราบ เพื่อทำการทดสอบผลการแก้ไขปรับปรุงเหล่านั้นอีกครั้งหนึ่งก่อนปิดการทดสอบเมื่อรายการข้อผิดพลาดและข้อเสนอแนะเหล่านั้นได้รับการแก้ไขปรับปรุงเรียบร้อยแล้ว หลังจากนั้นจึงจะจัดทำคู่มือการใช้งานซอฟต์แวร์ อบรมการใช้งานให้กับผู้ใช้ และแจ้งนักพัฒนาโปรแกรมเพื่อติดตั้งใช้งานซอฟต์แวร์ต่อไปค่ะ ภาพแสดงกิจกรรมการทดสอบซอฟต์แวร์จากภาพรวมกิจกรรมต่าง ๆ ในการทดสอบซอฟต์แวร์ที่ผู้เขียนได้อธิบายไปข้างต้น ผู้เขียนจึงขอสรุปเป็นขั้นตอนการทดสอบซอฟต์แวร์ทั้งหมด 8 ขั้นตอนเพื่อให้เข้าใจง่าย ๆ (เราจะลงลึกแต่ละขั้นตอนในบทความตอนต่อไปนะคะ) ดังนี้ค่ะ 1. ผู้ทดสอบรับการถ่ายทอดการทำงานของซอฟต์แวร์ที่จะทดสอบจากนักพัฒนาโปรแกรม (Preparation Testing) 2. ผู้ทดสอบเตรียมเหตุการณ์ทดสอบ ออกแบบกรณีทดสอบ และยืนยันความถูกต้อง (Test Development and Verify) 3. ผู้ทดสอบทดสอบซอฟต์แวร์และเปรียบเทียบผลการทดสอบ (Test Execution) 4. ผู้ทดสอบรายงานผลการทดสอบ (Test Reporting) 5. ผู้ทดสอบทบทวนผลการทดสอบร่วมกับทีมพัฒนาซอฟต์แวร์ (Test Result Analysis) 6. นักพัฒนาโปรแกรมแก้ไขปรับปรุงข้อผิดพลาดและข้อเสนอแนะของซอฟต์แวร์ และแจ้งให้ผู้ทดสอบรับทราบผลการแก้ไข (Defect Fixing) 7. ผู้ทดสอบรับทราบผลการแก้ไขซอฟต์แวร์ ทดสอบผลการแก้ไขและปิดการทดสอบ (Defect Retesting and Closure) 8. นักพัฒนาโปรแกรมติดตั้งใช้งานซอฟต์แวร์ ภาพแสดงขั้นตอนการทดสอบซอฟต์แวร์สำหรับตอนที่ 1 ผู้เขียนขอจบไว้เท่านี้ก่อนนะคะ โดยในตอนถัดไป เราจะมาลงลึกกันแต่ละขั้นตอนพร้อมตัวอย่างแต่ละขั้นตอนเพื่อจะได้เข้าใจกันมากขึ้นค่ะ
|