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

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

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

1
การทดสอบหน่วยสำหรับไลบรารีการคำนวณทางวิทยาศาสตร์
ฉันเคยมีประสบการณ์เล็กน้อยเกี่ยวกับการทดสอบหน่วยมาก่อนในสิ่งที่ฉันเรียกว่า (ไม่ใช่ดูถูก) โครงการวิศวกรรมซอฟต์แวร์แบบคลาสสิก: MVC ที่มี GUI ผู้ใช้ฐานข้อมูลตรรกะทางธุรกิจในชั้นกลางเป็นต้นตอนนี้ฉันก็เลย m กำลังเขียนไลบรารี่การคำนวณทางวิทยาศาสตร์ใน C # (ใช่ฉันรู้ว่า C # ช้าเกินไปใช้ C ไม่ต้องพลิกโฉมวงล้อและทั้งหมดนั้น แต่เรามีคนจำนวนมากที่ทำการคำนวณทางวิทยาศาสตร์ในคณะของฉันใน C # และเราต้องการมัน) มันเป็นโครงการขนาดเล็กในแง่ของอุตสาหกรรมการพัฒนาซอฟต์แวร์เพราะฉันเขียนด้วยตัวเองเป็นส่วนใหญ่และเป็นครั้งคราวด้วยความช่วยเหลือจากเพื่อนร่วมงานไม่กี่คน นอกจากนี้ฉันไม่ได้รับเงินและที่สำคัญที่สุดคือโครงการทางวิชาการ ฉันหมายถึงฉันคาดหวังว่ามันจะมีคุณภาพระดับมืออาชีพสักวันเพราะฉันวางแผนที่จะเปิดแหล่งที่มา อย่างไรก็ตามโครงการกำลังใหญ่ขึ้น (มีรหัสประมาณ 18,000 บรรทัดซึ่งฉันคิดว่าใหญ่สำหรับโครงการของชายคนหนึ่ง) และมันก็หลุดออกจากมือฉันแล้ว ฉันใช้ git เพื่อควบคุมแหล่งข้อมูลและฉันคิดว่าฉันทำได้ดี แต่ฉันกำลังทดสอบเหมือนโรงเรียนเก่าฉันหมายถึงการเขียนแอปพลิเคชั่นคอนโซลแบบเต็มรูปแบบที่ทดสอบส่วนใหญ่ของระบบส่วนใหญ่เป็นเพราะฉันไม่รู้ ทำการทดสอบหน่วยในสถานการณ์นี้แม้ว่าฉันรู้สึกว่าเป็นสิ่งที่ฉันควรทำ ปัญหาคือห้องสมุดมีอัลกอริธึมเป็นส่วนใหญ่เช่นอัลกอริธึมกราฟตัวแยกประเภทตัวแก้ตัวเลขการแจกแจงแบบสุ่ม ฯลฯ ฉันไม่ทราบวิธีระบุกรณีทดสอบเล็ก ๆ สำหรับอัลกอริธึมเหล่านี้ สุ่มฉันไม่รู้วิธีตรวจสอบความถูกต้อง ตัวอย่างเช่นสำหรับการจำแนกประเภทมีตัวชี้วัดบางอย่างเช่นความแม่นยำและการเรียกคืน แต่ตัวชี้วัดเหล่านี้ดีกว่าสำหรับการเปรียบเทียบอัลกอริธึมสองกว่าการตัดสินอัลกอริธึมเดียว ดังนั้นฉันจะกำหนดความถูกต้องได้อย่างไรที่นี่ ในที่สุดก็มีปัญหาประสิทธิภาพการทำงาน ฉันรู้ว่ามันเป็นชุดทดสอบที่แตกต่างกันโดยสิ้นเชิง แต่ประสิทธิภาพเป็นหนึ่งในคุณสมบัติที่สำคัญของเครื่องมือทางวิทยาศาสตร์มากกว่าความพึงพอใจของผู้ใช้หรือการวัดทางวิศวกรรมซอฟต์แวร์อื่น ๆ หนึ่งในปัญหาที่ใหญ่ที่สุดของฉันคือโครงสร้างข้อมูล การทดสอบเดียวที่ฉันสามารถทำได้สำหรับต้นไม้ kd …
15 c#  unit-testing 

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

