ความรู้พื้นฐานทางด้าน testing software

การทดสอบซอฟต์แวร์ (Software Testing) ถือเป็นขั้นตอนที่มีบทบาทสำคัญ เพื่อช่วยให้ Software นั้นมีความถูกต้องและมีประสิทธิภาพมากขึ้น การใช้วิธีทดสอบซอฟต์แวร์ที่ไม่ดี/ไม่เหมาะสม อาจทำให้ยากต่อการประมาณเวลาที่ใช้ในการพัฒนาซอฟต์แวร์ และมี  Software Testing Life Cycle ที่ไม่แน่นอนอีกด้วย มาดูกันว่า 6 วิธีที่มักใช้กันทั่วไปใช้ในเรื่อง Software Testing มีอะไรบ้าง

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 นั้นมีประสิทธิภาพมากยิ่งขึ้น

ที่มา:     //testorigen.com/6-common-software-testing-methodologies/

อ้างอิง: //softwaretestingfundamentals.com/smoke-testing/ , //en.wikipedia.org/wiki/Smoke_testing_(software) ,//en.wikipedia.org/wiki/Functional_testing

สวัสดีค่ะ … ถึงเวลาซ๊ากที ฤกษ์งามยามดี กลิ่นดอกพญาสัตบรรณเลือนหาย แสงแดดสาดส่องแทนที่ ฤดูร้อนถามหา ณ เพลานี้เราได้พบกัน 🌼🌼

ก็ว่ากันตามหัวข้อของบทความ เรื่องราวเหมือนจะไม่เครียดแต่จริง ๆ ก็วิชาก๊านน วิชาการอยู่นะคะ ฮาา 😉
ผู้เขียนจำได้ว่าสมัยเรียนป. ตรี (ก็ผ่านมายังไม่กี่ปีหรอกค่ะ ฮรี่ ๆ) Software Testing เป็น หัวข้อหนึ่งที่ผู้เขียนต้องเรียนด้วยค่ะ .. และผ่านมาไม่กี่ปี
ปัจจุบันผู้เขียนก็ได้มีโอกาส (ที่เรียกว่าบทบาทหน้าที่) เป็นผู้ทดสอบซอฟต์แวร์มาแล้วหลาย ๆ โปรแกรมค่ะ (อ๊ะไม่กี่ปีเหรอ ?) จึงได้รวบรวมข้อมูลและประสบการณ์เอาไว้ และถือโอกาสนี้มาเขียนบทความแชร์ให้กับผู้อ่านเพื่อเป็นแนวทางและ/หรือความรู้เล็ก ๆ น้อย ๆ ได้นำไปใช้ในการทดสอบซอฟต์แวร์ซึ่งถือเป็นขั้นตอนหนึ่งที่สำคัญไม่น้อยไปกว่าขั้นตอนอื่นในกระบวนการพัฒนาซอฟต์แวร์กันค่ะ

สำหรับเนื้อหาหลักของบทความนี้ (ตอนที่ 1) ผู้เขียนจะนำเสนอข้อมูลและแชร์ประสบการณ์ให้กับผู้อ่านทราบเกี่ยวกับกิจกรรมและขั้นตอนต่าง ๆ ของการทดสอบซอฟต์แวร์กันก่อนค่ะ ในตอนต่อไปเราจะลงลึกไปแต่ละขั้นตอนพร้อมตัวอย่าง และประสบการณ์ที่ผู้เขียนอยากจะแชร์ให้ผู้อ่านได้ทราบกันนะคะ (เผื่อว่าเราจะได้มาระดมสมอง ช่วยแสดงความคิดเห็นกันเข้ามา และ/หรือผู้อ่านจะมีข้อเสนอแนะให้กับผู้เขียน ถือว่าเป็นการแลกเปลี่ยนกันค่ะ)
การทดสอบซอฟต์แวร์ที่ผู้เขียนจะมาแชร์นั้น จะเป็นการทดสอบแบบ Functional Testing โดยใช้เทคนิค Blackbox Testing และทดสอบแบบ Manual นะคะ

แต่ก่อนที่เราจะเข้าสู่เนื้อหาหลักของบทความนี้กันนั้น ผู้เขียน (ขอ) อธิบายนิยาม/ความหมายของ Software Testing รวมถึง Manual Testing, Functional Testing และ Blackbox Testing กันก่อนนะคะ เพื่อทั้งผู้อ่านและผู้เขียนจะได้ทบทวนกันซักหน่อย และทำความเข้าใจไปพร้อม ๆ กันค่ะ (อิอิอิ) 😊

Software Testing หรือการทดสอบซอฟต์แวร์ คืออะไรกันน่ะ ?

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

Manual Testing คืออะไร ?

