กลยุทธ์การทดสอบซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ (Software Engineering)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Chapter 11 : System Implementation
Advertisements

Graphical User Interface charturong.ee.engr.tu.ac.th/CN208
การตรวจสอบภายในที่ไม่ใช่การจับผิด ทำอย่างไร ?
Business System Analyst
Course Software Engineering SE Overview and Introduction.
SCC : Suthida Chaichomchuen
Performance Management and appraisal systems
Examining the Code.
Test Methodology.
Unit Test Unit Test ระบบ Simple MRP เพื่อตรวจสอบความถูกต้องของฟังก์ชั่นในการทำงานของระบบ โดยพยายามทำการหาข้อผิดพลาดของตัวระบบให้ได้มากที่สุดโดยใช้เวลาและจำนวนของ.
Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program.
แบบจำลองกระบวนการซอฟต์แวร์
Chapter 2 Software Process.
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
บทที่ 13 การทดสอบซอฟต์แวร์ ( Software Testing ).
Verification & Validation K.Mathiang. Objective สามารถอธิบายผังขั้นตอนการออกแบบระบบ ดิจิทัลได้ สามารถอธิบายความเกี่ยวข้องของการทวนสอบ (Verification) กับการออกแบบระบบดิจิทัลได้
How do scientists think and find( พบ ) answers?.
Database Management System
Tawatchai Iempairote วันที่ 3 กรกฎาคม 2556
1 คต ๔๔๑ สรุปการจัดการ โครงการซอฟต์แวร์ คต ๔๔๑ สรุปการจัดการ โครงการซอฟต์แวร์ Royal Thai Air Force Academy : RTAFA Royal Thai Air Force Academy : RTAFA.
1 คต ๔๔๑ สรุปการจัดการ โครงการซอฟต์แวร์ คต ๔๔๑ สรุปการจัดการ โครงการซอฟต์แวร์ Royal Thai Air Force Academy : RTAFA Royal Thai Air Force Academy : RTAFA.
Copyright © 2011 Self-access Learning Centre, KMUTT Speaking Web Manual.
Creative Visual Presentation Workshop Communicate clearly, persuasively, and professionally.
อาจารย์ วิทูร ธรรมธัชอารี. เนื้อหาในการเรียน  เครื่องมือในการออกแบบและพัฒนาระบบ บัญชีด้วยคอมพิวเตอร์  ความรู้เบื้องต้นเกี่ยวกับฐานข้อมูล  การวางระบบบัญชีด้วยคอมพิวเตอร์
การออกแบบส่วนต่อประสาน
Practice File. Our Executive Coaching Program is proven effective. Our customer survey show ROI of coaching can be as high as 3 times the investment value.
PMQA Organization เอกสารประกอบการชี้แจงตัวชี้วัดการพัฒนาคุณภาพการบริหารจัดการภาครัฐ สำหรับส่วนราชการระดับกรม ประจำปีงบประมาณ พ.ศ วันที่ 28 ตุลาคม.
การสัมมนาวิชาการระดับนานาชาติ
Information Systems Development
เกณฑ์รางวัลคุณภาพแห่งชาติเพื่อองค์กรที่เป็นเลิศ
แนวทางการตรวจประเมินองค์กรด้วยตนเอง (Self-Assessment)
การทดสอบซอฟต์แวร์ Software Testing
การพัฒนา ระบบบริหารกองทัพเรือ ภายใต้กรอบการจัดการภาครัฐแนวใหม่
Thai Quality Software (TQS)
บทที่ 13 กลยุทธ์การทดสอบซอฟต์แวร์ (TESTING STRATEGIES)
บทที่ 5 แบบจำลองกระบวนการ
Road to the Future - Future is Now
Control Charts for Count of Non-conformities
Information System Development
The Balanced Scorecard & KPI
บทที่ 10 การนำระบบไปใช้/การบำรุงรักษาระบบ
การจัดหาหรือจัดให้มีการพัฒนา และการบํารุงรักษาระบบเครือข่ายคอมพิวเตอร์ ระบบคอมพิวเตอร์ ระบบงานคอมพิวเตอร์ และระบบสารสนเทศ มาตรฐานการรักษาความมั่นคงปลอดภัยของระบบสารสนเทศตามวิธีการแบบปลอดภัย.
บทที่ 7 ระบบสารสนเทศ.
IT Project Management 05 IT Quality Management.
Generic View of Process
ระเบียบวิธีวิจัยพื้นฐานทางการเงิน
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
Object-Oriented Programs Design and Construction
รศ.ดร.ทศพร ศิริสัมพันธ์
Multimedia Production
มิถุนายน 2548 การประชุมเชิงปฏิบัติการครั้งที่ 2
กระบวนการพัฒนาระบบงาน
Development Strategies
การพัฒนาระบบสารสนเทศ
วิศวกรรมซอฟต์แวร์ (Software Engineering)
การออกแบบบทเรียนคอมพิวเตอร์
การพัฒนาและติดตั้งระบบ
Software Testing Apirada Thadadech Computer Science Department,
(การสุ่มตัวอย่างเพื่อการยอมรับ)
ระเบียบวิธีวิจัยพื้นฐานทาง การตลาด
เป็นฐานสำคัญขององค์กร
Activity-Based-Cost Management Systems.
5. ข้อกำหนดความต้องการซอฟต์แวร์ (Software Requirements Specification)
บทที่ 13 การบริหารความเสี่ยง ( Risk Management ).
(การนำเสนอข้อมูลด้วยตารางด้วยเทคนิค storytelling)
วิศวกรรมซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ (Software Engineering)
บทที่ 3 กระบวนการผลิตซอฟต์แวร์ (Software Process)
ระเบียบวิธีวิจัยพื้นฐานทางธุรกิจ
Introduction to Structured System Analysis and Design
บทที่ 1 กลยุทธ์ของกระบวนการการพัฒนา ซอฟต์แวร์รายบุคคล
ใบสำเนางานนำเสนอ:

