คำถามติดแท็ก testing

การตรวจสอบพฤติกรรมของระบบซอฟต์แวร์กับพฤติกรรมที่คาดหวังของระบบนั้น

21
“ มันทำงานเมื่อวานนี้ฉันสาบาน!” คุณจะทำอย่างไร [ปิด]
เมื่อคุณมาถึงในตอนเช้าคุณจะพบว่าซอฟต์แวร์ของคุณไม่ทำงานอีกต่อไปแม้ว่าจะเป็นตอนที่คุณออกจากตอนเย็นเมื่อวานนี้ก็ตาม คุณทำอะไร? คุณตรวจสอบอะไรก่อน คุณจะทำอย่างไรเพื่อหยุดความโกรธและเริ่มแก้ไขปัญหาของคุณ? คุณโทษเพื่อนร่วมงานของคุณและไปที่พวกเขาโดยตรง? จะทำอะไรได้บ้างเพื่อหลีกเลี่ยงการตกอยู่ในสถานการณ์เช่นนี้?

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

8
เป็นการดีหรือไม่ที่ผู้ทดสอบกำลังแข่งขันกันเพื่อดูว่าใครเป็นผู้เปิดบั๊กมากกว่านี้
ฉันเป็นนักพัฒนาซอฟต์แวร์ มีทีมทดสอบที่ติดตามและดำเนินการกรณีทดสอบที่เขียนโดยนักวิเคราะห์ แต่ยังดำเนินการทดสอบเชิงสำรวจ ดูเหมือนว่าผู้ทดสอบได้ทำการแข่งขันกันเพื่อดูว่าใครเปิดบั๊กมากกว่านี้และฉันสังเกตว่าคุณภาพของรายงานบั๊กลดลง แทนที่จะทดสอบการทำงานและการรายงานข้อผิดพลาดที่เกี่ยวข้องกับการทำงานของซอฟต์แวร์ผู้ทดสอบได้ส่งข้อบกพร่องเกี่ยวกับการปรับปรุงหน้าจอการใช้งานหรือข้อบกพร่องที่โง่ เป็นสิ่งที่ดีสำหรับโครงการหรือไม่ ถ้าไม่ฉันจะ (ในฐานะนักพัฒนาซอฟต์แวร์) ได้อย่างไรลองเปลี่ยนความคิดและทัศนคติของทีมทดสอบ ปัญหาอีกประการหนึ่งคือเนื่องจากกำหนดเวลาสิ้นสุดและไม่สามารถเปลี่ยนแปลงได้ดังนั้นเมื่อใกล้ถึงกำหนดผู้ทดสอบจะต้องตรวจสอบเพื่อให้เสร็จสิ้นกรณีทดสอบและจะทำให้คุณภาพของการทดสอบลดลง สิ่งนี้จะทำให้เกิดบั๊กที่ถูกกฎหมายในผลิตภัณฑ์ขั้นสุดท้ายที่ลูกค้าได้รับ OBS: การแข่งขันครั้งนี้ไม่ใช่การฝึกฝนของ บริษัท ! เป็นการแข่งขันระหว่างผู้ทดสอบเท่านั้นที่จัดโดยพวกเขาและไม่มีรางวัลใด ๆ

6
การทดสอบสภาพการแข่งขันแบบมัลติเธรด
อ่านความคิดเห็นต่อคำตอบนี้โดยเฉพาะ: เพียงเพราะคุณไม่สามารถเขียนการทดสอบไม่ได้หมายความว่ามันจะไม่พัง พฤติกรรมที่ไม่ได้กำหนดซึ่งมักจะเกิดขึ้นในการทำงานตามที่คาดไว้ (C และ C ++ เต็มไปด้วยนั้น) สภาพการแข่งขันการจัดเรียงใหม่ที่อาจเกิดขึ้นเนื่องจากรุ่นหน่วยความจำที่อ่อนแอ ... - CodesInChaos 7 ชั่วโมงที่ผ่านมา @CodesInChaos หากไม่สามารถทำซ้ำรหัสที่เขียนไปยัง 'แก้ไข' ไม่สามารถทดสอบได้เช่นกัน และการใส่รหัสที่ยังไม่ได้ทดสอบเข้าสู่การถ่ายทอดสดเป็นอาชญากรรมที่แย่กว่าในความคิดของฉัน - RhysW 5 ชั่วโมงที่แล้ว ... ฉันสงสัยหรือไม่ว่ามีวิธีการทั่วไปที่ดีในการทำให้เกิดปัญหาการผลิตอย่างต่อเนื่องไม่บ่อยนักซึ่งเกิดจากสภาพการแข่งขันในกรณีทดสอบ