4
การพัฒนาที่ขับเคลื่อนด้วยการทดสอบบังคับให้ฉันต้องติดตาม SOLID หรือไม่
ฉันได้ยินมามากมายจากผู้ฝึกอบรมTDDว่าข้อดีอย่างหนึ่งของ TDD คือบังคับให้นักพัฒนาปฏิบัติตามหลักการของSOLID (ความรับผิดชอบเดี่ยว, เปิด - ปิด, การทดแทน Liskov, การแยกอินเตอร์เฟสและการผกผันการพึ่งพา) แต่สำหรับฉันแล้วมันก็เพียงพอแล้วที่จะเขียนการทดสอบ (การทดสอบหน่วยเบื้องต้น) เพื่อให้เข้าใจว่าการติดตาม SOLID เป็นสิ่งสำคัญ TDD บังคับให้ผู้พัฒนาติดตาม SOLID มากกว่าการเขียนบททดสอบหรือไม่?

5
หน่วยทดสอบวิธีการโมฆะ
เพื่อแก้ไขข้อผิดพลาดในการประยุกต์ใช้ผมปรับเปลี่ยนวิธีการตั้งชื่อโดยการเพิ่มการเรียกร้องให้เป็นวิธีการที่มีอยู่ชื่อ postLogingetShoppingCart รหัส protected void postLogin() { getShoppingCart(); } อย่างไรก็ตามฉันไม่แน่ใจว่าวิธีที่ดีที่สุดในการเขียนบททดสอบpostLoginคืออะไร วิธีที่ 1 ใช้การตรวจสอบจาก Mockito เพียงตรวจสอบว่าวิธีการนั้นถูกเรียก verify(mock).getShoppingCart(); วิธีที่ 2 ทดสอบผลข้างเคียงของการเรียกใช้เมธอดโดยเรียกค่าของตะกร้าสินค้าของผู้ใช้ AssertNotNull(user.getShoppingCart()); วิธีการหนึ่งดีกว่าวิธีอื่นหรือไม่?

5
สลับคำสั่ง - จัดการกรณีเริ่มต้นเมื่อไม่สามารถเข้าถึงได้
ถ้าฉันใช้คำสั่ง switch เพื่อจัดการค่าจาก enum (ซึ่งเป็นของชั้นเรียนของฉัน) และฉันมีเคสสำหรับค่าที่เป็นไปได้แต่ละอัน - มันคุ้มค่าที่จะเพิ่มรหัสเพื่อจัดการกับเคส "default" หรือไม่? enum MyEnum { MyFoo, MyBar, MyBat } MyEnum myEnum = GetMyEnum(); switch (myEnum) { case MyFoo: DoFoo(); break; case MyBar: DoBar(); break; case MyBat: DoBat(); break; default: Log("Unexpected value"); throw new ArgumentException() } ฉันไม่คิดว่าเป็นเพราะรหัสนี้ไม่สามารถเข้าถึงได้ (แม้จะมีการทดสอบหน่วย) เพื่อนร่วมงานของฉันไม่เห็นด้วยและคิดว่าสิ่งนี้ปกป้องเราจากพฤติกรรมที่ไม่คาดคิดที่เกิดจากค่าใหม่ที่เพิ่มเข้ามาใน MyEnum ชุมชนพูดว่าอย่างไร

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

