การตรวจสอบและการตรวจสอบเป็นส่วนหนึ่งของกระบวนการทดสอบหรือไม่


9

จากแหล่งข้อมูลหลายแห่งฉันไม่เชื่อว่าคำจำกัดความง่ายๆที่เป้าหมายของการทดสอบคือการค้นหาข้อบกพร่องให้ได้มากที่สุด - เราทำการทดสอบเพื่อให้แน่ใจว่ามันใช้งานได้หรือไม่ เช่น followint เป็นเป้าหมายของการทดสอบแบบฟอร์ม ISTQB:

  1. ตรวจสอบว่า (ผลิตภัณฑ์ซอฟต์แวร์) เป็นไปตามข้อกำหนดที่ระบุไว้ (ฉันคิดว่าเป็นของจริง)

  2. แสดงให้เห็นว่า (ผลิตภัณฑ์ซอฟต์แวร์) เหมาะสำหรับวัตถุประสงค์ (ฉันคิดว่าเป็นการตรวจสอบ)

  3. ตรวจหาข้อบกพร่อง

    ฉันยอมรับว่าการทดสอบคือการตรวจสอบความถูกต้องและการตรวจจับข้อบกพร่อง ถูกต้องหรือไม่


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

ตามการยืนยันการตรวจสอบรับรองว่าเป็นไปตามข้อกำหนด จริงๆแล้วหนังสือกำหนดการทดสอบว่าเป็นกระบวนการของการวัดคุณภาพของซอฟต์แวร์ ดังนั้นหากคุณกำลังตรวจสอบว่าระบบทำงาน (เป็นบวก) โดยมีความตั้งใจที่จะดูว่ามันใช้งานได้หรือไม่นั้นไม่ใช่การทดสอบเพราะคุณไม่ได้มองหาข้อบกพร่อง? :) ในวิกิพีเดีย: เทคนิคการทดสอบรวมถึง แต่ไม่ จำกัด เพียงกระบวนการของการดำเนินการโปรแกรมหรือแอปพลิเคชันโดยมีจุดประสงค์ในการค้นหาข้อบกพร่องของซอฟต์แวร์
John V

ฉันคิดว่าวิธีที่ดีที่สุดในการระบุขอบเขตของการทดสอบคำคือคิดถึงการทดสอบสมมติฐานในกรณีนี้คุณกำลังพยายามทดสอบว่าไม่มีการเข้าใจผิดหรือความไม่ถูกต้องในสมมติฐานนี้ไม่เหมือนกับการตรวจสอบว่ามีประโยชน์ หรือการตรวจสอบการบังคับใช้มันเป็นเพียงกรณีของการระบุขอบเขตพฤติกรรมทั้งหมดโดยไม่คำนึงถึงวัตถุประสงค์
จิมมี่ฮอฟฟา

มีโบนัส "คำถามที่ดี" :)
แอนดรูว์

คำตอบ:


1

ฉันคิดว่าคุณเข้าใจถูกต้อง

  1. การตรวจสอบและการตรวจสอบความถูกต้องเป็นสิ่งที่แตกต่างกันและในความเป็นจริงแล้วค่อนข้างชัดเจน แม้ว่าฉันไม่ชอบเอกสารมาก ISO 9000ff มีความเกี่ยวข้องอย่างมากกับ QA และกำหนดการตรวจสอบว่าเป็นการเปรียบเทียบผลิตภัณฑ์กับข้อกำหนดและการตรวจสอบความถูกต้องเป็นการตรวจสอบว่าเหมาะสมกับความต้องการของลูกค้า / ผู้ใช้จริงหรือไม่ .

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

  3. บนพื้นฐานทางทฤษฎีฉันคิดว่าใครสามารถโต้แย้งสิ่งที่ครอบคลุมโดยสองคนแรกไม่ใช่ข้อผิดพลาดและดังนั้นการค้นหาข้อบกพร่องเป็นเป้าหมายที่แยกต่างหากไม่สมเหตุสมผล แต่ฉันคิดว่ามีบางสิ่งที่คุณไม่สามารถยืนยันหรือตรวจสอบได้จริงๆ ตัวอย่างเช่นความปลอดภัย: คุณจะตรวจสอบหรือตรวจสอบว่าระบบซอฟต์แวร์ปลอดภัยจากการโจมตีได้อย่างไร คุณพยายามค้นหาช่องโหว่แทน การค้นหานี้ไม่ได้ตรวจสอบหรือตรวจสอบความถูกต้องหากตรวจพบปัญหา แต่ไม่พบข้อบกพร่อง


ปัญหาคือหลายแหล่งกล่าวถึงว่าการตรวจสอบเป็นแบบคงที่เท่านั้นในขณะที่การตรวจสอบแบบไดนามิก มันสับสนมาก อะไรจะเป็นการทดสอบการทำงาน? ผมจะบอกว่า verificiation แบบไดนามิกของ ..
จอห์นวี

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