11
มีการใช้ซอฟต์แวร์ในระบบที่มีความสำคัญต่อชีวิตหรือความตายอย่างไร
ตัวอย่างเช่นเครื่องบินเป็นเว็บไซต์ที่เป็นระบบที่ระบบล้มเหลวในบางระบบไม่สามารถยอมรับได้อย่างสมบูรณ์เนื่องจากข้อผิดพลาดในเช่นการตรวจสอบเที่ยวบินอาจทำให้นักบินทำงานผิดปกติและดำน้ำ เห็นได้ชัดว่าสิ่งนี้ไม่ได้เกิดขึ้นเนื่องจากวิศวกรที่ยอดเยี่ยมของโบอิ้งและแอร์บัสมีการตรวจสอบในระบบอัตโนมัติเพื่อให้แน่ใจว่าการตัดสินใจดำน้ำนั้นเป็นวิธีที่ยอมรับและปลอดภัยอย่างสมบูรณ์แบบ หรือบางทีคอมพิวเตอร์ขัดข้องและนักบินในเครื่องบิน fly-by-wire รุ่นใหม่ไม่สามารถทำการบินได้อีกต่อไป แน่นอนว่ามีขั้นตอนความปลอดภัยต่าง ๆ และระบบสำรองซ้ำซ้อนในระบบเหล่านี้เพื่อป้องกันความผิดพลาด (ทั้งซอฟต์แวร์และเครื่องบิน) อย่างไรก็ตามในทางกลับกันมันค่อนข้างชัดเจนว่าซอฟต์แวร์ไม่สมบูรณ์ - ทั้งโอเพ่นซอร์สและซอฟต์แวร์โอเพนซอร์ซทำผิดพลาดเป็นประจำและมีเพียงโปรแกรม "Hello World" ที่ง่ายที่สุดเท่านั้นที่จะไม่ล้มเหลว วิศวกรที่ออกแบบระบบซอฟต์แวร์ในอุตสาหกรรมเกี่ยวกับการบินการแพทย์และอื่น ๆ ที่มีชีวิตหรือความตายจะจัดการทดสอบซอฟต์แวร์ของตนอย่างไรเพื่อไม่ให้ล้มเหลว (และหากล้มเหลวอย่างน้อยก็ล้มเหลวอย่างงดงาม) ฉันหวังเป็นอย่างยิ่งว่าคุณจะไม่ได้ไป: "โอ้ฉันทำงานให้กับโบอิ้ง / แอร์บัส / (บริษัท อื่น ๆ ) และมันไม่ได้! ขอให้สนุกในเที่ยวบิน / โรงพยาบาลต่อไปของคุณ"
51 testing 

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

15
เกือบทุกข้อบกพร่องที่รายงานเป็นข้อบกพร่องที่มีลำดับความสำคัญสูง [ปิด]
ฉันสังเกตเห็นรูปแบบในขณะที่ทำงานกับโครงการซอฟต์แวร์ต่าง ๆ : ข้อบกพร่องส่วนใหญ่ที่รายงานมีความสำคัญสูง / สูงมาก ฉันถามเพื่อนร่วมงานบางคนเกี่ยวกับสาเหตุที่อาจเกิดขึ้นและพวกเขากล่าวว่าหากข้อผิดพลาดไม่ได้ระดับความสำคัญนั้นมันหายากมากที่ Bug ได้รับความสนใจจากนักพัฒนาซึ่งทำให้รู้สึกจริง ดังนั้นฉันอยากรู้ว่าปัญหานี้เป็นเรื่องปกติหรือไม่ถ้าฉันโชคร้าย ฉันทำการค้นหาโดย Google อย่างรวดเร็วและพบว่าบางทีมใช้แนวทางการรายงานข้อผิดพลาดหรือมีทีม "Bug Triage" แยกต่างหาก หากคุณเผชิญและแก้ไขปัญหานี้อะไรคือวิธีการที่เหมาะกับคุณ คำถามนี้โดยเฉพาะเกี่ยวกับปัญหา "อัตราเงินเฟ้อสำคัญ": หากคุณเผชิญกับสถานการณ์และสิ่งที่ meassures ส่งผลให้เกิดปัญหานี้

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

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

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

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

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

8
การทดสอบเพื่อการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ (TDD) เป็นการทดสอบแบบหน่วยเสมอหรือไม่
ฉันเข้าใจการพัฒนาโดยใช้การทดสอบจนคุณได้รับอนุญาตให้เขียนโค้ดที่มีประสิทธิผลเมื่อคุณมีการทดสอบหน่วยที่ล้มเหลว (สีแดง) จากนี้ฉันมีคำถามว่าวิธีการทดสอบที่ขับเคลื่อนด้วยสามารถนำไปใช้กับการทดสอบรูปแบบอื่น ๆ
41 testing  tdd 

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

9
ทารกเป็นขั้นตอนลูกน้อยของคุณใน TDD อย่างไร
วันนี้เรากำลังฝึกอบรม TDD และพบประเด็นต่อไปนี้ของความเข้าใจผิด งานสำหรับอินพุต "1,2" ผลรวมของตัวเลขซึ่งคือ 3 สิ่งที่ฉันเขียน (ใน C #) คือ: numbers = input.Split(','); return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct แต่คนอื่นชอบที่จะทำอย่างอื่น ก่อนอื่นสำหรับการป้อน "1,2" พวกเขาได้เพิ่มรหัสต่อไปนี้: if (input == "1,2") return 3; จากนั้นพวกเขาแนะนำการทดสอบอีกหนึ่งครั้งสำหรับอินพุต "4,5" และการใช้งานที่เปลี่ยนแปลง: if (input == "1,2") return 3; else if …
37 testing  tdd 

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