การพัฒนาที่ขับเคลื่อนด้วยการทดสอบและพัฒนาทักษะการทดสอบกล่องสีขาว


9

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

และการทดสอบพัฒนาขับเคลื่อนคืออะไร?


ทำไมไม่ทดสอบกล่องดำด้วย?
Martijn Verburg

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

คำตอบ:


9

การทดสอบการพัฒนาขับเคลื่อน (TDD) และมันเป็นญาติขยายการยอมรับ TDD (ATDD) และการพัฒนาพฤติกรรมขับเคลื่อน (BDD) เป็นเทคนิคที่มีประโยชน์ในการเรียนรู้ในฐานะผู้ทดสอบในระบบนิเวศ Java ฉันจะมุ่งเน้นไปที่ TDD ในขณะที่คุณกำลังมองหาการทดสอบกล่องสีขาว

TDD คืออะไร - ที่หัวใจเป็นแบบฝึกการเขียนข้อผิดพลาด (สีแดง) ทำให้การทดสอบผ่านโดยการเขียนการใช้งาน (สีเขียว) แล้วทำการแฟคตอริ่งอีกครั้ง วิกิพีเดียบทความเป็นสถานที่เพียงพอที่จะเริ่มที่จะหาข้อมูลเพิ่มเติม แต่หัวข้อที่มีมากมายผมขอแนะนำให้อ่านบางส่วนของหนังสือที่รู้จักกันดีในพื้นที่นี้เช่นการพัฒนาทดสอบขับเคลื่อนโดยตัวอย่างและการทำงานอย่างมีประสิทธิภาพด้วยรหัสเดิม ฉันจะโยนบทที่ไร้ยางอายสำหรับบท TDD ในDeveloper Java อย่างมีเหตุผล

ในระบบนิเวศ Java หมายความว่าคุณต้องการเรียนรู้:

  1. JUnitห้องสมุดและ / หรือTestNGห้องสมุด
  2. ไลบรารีที่เยาะเย้ยเช่นMockitoหรือJMock
  3. เครื่องมือทดสอบโหลดเพื่อโจมตีรหัส - JMeter
  4. แนวคิดของการพึ่งพาการฉีด (รูปแบบของการผกผันของการควบคุม)

จากนั้นฝึกฝนฝึกฝนฝึกฝนฝึกฝน เครื่องทดสอบกล่องสีขาว Java ที่ดีนั้นหาได้ยากมากสิ่งที่ดีที่สุดก็คือการทดสอบการเขียนกับฐานรหัสที่หลากหลาย

HTH ช่วยคุณเริ่มต้น!


พวกเขายังเป็นเทคนิคที่มีประโยชน์ในการเรียนรู้ในฐานะนักพัฒนาในระบบนิเวศ Java ตามที่เข้าใจผู้ทดสอบควรทำการทดสอบกล่องดำ
ทอม

1

Junit เป็นหนึ่งในกรอบการทดสอบหน่วยที่ดีที่สุดสำหรับภาษาโปรแกรม Java มันเป็นกรอบโอเพนซอร์สในการเขียนและเรียกใช้การทดสอบซ้ำ


1

ปกติแล้วฉันไม่ชอบที่จะพูดถึงวิกิพีเดีย แต่ข้อมูลในบทความนี้ดูเหมือนจะปลอดภัยพอ ...

http://en.wikipedia.org/wiki/Test-driven_development

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


0

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


0

คำถามนี้อ้างอิงถึง "การทดสอบกล่องสีขาว" โดยเฉพาะ นี่คือที่การทดสอบของคุณมีความรู้อย่างใกล้ชิดเกี่ยวกับโครงสร้างภายในของรหัสของคุณและยืนยันพฤติกรรมในแต่ละขั้นตอนมากกว่าเพียงแค่อินพุต / เอาท์พุต / ผลข้างเคียง (การทดสอบกล่องดำ) ในขณะที่ JUnit ยอดเยี่ยมในการทำทั้งสองอย่างคุณต้องมีเฟรมเวิร์กเพิ่มเติมเพิ่มเติมเพื่อทำสิ่งนี้ภายในบริบทของการทดสอบหน่วย

EasyMockและJMockเป็นกรอบที่ดีในการทำเช่นนี้ ฉันมักจะชอบ JMock

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

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

แน่นอนเฟรมเวิร์กที่กล่าวถึงข้างต้นสามารถใช้ในการทดสอบกล่องดำซึ่งจำนวนคลาสที่สนับสนุน (ฉีด) มีขนาดใหญ่

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

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