ข้อแตกต่างระหว่างข้อบกพร่องและข้อบกพร่องคืออะไร?
ข้อแตกต่างระหว่างข้อบกพร่องและข้อบกพร่องคืออะไร?
คำตอบ:
บั๊กเป็นผลมาจากข้อผิดพลาดในการเขียนโค้ด
ข้อบกพร่องคือการเบี่ยงเบนจากข้อกำหนด
นั่นคือ: ข้อบกพร่องไม่จำเป็นต้องหมายความว่ามีข้อบกพร่องในรหัสมันอาจเป็นฟังก์ชั่นที่ไม่ได้ดำเนินการ แต่กำหนดไว้ในข้อกำหนดของซอฟต์แวร์
จากหน้า Wikipedia เกี่ยวกับการทดสอบซอฟต์แวร์ :
ข้อบกพร่องของซอฟต์แวร์ไม่ใช่ทั้งหมดที่เกิดจากข้อผิดพลาดในการเข้ารหัส แหล่งที่มาทั่วไปของข้อบกพร่องที่มีราคาแพงเกิดจากช่องว่างความต้องการเช่นข้อกำหนดที่ไม่รู้จักซึ่งเป็นผลให้เกิดข้อผิดพลาดในการละเลยโดยผู้ออกแบบโปรแกรม [14] ช่องว่างของแหล่งที่มาทั่วไปของข้อกำหนดคือข้อกำหนดที่ไม่เกี่ยวกับการทำงานเช่นความสามารถในการทดสอบความสามารถในการปรับขนาดการบำรุงรักษาการใช้งานประสิทธิภาพและความปลอดภัย
การอ้างอิง Ilene Burnstein จากหนังสือทดสอบซอฟต์แวร์ภาคปฏิบัติ (แนะนำ) ซึ่งเป็นส่วนหนึ่งของคำนิยามใน "มาตรฐาน IEEE Collection สำหรับวิศวกรรมซอฟต์แวร์" (1994) และ "อภิธานศัพท์มาตรฐาน IEEE ของศัพท์วิศวกรรมซอฟต์แวร์" (มาตรฐาน 610.12, 1990):
ข้อผิดพลาดคือความผิดพลาดความเข้าใจผิดหรือความเข้าใจผิดในส่วนของผู้พัฒนาซอฟต์แวร์
ในหมวดหมู่ของนักพัฒนาเรามีวิศวกรซอฟต์แวร์โปรแกรมเมอร์นักวิเคราะห์และผู้ทดสอบ ตัวอย่างเช่นผู้พัฒนาอาจเข้าใจผิดกับสัญลักษณ์การออกแบบหรือโปรแกรมเมอร์อาจพิมพ์ชื่อตัวแปรไม่ถูกต้อง
มีการแนะนำความผิดพลาด (ข้อบกพร่อง) เข้ากับซอฟต์แวร์อันเป็นผลมาจากข้อผิดพลาด เป็นความผิดปกติในซอฟต์แวร์ที่อาจทำให้ทำงานผิดพลาดและไม่ตรงตามข้อกำหนด
ความผิดพลาดหรือข้อบกพร่องบางครั้งเรียกว่า "บั๊ก" การใช้คำศัพท์ในระยะหลังมีผลกระทบเล็กน้อยต่อข้อบกพร่องของผลกระทบต่อคุณภาพของซอฟต์แวร์ การใช้คำว่า "ข้อบกพร่อง" ยังเกี่ยวข้องกับสิ่งประดิษฐ์ซอฟต์แวร์เช่นข้อกำหนดและเอกสารการออกแบบ ข้อบกพร่องที่เกิดขึ้นในสิ่งประดิษฐ์เหล่านี้ยังเกิดจากข้อผิดพลาดและมักตรวจพบในกระบวนการตรวจสอบ
ความล้มเหลวคือความไม่สามารถของระบบซอฟต์แวร์หรือส่วนประกอบในการทำงานตามที่ต้องการภายในข้อกำหนดด้านประสิทธิภาพที่ระบุ
ระหว่างการดำเนินการกับส่วนประกอบซอฟต์แวร์หรือระบบผู้ทดสอบผู้พัฒนาหรือผู้ใช้จะสังเกตว่าไม่ได้ผลลัพธ์ที่คาดหวัง ในบางกรณีพฤติกรรมที่ไม่เหมาะสมบางประเภทระบุว่ามีความผิดประเภทหนึ่งเกิดขึ้น เราสามารถพูดได้ว่าประเภทของพฤติกรรมที่ไม่เหมาะสมเป็นอาการของความผิด ผู้พัฒนาที่มีประสบการณ์ / ผู้ทดสอบจะมีฐานความรู้ของกรณีความผิดปกติ / อาการ / ความล้มเหลว พฤติกรรมที่ไม่ถูกต้องอาจรวมถึงการสร้างค่าที่ไม่ถูกต้องสำหรับตัวแปรเอาต์พุตการตอบสนองที่ไม่ถูกต้องในส่วนของอุปกรณ์หรือรูปภาพที่ไม่ถูกต้องบนหน้าจอ ในระหว่างการพัฒนาล้มเหลวมักจะถูกทดสอบโดยผู้ทดสอบและข้อผิดพลาดจะอยู่และซ่อมแซมโดยนักพัฒนา
มีคำศัพท์ต่าง ๆ ที่เกี่ยวข้องกับข้อบกพร่องของซอฟต์แวร์ ข้อความที่ตัดตอนมาจากหลักสูตรที่ฉันเรียน:
ข้อผิดพลาด : การกระทำหรือการละเลยของมนุษย์ซึ่งส่งผลให้เกิดความผิดพลาด
ความผิดพลาด : ความผิดพลาดเป็นข้อบกพร่องของซอฟต์แวร์ (ขั้นตอนที่ไม่ถูกต้องกระบวนการหรือข้อกำหนดของข้อมูล) ที่ทำให้เกิดความล้มเหลว
Bug : เหมือนกับ Fault
ความล้มเหลว : การไร้ความสามารถของซอฟต์แวร์ในการทำหน้าที่ที่จำเป็นภายในข้อกำหนดด้านประสิทธิภาพที่ระบุ
ตามนี้ไม่มีข้อแตกต่างระหว่างข้อบกพร่องและข้อผิดพลาด อย่างไรก็ตามบางคนยืนยันว่าข้อผิดพลาดเป็นข้อผิดพลาดที่พบก่อนปล่อยซอฟต์แวร์ในขณะที่ข้อบกพร่องคือลูกค้าพบ
ฉันไม่สามารถต้านทานการโพสต์ข้อความ "พบข้อผิดพลาดจริงที่เกิดขึ้นเป็นครั้งแรก"
โอ้ที่รัก
ย้อนกลับไปในสมัยก่อน - การทำงานที่ผิดพลาดของคอมพิวเตอร์เกิดจากสิ่งต่าง ๆ ทุกอย่างรวมถึงหนูที่เคี้ยวสายไฟและข้อบกพร่องที่แท้จริง (critters) ในการทำงาน
BUG คำนั้นติดอยู่เป็นคำที่หมายถึงบางสิ่งที่ไม่ทำงานตามที่คาดไว้
BUG ควรพิจารณาว่าเป็นศัพท์แสงหมายถึงข้อบกพร่อง
ข้อบกพร่องเป็นคำที่ถูกต้องทางเทคนิคซึ่งหมายความว่าสิ่งที่ไม่ทำตามที่ควร
ทุกที่ที่เป็นไปได้การใช้ DEFECT แทนที่จะเป็น BUG นั้นมีความหมายแฝงอยู่ว่าเรายอมรับความล้มเหลวของเรา (ข้อบกพร่องของเราการที่เราขาดความเข้าใจในข้อกำหนดของผู้ใช้หรือสิ่งที่เรามองข้ามในการนำไปใช้) "
ใช้ DEFECT
พยายามอย่าใช้คำว่า BUG มันโง่ไม่เกี่ยวข้องประวัติศาสตร์และเรื่องไร้สาระ
จากคำศัพท์มาตรฐาน IEEE ของคำศัพท์วิศวกรรมซอฟต์แวร์ซึ่งอ้างถึงในเนื้อหาวิศวกรรมความรู้ KA สำหรับการทดสอบซอฟต์แวร์และคุณภาพซอฟต์แวร์:
แมลง ดู: ข้อผิดพลาด; ความผิด
ความผิดพลาด (1) ความแตกต่างระหว่างค่าหรือเงื่อนไขที่คำนวณสังเกตหรือวัดได้กับค่าหรือเงื่อนไขที่ถูกต้องตามจริงหรือตามทฤษฎี ตัวอย่างเช่นความแตกต่างของ 30 เมตรระหว่างผลลัพธ์ที่คำนวณและผลลัพธ์ที่ถูกต้อง (2) ขั้นตอนกระบวนการหรือข้อกำหนดของข้อมูลไม่ถูกต้อง ตัวอย่างเช่นคำสั่งที่ไม่ถูกต้องในโปรแกรมคอมพิวเตอร์ (3) ผลลัพธ์ไม่ถูกต้อง ตัวอย่างเช่นผลลัพธ์ที่คำนวณจาก 12 เมื่อผลลัพธ์ที่ถูกต้องคือ 10 (4) การกระทำของมนุษย์ที่สร้างผลลัพธ์ที่ไม่ถูกต้อง ตัวอย่างเช่นการกระทำที่ไม่ถูกต้องในส่วนของโปรแกรมเมอร์หรือผู้ประกอบการ หมายเหตุ: ในขณะที่การใช้คำจำกัดความทั้งสี่มักใช้ความแตกต่างหนึ่งกำหนดคำนิยาม 1 ให้กับคำว่า "ข้อผิดพลาด" คำนิยามที่ 2 กับคำว่า "ความผิด" คำนิยามที่ 3 กับคำว่า "ความล้มเหลว" และคำนิยามที่ 4 กับคำว่า "ผิดพลาด" ดู a2so: ข้อผิดพลาดแบบไดนามิก; ข้อผิดพลาดร้ายแรง; ข้อผิดพลาดของชนพื้นเมือง ข้อผิดพลาดทางความหมาย; ข้อผิดพลาดทางไวยากรณ์ ข้อผิดพลาดคงที่ ข้อผิดพลาดชั่วคราว
ความล้มเหลว การไร้ความสามารถของระบบหรือส่วนประกอบในการปฏิบัติหน้าที่ตามที่ต้องการภายในข้อกำหนดด้านประสิทธิภาพที่ระบุ หมายเหตุ: วินัยการยอมรับข้อบกพร่องจำแนกระหว่างการกระทำของมนุษย์ (ข้อผิดพลาด) การรวม (ฮาร์ดแวร์หรือซอฟต์แวร์ผิด) ผลของความผิดพลาด (ความล้มเหลว) และจำนวนผลลัพธ์ที่ไม่ถูกต้อง (ข้อผิดพลาด) ดูเพิ่มเติม: ความผิดพลาด; ความล้มเหลวขึ้นอยู่กับ; ยกเว้น; โหมดความล้มเหลว อัตราความล้มเหลว ความล้มเหลวอย่างหนัก ความล้มเหลวเริ่มแรก; ความล้มเหลวอิสระ ความล้มเหลวแบบสุ่ม ความล้มเหลวอ่อน; ติดอยู่ล้มเหลว
ความผิด (1) ข้อบกพร่องในอุปกรณ์ฮาร์ดแวร์หรือส่วนประกอบ ตัวอย่างเช่นไฟฟ้าลัดวงจรหรือลวดหัก (2) ขั้นตอนกระบวนการหรือคำจำกัดความของข้อมูลที่ไม่ถูกต้องในโปรแกรมคอมพิวเตอร์ หมายเหตุ: คำจำกัดความนี้ใช้เป็นหลักโดยวินัยการยอมรับข้อบกพร่อง ในการใช้งานทั่วไปคำว่า "ข้อผิดพลาด" และ "ข้อผิดพลาด" ใช้เพื่อแสดงความหมายนี้ ดูเพิ่มเติม: ข้อผิดพลาดที่ไวต่อข้อมูล ความผิดพลาดที่สำคัญของโปรแกรม ความผิดพลาดที่เท่าเทียมกัน; กำบังความผิด; ความผิดพลาดเป็นระยะ
ฉันคิดว่าความหมายของความล้มเหลวนั้นมีความเกี่ยวข้องมากที่สุด ทุกอย่างเริ่มต้นด้วยข้อผิดพลาดไม่ว่าจะเป็นในข้อกำหนดการออกแบบการนำไปใช้หรือกรณีทดสอบ / ขั้นตอน หากข้อผิดพลาดนี้ปรากฏในซอฟต์แวร์มันจะกลายเป็นความผิดพลาด ความล้มเหลวเกิดจากการมีข้อบกพร่องของซอฟต์แวร์ตั้งแต่หนึ่งข้อขึ้นไป
แม้ว่าฉันจะไม่กระตือรือร้นในการนิยามข้อผิดพลาดอย่างเป็นทางการ ฉันชอบคำจำกัดความของ dukeofgaming ในคำตอบของเขามาก แต่คำตอบนี้เป็นคำจำกัดความมาตรฐาน IEEE ของข้อผิดพลาด
คำตอบของแดน McGrathตอกย้ำมันถูกต้อง
บางทีตัวอย่างอาจทำให้ชัดเจนยิ่งขึ้น
ตัวอย่าง: ไคลเอ็นต์ต้องการให้เว็บฟอร์มสามารถบันทึกและปิดหน้าต่างได้
สถานการณ์ # 1: เว็บฟอร์มมีปุ่มบันทึกและอีกปุ่มปิด ผลลัพธ์: ข้อบกพร่องเนื่องจากไคลเอนต์ต้องการให้ปุ่ม 1 บันทึกและปิดหน้าต่าง นักพัฒนาเข้าใจผิดและสร้างแยกต่างหาก เนื่องจากปุ่มทั้งสองดำเนินการตามความต้องการจึงไม่ใช่ข้อบกพร่อง แต่เป็นข้อบกพร่องเนื่องจากไม่เป็นไปตามข้อกำหนดของลูกค้า
สถานการณ์ # 2: เว็บฟอร์มมีปุ่มบันทึกและปิด แต่บันทึกได้ แต่ไม่ปิด ผลลัพธ์: บั๊ก เนื่องจากปุ่มไม่ทำงานตามที่ต้องการ / คาดว่าจะได้ นักพัฒนารู้ว่ามันควรจะสร้างผลลัพธ์นั้น แต่ในที่สุดมันก็ไม่ได้ (อาจมีข้อผิดพลาดในการเขียนโค้ด)
ไม่แน่ใจว่าจะทำให้ชัดเจนขึ้นหรือไม่
p / s: จากจุดยืนนักพัฒนาซอฟต์แวร์ (ครั้งหนึ่งฉันเคยทำ) ข้อบกพร่องและข้อบกพร่องมีความสำคัญพอ ๆ กัน เราจะยังคงแก้ไข
เราพบกับความผิดปกติที่แปลกซึ่งเราจัดหมวดหมู่ภายใต้ข้อบกพร่องและเราพยายามหาสาเหตุและวิธีการแก้ไขอย่างต่อเนื่อง การเลิกใช้งานข้อบกพร่องไม่ได้ทำให้มันเล็กน้อยเมื่อเทียบกับข้อบกพร่อง
ความแตกต่างก็คือคำว่า "บั๊ก" นั้นเป็นเสียงที่มีมนต์ขลัง ราวกับว่าโปรแกรมสุ่มมีบั๊กอยู่ในนั้นหลังจากที่คุณเขียนโปรแกรมเสร็จแล้ว หากมีข้อผิดพลาดแบบสุ่มแสดงว่าคุณไม่ได้ปฏิบัติตามข้อกำหนดและโปรแกรมของคุณมีข้อผิดพลาด
ข้อบกพร่องหมายถึงข้อผิดพลาดที่โปรแกรมไม่สอดคล้องกับข้อกำหนด นี่คือความรุนแรงมากขึ้นและโดยทั่วไปกล่าวว่าข้อผิดพลาดใด ๆเป็นปัญหาใหญ่กับโปรแกรมและนี่หมายความว่าโปรแกรมไม่เหมาะสมที่จะได้รับการปล่อยตัว
ความแตกต่างอยู่ในทัศนคติของโปรแกรมเมอร์ที่ใช้เงื่อนไข มีหลายล้านโปรแกรมที่เปิดตัวพร้อมกับบั๊กและผู้คนก็ใช้ได้ดีเพราะพวกเขายอมรับด้วยเหตุผลว่าบั๊กนั้นเป็นเวทย์มนตร์และสุ่มและทุก ๆ โปรแกรมมีบั๊กอย่างน้อยหนึ่งตัว อย่างไรก็ตามโปรแกรมเมอร์ที่ใช้คำว่า "ข้อบกพร่อง" อาจรู้สึกอึดอัดกับการปล่อยโปรแกรมที่มีข้อบกพร่องเนื่องจากคำนั้นหมายถึงความรุนแรงที่มากขึ้น
ความหมายของการเลือกหนึ่งคำเหนือคำอื่นส่งผลกระทบต่อเราทุกวัน
ตามที่เชื่อถือได้: แนวคิดพื้นฐานและคำศัพท์ :
ความล้มเหลวของระบบเกิดขึ้นเมื่อบริการที่ส่งมอบเบี่ยงเบนจากการทำให้ฟังก์ชันของระบบสมบูรณ์ขึ้นซึ่งเป็นสิ่งที่ระบบตั้งใจไว้ ข้อผิดพลาดก็คือส่วนหนึ่งของรัฐระบบซึ่งมีแนวโน้มที่จะนำไปสู่ความล้มเหลวต่อไปนี้: ข้อผิดพลาดที่มีผลต่อการบริการที่เป็นข้อบ่งชี้ว่าเป็นความล้มเหลวที่เกิดขึ้นหรือเกิดขึ้น สาเหตุที่ตัดหรือสมมติฐานข้อผิดพลาดเป็นความผิด
ฉันเข้าใจข้อบกพร่องเป็นเพียงชื่ออื่นสำหรับความผิด
บั๊กทำให้เกิดความสับสนและสามารถแสดงถึงความผิดพลาดหรือความล้มเหลวขึ้นอยู่กับบริบท
โปรดทราบว่าไม่มีการกล่าวถึงข้อมูลจำเพาะ: แม้แต่ข้อมูลจำเพาะอาจมีข้อผิดพลาด
นี่คือสิ่งที่ฉันทำก่อนหน้านี้สำหรับนายจ้าง Q-LEAP จากคำศัพท์ ISTQB และฉันก็ตรวจสอบคำศัพท์ IEEE ด้วย สนุก.
ข้อผิดพลาดและข้อบกพร่อง? เหมือนกันแม้ว่าจะมีการสนทนาที่ไม่มีที่สิ้นสุดเกี่ยวกับเรื่องนี้ เรามีสิ่งอื่น ๆ ที่น่าเป็นห่วงชีวิตมีความซับซ้อนเพียงพออยู่แล้วเป็นต้น
ตัวอย่างของวิธีการคำที่ใช้ในป่าจาก"Google วิธีการทดสอบซอฟต์แวร์"พี 113. เปิดบทความ "ซอฟต์แวร์ IEEE" และใช้วิธีเดียวกัน อันที่จริงไม่มีใครพบคำว่า "บกพร่อง" ในชีวิตจริง
ชีวิตของบั๊ก
รายงานข้อบกพร่องและข้อบกพร่องเป็นสิ่งประดิษฐ์หนึ่งที่ผู้ทดสอบทุกคนเข้าใจ การค้นหาข้อบกพร่อง, การดักจับข้อผิดพลาด, การแก้ไขข้อบกพร่องและการถดถอยข้อบกพร่องคือการเต้นของหัวใจและเวิร์กโฟลว์สำหรับคุณภาพของซอฟต์แวร์ นี่เป็นส่วนหนึ่งของการทดสอบที่เป็นแบบแผนที่สุดของ Google แต่ก็ยังมีความเบี่ยงเบนที่น่าสนใจอยู่บ้าง สำหรับส่วนนี้เราไม่สนใจข้อบกพร่องที่ยื่นเพื่อติดตามรายการงานและใช้คำเพื่อระบุรหัสที่ใช้งานไม่ได้จริง เช่นข้อบกพร่องมักจะเป็นตัวแทนเวิร์กโฟลว์ชั่วโมงต่อชั่วโมงและวันต่อวันสำหรับทีมงานวิศวกรรม
บั๊กเกิดขึ้น ทุกคนที่ Google ค้นพบข้อบกพร่องแล้ว ผู้จัดการผลิตภัณฑ์ไฟล์บั๊กเมื่อพบปัญหาในบิลด์ก่อนหน้าซึ่งแตกต่างกันไปตามข้อกำหนด / ความคิด นักพัฒนาไฟล์บั๊กเมื่อพวกเขารู้ว่าพวกเขาบังเอิญตรวจสอบปัญหาหรือพบปัญหาที่อื่นในรหัสเบสหรือในขณะที่ทดลองผลิตภัณฑ์ของ Google บั๊กมาจากฟิลด์จากผู้ทดสอบที่มาจากฝูงชนการทดสอบผู้ขายภายนอกและยื่นโดยผู้จัดการชุมชนเพื่อติดตาม Google Groups เฉพาะผลิตภัณฑ์ แอพเวอร์ชันภายในหลายแห่งมีวิธีการคลิกเดียวในการจัดเก็บบั๊กอย่างรวดเร็วเช่น Google maps และบางครั้งโปรแกรมซอฟต์แวร์ก็สร้างบั๊กผ่านทาง API
นอกเหนือจากข้อผิดพลาดเฉพาะ / งาน / ตั๋ว / ข้อบกพร่อง / ปัญหา / อินสแตนซ์ของระบบติดตามอะไรก็ตามคำเหล่านี้ไม่มีความหมายที่แน่นอนใด ๆ และดังนั้นการพูดถึงความแตกต่างระหว่างพวกเขาจะไม่มีจุดหมาย เมื่อคุณชำระเงินเวิร์กโฟลว์ของคุณคุณควรตัดสินศัพท์และให้คำอธิบาย
ในสภาพแวดล้อมปัจจุบันของฉัน "ข้อบกพร่อง" เป็นรายการใด ๆ ในจิรา ดูเหมือนว่า Jira จะใช้คำว่า "ปัญหา" เราอาจได้รับมรดกมาจากระบบก่อนหน้านี้บางระบบ "Bug" เป็นประเภทของปัญหาเมื่อบางสิ่งบางอย่างไม่ทำงานตามที่คาดไว้และอธิบายไว้ในเอกสาร "คำขอคุณลักษณะ" เมื่อมีบางสิ่งทำงานได้ตามที่คาดหวัง แต่ต้องการการย้ายตำแหน่ง (สามารถเห็นได้ชัดและสำคัญ แต่หากอธิบายพฤติกรรมปัจจุบันแล้วยังคงเป็นคำขอคุณลักษณะ) มีหลายประเภทมากขึ้น แต่ 2 คนนั้นถูกใช้โดยคนที่อยู่นอกทีมพัฒนาเพื่อถามอะไรบางอย่างจากมัน
หากคุณกำลังเลือกชื่อสำหรับประเภทของปัญหาเสียง "บั๊ก" และ "ข้อบกพร่อง" จะคล้ายกับฉัน ความแตกต่างระหว่างพวกเขาเป็นโวหาร เนื่องจากภาษาอังกฤษไม่ใช่ภาษาแม่ของฉันฉันไม่สามารถเห็นได้มากนักและไม่แน่ใจว่าสิ่งที่ฉันเห็นนั้นถูกต้องหรือไม่