2017-06-08 12 views
5

में मार्गों में लॉग इन मैं मार्गों कि में लॉग इन करने की आवश्यकता होती है के लिए लोड परीक्षण करने के लिए कोशिश कर रहा हूँ।लोड परीक्षण फोनिक्स

मैं पहले लॉग आउट मार्गों जो ठीक काम के लिए https://artillery.io/docs/index.html उपयोग कर रहा था। मार्गों में लॉग इन करने के लिए, मैंने अनुरोध हेडर & निकाय सेट करने के लिए beforeRequest पर फ़ंक्शन के साथ कॉल करने का प्रयास किया।

config: target: "https://www.mywebsite.com/" phases: - duration: 60 arrivalRate: 50 processor: "test.js" scenarios: - flow: - post: url: "/login" beforeRequest: "setReqBody"

और मेरे beforeRequest इस तरह देखा: कि window अपरिभाषित है

function setReqBody(requestParams, context, ee, next) { requestParams.body = {'email': '[email protected]', 'password': 'password', '_csrf_token': window.csrfToken} return next(); }

मैं एक त्रुटि हो रही है।

मुझे यह देखने के लिए चारों ओर देखा गया था कि लोड लोड फीनिक्स के लिए मैं और कुछ और उपयोग कर सकता था, लेकिन इसमें बहुत भाग्य नहीं था। क्या & उन मार्गों का परीक्षण करने में कोई अन्य तरीका है? या अन्य निर्भरताओं/पुस्तकालयों का उपयोग मैं ऐसा करने के लिए कर सकता हूं?

+0

यह @ hassy-veldstra (आर्टिलरी के निर्माता) इस पर सहायता के लिए सीधे पूछ लायक हो सकता है ... – nelsonic

उत्तर

1

Apache JMeter उपयोग पर विचार करें, यह है: HTTP नकल करने के लिए

  • HTTP Request नमूना
  • HTTP Header Manager अनुरोध आवश्यक HTTP अनुरोध हेडर, Content-Type
  • Post Processors के एक नंबर से "रोचक" फ़ील्ड निकालने के लिए सेट करने के लिए यानी प्रतिक्रिया संदेश, कोड, डेटा, शीर्षलेख, आदि
  • HTML Reporting Dashboard लोड परीक्षण परिणामों को देखने के लिए

विवरण के लिए REST API Testing - How to Do it Right देखें।

2

समस्या यह है कि window संदर्भ में परिभाषित नहीं किया गया है कि beforeRequest फ़ंक्शन चलाता है (जैसा कि कोड ब्राउज़र में नहीं चल रहा है)।

यदि सीएसआरएफ टोकन लॉगिन पृष्ठ के डीओएम/एचटीएमएल में कहीं भी शामिल है, तो आप इसे पहले पकड़ सकते हैं और फिर इसे POST अनुरोध में शामिल कर सकते हैं। उदाहरण के लिए, यदि लॉगिन प्रपत्र name गुण = csrfToken साथ एक छिपे हुए CSRF टोकन युक्त अपना सहयोग दे:

scenarios: 
    - flow: 

    # Get the login page and grab the CSRF token 
    - get: 
     url: "/login" 
     capture: 
      selector: "input[name='csrf_token']" 
      attr: "value" 
      as: "csrfToken" 

    # Useful for debugging: check that we used the right selector: 
    - log: "Extracted CSRF token: {{ csrfToken }}" 

    # Now send a login request: 
    - post: 
     url: "/login" 
     form: 
      email: "[email protected]" 
      password: "password123" 
      _csrf_token: "{{ csrfToken }}" 

    # The session cookie will be remembered and reused automatically by 
    # Artillery from this point onwards. 
संबंधित मुद्दे