กลยุทธ์การทดสอบซอฟต์แวร์ วิศวกรรมซอฟต์แวร์ (Software Engineering)

กลยุทธ์การทดสอบซอฟต์แวร์ กลยุทธ์การทดสอบซอฟต์แวร์ – วิธีการออกแบบกรณีทดสอบและการ วางแผนทดสอบ เพื่อให้ได้ชุดของขั้นตอนตามที่ปฏิบัติ เป็นการยืนยันว่าการ สร้างซอฟต์แวร์ประสบผลสำเร็จ กลยุทธ์ใดๆ ต้องมีแผนการทดสอบ การออกแบบกรณีทดสอบ การลงมือ ทดสอบ และการรวบรวมและประเมินผลข้อมูลผลลัพธ์

What Testing Shows Errors - ข้อผิดพลาด Requirements conformance – ความสอดคล้องกับความต้องการของผู้ใช้งาน Performance - การแสดงผล an indication of quality – ตัวบ่งชี้คุณภาพ

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

ผู้ทดสอบซอฟต์แวร์ developer independent tester Understands the system but, will test "gently" and, is driven by "delivery" Must learn about the system, but, will attempt to break it and, is driven by quality

Verification & Validation V&V เป็นกิจกรรม การประกันคุณภาพของซอฟต์แวร์ (Software Quality Assurance – SQA)

Testing Strategy We begin by ‘testing-in-the-small’ and move toward ‘testing-in-the-large’ unit test Integration test system test validation test

Strategic Issues State testing objectives explicitly. - ระบุวัตถุประสงค์การทดสอบอย่างชัดเจน Understand the users of the software and develop a profile for each user category. – เข้าใจผู้ใช้งาน และพัฒนารูปแบบการใช้งานสำหรับผู้ใช้แต่ละกลุ่ม Develop a testing plan that emphasizes “rapid cycle testing.” – สร้าง แผนการทดสอบที่เน้น การทดสอบในวงรอบเร็วสูง Build “robust” software that is designed to test itself – สร้างซอฟต์แวร์ที่ ทนทานและออกแบบมาให้ทดสอบตัวเองได้

