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

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

11
ทำไมการใช้ System.out.println () แย่มาก? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา แน่นอนว่าเป็นการดีมากที่จะใช้กรอบการบันทึกสำหรับข้อความแสดงข้อผิดพลาดหรือคำเตือน แต่บางครั้งฉันใช้ System.out.println () ถ้าฉันต้องการลองสิ่งใหม่ ๆ ในเวลาอันสั้น การใช้ System.out.println () นั้นแย่มากจริง ๆ หรือไม่สำหรับการทดสอบอย่างรวดเร็ว?

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

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

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

3
วิธีทดสอบ data access layer
ฉันมีวิธี DAO ที่ใช้ Spring สำหรับการเข้าถึง JDBC มันคำนวณอัตราความสำเร็จของผู้ขายในการขายสินค้า นี่คือรหัส: public BigDecimal getSellingSuccessRate(long seller_id) { String sql = "SELECT SUM(IF(sold_price IS NOT NULL, 1, 0))/SUM(1) FROM transaction WHERE seller_id = ?"; Object[] args = {seller_id}; return getJdbcTemplate().queryForObject(sql, args, BigDecimal.class); } ฉันควรจะทดสอบวิธีนี้หรือวิธี DAO กับ JUnit อย่างไร แนวทางปฏิบัติที่ดีที่สุดในการทดสอบตรรกะการเข้าถึงข้อมูลคืออะไร ฉันคิดว่าจะทดสอบกับฐานข้อมูลแบบฝังที่โหลดด้วยข้อมูลบางส่วน แต่เราไม่ควรทำการทดสอบการรวมที่คล้ายกับสภาพแวดล้อมการผลิตในแง่ของ RDBMS และสคีมาหรือไม่

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

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

9
โปรแกรมเมอร์ควรช่วยผู้ทดสอบในการออกแบบการทดสอบหรือไม่?
โปรแกรมเมอร์ควรช่วยผู้ทดสอบมากน้อยเพียงใดในการออกแบบการทดสอบ ฉันไม่คิดว่าพวกเขาจะช่วยได้เลย ความกังวลของฉันคือถ้าพวกเขาช่วยทดสอบในการออกแบบการทดสอบสำหรับรหัสของพวกเขาพวกเขาจะ 'ติด' ผู้ทดสอบด้วยอคติและจุดบอดของรหัสนั้น ฉันรู้สึกว่าความต้องการนั้นเพียงพอสำหรับการให้ข้อมูลที่จำเป็นสำหรับผู้ทดสอบเพื่อสร้างแบบทดสอบ หากมีบางส่วนของการนำไปใช้งานที่โปรแกรมเมอร์พบว่าน่าเป็นห่วงฉันคิดว่าเป็นหน้าที่ของพวกเขาที่จะใช้การทดสอบหน่วยเพื่อทดสอบส่วนนั้นหรือแม้กระทั่งทำการทดสอบระบบนอกระบบของตนเองเพื่อทดสอบส่วนนั้น ไม่ใช่ทุกคนที่ฉันรู้ว่าเห็นด้วยกับเรื่องนี้ (และฉันเข้าใจบางประเด็นของพวกเขาในระดับหนึ่ง) คนอื่นคิดอย่างไรกับเรื่องนี้ สิ่งนี้ถูกกล่าวถึงในวรรณกรรมหรือไม่?
17 team  testing 

