2015-07-07 11 views
7

मेरे पास एक वेब एप्लिकेशन है, जिस पर मैं Yslow चलाने के लिए चाहता हूं। परीक्षणों को जेनकींस के साथ एकीकृत करने की आवश्यकता होगी। एप्लिकेशन में एक लॉगिन पेज है। यदि मैं एप्लिकेशन का यूआरएल प्रदान करता हूं, तो लॉगिन पेज में कोई वैध उपयोगकर्ता लॉग नहीं होता है। तो मैं YSLow & जेनकींस का उपयोग करके प्रदर्शन का परीक्षण कैसे करूं? क्या लॉगिन भाग को स्वचालित करना संभव है?वाईएसलो और जेनकींस के साथ प्रदर्शन परीक्षण यूआई

+0

चाहिए इससे पहले कि आप YSlow चलाने एक phantomJS स्क्रिप्ट के साथ एक लॉगिन करने में सक्षम हो? [यहां] (http://stackoverflow.com/questions/18739354/how-can-i-use-persisted-cookies-from-a-file-using-phantomjs) कुछ दिलचस्प संकेत हैं कि आप प्रमाणीकरण कैसे कर सकते हैं। जैसा कि [इस उत्तर] में है (http://stackoverflow.com/a/24184040/3623345), आप सत्र प्राप्त करने के लिए * लॉगिन * का प्रयास कर सकते हैं, फिर Yslow.js लॉन्च करने के लिए आगे बढ़ें। –

उत्तर

3

हाँ आप कर सकते हैं, लेकिन आप अभी भी इस स्वचालित भाग को याद करते हैं। आपको YSlow & जेनकींस से कुछ और चाहिए। यह एप्लिकेशन के नेटवर्क आर्किटेक्चर पर अत्यधिक निर्भर है - यदि आप स्थानीय रूप से या दूरस्थ रूप से परीक्षण चलाते हैं।

Robotframework + सेलेनियम सर्वर

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

PhantomJS + CasperJs

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

दोनों समाधानों (या किसी अन्य) के लिए आपको YSlow द्वारा उत्पन्न आउटपुट फ़ाइलों को पढ़ने के लिए अतिरिक्त जेनकींस प्लगइन्स की आवश्यकता होगी।

4

चूंकि वाईएसलो इनपुट इनपुट एचएआर फ़ाइल से प्रदर्शन रिपोर्ट उत्पन्न कर सकता है, इसलिए सेलेनियम के साथ वेब साइट पर नेविगेट करते समय मैं प्रदर्शन डेटा रिकॉर्ड करने के लिए प्रॉक्सी सर्वर का उपयोग करूंगा। इस तरह, आप वास्तविक ब्राउज़र (क्रोम, फ़ायरफ़ॉक्स, सफारी ...) पर या फ़ैंटॉमजेएस जैसे हेडलेस पर प्रदर्शन को स्वतंत्र रूप से माप सकते हैं।

आगे बढ़ने के लिए, पहली बार डाउनलोड browsermob प्रॉक्सी और इसे अनज़िप:

https://github.com/lightbody/browsermob-proxy/releases

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

from browsermobproxy import Server 
from selenium import webdriver 
import json, sys 

# setup the proxy server 
server = Server(r"C:\Download\browsermob-proxy-2.1.0-beta-5\bin\browsermob-proxy") 
server.start() 
proxy = server.create_proxy() 

try: 
    # setup the browser 
    profile = webdriver.FirefoxProfile() 
    profile.set_proxy(proxy.selenium_proxy()) 
    driver = webdriver.Firefox(firefox_profile=profile) 

    # start collecting the data 
    proxy.new_har("google") 

    # login to a twitter account 
    driver.get("https://twitter.com/login?lang=en") 
    driver.find_element_by_css_selector(".js-username-field").send_keys("my name") 
    driver.find_element_by_css_selector(".js-password-field").send_keys("my password") 
    driver.find_element_by_css_selector("button.submit").click() 

    # save the collected data to a file 
    with open(sys.argv[1], 'w') as file: 
    file.write(json.dumps(proxy.har, indent=2)) 

finally: 
    driver.quit() 
    server.stop() 

अंत में, स्क्रिप्ट चलाने और एक कमांड लाइन के साथ प्रदर्शन रिपोर्ट उत्पन्न करने के लिए:

python perf-login.py perf-login.har 
yslow perf-login.har 
संबंधित मुद्दे