Manual Testing ก็คือ การทดสอบที่ดำเนินการโดยไม่ได้ใช้เครื่องมืออัตโนมัติ (Automated Tool) หรือสคริปต์ (Script) โดยผู้ทดสอบจะ Run Test ตาม Test Plan, Test Case หรือ Test Scenarios ด้วยมือของผู้ทดสอบเองนั่นแหละค่ะ
[Manual คำศัพท์ทางวิศวกรรม ความหมาย คือ คู่มือ, (งาน) ทำด้วยมือ]

อ่านถึงตรงนี้ผู้อ่านบางท่านอาจตั้งคำถามในใจ และ/หรืออุทาน ออกมาว่า “เดี๋ยวนี้เค้าทำ Automated Testing กันแล้วน่ะ ทำไมยัง Manual กันนี่ ! ” ก็เพราะว่า …………..

อืม ….. ยังไงผู้เขียนก็คิดว่า การที่เราจะตัดสินใจลงมือทดสอบแบบ Automated เลยแบบสุ่มสี่สุ่มห้า (รวมถึงเรื่องอื่นในชีวิต Drama ซะงั้น ฮาาา) โดยไม่ได้ดูถึงความเหมาะสมความคุ้มค่า ไอ้ที่เค้าว่าดีนั้น ก็อาจจะไม่ดีเพราะไม่ได้เหมาะสมกับการทดสอบโปรแกรมที่เราจะทดสอบก็ได้ และผู้เขียนเชื่อว่า เราจะ Automated ได้ดีนั้น ยังไงก็ต้อง Manual ได้ดีระดับหนึ่งก่อน มีความเข้าใจ และมีประสบการณ์มาก่อน เหมือนเป็นพื้นฐานที่สำคัญค่ะ อีกอย่างสุดท้ายเมื่อเรามีประสบการณ์การทดสอบซอฟต์แวร์ไประยะหนึ่งแล้ว เราก็จะพบว่าการทดสอบโปรแกรมหนึ่ง ๆ นั้น ยังไงก็ต้องทดสอบแบบ Manual ร่วมกับ Automated อยู่ดี จะ Automated 100% เลยก็อาจจะไม่ครอบคลุมทั้งหมดได้
และเอาเป็นว่า ………. ผู้เขียนจะมาเล่าเรื่องนี้ให้ละเอียดกัน (ตามที่ผู้เขียนได้ประสบพบเจอ ศึกษาหาข้อมูลมา) ซักบทความหนึ่งในโอกาสหน้านะคะ ตอนนี้ก็เริ่ม ๆ มาจับ ๆ ถู ๆ เอ้ยยยยย ศึกษา Automated Test บ้างแล้วค่ะ ส่วน Tool ตัวไหนนั้น ขออุบส์ไว้ก่อนนะคะ กลัวจะไม่เวิคคค แฮร่ ไปซะไกลแล้วววจร้าาา เรามาว่ากันด้วยเนื้อหาของตอนที่ 1 ต่อกันดีกว่า ๆ นะคะ

Functional Testing คืออะไร ?

Functional Testing คือ การทดสอบการทำงานของซอฟต์แวร์ว่าสามารถทำงานได้ครบถ้วนและถูกต้องตรงตามข้อกำหนดซอฟต์แวร์ที่ระบุไว้หรือไม่ โดยเราจะมุ่งเน้นตรวจสอบความถูกต้องของ Output ที่ออกมาค่ะ

แล้ว Blackbox Testing ล่ะ คืออะไร ?

Blackbox Testing หรือการทดสอบแบบกล่องดำ ก็คือ การทดสอบที่ไม่คำนึงถึงคำสั่งภายในซอฟต์แวร์ (เปรียบเหมือนกล่องดำที่มองไม่เห็นอะไรข้างใน) เป็นการทดสอบการทำงานของซอฟต์แวร์ตามความต้องการ (Requirements) ที่มี โดยดูค่าผลลัพธ์ที่แสดงออกมา (Output) จากข้อมูลนำเข้า (Input) ที่ให้กับซอฟต์แวร์ว่ามีความสอดคล้องกันหรือไม่ค่ะ ซึ่งถ้าโปรแกรมทำงานถูกต้องก็คือ Ouput ต้องสอดคล้องกันกับ Input นั่นเอง

ทบทวนนิยาม/ความหมาย กันแล้ว ผู้เขียนขออธิบายในส่วนกิจกรรม ขั้นตอนการทดสอบซอฟต์แวร์ต่อเลยนะคะ

ก่อนเริ่มการทดสอบซอฟต์แวร์ของทีมพัฒนาของผู้เขียนนั้น