7
เป็นความคิดที่ดีหรือไม่ที่จะเขียนกรณีทดสอบที่เป็นไปได้ทั้งหมดหลังจากเปลี่ยนทีมเป็น TDD เพื่อให้ได้ความครอบคลุมที่สมบูรณ์
สมมติว่าเรามีแอปพลิเคชันระดับองค์กรขนาดใหญ่โดยไม่มีการทดสอบหน่วย / การทำงานใด ๆ ไม่มีกระบวนการพัฒนาที่ขับเคลื่อนด้วยการทดสอบในระหว่างการพัฒนาอันเนื่องมาจากกำหนดเวลาที่เข้มงวดมาก (ฉันรู้ว่าเราไม่ควรสัญญาวันครบกำหนดที่แน่นเมื่อเราไม่แน่ใจ แต่สิ่งที่ทำเสร็จแล้ว!) ตอนนี้ทุกอย่างผ่านไปและทุกอย่างสงบลงทุกคนตกลงที่จะเปลี่ยนเราให้เป็นทีมงานที่มีประสิทธิผลของ TDD / BDD ... ตอนนี้คำถามเกี่ยวกับรหัสที่เรามีอยู่แล้ว: (1) มันยังไม่เป็นไรหรือเป็นความคิดที่ดีที่จะหยุดการพัฒนาส่วนใหญ่และเริ่มเขียนกรณีทดสอบที่เป็นไปได้ทั้งหมดตั้งแต่เริ่มต้นถึงแม้ว่าทุกอย่างจะทำงานได้อย่างสมบูรณ์ ? หรือ (2) เป็นการดีกว่าที่จะรอสิ่งที่ไม่ดีเกิดขึ้นจากนั้นในระหว่างการแก้ไขการทดสอบหน่วยการทดสอบใหม่หรือ (3) แม้กระทั่งลืมรหัสก่อนหน้าและเพียงแค่เขียนการทดสอบหน่วยสำหรับรหัสใหม่เท่านั้นและเลื่อนทุกอย่าง มีไม่กี่ที่ดีและบทความที่เกี่ยวข้องเช่นนี้ ฉันยังไม่แน่ใจว่ามันคุ้มค่าหรือไม่ที่จะพิจารณาเรื่องนี้เพราะเรามีเวลา จำกัด และโครงการ / งานอื่น ๆ อีกมากมายกำลังรอเราอยู่ หมายเหตุ : คำถามนี้อธิบาย / จินตนาการถึงสถานการณ์ที่น่าอึดอัดใจในทีมพัฒนา นี่ไม่เกี่ยวกับฉันหรือเพื่อนร่วมงานของฉัน มันเป็นเพียงสถานการณ์ในจินตนาการ คุณอาจคิดว่าสิ่งนี้ไม่ควรเกิดขึ้นหรือผู้จัดการฝ่ายพัฒนารับผิดชอบต่อความยุ่งเหยิง! แต่อย่างไรก็ตามสิ่งที่ทำเสร็จแล้ว หากเป็นไปได้โปรดอย่าโหวตเพราะคุณคิดว่าสิ่งนี้จะไม่เกิดขึ้น

5
ใน TDD ถ้าฉันเขียนกรณีทดสอบที่ผ่านไปโดยไม่แก้ไขโค้ดการผลิตหมายความว่าอย่างไร
นี่คือกฎของ Robert C. Martin สำหรับ TDD : คุณไม่ได้รับอนุญาตให้เขียนรหัสการผลิตใด ๆ เว้นแต่ว่าจะทำการทดสอบหน่วยที่ล้มเหลว คุณไม่ได้รับอนุญาตให้เขียนการทดสอบหน่วยเกินกว่าที่จะล้มเหลว และความล้มเหลวในการรวบรวมเป็นความล้มเหลว คุณไม่ได้รับอนุญาตให้เขียนรหัสการผลิตมากกว่าที่เพียงพอที่จะผ่านการทดสอบหน่วยที่ล้มเหลว เมื่อฉันเขียนการทดสอบที่ดูเหมือนว่าคุ้มค่า แต่ผ่านได้โดยไม่ต้องเปลี่ยนรหัสการผลิต: นั่นหมายความว่าฉันทำอะไรผิดหรือเปล่า? ฉันควรหลีกเลี่ยงการเขียนการทดสอบดังกล่าวในอนาคตหากสามารถช่วยได้หรือไม่? ฉันควรออกจากการทดสอบนั้นหรือลบออกหรือไม่ หมายเหตุ: ฉันพยายามถามคำถามนี้ที่นี่: ฉันสามารถเริ่มต้นด้วยการทดสอบหน่วยผ่านได้หรือไม่ แต่ฉันไม่สามารถที่จะพูดได้ชัดเจนพอถึงตอนนี้

