ทดสอบการพัฒนาขับเคลื่อน (TDD) ใน Drupal ได้อย่างไร


30
  • เครื่องมือใดที่ใช้ TDD ใน Drupal (โมดูล PHP, โมดูล Drupal และอื่น ๆ )?
  • เวิร์กโฟลว์การมอบหมาย / ทดสอบ / ปรับใช้ของคุณมีลักษณะอย่างไร คุณใช้ Phing, PHPUnderControl, Hudson เพื่อจัดการเวิร์กโฟลว์นี้หรือไม่?
  • การทดสอบหน่วยในทางใดทำให้รหัสของคุณน่าเชื่อถือมากขึ้น?
  • คุณต้องการเซิร์ฟเวอร์ทดสอบยูนิตแยกต่างหากราคาแพงแบบสแตนด์อะโลนหรือคุณสามารถทำได้จากแล็ปท็อปหรือไม่?

ฉันรู้ว่า Robert เขียนบทความทางเทคนิคที่ยอดเยี่ยมที่นี่เกี่ยวกับการทดสอบหน่วยใน Drupal ด้วย SimpleTest ฉันสนใจที่จะครอบคลุมส่วนงานและการกำหนดค่ามากขึ้น ขณะนี้ฉันมีเครื่องพัฒนาเซิร์ฟเวอร์และเซิร์ฟเวอร์ที่ใช้งานจริง ทั้งไซต์การผลิตและขั้นตอนทำงานบน 300MB RAM / 300MHz CPU Dreamhost VPS

คำตอบ:


8

ในโลกทับทิม TDD ได้รับการอำนวยความสะดวกด้วยเครื่องมือที่สร้างขึ้นในกรอบ Factory Girl, Mocha, rSpec และอื่น ๆ ช่วยให้นักพัฒนาสามารถสร้างการทดสอบได้อย่างง่ายดายและแบบไดนามิกที่ตอบสนองกรณีทดสอบที่จำเป็น

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

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

ฉันกำลังแฮ็คโซลูชันร่วมกันโดยใช้Phactoryและ phpunit ซึ่งบูต Drupal ด้วยตนเอง เห็นได้ชัดว่าพบปัญหาบางอย่างและยังไม่เสร็จ แต่ก็ไปถึงแล้ว

โชคดีที่งานของฉันส่วนใหญ่อยู่ที่แบ็กเอนด์เลเยอร์ดังนั้นฉันจึงสามารถอยู่ในระดับ DRUPAL_BOOTSTRAP_DATABASE แต่ฉันกำลังทำงานในสถานการณ์อื่น ๆ ที่ฉันต้องการกองซ้อนแบบเต็ม

ในตอนท้าย TDD ใน Drupal ไม่ได้รับการสนับสนุนดังนั้นคุณสามารถเขียนของคุณเองเพื่อให้ทำงานนอกกรอบการทดสอบ drupal หรือทนต่อประสิทธิภาพที่ไม่ดี

- อัพเดท -

ฉันได้ตั้งค่าการรวม Drupal กับ Phactory เรียบร้อยแล้วและตอนนี้ฉันกำลังทำการทดสอบผ่าน phpunit แทนที่จะเป็น Drupal Web Test Case ดังนั้นจึงเป็นไปได้

ฉันจะหวังว่าจะถึงจุดที่ฉันสามารถปล่อยมันและมันสามารถรวมเข้ากับเอกสาร Phactory

- อัพเดท 2 -

หมอเกี่ยวกับวิธีการติดตั้งผม Phactory ที่https://github.com/trimbletodd/phactory


ขอขอบคุณสำหรับการสนับสนุนของคุณ. มันน่าสนใจมากที่เกิดขึ้นกับ Phactory สำหรับการทดสอบหน่วย รอคอยที่จะเห็นว่าโมดูล Drupal คุณได้ทำอาหาร;)
มือสมัครเล่นบาริสต้า

ฉันรวบรวมเอกสารฉบับย่อเกี่ยวกับวิธีจัดการ Phactory ภายใน Drupal ด้วยวิธีของฉัน ฉันส่งคำขอดึงข้อมูลไปยังนายแล้ว แต่ยังไม่ได้รวมไว้ github.com/trimbletodd/phactory
trimbletodd

คำถามนี้และคำตอบก็ยังคงกลับมาวันนี้ คุณตื่นเต้นกับการกลิ้งส้อม / ทางออกของคุณเอง ดังนั้นคุณจะได้รับรางวัลคำตอบที่ได้รับการยอมรับครับ
บาริสต้ามือสมัครเล่น

12

เนื่องจากบล็อกของ Mark ออฟไลน์ฉันจะพูดถึงเครื่องมือบางอย่างที่ทีมของเขานำไปใช้:

การทดสอบการทำงาน: การทดสอบ
หน่วยซีลีเนียม:
เซิร์ฟเวอร์สร้างSimpletest :
การเปรียบเทียบประสิทธิภาพของเจนกินส์: XDebug + Cachegrind

ในสองปีที่ผ่านมาตั้งแต่ฉันถามคำถามนี้ฉันได้เห็นเครื่องมือเพิ่มเติมบางอย่างได้รับความนิยมในฉาก TDD ทุกวันนี้เมื่อคุณพูดถึงการพัฒนาระบบขับเคลื่อนทดสอบ (ในบริบทของ Drupal) มีสองด้านสำหรับเหรียญเดียวกันคือการทดสอบแบบ Front-End และการทดสอบแบบแบ็คเอนด์

นี่คือการนำเสนอสองอย่างที่โดดเด่นจาก Drupalcon Portland 2013 ล่าสุดที่เป็นตัวแทนของเรื่องนี้:

การพัฒนาโดยตัวเลขการทดสอบแบ็กเอนด์
การทดสอบอัตโนมัติกับจัสมินและ PhantomJSการทดสอบส่วนหน้า

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


1
ว้าว! ขอบคุณที่กลับมาอีก 2 ปีเพื่อแจ้งให้เราทราบว่าคุณค้นพบอะไร! You rock :)
Chapabu

5

สิ่งเดียวที่ฉันรู้คือว่าสำหรับโมดูลส่วนทำให้คุณสามารถเปิดใช้อัตโนมัติทดสอบการกระทำและแพทช์ในคิวปัญหาดูhttp://drupal.org/node/689990 มันยังค่อนข้างไม่เสถียรโดยเฉพาะถ้าคุณมีการพึ่งพา

โครงการส่วนใหญ่อาจจะทำอะไรมากกว่านั้นตามแนวของการพัฒนาบั๊กซึ่งโดยทั่วไปแล้วมาลงที่การเขียนการทดสอบครั้งแรกเมื่อพบข้อบกพร่องแล้วแก้ไขมัน ถ้าเลย;)

จากประสบการณ์ส่วนตัวของฉัน TDD ค่อนข้างยากใน Drupal เพราะคุณมักจะไม่เขียน (เฉพาะ) การทดสอบหน่วยด้วย Simpletest แต่เป็นการทดสอบการรวมที่คุณดูหน้าเว็บและส่งแบบฟอร์ม ดังนั้นจึงค่อนข้างยากที่จะเขียนการทดสอบที่ดีล่วงหน้า แต่บางทีฉันอาจไม่คุ้นเคยกับการทำเช่นนั้น :)

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