เช่น ISO 12207 จะ จำกัด การทดสอบเพื่อให้ผ่านการตรวจสอบเท่านั้น
John V

3

จากวิกิพีเดีย: "... อีกนัยหนึ่งการตรวจสอบความถูกต้องทำให้มั่นใจได้ว่าผลิตภัณฑ์นั้นตรงตามความต้องการของผู้ใช้และข้อมูลจำเพาะนั้นถูกต้องตั้งแต่แรกในขณะที่การตรวจสอบรับรองว่าผลิตภัณฑ์นั้นถูกสร้างขึ้นตามข้อกำหนดและข้อกำหนดการออกแบบ การตรวจสอบรับรองว่า "คุณสร้างสิ่งที่ถูกต้อง" การตรวจสอบรับรองว่า "คุณสร้างถูกต้อง" การตรวจสอบยืนยันว่าผลิตภัณฑ์ตามที่ให้ไว้

คุณไม่สามารถทดสอบความต้องการของผู้ใช้และตรวจสอบว่าข้อกำหนดถูกต้องตามรหัสหรือไม่ ดังนั้นการตรวจสอบจึงไม่ได้เกิดขึ้นจากการทดสอบ

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


ฉันจะไม่เห็นด้วย - การทดสอบไม่ได้เป็นเพียงการทดสอบรหัสเท่านั้นยังมีการทดสอบเอกสาร ฯลฯ BTW วิกิพีเดียยังกล่าวว่า: การทดสอบซอฟต์แวร์สามารถระบุได้ว่าเป็นกระบวนการตรวจสอบและยืนยันว่าโปรแกรมซอฟต์แวร์ / แอปพลิเคชัน / ผลิตภัณฑ์ .. โปรแกรมโดย executioan และการลงทุนไม่ว่าจะเป็นสิ่งที่ผู้ใช้ต้องการหรือไม่
John V

จริงๆแล้วคุณพูดถูก ขั้นตอนการทดสอบยังรวมถึงการยอมรับการทดสอบ แต่ฉันพูดคุยเกี่ยวกับการทดสอบหน่วยการรวมระบบและ หากเราคิดถึงกระบวนการทดสอบโดยรวมการตรวจสอบและการตรวจสอบความถูกต้องจะกระทำโดยการทดสอบ
Mert Akcakaya

1

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

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


1

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

การทดสอบเป็นหนึ่งในเทคนิคหลายวิธีในการตรวจสอบและยืนยันความถูกต้องไม่ใช่วิธีอื่น การตรวจสอบรหัสเป็นอีกการตรวจสอบอย่างเป็นทางการพร้อมหลักฐานทางคณิตศาสตร์อีกข้อหนึ่ง

อย่างไรก็ตามการทดสอบควรดำเนินการโดยมีวัตถุประสงค์เพื่อค้นหาข้อบกพร่องไม่ใช่เพื่อตรวจสอบการปฏิบัติตามข้อกำหนด

ความแตกต่างที่สำคัญอยู่ในใจของผู้ทดสอบ มันง่ายกว่ามากในการสร้างเคสทดสอบซึ่งแสดงว่าซอฟต์แวร์ทำงานได้ตามที่ต้องการ (ตรวจสอบความสอดคล้อง) กว่าสร้างเคสทดสอบซึ่งแสดงว่าซอฟต์แวร์ล้มเหลว (ค้นหาข้อบกพร่อง)

ผู้ทดสอบที่ยอดเยี่ยมมีความหลงใหลในการทำลายซอฟต์แวร์ไม่ใช่การออกกำลังกายอย่างปลอดภัย


ขอบคุณ แต่เราไม่ได้ทดสอบเพื่อแสดงให้เห็นว่ามีคุณสมบัติตรงตามข้อกำหนดหรือไม่ เราตรวจสอบให้แน่ใจว่าซอฟต์แวร์ใช้งานได้ (ตรงตามข้อกำหนด) จากนั้นเราพยายามค้นหาข้อบกพร่อง ดังนั้นมันไม่เพียงเกี่ยวกับการค้นหาข้อบกพร่อง ฉันจำหนังสือที่บอกว่าจุดประสงค์หลักของการทดสอบคือการวัดคุณภาพไม่ใช่ค้นหาข้อบกพร่อง สำหรับจุดแรกของคุณการตรวจสอบโค้ดการพิสูจน์ทางคณิตศาสตร์และอื่น ๆ นั้นเป็นการทดสอบด้วยและเรียกว่าสแตติก
John V