ผู้ทดสอบจะต้องได้รับการถ่ายทอดการทำงานของซอฟต์แวร์จากนักพัฒนาโปรแกรมจนเข้าใจเสียก่อน ซึ่งจริง ๆ ก็พอจะเข้าใจภาพรวมการทำงานของโปรแกรมที่จะทดสอบอยู่แล้วค่ะ เพราะผู้ทดสอบเองก็ได้เข้าไปมีส่วนร่วมตั้งแต่เก็บรวบรวมความต้องการของโปรแกรมแล้วก่อนเริ่มพัฒนาค่ะ – ตรงนี้ถือว่าได้มาทำความเข้าใจ ทบทวนร่วมกันอีกซักครั้งเพื่อให้เข้าใจตรงกันก่อนจะเริ่มทดสอบโปรแกรมของเรากันนะคะ

เมื่อทดสอบเรียบร้อยแล้ว ผู้ทดสอบก็จะส่งมอบเอกสารซึ่งได้จากการทดสอบ (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 ผู้เขียนขอจบไว้เท่านี้ก่อนนะคะ โดยในตอนถัดไป เราจะมาลงลึกกันแต่ละขั้นตอนพร้อมตัวอย่างแต่ละขั้นตอนเพื่อจะได้เข้าใจกันมากขึ้นค่ะ

ปล. เนื้อหาในบทความนี้ได้ปรับปรุงเนื้อหาจากคู่มือเรื่อง “การทดสอบซอฟต์แวร์ด้วยกลยุทธ์การทดสอบแบบกล่องดำ (Black Box Testing) สำหรับเจ้าหน้าที่บริการลูกค้าระบบสารสนเทศบุคลากร” เพื่อให้ผู้อ่านอ่านได้ง่ายขึ้น คู่มือดังกล่าวนั้น ผู้เขียนได้จัดทำขึ้นมาโดยรวบรวมข้อมูลจากประสบการณ์การทดสอบซอฟต์แวร์ของผู้เขียนเอง ร่วมกับการศึกษาข้อมูลเพิ่มเติมจากแหล่งความรู้และ/หรือผู้มีความรู้ท่านอื่น ๆ สำหรับอ้างอิงแหล่งข้อมูลต่าง ๆ นั้น ผู้อ่านสามารถดูได้จากคู่มือดังกล่าวนะคะ

Toplist

โพสต์ล่าสุด

แท็ก

แปลภาษาไทย ไทยแปลอังกฤษ แปลภาษาอังกฤษเป็นไทย pantip โปรแกรม-แปล-ภาษา-อังกฤษ พร้อม-คำ-อ่าน อาจารย์ ตจต ศัพท์ทหาร ภาษาอังกฤษ pdf lmyour แปลภาษา ชขภใ ห่อหมกฮวกไปฝากป้าmv กรมพัฒนาฝีมือแรงงาน อบรมฟรี 2566 ขขขขบบบยข ่ส ศัพท์ทางทหาร military words หนังสือราชการ ตัวอย่าง หยน แปลบาลีเป็นไทย ไทยแปลอังกฤษ ประโยค การไฟฟ้านครหลวง การไฟฟ้าส่วนภูมิภาค ข้อสอบโอเน็ต ม.3 ออกเรื่องอะไรบ้าง พจนานุกรมศัพท์ทหาร เมอร์ซี่ อาร์สยาม ล่าสุด แปลภาษามลายู ยาวี Bahasa Thailand กรมพัฒนาฝีมือแรงงาน อบรมออนไลน์ การ์ดจอมือสอง ข้อสอบคณิตศาสตร์ พร้อมเฉลย คะแนน o-net โรงเรียน ค้นหา ประวัติ นามสกุล บทที่ 1 ที่มาและความสําคัญของปัญหา ร. ต จ แบบฝึกหัดเคมี ม.5 พร้อมเฉลย แปลภาษาอาหรับ-ไทย ใบรับรอง กรมพัฒนาฝีมือแรงงาน PEA Life login Terjemahan บบบย มือปราบผีพันธุ์ซาตาน ภาค2 สรุปการบริหารทรัพยากรมนุษย์ pdf สอบโอเน็ต ม.3 จําเป็นไหม เช็คยอดค่าไฟฟ้า แจ้งไฟฟ้าดับ แปลภาษา มาเลเซีย ไทย แผนที่ทวีปอเมริกาเหนือ ่้แปลภาษา Google Translate กระบวนการบริหารทรัพยากรมนุษย์ 8 ขั้นตอน ก่อนจะนิ่งก็ต้องกลิ้งมาก่อน เนื้อเพลง ข้อสอบโอเน็ตม.3 มีกี่ข้อ คะแนนโอเน็ต 65 ตม กรุงเทพ มีที่ไหนบ้าง