3
คุณจะทดสอบฟังก์ชันที่มีจุดประสงค์เพียงอย่างเดียวคือการค้นหา API ภายนอก แต่ API ใช้ไวยากรณ์การสืบค้นที่ซับซ้อนได้อย่างไร
ตรรกะจริงเท่านั้นอยู่ในไวยากรณ์แบบสอบถามสำหรับ API ภายนอก ฉันไม่ต้องการทดสอบว่าจะสอบถาม api หรือไม่ฉันต้องการทดสอบว่าจะทำการสอบถามด้วยวิธีการที่จะส่งคืนข้อมูลที่ถูกต้องหรือไม่ ตัวอย่างเช่นบางรหัสหลอก: function retrieve_related_data(id) { query = "[potentially long, syntactically complex query that uses param id to get some data]"; results = api_wrapper.query(query); return results; } ตัวอย่างที่เป็นรูปธรรมมากขึ้นด้วย API ที่สร้างขึ้น: function retrieveLifeSupportingObjectsWithinRegion(id) { query = " within region(" + id + ") as r find objects …

1
ฉันจะทดสอบบริการเว็บ REST ของฉันได้อย่างไร
ฉันยังใหม่กับการทดสอบหน่วยฉันมีวิธีการทางเว็บที่เหลือเพียงแค่เรียก DB และเติมข้อมูล DTO รหัสหลอกคือ public object GetCustomer(int id) { CustomerDTO objCust = //get from DB return objCust; } ข้อสงสัยของฉันคือวิธีการเขียนการทดสอบสำหรับวิธีการเหล่านี้และประเภทของการทดสอบ (Integration / Unit) ที่จะรวม และสำหรับการทดสอบหน่วยจำเป็นต้องกดฐานข้อมูลหรือไม่ หากเป็นและฉันส่งรหัสลูกค้าและยืนยันน้อยข้อมูลอาจเปลี่ยนแปลงได้ในที่สุดทำให้เกิดความล้มเหลว ฉันคิดว่าฉันขาดอะไรบางอย่างที่นี่เพื่อทำความเข้าใจแนวคิดเหล่านี้

6
เวิร์กโฟลว์ที่ดีสำหรับการพัฒนาซอฟต์แวร์ด้วยการต่อสู้และรวมอย่างต่อเนื่อง
ฉันกำลังศึกษาวิธีการที่จะเข้าใจได้ดีขึ้นว่าเวิร์กโฟลว์การรวมต่อเนื่องนั้นเหมาะกับ บริษัท พัฒนาซอฟต์แวร์ด้วยวิธีการแย่งชิงกันอย่างไร ฉันกำลังคิดเช่นนี้: นั่นจะเป็นขั้นตอนการทำงานที่ดีหรือไม่?

5
วิธีจัดโครงสร้างหน่วยทดสอบสำหรับแอป GUI โดยใช้ C # และ NUnit
ฉันถูกขอให้ทำโครงการขนาดเล็กเพื่อจัดหาแอพพลิเคชั่นที่เรียบง่ายให้กับลูกค้าของเรา โดยปกติแล้วฉันจะทำงานกับรหัสแบ็คเอนด์ที่ฉันต้องทำการทดสอบทั้งหมดและฉันยังไม่ได้มีความสุขที่น่าสงสัยในการเขียนการทดสอบสำหรับ GUI ดังนั้นจึงไม่ค่อยชัดเจนสำหรับฉันที่จะตั้งค่า รหัสการทดสอบและเครื่องมือสำหรับ EXE สัญชาตญาณแรกของฉันคือการรวมการทดสอบด้วยรหัสแอปพลิเคชัน แต่ต้องมีการจัดหาการอ้างอิงเฉพาะสำหรับการทดสอบจำนวนมากซึ่งฉันได้รับคำสั่งให้ไม่ส่งมอบให้กับลูกค้าโดยเฉพาะ ฉันยังไม่สามารถบีบเงินสดเพื่อใช้เป็นเครื่องมือทดสอบที่สร้างขึ้นมาได้ดังนั้นฉันต้องใช้เครื่องมือที่มีอยู่ในมือ ( StoryQ , RhinoMocksและNUnit) ซึ่งควรเกินพอที่จะทดสอบพฤติกรรมของแอพ GUI อย่างง่าย ดังนั้นเท่าที่ฉันเห็นนี่ทำให้ฉันพยายามสร้างสมดุลที่ดีระหว่างการออกแบบให้เรียบง่ายหรือใช้วิศวกรรมมากเกินไปเพื่อการทดสอบ ดูเหมือนว่าฉันกำลังสร้างแอปด้วยตรรกะทางธุรกิจในห้องสมุดแยกต่างหากและทดสอบกับห้องสมุดอย่างที่ฉันมักจะทำหรือค้นหากลไกอื่น ๆ เพื่อให้ฉันสามารถดำเนินการได้โดยไม่แยกโมดูลเพิ่มเติมที่การออกแบบแอปพลิเคชันไม่ ต้องการจริงๆ แก้ไข: โปรดทราบว่าคำถามนี้เกี่ยวกับวิธีการจัดโครงสร้างความสัมพันธ์ระหว่าง NUnit และปฏิบัติการของฉัน - ซึ่งต่างกับ DLL - และไม่เกี่ยวกับวิธีแยกงานนำเสนอและตรรกะทางธุรกิจ / แก้ไข ดังนั้นคำถามของฉันคือ: มีวิธีเฉพาะ / แนะนำสำหรับการกำหนดค่าแอปพลิเคชัน GUI อย่างง่ายพร้อมการทดสอบหน่วยเพื่อให้ฉันตรวจสอบสถานะและพฤติกรรมอย่างเพียงพอโดยใช้เครื่องมือที่ฉันมีอยู่ในมือและไม่ต้องใช้วิธีการทางวิศวกรรมมากเกินไป? ฉันพลาดพื้นฐานบางอย่างเกี่ยวกับวิธีที่ NUnit ควรเรียกใช้ / กำหนดค่าเมื่อทำการทดสอบ EXE (ตรงข้ามกับ DLL) คุณสามารถให้หรือชี้ให้ฉันในทิศทางของตัวอย่างของการบรรลุทั้งหมดนี้ได้อย่างไร ฉันรู้ว่าอาจมีหลายวิธีในการทำเช่นนี้ฉันจึงมองหาแนวทางการใช้งานเฉพาะตามประสบการณ์ของคุณ
16 c#  testing  gui  nunit 

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

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