เทคนิคการทดสอบซอฟต์แวร์หรือหมวดหมู่ [ปิด]


16

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


8
ส่วนใดของสิ่งนี้ทำให้เกิดความสับสนหรือไม่สมบูรณ์ en.wikipedia.org/wiki/Software_testing
S.Lott

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

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

คำตอบ:


38

ประเภทกว้าง ๆ ในใจของฉันจะเป็น:

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

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

การทดสอบกล่องสีเทาเป็นลูกผสมของสองรายการก่อนหน้า

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

การจำแนกประเภททั่วไปของการทดสอบจะเป็น:

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

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

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

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

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

การทดสอบตามหน้าที่เป็นการทดสอบทุกประเภทตามข้อกำหนดการใช้งานของซอฟต์แวร์ภายใต้การทดสอบ นี่เป็นการทดสอบกล่องดำเสมอ

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

ทดสอบขับเคลื่อนการพัฒนาเป็นวิธีการและไม่ได้หมายถึงเฉพาะชนิดของการทดสอบ แต่ที่ทดสอบก่อนที่จะเขียนรหัสเพื่อให้การทดสอบเป็นสิ่งที่ผลักดันการพัฒนามากกว่าพฤติกรรม , โดเมนหรือคุณลักษณะเป็นตัวอย่างอื่น ๆ บางอย่างในแง่ของ กระบวนการ.

การบูรณาการอย่างต่อเนื่องเป็นการฝึกการทดสอบบางอย่างเช่นการทดสอบหน่วยการรวมและการถดถอยอย่างสม่ำเสมอเพื่อที่ว่าหากมีการเปลี่ยนแปลงการทดสอบจะถูกจับได้เร็วที่สุด


5
+1 ... และน่าเสียดายที่ยังคงมีการทดสอบด้วยตนเองแม้หลังจากนั้นทั้งหมด
Steven Evers

2
และการทดสอบ Stres - ทุกเซสชันที่เป็นไปได้ทดสอบรูปแบบเดียวกันในเวลาเดียวกันและผ่านสถานการณ์การทดสอบอย่างต่อเนื่องซึ่งมีบางส่วนที่เป็นส่วนหนึ่งของ UAT, btw +1
mKorbel

1
คุณไม่ได้ทำการทดสอบการครอบคลุม / สาขา นอกจากนี้การทำงานภายใต้ระบบการดูหน่วยความจำบางประเภทเช่น malloc "ไฟฟ้ารั้ว" หรือ Valgrind?
Bruce Ediger

1
@ Bruce Ediger: การครอบคลุมเป็นสถิติสำหรับการทดสอบกล่องสีขาวไม่ใช่วิธีการทดสอบตัวเองและเครื่องมือที่คุณอธิบายนั้นใช้สำหรับการทดสอบแบบสมบูรณ์
Steven Evers

ฉันต้องแตกต่างกันใน "เครื่องมือ ... สำหรับการทดสอบที่สมบูรณ์" ในบางภาษา (C หรือ C ++) ที่ใช้การทดสอบหน่วยจำนวนมากทั้งหมดใน valgrind จะพบข้อบกพร่องที่ไม่มีการทดสอบประเภทอื่น ๆ ที่ระบุไว้ข้างต้นจะพบ Valgrind เป็นเครื่องมือดีบั๊ก แต่การรันการทดสอบในโปรแกรม valgrinded นั้นจำเป็นมาก
Bruce Ediger

4

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

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


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