Strategic Issues Use effective formal technical reviews as a filter prior to testing - ใช้ การตรวจสอบอย่างเป็นทางการเป็นตัวกรองก่อนการทดสอบ Conduct formal technical reviews to assess the test strategy and test cases themselves. - ทำการตรวจสอบด้านเทคนิคอย่างเป็นทางการเพื่อ ประเมินกลยุทธ์การทดสอบที่จะใช้ Develop a continuous improvement approach for the testing process. - พัฒนาแนวทางปรับปรุงกระบวนการทดสอบอย่างต่อเนื่อง

Unit Testing การทดสอบระดับหน่วย เจาะจงทดสอบหน่วยที่เล็กที่สุดของงานออกแบบ ซอฟต์แวร์ คือ องค์ประกอบซอฟต์แวร์ (Component) หรือโมดูลซอฟต์แวร์ (Module) เพื่อประเมินการทำงานในด้านต่างๆ ของหน่วยย่อย ไม่ว่าจะเป็น ด้านโครงสร้างข้อมูล โครงสร้างควบคุมการทำงาน ตลอดจนการรองรับการ ทำงานเมื่อเกิดความผิดพลาด

Unit Testing module to be tested results software engineer test cases interface software engineer local data structures boundary conditions independent paths test cases error handling paths

Unit Testing Interface – การทดสอบข้อมูลผ่านโมดูลอินเตอร์เฟส ว่าข้อมูลเข้าและออก ถูกต้องหรือไม่ Local data structures – โครงสร้างข้อมูลระดับหน่วยที่มีขอบเขตอยู่ ภายในหน่วยย่อย เพื่อทดสอบดูว่าข้อมูลที่ถูกจัดเก็บไว้ชั่วคราวมีความ สมบูรณ์หรือถูกต้องระหว่างการทำงานของอัลกอริธึมหรือไม่ Boundary conditions – เงื่อนไขขอบเขต คือขอบเขตค่าข้อมูลที่โปรแกรม ต้องประมวลผล โปรแกรมจะต้องทำงานภายใต้ขอบเขตข้อมูลที่กำหนดจึงจะ ถูกต้อง

Unit Testing Independent paths – เส้นทางการทำงานที่แตกต่างกันตามเงื่อนไขที่ได้รับ เมื่อนำข้อมูลเข้าสู่โปรแกรมจะต้องมีเส้นทางอย่างน้อย 1 เส้นทางที่จะถูก เรียกใช้งาน Error handling paths – เส้นทางการประมวลผลข้อผิดพลาดและแสดง ข้อผิดพลาด เมื่อมีข้อผิดพลาดเกิดขึ้น จะต้องส่งไปยังเส้นทางการ ประมวลผลข้อผิดพลาด เพื่อแจ้งเตือนผู้ใช้และคำแนะนำเพื่อทำงานต่อไป

Unit Test Environment เนื่องจาก Component ไม่ใช่ระบบที่สมบูรณ์ ดังนั้น Driver หรือ Stub จึง จำเป็นสำหรับการทดสอบระดับหน่วย Driver เป็นโปรแกรมหลักที่รับข้อมูลกรณีทดสอบ แล้วส่งผ่านข้อมูลไปยัง องค์ประกอบที่ถูกทดสอบคือ stub Stub คือโปรแกรมดัมมี่ (Dummy Program) ที่มีอินเตอร์เฟสหน้าตาเดียวกับ โมดูลจริงที่ถูกเรียกใช้งาน แต่มักไม่มีการประมวลผลข้อมูล มีเพียงการ ตรวจทานความถูกต้องของการควบคุมข้อมูลเข้าและออกของโมดูลที่ทำการ ทดสอบอยู่

