PHP

2011-11-24 5 views
6

में रिमोट कोड कवरेज एकत्रित करना हमारी परियोजना में, हम PHPUnit परीक्षण चला रहे हैं जो Selenium और Curl का उपयोग किसी भिन्न विकास सर्वर पर पृष्ठों को खोलने के लिए करते हैं। सर्वर बी में एक अपाचे सर्वर है जो वेबसाइट पर चलता है। सर्वर ए सिंक्रनाइज़िंग (Rsync) द्वारा परियोजना फ़ाइलों को विकास सर्वर बी पर परीक्षण कार्य शुरू करता है, इसलिए प्रोजेक्ट फ़ाइलें दोनों सर्वरों पर समान होती हैं।PHP

PHP में कोड कवरेज आंकड़ों को दूरस्थ रूप से एकत्र करने के लिए क्या संभावनाएं हैं?

हम पहले से ही Xdebug उपयोग कर रहे हैं इकाई परीक्षण है कि सर्वर एक पर स्थानीय रूप से चलाने पर कोड कवरेज इकट्ठा करने के लिए (PHPUnit परियोजना फ़ाइलों को सीधे और का उपयोग करता है सकते हैं इसलिए start/stop collecting code coverage report)

अद्यतन:

सर्वर बी पर , वेबसाइट को अपाचे द्वारा संचालित एक PHP इंस्टेंस द्वारा प्रस्तुत किया जाता है। सर्वर ए पर PHP उदाहरण के सेलेनियम/कर्ल का उपयोग करके परीक्षणों का दोपहर का भोजन करते समय, कमांड लाइन संस्करण का उपयोग किया जाता है। यही कारण है कि उदाहरण पीएचपी उदाहरण प्रोफ़ाइल नहीं कर सकता कि अपाचे सर्वर बी पर चलता है

जब इकाई परीक्षण चलाने में (एक अन्य सर्वर का उपयोग नहीं और सेलेनियम/कर्ल का उपयोग नहीं), हम इस तरह एक आदेश का उपयोग करें:

phpunit --coverage-html ./results/codecoverage/ ATestFile.php 

यह PHP क्ली में Xdebug का उपयोग करके "ATestFile.php" में परीक्षण के लिए कोड कवरेज रिपोर्ट उत्पन्न करता है।

+0

क्या आप अब तक की समस्याओं के बारे में अधिक विशिष्ट हो सकते हैं? संभवतः आप सर्वर बी पर एक्सडीबग भी शुरू कर सकते हैं, तो समस्या क्या है? –

+0

क्या मेरे अपडेट ने आपके कुछ प्रश्नों का उत्तर दिया? समस्या सर्वर ए पर कोड कवरेज रिपोर्ट जेनरेट करना है जब यह सर्वर बी है जो कोड बेस/प्रॉस्पेक्ट फ़ाइलों का उपयोग करके PHP इंस्टेंस चलाता है। – HNygard

+0

तो मुद्दा यह है कि आप सर्वर बी पर PHPUnit नहीं चलाना चाहते हैं, क्योंकि सभी परीक्षण वास्तव में सर्वर ए द्वारा किए जा रहे हैं? XDebug अभी भी सर्वर बी पर चलाएगा, आपने बस वहां पर PHPUnit का उपयोग नहीं किया है। मुझे लगता है कि यह आपको "कच्चे" XDebug के लिए उजागर करता है और आपको यह पता लगाना होगा कि PHPUnit वहां से अपना डेटा कैसे एकत्र करता है।यदि आप रुचि रखते हैं, तो मैं आपको एक गैर-एक्सडीबग समाधान प्रदान कर सकता हूं जो आपको बी से कवरेज डेटा एकत्र करने देगा (और यदि आप परवाह करते हैं तो सिस्टम ए से)। –

उत्तर

3

PHPUnit-Selenium गीथब में परियोजना के लिए इसका समाधान है, और मेरा मानना ​​है कि PHPUnit 3.5 में निर्मित पुराने संस्करण की एक ही चीज़ थी। PHPUnit_Extension_Selenium_TestCase folder में फ़ाइलें हैं जिनका उपयोग आप सर्वर बी पर कोड कवरेज जानकारी को कैप्चर करने के लिए करते हैं। आपको दो PHP स्क्रिप्ट्स को प्रीपेन्ड और एपेंड करने के लिए अपाचे सेट अप करने की आवश्यकता है - प्रत्येक अनुरोध के लिए उपयुक्त prepend.php और append.php नामित करें।

निर्देश PHPUnit documentation section on Selenium में हैं। "संलग्न" के लिए खोजें।

+0

पर दिए गए पृष्ठों से कुछ अच्छी रिपोर्ट प्राप्त कर सकता हूं। मुझे यह काम मिल गया है। सही सेट करना था पथ शामिल करना और नए फ़ायरफ़ॉक्स 8 के बजाय क्रोम चलाने के लिए भी स्विच करना था, जो सेलेनियम कुकीज़ को सही ढंग से सेट करने में सक्षम नहीं था। क्या यह ओकी है यदि मैं अपने कुछ अनुभवों को शामिल करने के लिए अपना उत्तर संपादित करता हूं? – HNygard

+0

बिल्कुल, संपादित करें! :) –

1

ओपी विकल्प है कि

हमारे PHP Test Coverage Tool एक तरह से PHPUnit (इसका इस्तेमाल या नहीं, आप मनचाहे ढंग से) और/या XDebug की पूरी तरह से स्वतंत्र में संकलित करें परीक्षण कवरेज डेटा सर्वर बी से रिपोर्ट उत्पन्न कर सकते हैं के लिए कहा (नहीं करता है एक्सडीबग का बिल्कुल उपयोग नहीं करें)।

इसका मतलब है कि आप किसी भी विधि से अपने कोड का उपयोग कर सकते हैं जिसे आप उपयोगी मानते हैं (सर्वर ए से बाहरी अनुरोध सहित), और कोड कवरेज डेटा प्राप्त करें।

आप किसी भी समय कवर कोड का स्नैपशॉट मांग सकते हैं। परीक्षण कवरेज टूल के लिए यह डिस्प्ले इंजन उस स्नैपशॉट को स्रोत कोड पर ओवरले किए गए कवरेज के दृश्यमान डिस्प्ले में परिवर्तित करेगा, और/या सारांश रिपोर्ट तैयार करेगा।

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