2
จะทำการทดสอบที่ล้มเหลวได้ที่ไหน
ฉันเพิ่งเปลี่ยนการตั้งค่าสาขาในที่เก็บ GitHub ของฉันดังนั้นสาขา [ถัดไป] ของฉันต้องผ่านการสร้าง CI ผ่านคำขอดึง การสนทนาตามด้วยสมาชิกในทีมจำนวนหนึ่งเกี่ยวกับการทดสอบที่ล้มเหลว เพื่อบริบทของ ... ที่เก็บมีสาขา [master] ที่มีการประชาสัมพันธ์เพียงอย่างเดียวเมื่อมีการเปิดตัวดังนั้น [master] มีรหัสณวันที่ออกล่าสุดโดยไม่คำนึงว่าสาขาใหญ่ผู้เยาว์โปรแกรมแก้ไขด่วนเบต้าหรือ alpha / รุ่นก่อนวางจำหน่าย สาขา [ถัดไป] เป็นสาขา "ค่าเริ่มต้น" โดยที่เราต้องการเก็บรหัส "พร้อมใช้" ในทางเทคนิคสาขานั้นสามารถประชาสัมพันธ์ให้เป็น [master] ได้ตลอดเวลาและได้รับการปล่อยตัว ส้อมแต่ละคนมีกิ่ง dev ของตัวเองและผู้สนับสนุน PR ถึง [ถัดไป] เมื่อฉันตรวจทาน PR ที่ไม่สำคัญฉันจะรวมสาขา dev ของผู้มีส่วนร่วมในสาขา "review" ของฉันและถ้าฉันเห็นสิ่งที่ฉันสามารถแก้ไขได้อย่างรวดเร็วฉันจะยอมรับ / ผลักดันการเปลี่ยนแปลงและการทดสอบใหม่ (บางครั้งล้มเหลว) และ PR กลับไปที่สาขานักพัฒนาของผู้มีส่วนร่วม; เมื่อพวกเขารวมการเปลี่ยนแปลงของฉันทำการทดสอบความล้มเหลวใหม่ผ่านแล้วผลัก PR ของพวกเขาประสานและจากนั้นฉันจะรวมการประชาสัมพันธ์เป็น [ถัดไป] …

1
หน่วยทดสอบไคลเอนต์และห่อหุ้ม API
ฉันวนเวียนวนไปรอบ ๆ เพื่อหาวิธีที่ดีที่สุดในการทดสอบหน่วยห้องสมุดลูกค้า API ที่ฉันกำลังพัฒนา ห้องสมุดที่มีClientระดับซึ่งโดยทั่วไปมี 1: การทำแผนที่ 1 กับ API และอีกชั้นซึ่งมีอินเตอร์เฟซที่ใช้งานง่ายขึ้นกว่าด้านบนของWrapperClient Wrapper --> Client --> External API ก่อนอื่นฉันเขียนการทดสอบทั้งคู่ClientและWrapperทดสอบอย่างมีประสิทธิภาพว่าจะส่งต่อไปยังฟังก์ชันที่เหมาะสมของสิ่งที่ทำงาน ( WrapperทำงานClientและClientทำงานกับการเชื่อมต่อ HTTP) ฉันเริ่มรู้สึกอึดอัดกับสิ่งนี้เพราะฉันรู้สึกว่าฉันกำลังทดสอบการใช้งานคลาสเหล่านี้มากกว่าที่จะเป็นส่วนต่อประสาน ในทางทฤษฎีฉันสามารถเปลี่ยนคลาสให้มีการใช้งานที่ถูกต้องสมบูรณ์แบบอื่น แต่การทดสอบของฉันจะล้มเหลวเพราะฟังก์ชั่นที่ฉันคาดว่าจะเรียกไม่ถูกเรียก ฟังดูเหมือนการทดสอบที่เปราะบางสำหรับฉัน หลังจากนี้ฉันคิดถึงอินเทอร์เฟซของคลาส การทดสอบควรตรวจสอบว่าชั้นเรียนทำงานตามที่ตั้งใจจริงมากกว่าที่จะทำ แล้วฉันจะทำสิ่งนี้ได้อย่างไร สิ่งแรกที่ควรคำนึงถึงคือการขัดคำขอ API ภายนอก อย่างไรก็ตามฉันกังวลใจเกี่ยวกับการขยายบริการภายนอก ตัวอย่างของ API ที่ถูก stubbed จำนวนมากที่ฉันเคยเห็นเพียงแค่ให้การตอบกลับสำเร็จรูปซึ่งดูเหมือนเป็นวิธีที่ง่ายมากที่จะทดสอบว่าโค้ดของคุณทำงานได้อย่างถูกต้องกับ API ปลอมของคุณ ทางเลือกคือการเยาะเย้ยบริการซึ่งเป็นไปไม่ได้และจะต้องได้รับการปรับปรุงให้ทันสมัยอยู่เสมอเมื่อใดก็ตามที่มีการเปลี่ยนแปลงการบริการจริง - ซึ่งรู้สึกว่าเกินความเป็นจริงและเสียเวลา ในที่สุดฉันอ่านข้อความนี้จากคำตอบอื่นของโปรแกรมเมอร์ SE : งานของไคลเอนต์ API ระยะไกลคือการออกสายบางอย่าง - …