Unit Test Environment test cases RESULTS driver Module stub stub interface local data structures Module boundary conditions independent paths error handling paths stub stub test cases RESULTS

Integration test เป็นการทดสอบการทำงานของกลุ่มโปรแกรมหรือส่วนประกอบย่อยที่ถูก ประสานเข้าด้วยกัน โดยทำงานหน้าที่ใดหน้าที่หนึ่งร่วมกัน เพื่อค้นหา ข้อผิดพลาดที่อาจเกิดขึ้นได้ การทดสอบระดับรวมหน่วย ทำได้ 2 ลักษณะ คือ the “big bang” approach an incremental construction strategy

Integration test Big bang – เป็นการนำเอาส่วนประกอบทั้งหมดมาเชื่อมกันในครั้ง เดียว แล้วทดสอบโปรแกรมทั้งหมด ซึ่งเป็นการทำที่ไม่ถูกต้อง เพราะจะเกิดความยุ่งยากในการแยกหาสาเหตุและแก้ไขระบบ Incremental – เป็นการสร้างและทดสอบโปรแกรมจะทำจากส่วน เล็กๆก่อน แล้วค่อยๆ เพิ่มขึ้น เมื่อพบข้อผิดพลาดก็จะง่ายในการ แยกหาสาเหตุและแก้ไข

Top Down Integration โมดูลจะรวมเข้ากันตามลำดับขอบการควบคุมจากบนลงล่าง เริ่มจากโมดูล หลัก โดยโมดูลย่อยของโมดูลหลักจะรวมเข้ากับโมดูลในเชิงลึกก่อน หรือ รวมเชิงกว้างก่อนก็ได้

Top Down Integration โมดูลหลักจะถูกใช้เป็นเทสต์ไดร์ เวอร์ และใช้สตับแทน องค์ประกอบอื่นๆ ทุกตัว ภายในโมดูลหลัก top module is tested with stubs stubs are replaced one at a time, "depth first" as new modules are integrated, some subset of tests is re-run A B C D E F G แทนที่สตับทีละตัวด้วยองค์ประกอบจริง ตามเชิงลึก หรือเชิงกว้าง เมื่อรวมโมดูลเสร็จ ทำการทดสอบ และทำการรวมโมดูลย่อยอื่นต่อไป

Bottom-Up Integration จะเริ่มการทดสอบจากโมดูลเดี่ยวๆ คือองค์ประกอบที่อยู่ระดับล่างสุดของ โครงสร้างโปรแกรม เพราะรวมตัวกันจากล่างขึ้นมา การทำงานขณะรวมกัน จึงเรียกใช้ขณะรวมกันในระดับนั้นๆ และไม่มีความจำเป็นต้องใช้สตับ

Bottom-Up Integration สร้าง Driver ขึ้นมาเพื่อทดสอบการ ทำงานของโมดูลระดับล่าง เมื่อทดสอบ เสร็จก็ถอด Driver ออกแล้วแทนที่ ด้วยคลัสเตอร์ใหม่ drivers are replaced one at a time, "depth first" worker modules are grouped into builds and integrated A B C D E F G cluster รวมโมดูลระดับล่างเข้าด้วยกัน เป็น คลัสเตอร์ (Cluster) เพื่อ ทดสอบการทำงานร่วมกัน

Regression Testing ทุกๆ ครั้งที่มีโมดูลใหม่เพิ่มขึ้นมา หมายถึงซอฟต์แวร์ได้เปลี่ยนไปแล้ว การ เปลี่ยนแปลงอาจก่อให้เกิดปัญหากับหน้าที่การทำงานได้ การทดสอบเชิงถดถอย (Regression testing) คือ การทดสอบซ้ำโดยใช้ชุด ทดสอบเดิมที่เคยทำมาแล้ว เพื่อให้มั่นใจว่าการเปลี่ยนแปลงที่เกิดขึ้น ไม่ทำ ให้เกิดผลข้างเคียงที่ไม่น่าปรารถนา

