เหตุใดจึงต้องใช้ phpunit เมื่อใช้การทดสอบด้วยตนเองแบบดั้งเดิม


14

เมื่อฉันสร้างแอปพลิเคชันเว็บฉันจะทดสอบงานของฉันบนเบราว์เซอร์เพื่อดูว่าฉันได้รับข้อผิดพลาดและแก้ไขหรือไม่ ฉันได้สร้างแอพพลิเคชั่นที่ซับซ้อนและการทดสอบด้วยวิธีนี้ง่ายและรวดเร็ว ฉันได้ดูวิดีโอมากมายบน youtube เกี่ยวกับ phpunit และไม่พบจุดประสงค์ เหตุใดห้องสมุดนี้จึงมีประโยชน์ phpunit เพิ่มเติมสำหรับ pham framworks เช่น CakePHP หรือ zend หรือไม่ ฉันไม่ได้ใช้กรอบใด ๆ เพียงแค่ core php phpunit หรือจะมีประโยชน์สำหรับฉันหรือไม่ ถ้าใช่เป็นอย่างไร

นอกจากนี้ยังมี xdebug แต่ฉันไม่แน่ใจว่ามันเกี่ยวข้องหรือไม่


5
ใช้เวลานานแค่ไหนในการตรวจสอบแอปพลิเคชันที่ซับซ้อนในทุกซอกทุกมุม

@ user1249, phpUnit ยังคงไม่สามารถทำการทดสอบการทำงานอัตโนมัติ มันทำการทดสอบหน่วยอัตโนมัติเท่านั้น
Pacerier

คำตอบ:


12

phpunit หรือจะมีประโยชน์สำหรับฉันหรือไม่ ถ้าใช่เป็นอย่างไร

ได้แน่นอน.

PHPUnit เป็นของครอบครัวของห้องสมุดทดสอบ xUnit คุณใช้ไลบรารีเหล่านี้เพื่อสร้างการทดสอบที่ปฏิบัติการได้โดยอัตโนมัติซึ่งยืนยันพฤติกรรมของแอปพลิเคชันของคุณ นี่เป็นสิ่งสำคัญเพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณจะไม่ทำลายฟังก์ชันการทำงานที่มีอยู่

การระบุเหตุผลทั้งหมดสำหรับการทดสอบอัตโนมัติประเภทและเทคโนโลยีที่หลากหลายจะมากเกินไป ลองดูลิงค์ต่อไปนี้เพื่ออ่านเกี่ยวกับ:


แดกดันลิงก์แรกจาก o'reilly 404'd
Félix Gagnon-Grenier

6

สมมติว่าคุณต้องการทดสอบใบสมัครด้วยตนเองทุกครั้งที่คุณปรับใช้ คุณจะทำเช่นนั้นได้อย่างไร?

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

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

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

ประชดที่นี่คือว่าในการก้าวผ่านรายการการดำเนินการทางกลไกคุณกำลังคำนวณ คุณแค่ทำมันช้ากว่าพูดคอมพิวเตอร์จะ

นี่คือเหตุผลว่าทำไมเราจึงเขียนการทดสอบหน่วย: มันให้คอมพิวเตอร์ทำการคำนวณดังนั้นคุณจึงไม่ต้องทำ

ฉันสามารถรันชุดทดสอบหน่วยที่ครอบคลุมอย่างรวดเร็วพอที่จะใช้บ่อยในระหว่างการพัฒนาไม่ใช่แค่สัปดาห์ละครั้งก่อนที่จะปรับใช้ สิ่งนี้ช่วยให้ฉันตรวจพบข้อผิดพลาดได้เร็วขึ้นประหยัดเวลาและเงิน

ฉันยังสามารถเขียนการทดสอบที่ทำนายพฤติกรรมของระบบแล้วเขียนพฤติกรรมนั้น (ซึ่งฉันรู้แล้วว่าถูกต้องเพราะฉันเพิ่งทดสอบมัน) ซึ่งเป็นกระบวนการที่เรียกว่าการทดสอบการพัฒนาขับเคลื่อน


5

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

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

เมื่อคุณคลิกที่แอปพลิเคชันของคุณคุณกำลังทดสอบการทำงานของแอปพลิเคชันของคุณ

phpunit หรือจะมีประโยชน์สำหรับฉันหรือไม่ ถ้าใช่เป็นอย่างไร

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


การทดสอบหน่วยยังทดสอบพฤติกรรม คุณกำลังสร้างขั้วที่ผิดพลาด
Rein Henrichs

@ReinHenrichs การทดสอบการทำงานทำโดย Selenium ไม่ใช่ PHPUnit
Pacerier

1

ใช่

ใช่. ใช่แน่นอน

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

เหตุผลที่การทดสอบหน่วยมีประโยชน์รวมถึง

  • การทดสอบการถดถอยสำหรับข้อบกพร่องเฉพาะที่คุณสัมผัสและ

  • การทดสอบหน่วยที่ใช้จะเร็วกว่าการทดสอบด้วยตนเองมากและสามารถละเอียดได้มากกว่า

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

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