2008-09-05 8 views
41

मैं PHP में काम कर रहा एक वेब डेवलपर हूं। सी # डेस्कटॉप अनुप्रयोगों में टेस्ट ड्राइव डेवलपमेंट का उपयोग करने के साथ मेरे पास कुछ सीमित अनुभव है। उस मामले में हमने यूनिट परीक्षण ढांचे के लिए nUnit का उपयोग किया।PHP में टेस्ट संचालित विकास

मैं नई परियोजनाओं में टीडीडी का उपयोग शुरू करना चाहता हूं लेकिन मुझे यकीन नहीं है कि कहां से शुरू करना है।

PHP-आधारित इकाई परीक्षण ढांचे के लिए आपके पास कौन सी सिफारिशें हैं और टीडीडी अवधारणा के लिए बिल्कुल नया है जो किसी के लिए कुछ अच्छे संसाधन हैं?

उत्तर

39

मैं दोनों PHPUnit & SimpleTest उपयोग किया है और मैंने पाया SimpleTest उपयोग में आसान हो सकता है।

जहां तक ​​टीडीडी जाता है, मुझे शुद्ध अर्थ में इसके साथ बहुत भाग्य नहीं मिला है। मुझे लगता है कि यह मुख्य रूप से मेरे हिस्से पर एक समय/अनुशासन मुद्दा है।

तथ्य के बाद परीक्षण जोड़ना कुछ हद तक उपयोगी रहा है लेकिन मेरी पसंदीदा चीजें करने के लिए सरलतम परीक्षणों का उपयोग करना है जो विशिष्ट बग के लिए परीक्षण करते हैं जिन्हें मुझे ठीक करना है। इससे यह सत्यापित करना बहुत आसान हो जाता है कि चीजें वास्तव में तय की जाती हैं और तय रहती हैं।

1

आपको PHPUnit में देखना चाहिए, यह बहुत अधिक nnnit जैसा दिखता है।

2

सरलतम एक महान प्रणाली है। मैंने लगभग 5 महीने पहले इसके साथ शुरुआत की, टीडीडी के बारे में कभी नहीं सुना, और सरलतम सीखना आसान है लेकिन अभी भी शक्तिशाली है। संसाधनों के लिए, मैं वर्तमान में टीडीडी पढ़ रहा हूं उदाहरण के द्वारा केंट बेक द्वारा, और यह अच्छा है।

9

PHPUnit एक मानक है, लेकिन यह कभी-कभी भी भारी होता है, इसलिए यदि आपको यह बहुत जटिल लगता है, तो phpt को शुरू करने के लिए देखें। इसमें बहुत कुछ लिखना बहुत आसान है। किसी भी प्रोग्रामर के लिए कोई ब्रेनर नहीं।

और अपने टीडीडी प्रश्न का उत्तर देने के लिए - मुझे यकीन नहीं है कि क्या पीडीडी व्यापक रूप से PHP स्पेस में उपयोग किया जाता है। मैं देख सकता हूं कि तेजी से आवेदन विकास और टीडीडी कुछ हद तक संघर्ष (कड़ाई से आईएमएचओ)। टीडीडी की आवश्यकता है कि आप जो भी बनाते हैं उसकी पूरी तस्वीर लें और आप अपना परीक्षण आगे बढ़ाएं और फिर परीक्षण पास करने के लिए कोड को कार्यान्वित करें।

तो उदाहरण के लिए हम इसके बजाय क्या करते हैं, जब हम कर रहे हैं तो बहुत सारे परीक्षण लिखना है। यह हमेशा सबसे अच्छा तरीका नहीं है क्योंकि आप कभी-कभी गुस्सा परीक्षणों के साथ समाप्त होते हैं, लेकिन वास्तव में उपयोगी नहीं होते हैं, लेकिन कम से कम ऐसा कुछ है जिसे आप विस्तारित कर सकते हैं। आंतरिक रूप से हम परीक्षण जारी रखते हैं और मूल रूप से हमें मिलने वाली प्रत्येक बग के लिए एक परीक्षण लिखते हैं। इस तरह यह और अधिक ठोस हो जाता है।

+0

कितने समय पहले इसने किया था? – mraaroncruz

+1

btw यह "tdd in php" के लिए goog पर # 2 और "tdd php" के लिए # 1 है! – mraaroncruz

+2

मुझे नहीं पता कि यह क्यों -1 है। हालांकि मैं अपनी राय से खड़ा हूं। मेरा मुद्दा यह है कि, मैं मुश्किल से प्रोटोटाइप के लिए मुश्किल से टीडीडी करता हूं, लेकिन मैं लगभग हमेशा (80-90% समय) टीडीडी अन्यथा। मुझे अभी भी phpt पसंद है। यकीन नहीं है कि यह एक बुरी बात क्यों है। जबकि PHPUnit के फायदे हैं, यह अभी भी एक जटिल ढांचा है। – Till

4

मैं व्यक्तिगत रूप से सरलतम पसंद करता हूं। एक कमांड लाइन टेस्ट रनर और वेब-आधारित टेस्ट रनर है, और आईडीईई से यूनिट परीक्षण चलाने के लिए आपको ग्रहण plugin भी है। मैंने Zend को PHPUnit कनेक्शन को काम करने के लिए बहुत कठिन पाया, खासकर डीबगर के साथ।

जिस तरह से हम सरलतम घर का उपयोग करते हैं, वह continuous integration स्क्रिप्ट के साथ है जिसे हमने स्वयं लिखा है। हर बार जब हम एसवीएन के लिए एक सुविधा में जांच करते हैं तो हम इकाई परीक्षण शामिल करते हैं। हर घंटे या तो, सीआई स्क्रिप्ट चलता है और एक कमांड लाइन PHP स्क्रिप्ट को कॉल करता है जो हमारे सभी यूनिट परीक्षण चलाता है। यदि कोई ब्रेक है, तो मुझे एक ईमेल मिलता है। यह हमारे सिस्टम में बग को कम करने का एक शानदार तरीका रहा है।

हालांकि, आप क्रॉन नौकरी या एसवीएन चेक-इन हुक के साथ स्वचालित रूप से अपने परीक्षण चलाने के लिए Phing जैसे कुछ आसानी से उपयोग कर सकते हैं।

वास्तव में, यदि आप सीधे आगे की सहायता के लिए मुझसे संपर्क करना चाहते हैं, तो आप मुझे SO पर अपनी प्रोफ़ाइल जानकारी के माध्यम से प्राप्त कर सकते हैं। मुझे आपकी मदद करना अच्छा लगेगा।

11

मैं अत्यधिक Test-Driven Development by Kent Beck (ISBN-10: 0321146530) की सलाह देता हूं। यह विशेष रूप से PHP के लिए नहीं लिखा गया था, लेकिन अवधारणाएं हैं और PHP के लिए आसानी से अनुवाद योग्य होना चाहिए।

1

एक अन्य आधुनिक उपकरण जिसे आप देखना चाहिए Codeception है। यह PHPUnit के बाद बहुत आसान है और परिदृश्य संचालित दृष्टिकोण को शामिल करता है, जो परीक्षण से दस्तावेज़ीकरण उत्पन्न करने के लिए काफी उपयोगी है।

संबंधित मुद्दे