Smoke Testing A common approach for creating “daily builds” for product software การทดสอบผลิตภัณฑ์ทั้งก้อนบ่อยๆ เป็นประจำวัน กิจกรรมการทดสอบ องค์ประกอบของซอฟต์แวร์ที่ถูกแปลงโค้ดแล้ว จะถูกรวมกันเป็น บิ้วด์ (Build) ประกอบด้วยไฟลข้อมูล ไลบรารี โมดูลที่ใช้ซ้ำและองค์ประกอบอื่นๆ ที่จำเป็น ออกแบบชุดการทดสอบอย่างต่อเนื่องที่จะแสดงความผิดพลาดที่อาจทำให้บิ้วด์ไม่ ทำงานตามปกติ รวมบิ้วด์เข้ากับบิ้วด์อื่นๆ และเข้ากับผลิตภัณฑ์รวม เพื่อทำการทอบแบบสโมค เป็นประจำวัน

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

เอกสารกำกับการทดสอบ Integration Test Specification เป็นเอกสารที่บรรจุแผนการทดสอบ ขั้นตอนการทดสอบ แผนการทดสอบ (Test plan) เป็นเอกสารที่ประกอบไปด้วยชุดข้อมูลนำเข้า ของแต่ละเส้นทางการทำงานของทุกโปรแกรม และผลลัพธ์ของการทดสอบ นั้น แผนการทดสอบจะอธิบายกลยุทธ์โดยรวมของการรวมโปรแกรม การทดสอบแบ่งออกเป็นระยะ แต่ละระยะแสดงให้เห็นถึงการทำงานอย่าง กว้างๆ ในซอฟต์แวร์ ดังนั้นบิ้วด์ของโปรแกรมควรถูกสร้างตามระยะเหล่านี้

เอกสารกำกับการทดสอบ Integration การทดสอบความน่าเชื่อถือได้ของอินเตอร์เฟส (Interface Integrity) การทดสอบความถูกต้องของหน้าที่การทำงาน (Functional Validity) เนื้อหาของข่าวสาร (Information Content) เกณฑ์การประกอบการ (Performance) ประวัติการทดสอบจริง ปัญหา ข้อน่าสงสัย ควรบันทึกในรายงานการทดสอบ (Test Report)

High Order Testing Validation testing System testing Focus is on software requirements System testing Focus is on system integration เป็นการทดสอบการทำงานระบบเมื่อรวมเข้ากับองค์ประกอบอื่นๆ ได้แก่ บุคลากร อุปกรณ์ ข้อมูล เพื่อทดสอบว่าทำงานได้ถูกต้องตามข้อกำหนดและความ ต้องการของผู้ใช้หรือไม่

High Order Testing Alpha/Beta testing Focus is on customer usage เป็นการทดสอบระบบโดยผู้ใช้ โดย alpha testing ผู้ใช้จะทดสอบระบบขณะยัง ไม่ได้ติดตั้งในสถานที่จริง โดยทดสอบภายในสถานการณ์จำลองที่กำหนดขึ้นโดยทีมงาน พัฒนาระบบ ทีมงานจะบันทึกข้อผิดพลาดและทำการแก้ไข beta testing เป็นการทดสอบหลังจากทดสอบแบบอัลฟ่าเรียบร้อยแล้ว สภาพแวดล้อมจะเป็นสภาพแวดล้อมจริง ผู้ใช้จะบันทึกข้อผิดพลาด และส่งบันทึกให้ ทีมงานเป็นระยะๆ เพื่อแก้ไขข้อผิดพลาด