ข้อบกพร่องหรือข้อบกพร่องมีอยู่โดยตรงกันข้ามกับข้อกำหนด ลักษณะของงานนั้นเหมือนกัน เป็นเพียงความแตกต่างในวิธีคิดของผู้ทดสอบเพื่อปรับปรุงประสิทธิภาพ สำหรับประเด็นแรกของฉันมีคำจำกัดความมากมายของข้อกำหนดทั้งหมดที่ใช้ในการตรวจสอบความถูกต้องของซอฟต์แวร์ (และขั้นตอนแรกเมื่อเข้าร่วมทีมคือการได้รับภาษาท้องถิ่นในทีมนั้น) แต่คนส่วนใหญ่ยอมรับว่าการทดสอบนั้นเป็นเพียง เทคนิค. การทดสอบแบบสแตติกนั้นเป็นแบบโอเพ่นซอร์สหรืออ้างอิงถึงเทคนิคที่แตกต่างกันซึ่งอยู่ไม่ไกลจากการตรวจสอบซึ่งรหัสจะถูกดำเนินการในใจของ "ผู้ทดสอบ" และไม่ใช่คอมพิวเตอร์
mouviciel

mouviciel: oxymoron? ฉันไม่คิดอย่างนั้นการทดสอบแบบคงที่หมายถึงการตรวจสอบข้อบกพร่องที่เป็นไปได้โดยไม่ต้องดำเนินการซึ่งเป็นไปได้อย่างเต็มที่ (ปัญหาความต้องการข้อบกพร่องการออกแบบ .. ) ไม่เหมือนกันในการตรวจสอบข้อกำหนดและตรวจสอบข้อบกพร่อง: คุณควรทดสอบว่าเขตข้อมูลสามารถเก็บค่า int32 ได้ นั่นเป็นการทดสอบว่าใช้งานได้จริง จากนั้นคุณสามารถพยายามที่จะป้อนค่าที่สูงขึ้นนั่นคือการทดสอบสำหรับข้อบกพร่อง ..
จอห์นวี

1

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

ดังนั้นสำหรับส่วนนั้นของคำถามการค้นหาข้อบกพร่องและการตรวจสอบอาจเป็นเพียงสองด้านของกระบวนการเดียวกัน:

  • การทดสอบล้มเหลว: พบข้อบกพร่อง

  • การทดสอบผ่าน: การตรวจสอบเสร็จสิ้น (อย่างน้อยในระดับหนึ่งหากคุณมีการทดสอบที่เพียงพอและเหมาะสม)

การตรวจสอบความถูกต้อง: ตามที่ @Mert ระบุไว้การตรวจสอบสามารถทำได้โดยการทดสอบการยอมรับ แต่ไม่ใช่โดยการทดสอบรูปแบบอื่น ดังนั้นการทดสอบโดยทั่วไปทำให้ไม่มีการตรวจสอบความถูกต้องเฉพาะเมื่อเสร็จสิ้นการทดสอบการยอมรับโดยผู้ใช้ที่มีศักยภาพบางราย


0

ทุกอย่างขึ้นอยู่กับคำจำกัดความของ "การยืนยัน" ของคุณ ตัวอย่างเช่นการตรวจสอบอย่างเป็นทางการมักจะไม่ใช่สิ่งที่ทำโดยทีมงาน QA แต่เป็นความรับผิดชอบของนักพัฒนาแทน เกือบจะไม่มีใครทำการตรวจสอบอย่างเป็นทางการเพราะค่าใช้จ่ายสูงที่เกี่ยวข้องกับมัน (ช่องว่างความรู้และทรัพยากรที่จำเป็น)


0

การทดสอบซอฟต์แวร์ไม่เหมือนกับ QA คุณพูดถูก การทดสอบซอฟต์แวร์โดยรวมประกอบด้วยหลายขั้นตอน (ควันหน่วยการถดถอยการรวมการยอมรับของผู้ใช้ ฯลฯ ) ในตัวของมันเอง

ดังนั้นเพื่อให้มั่นใจว่าซอฟต์แวร์ที่ทำงานตามข้อกำหนดนั้นเป็นเป้าหมายของ QA (ผู้เชี่ยวชาญด้านการประกันคุณภาพ - aka เคยถูกเรียกง่ายๆว่าผู้ทดสอบเมื่อหลายปีก่อน) อย่างไรก็ตามมันก็ไม่ได้เป็นเพียงการทดสอบ QA ทำให้มั่นใจได้ว่ามีกระบวนการที่เหมาะสมในการตรวจสอบคุณภาพของผลิตภัณฑ์ที่มีปัญหาหรืออย่างน้อยก็เข้าสู่ขั้นตอนการออกแบบของโครงการ

ดังนั้นคุณควรคาดหวังว่า QA ของคุณจะตรวจสอบแอปพลิเคชันกับชุดของข้อกำหนดและไม่เพียงแค่พยายามทดสอบโดยทำลายซอฟต์แวร์และค้นหาข้อบกพร่อง


QA ไม่ได้เป็นเพียงการทดสอบ ข้อเสนอ QA กับคุณภาพของกระบวนการพัฒนา ..
จอห์นวี

QA ตรวจสอบใบสมัครกับชุดของข้อกำหนด
Yusubov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.