2009-04-29 16 views
5

मैं अपने PHP/MySQL प्रोजेक्ट्स के लिए यूनिट परीक्षण लिखने के बारे में सोच रहा हूं।PHP में यूनिट परीक्षण?

यह बात है कि मुझे यह बग है कि मैं फॉर्म सत्यापन, AJAX सुविधाओं और UI सुविधाओं (जैसे लिंक पर क्लिक करने) जैसी चीजों का परीक्षण कैसे कर सकता हूं। साथ ही, मैं नहीं चाहता कि परीक्षण यूआई के एक पहलू पर निर्भर हों, इसलिए यदि मैं एक लिंक ले गया तो सभी परीक्षण टूट जाएंगे।

क्या किसी के पास कोड के किन हिस्सों पर यूनिट परीक्षण के बारे में कोई विचार/सुझाव है, लगभग यूनिट परीक्षण पर कितना समय व्यतीत किया जाना चाहिए, और कोई अन्य सुझाव/सुझाव?

+1

http://stackoverflow.com/questions/570451/how-to-best-do-unit-testing-for-a-web- appplication –

उत्तर

2

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

class SomeController extends ... { 
    ... function isAPhoneNumber($string){ 
     if(...) { 
      return true; 
     } 
     else (...) { 
      return false; 
     } 
    } 
} 

यह सभी कोड छोड़ देता है जो इस विधि को आपके मूल्य को अनचाहे करता है।इसका परीक्षण करने का एकमात्र प्रभावी तरीका यूआई का परीक्षण सीधे ब्राउज़र रिमोट कंट्रोल जैसे Selenium के साथ करना है। PHPUnit testing framework में सेलेनियम के PHP ड्राइवर का उपयोग करने के लिए हुक है, जिसका अर्थ है कि आप उसी परीक्षण धावक का उपयोग अपने अन्य यूनिट परीक्षणों के रूप में कर सकते हैं।

आप कभी भी 100% आश्वासन नहीं देंगे कि एक निर्दोष परिवर्तन आपके सेलेनियम परीक्षणों को पूरा नहीं करेगा, लेकिन विकास के दौरान आप इसे कम करने के लिए कुछ कदम उठा सकते हैं। सेलेनियम में various different ways है जो किसी तत्व को "लक्षित" करने के लिए क्लिक करता है या टाइप करता है। आप लक्ष्यीकरण का उपयोग करना चाहते हैं जो जितना संभव हो उतना सटीक है, इसलिए अपने सभी (एक्स) HTML नोड्स को एक अद्वितीय आईडी तत्व देने का प्रयास करें। यह सुनिश्चित करता है कि सेलेनियम एक लिंक पर क्लिक करेगा चाहे वह किसी पृष्ठ पर समाप्त हो।

जब कोई अनूठा आईडी संभव नहीं है, तो कुछ तत्वों के साथ सामान्य तत्वों को लपेटने का प्रयास करें, जिनमें एक अद्वितीय पहचानकर्ता है, और फिर सेलेनियम की xpath tareting क्षमताओं का उपयोग करने के लिए कहें "उस लिंक पर क्लिक करें जिसमें टेक्स्ट" साइनअप "है "foo" की आईडी के साथ div, या "foo" की आईडी के साथ div में तीसरा लिंक क्लिक करें।

तो आइटम इसके ऊपर से स्पष्ट नहीं है, कर लक्ष्यीकरण विकल्प पर भरोसा नहीं है कि सेलेनियम आईडीई (या अन्य रिकॉर्डर) उठाएंगे। उनका लक्ष्य यह सुनिश्चित करना है कि उस सटीक पृष्ठ पर परीक्षण चलाने से आपको वही परिणाम मिलेंगे, जो आपको बहुत ही नाजुक एक्सपैथ दे सकता है। हमेशा आपके द्वारा रिकॉर्ड किए गए परीक्षणों की समीक्षा करें, और कमजोर लक्ष्यीकरण को ठीक करें।

यहां कोई आसान जवाब नहीं है। यदि वहां थे, तो वेब एप्लिकेशन बहुत कम छोटी गाड़ी होगी।

0

SeleniumHQ.org आज़माएं।

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

ऐसा लगता है कि उनके पास उत्पाद के अन्य संस्करण भी हैं जो अन्य ब्राउज़रों को लॉन्च करके परीक्षण कर सकते हैं।

0

मुझे नहीं पता कि मेरा उत्तर सहायक होगा, क्योंकि मेरे पास भी वही प्रश्न है।

वैसे भी, यदि आपने अभी तक यह नहीं किया है, तो Windmill आज़माएं, कि मुझे बहुत उपयोगी, त्वरित और गंदा लगता है और प्रमुख ब्राउज़रों में काम करता है।

एक लिंक बदलने परीक्षण (मामलों मुझे लगता है कि के अधिकांश में) नहीं बदलता है =)

3

आप documentation of SimpleTest के इस भाग के माध्यम से अंगूठे और तरीकों वे परीक्षण के लिए है पर गौर करना चाहिए

  • पेज की सामग्री
  • नेविगेशन
  • कुकीज़
  • छवियों
  • फ्रेम
  • फ़ॉर्म जमा
  • प्रॉक्सी

भले ही आप SimpleTest का उपयोग कर न करना पड़े, यह एक नज़र लायक हो सकता है पुनर्निर्देश।

मेरे लिए, सबसे अधिक उपयोगी बात फ़ॉर्म सबमिशन परीक्षण कर रहा है, प्रत्येक प्रपत्र अपनी साइट के ऑपरेशन के लिए आवश्यक है कि के लिए किसी GET या पोस्ट अनुरोध में प्रत्येक पैरामीटर शामिल हैं।

चाहे आप अपने बहुत सारे यूआई का परीक्षण करना चाहते हैं या केवल छोटे कुंजी क्षेत्र आपके ऊपर हैं।

+0

ओह, टाइपिंग फिक्सिंग के लिए धन्यवाद – thomasrutter

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