High Order Testing Recovery testing เป็นการทดสอบความสามารถในการกู้คืนระบบได้เมื่อเกิดความล้มเหลว โดย ระบบจะต้องสามารถทำงานต่อไปได้และต้องทนต่อการผิดพลาดได้ คือเมื่อเกิด ความล้มเหลวในส่วนใดส่วนหนึ่งจะต้องไม่ส่งกระทบให้หยุดการทำงานไปทั้ง ระบบ Security testing เป็นการทดสอบการรักษาความปลอดภัยของระบบ ว่ามีเครื่องรักษาความปลอดภัยที่มี ประสิทธิภาพเป็นที่น่าพึงพอใจหรือไม่ จากสถานการณ์การลับลอกเรียกใช้ข้อมูลและ สถานการณ์อื่นๆ ที่เป็นภัยต่อข้อมูล

High Order Testing Stress testing Performance Testing เป็นการทดสอบในสถานการณ์ไม่ปกติของระบบ เพื่อดูว่าระบบจะทนทานต่อ สถานการณ์ดังกล่าวได้นานเพียงใดก่อนที่ระบบจะล้มเหลว เช่น การใช้งานมากเกินไป การนำเข้าข้อมูลปริมาณมาก ทำให้ระบบต้องใช้ทรัพยากรต่างๆ มากเช่น หน่วยความจำ เนื้อที่จัดเก็บข้อมูล Performance Testing ทดสอบสมรรถนะด้านต่างๆ ของระบบในสถานการณ์ทั่วไปว่าอยู่ในระดับที่รับได้หรือไม่ เช่น ระยะเวลาในการตอบสนองการทำงาน การจัดสรรเนื้อที่จัดเก็บข้อมูล การจัดสรร หน่วยความจำ

การค้นหาสาเหตุของจุดบกพร่อง (Debugging) เมื่อกรณีทดสอบค้นพบข้อผิดพลาด การค้นหาสาเหตุของจุดบกพร่องเป็น การกระทำที่จะแก้ไขข้อผิดพลาดที่ค้นพบ กระบวนการค้นหาสาเหตุของจุดบกพร่อง เป็นกระบวนการทำงานแบบวน ซ้ำ เริ่มจากการทดสอบระบบ หากผลลัพธ์จริงที่ได้ไม่สอดคล้องกับผลลัพธ์ที่ คาดหวัง นั้นหมายถึงมีข้อผิดพลาดซ่อนอยู่ การค้นหาสาเหตุของจุดบกพร่อง จะจับคู่ของสาเหตุและอาการซึ่งนำไปสู่การแก้ไขข้อผิดพลาด

The Debugging Process Debugging test cases results new test cases suspected causes identified corrections regression tests new test cases

The Debugging Process การค้นหาสาเหตุของจุดบกพร่องมีผลสัมฤทธิ์ 2 ประการ สาเหตุของปัญหาถูกค้นพบ และได้รับการแก้ไข และทดสอบซ้ำ สาเหตุของปัญหาไม่ถูกค้นพบ ผู้แก้ไขอาจต้องเดาสาเหตุ และออกแบบ ทดสอบเพิ่มเติมเพื่อยืนยันการคาดเดา เพื่อนำไปสู่การแก้ไขข้อผิดพลาด

เทคนิคการค้นหาสาเหตุของจุดบกพร่อง Brute force -- มีประสิทธิภาพต่ำสุด ติดตามกระแสการทำงานจริง และเพิ่ม เอาท์พุตในโปรแกรม เพื่อหาร่องรอยข้อผิดพลาด Backtracking – เริ่มต้นจากจุดที่เกิดอาการ จากนั้นติดตามซอร์สโค้ดย้อน รอยไปถึงจุดที่เป็นสาเหตุ เหมาะสำหรับโปรแกรมขนาดเล็ก Cause Elimination – กำจัดที่ละสาเหตุ สมมติฐานหาสาเหตุ และทดสอบแต่ ละสาเหตุ กำจัดสาเหตุที่ไม่ใช่ออก ถ้าการทดสอบชี้ว่าสมมติฐานอาจเป็น สาเหตุจริง ปรับข้อมูลทดสอบให้ละเอียดขึ้น เพื่อพยายามแยกปัญหาออกมา

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