5
Test Driven Development: วิธีที่ดี / เป็นที่ยอมรับในการทดสอบการทำงานของระบบไฟล์?
ฉันกำลังทำงานในโครงการในขณะนี้ที่สร้างตาราง (เหนือสิ่งอื่นใด) ตามเนื้อหาของระบบไฟล์และในทางกลับกันก็จะทำการแก้ไข meta-data บางอย่างในสิ่งที่พบ คำถามคือจะเขียนการทดสอบรอบนี้หรือตั้งค่าอย่างไร มีวิธีง่าย ๆ ในการเยาะเย้ยเรื่องนี้หรือไม่? หรือฉันควรตั้ง "กล่องแซนด์บ็อกซ์"?

3
วิธีทดสอบหน่วยวิธีการที่ส่งคืนคอลเลกชันในขณะที่หลีกเลี่ยงตรรกะในการทดสอบ
ฉันกำลังทดสอบวิธีการในการสร้างคอลเลกชันของวัตถุข้อมูล ฉันต้องการตรวจสอบว่ามีการตั้งค่าคุณสมบัติของวัตถุอย่างถูกต้อง คุณสมบัติบางอย่างจะถูกตั้งค่าเป็นสิ่งเดียวกัน อื่น ๆ จะถูกกำหนดเป็นค่าซึ่งขึ้นอยู่กับตำแหน่งของพวกเขาในคอลเลกชัน วิธีที่เป็นธรรมชาติในการทำสิ่งนี้ดูเหมือนจะเป็นแบบวนซ้ำ อย่างไรก็ตาม Roy Osherove แนะนำอย่างยิ่งต่อการใช้ตรรกะในการทดสอบหน่วย ( Art of Unit Testing , 178) เขาพูดว่า: การทดสอบที่มีลอจิกมักจะทำการทดสอบมากกว่าหนึ่งอย่างในแต่ละครั้งซึ่งไม่แนะนำให้ทำเพราะการทดสอบนั้นสามารถอ่านได้ง่ายกว่าและเปราะบางกว่า แต่ตรรกะการทดสอบยังเพิ่มความซับซ้อนที่อาจมีจุดบกพร่องที่ซ่อนอยู่ การทดสอบควรเป็นชุดของการเรียกใช้เมธอดโดยไม่มีโฟลว์ควบคุมไม่เท่าtry-catchกันและด้วยการเรียกยืนยัน อย่างไรก็ตามฉันไม่เห็นสิ่งผิดปกติในการออกแบบของฉัน (คุณจะสร้างรายการของวัตถุข้อมูลได้อย่างไรค่าบางค่าขึ้นอยู่กับว่าอยู่ในลำดับที่เป็นอย่างไร - ไม่สามารถสร้างและทดสอบแยกต่างหากได้อย่างแน่นอน มีบางสิ่งที่ไม่เป็นมิตรกับการออกแบบของฉันหรือไม่? หรือการอุทิศตนอย่างจริงจังกับคำสอนของ Osherove เกินไป? หรือมีเวทย์มนตร์ทดสอบหน่วยความลับบางอย่างที่ฉันไม่รู้เกี่ยวกับการหลีกเลี่ยงปัญหานี้หรือไม่? (ฉันกำลังเขียนใน C # / VS2010 / NUnit แต่มองหาคำตอบที่ไม่เชื่อเรื่องภาษาถ้าเป็นไปได้)

1
ฉันควรเขียนการทดสอบเพื่อพิสูจน์ว่าการลบรหัสแก้ไขข้อผิดพลาดหรือไม่?
บางครั้งฉันจะพบกับสถานการณ์ที่การแก้ไขข้อผิดพลาดนั้นฉันต้องลบส่วนของรหัส ผู้พิถีพิถันใน TDD จะ (ฉันคิดว่า) สนับสนุนการเขียนการทดสอบที่ล้มเหลวการลบรหัสจากนั้นดูการทดสอบผ่าน ตอนนี้ดูเหมือนแปลกจริง ๆ ที่มีการทดสอบยืนยันว่ามีการลบรหัสบางส่วน แน่นอนฉันคิดว่ามันจะช่วยให้แน่ใจว่าไม่มีใครขุดลงในการควบคุมแหล่งที่มาและวางรหัสนั้นกลับมา แต่มันคุ้มค่าหรือไม่ หากมันคุ้มค่าแน่นอนว่ามันมีค่าน้อยกว่าการเขียนรหัสทดสอบที่เพิ่มเข้ามาใช่ไหม?
14 unit-testing  tdd  bug 

4
แนวปฏิบัติที่ดีที่สุดสำหรับโปรแกรมทดสอบที่มีพฤติกรรมสุ่มคืออะไร
เมื่อทำงานวิจัยและพัฒนาฉันมักพบว่าตัวเองกำลังเขียนโปรแกรมที่มีการสุ่มในระดับสูงในพฤติกรรมของพวกเขา ตัวอย่างเช่นเมื่อฉันทำงานในการเขียนโปรแกรมทางพันธุกรรมฉันมักจะเขียนโปรแกรมที่สร้างและรันซอร์สโค้ดแบบสุ่มโดยพลการ ปัญหาเกี่ยวกับการทดสอบรหัสดังกล่าวคือข้อผิดพลาดมักจะเป็นระยะ ๆ และอาจเป็นเรื่องยากที่จะทำซ้ำ สิ่งนี้นอกเหนือไปจากการตั้งค่าเมล็ดพันธุ์แบบสุ่มเป็นค่าเดียวกันและเริ่มต้นการดำเนินการ ตัวอย่างเช่นโค้ดอาจอ่านข้อความจาก kernal ring buffer จากนั้นทำการข้ามแบบมีเงื่อนไขกับเนื้อหาข้อความ ตามปกติสถานะของบัฟเฟอร์บัฟเฟอร์จะเปลี่ยนไปเมื่อพยายามทำซ้ำอีกครั้งในภายหลัง แม้ว่าพฤติกรรมนี้เป็นคุณสมบัติที่สามารถเรียกใช้รหัสอื่นในวิธีที่ไม่คาดคิดและมักจะพบข้อบกพร่องที่หน่วยทดสอบ (หรือผู้ทดสอบมนุษย์) ไม่พบ มีการกำหนดแนวปฏิบัติที่ดีที่สุดสำหรับระบบทดสอบประเภทนี้หรือไม่? ถ้าเป็นเช่นนั้นการอ้างอิงบางอย่างจะมีประโยชน์มาก ถ้าไม่คำแนะนำอื่น ๆ ยินดีต้อนรับ!

4
เป็นความคิดที่ดีหรือไม่ที่จะวัดประสิทธิภาพของวิธีการโดยใช้การทดสอบหน่วยหมดเวลา?
ในโครงการที่มีข้อกำหนดที่ไม่สามารถใช้งานได้ซึ่งระบุเวลาดำเนินการสูงสุดสำหรับการดำเนินการที่เฉพาะเจาะจง QA จะต้องตรวจสอบประสิทธิภาพของการกระทำนี้บนเครื่องเฉพาะโดยใช้ฮาร์ดแวร์ที่แม่นยำภายใต้ภาระที่แม่นยำทั้งฮาร์ดแวร์และโหลดที่ระบุไว้ในข้อกำหนด ในทางกลับกันการเปลี่ยนแปลงซอร์สโค้ดที่ผิดพลาดบางอย่างอาจส่งผลกระทบอย่างรุนแรงต่อประสิทธิภาพ สังเกตเห็นผลกระทบเชิงลบนี้ในช่วงต้น , ก่อนรหัสที่มาถึงการควบคุมแหล่งที่มาและได้รับการยืนยันโดยแผนก QA, อาจจะเป็นประโยชน์ในแง่ของเวลาที่หายไปโดยแผนก QA รายงานปัญหาและโดยนักพัฒนาแก้ไขมันหลายกระทำในภายหลัง หากต้องการทำสิ่งนี้เป็นความคิดที่ดี: ในการใช้การทดสอบหน่วยเพื่อให้ทราบถึงเวลาที่ใช้ในการดำเนินการแอ็คชั่นเดียวกัน² nครั้ง หากต้องการใช้การหมดเวลาทดสอบต่อหนึ่งครั้งผ่าน[TestMethod, Timeout(200)]แอตทริบิวต์ใน C # ฉันคาดว่าจะมีปัญหาหลายอย่างเกี่ยวกับวิธีการนี้: ตามหลักการแล้วการทดสอบหน่วยไม่ได้สำหรับสิ่งนั้นจริง ๆ พวกเขาคาดหวังว่าจะทดสอบโค้ดเพียงส่วนเล็ก ๆ ไม่มีอะไรเพิ่มเติม: ทั้งการตรวจสอบข้อกำหนดการใช้งานหรือการทดสอบการรวมเข้าด้วยกันหรือการทดสอบประสิทธิภาพ การทดสอบหน่วยหมดเวลาใน Visual Studio วัดจริง ๆ ว่าจะวัดได้หรือไม่โดยคำนึงถึงว่าการเตรียมใช้งานและการล้างข้อมูลนั้นไม่มีอยู่สำหรับการทดสอบเหล่านั้นหรือสั้นเกินไปที่จะส่งผลกระทบต่อผลลัพธ์หรือไม่ การวัดประสิทธิภาพด้วยวิธีนี้น่าเกลียด การใช้เบนช์มาร์กบนเครื่องใด ๆ โดยไม่ขึ้นกับฮาร์ดแวร์โหลด ฯลฯ ก็เหมือนกับการทำเบนช์มาร์กที่แสดงว่าผลิตภัณฑ์ฐานข้อมูลหนึ่งจะเร็วกว่าผลิตภัณฑ์อื่นเสมอ บนมืออื่น ๆ ที่ผมไม่ได้คาดหวังว่าผู้ทดสอบหน่วยที่จะเป็นผลที่ชัดเจนหรือสิ่งที่ถูกใช้โดยแผนก QA การทดสอบหน่วยเหล่านั้นจะถูกนำมาใช้เพียงเพื่อให้ความคิดทั่วไปเกี่ยวกับประสิทธิภาพที่คาดหวังและเป็นหลักในการแจ้งเตือนนักพัฒนาว่าการปรับเปลี่ยนครั้งสุดท้ายของเขายากจนบางสิ่งบางอย่างอย่างรุนแรงส่งผลกระทบต่อประสิทธิภาพการทำงาน การทดสอบการพัฒนาแบบขับเคลื่อน (TDD)เป็นไปไม่ได้สำหรับการทดสอบ ในตอนแรกมันจะล้มเหลวอย่างไรก่อนที่จะเริ่มใช้โค้ด การทดสอบประสิทธิภาพมากเกินไปจะส่งผลต่อเวลาที่ต้องใช้ในการทดสอบดังนั้นวิธีนี้ จำกัด เฉพาะการกระทำสั้น ๆ เท่านั้น …

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

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