กําหนดค่าข้อมูลลับและตัวแปรสภาพแวดล้อม

เสร็จสมบูรณ์เมื่อ

เรียนรู้วิธีการส่งความลับและสภาพแวดล้อมเป็นพารามิเตอร์เพื่อทดสอบการโหลดในการทดสอบการโหลดของ Azure คุณสามารถใช้พารามิเตอร์เพื่อเปลี่ยนลักษณะการทํางานของการทดสอบการโหลดโดยไม่ต้องแก้ไขสคริปต์ Apache JMeter ตัวอย่างเช่น หากต้องการทดสอบเว็บแอปพลิเคชัน ให้ระบุ URL จุดสิ้นสุดเป็นพารามิเตอร์เพื่อนําสคริปต์การทดสอบของคุณไปใช้ใหม่ในหลายสภาพแวดล้อม คุณยังสามารถใช้พารามิเตอร์เพื่อหลีกเลี่ยงไม่ต้องเขียนโค้ดข้อมูลที่ละเอียดอ่อนในสคริปต์การทดสอบ JMeter

บริการทดสอบการโหลดของ Azure สนับสนุนพารามิเตอร์สองชนิด:

  • ข้อมูลลับ: ประกอบด้วยข้อมูลที่สําคัญและจะถูกส่งผ่านอย่างปลอดภัยไปยังเครื่องมือทดสอบโหลด ตัวอย่างเช่น ข้อมูลลับให้ข้อมูลประจําตัวของบริการเว็บแทนการเขียนโค้ดแบบตายตัวในสคริปต์การทดสอบ

  • ตัวแปรสภาพแวดล้อม : ประกอบด้วยข้อมูลที่ไม่เหมาะสมและพร้อมใช้งานเป็นตัวแปรสภาพแวดล้อมในเครื่องมือทดสอบการโหลด ตัวอย่างเช่น ตัวแปรสภาพแวดล้อมทําให้ URL ตําแหน่งข้อมูลของแอปพลิเคชันสามารถกําหนดค่าได้

คุณสามารถระบุพารามิเตอร์ในการกําหนดค่าการทดสอบการโหลดเมื่อคุณสร้างการทดสอบใหม่หรืออัปเดตการทดสอบที่มีอยู่ ถ้าคุณเรียกใช้การทดสอบการโหลดในเวิร์กโฟลว์ CI/CD ของคุณ คุณจะต้องกําหนดพารามิเตอร์ในไฟล์การกําหนดค่าการทดสอบการโหลดหรือในข้อกําหนดเวิร์กโฟลว์ CI/CD

กําหนดค่าการทดสอบการโหลดด้วยข้อมูลลับ

ในส่วนนี้ คุณจะได้เรียนรู้วิธีการส่งความลับไปยังสคริปต์ทดสอบการโหลดของคุณในการทดสอบการโหลดของ Azure ตัวอย่างเช่น คุณอาจใช้ข้อมูลลับเพื่อส่งผ่านคีย์ API ไปยังจุดสิ้นสุดของบริการเว็บที่คุณกําลังโหลดการทดสอบ แทนที่จะจัดเก็บคีย์ API ในการกําหนดค่าหรือการเขียนโค้ดแบบตายตัวในสคริปต์ คุณสามารถบันทึกไว้ในที่เก็บความลับเพื่อควบคุมการเข้าถึงข้อมูลลับอย่างเข้มงวด

การทดสอบการโหลดของ Azure ช่วยให้คุณสามารถจัดเก็บข้อมูลลับในชุดเก็บคีย์ของ Azure ได้ อีกวิธีหนึ่งคือ เมื่อคุณเรียกใช้การทดสอบการโหลดของคุณในไปป์ไลน์ CI/CD คุณยังสามารถใช้ที่เก็บข้อมูลลับที่เชื่อมโยงกับเทคโนโลยี CI/CD ของคุณ เช่น การดําเนินการไปป์ไลน์ Azure หรือ GitHub ได้

หากต้องการใช้ข้อมูลลับด้วยการทดสอบการโหลดของ Azure คุณต้องดําเนินการขั้นตอนต่อไปนี้:

  1. จัดเก็บค่าข้อมูลลับในที่เก็บข้อมูลลับ
  2. ส่งการอ้างอิงไปยังข้อมูลลับลงในสคริปต์การทดสอบ Apache JMeter
  3. ใช้ค่าข้อมูลลับในสคริปต์การทดสอบ Apache JMeter โดยใช้ฟังก์ชัน GetSecret แบบกําหนดเอง

สําคัญ

คุณสามารถใช้ฟังก์ชันแบบกําหนดเองของ GetSecret เมื่อคุณเรียกใช้สคริปต์การทดสอบ JMeter ของคุณด้วยการทดสอบการโหลด Azure ถ้าคุณเรียกใช้สคริปต์การทดสอบภายในเครื่องของคุณ คุณจําเป็นต้องอัปเดตสคริปต์การทดสอบของคุณและอ่านค่าความลับด้วยวิธีอื่น

ใช้ที่เก็บข้อมูลลับของ GitHub เพื่อบันทึกความลับของการทดสอบการโหลด

หากต้องการใช้ข้อมูลลับในที่เก็บข้อมูลลับ CI/CD และส่งผ่านไปยังการทดสอบการโหลดของคุณใน CI/CD:

  1. เพิ่มค่าข้อมูลลับลงในที่เก็บข้อมูลลับของการดําเนินการ GitHub

    ใน GitHub คุณสามารถใช้ข้อมูลลับที่เก็บ GitHub ได้

    สกรีนช็อตที่แสดงวิธีการเพิ่มข้อมูลลับของที่เก็บ GitHub

  2. ส่งผ่านข้อมูลลับเป็นพารามิเตอร์การป้อนข้อมูลไปยังงาน/การดําเนินการการทดสอบการโหลดในเวิร์กโฟลว์ CI/CD

    ส่วนย่อยของ YAML ต่อไปนี้แสดงวิธีการส่งความลับไปยังการดําเนินการ GitHub การทดสอบโหลดของ :

    - name: 'Azure Load Testing'
      uses: azure/load-testing@v1
      with:
        loadtestConfigFile: 'SampleApp.yaml'
        loadtestResource: 'MyTest'
        resourceGroup: 'loadtests-rg'
        secrets: |
        [
            {
            "name": "appToken",
            "value": "${{ secrets.MY_SECRET }}"
            }
        ]
    

    สําคัญ

    ชื่อของพารามิเตอร์การป้อนข้อมูลลับจําเป็นต้องตรงกับชื่อที่ใช้ในสคริปต์ Apache JMeter

คุณได้ระบุข้อมูลลับในที่เก็บข้อมูลลับ CI/CD และส่งการอ้างอิงไปยังการทดสอบการโหลดของ Azure ตอนนี้คุณสามารถใช้ข้อมูลลับในสคริปต์ Apache JMeter ได้แล้ว

ใช้ข้อมูลลับใน Apache JMeter

ถัดไป คุณอัปเดตสคริปต์ Apache JMeter เพื่อใช้ข้อมูลลับที่คุณระบุไว้ก่อนหน้านี้

ก่อนอื่น คุณสร้างตัวแปรที่ผู้ใช้กําหนดเองซึ่งเรียกใช้ค่าข้อมูลลับ จากนั้น คุณสามารถใช้ตัวแปรนี้ในการทดสอบของคุณได้ ตัวอย่างเช่น หากต้องการผ่านโทเค็น API ในส่วนหัวของคําขอ HTTP

  1. สร้างตัวแปรที่ผู้ใช้กําหนดเองในไฟล์ JMX ของคุณและกําหนดค่าความลับโดยใช้ฟังก์ชัน GetSecret แบบกําหนดเอง

    ฟังก์ชัน GetSecret(<my-secret-name>) ใช้ชื่อลับเป็นอาร์กิวเมนต์ คุณใช้ชื่อเดียวกันนี้เมื่อคุณกําหนดค่าการทดสอบการโหลดในขั้นตอนถัดไป

    คุณสามารถสร้างตัวแปรที่ผู้ใช้กําหนดเองโดยใช้ Apache JMeter IDE ดังที่แสดงในรูปต่อไปนี้:

    สกรีนช็อตที่แสดงวิธีการเพิ่มตัวแปรที่ผู้ใช้กําหนดเองไปยังสคริปต์ Apache JMeter ของคุณ

    อีกวิธีหนึ่งคือ คุณสามารถแก้ไขไฟล์ JMX ได้โดยตรง ดังที่แสดงในส่วนย่อยของโค้ดตัวอย่างนี้:

    <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
      <collectionProp name="Arguments.arguments">
        <elementProp name="appToken" elementType="Argument">
          <stringProp name="Argument.name">udv_appToken</stringProp>
          <stringProp name="Argument.value">${__GetSecret(appToken)}</stringProp>
          <stringProp name="Argument.desc">Value for x-secret header </stringProp>
          <stringProp name="Argument.metadata">=</stringProp>
        </elementProp>
      </collectionProp>
    </Arguments>
    
  2. อ้างอิงตัวแปรที่ผู้ใช้กําหนดเองในสคริปต์ทดสอบ

    คุณสามารถใช้ไวยากรณ์ ${} เพื่ออ้างอิงตัวแปรในสคริปต์ได้ ในตัวอย่างต่อไปนี้ คุณใช้ตัวแปร udv_appToken เพื่อตั้งค่าส่วนหัวของ HTTP

      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">api-key</stringProp>
            <stringProp name="Header.value">${udv_appToken}</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
    

กําหนดค่าการทดสอบการโหลดด้วยตัวแปรสภาพแวดล้อม

ในส่วนนี้ คุณใช้ตัวแปรสภาพแวดล้อมเพื่อส่งผ่านพารามิเตอร์ไปยังการทดสอบการโหลดของคุณ

  1. อัปเดตสคริปต์ Apache JMeter เพื่อใช้ตัวแปรสภาพแวดล้อม ตัวอย่างเช่น ในการกําหนดค่าชื่อโฮสต์จุดสิ้นสุดของแอปพลิเคชัน

  2. กําหนดค่าการทดสอบการโหลดและส่งผ่านตัวแปรสภาพแวดล้อมไปยังสคริปต์ทดสอบ

ใช้ตัวแปรสภาพแวดล้อมใน Apache JMeter

ในส่วนนี้ คุณอัปเดตสคริปต์ Apache JMeter เพื่อใช้ตัวแปรสภาพแวดล้อมเพื่อควบคุมลักษณะการทํางานของสคริปต์

ก่อนอื่น คุณกําหนดตัวแปรที่ผู้ใช้กําหนดเองซึ่งอ่านตัวแปรสภาพแวดล้อม และจากนั้นคุณสามารถใช้ตัวแปรนี้ในการดําเนินการทดสอบได้ ตัวอย่างเช่น เพื่ออัปเดตโดเมน HTTP

  1. สร้างตัวแปรที่ผู้ใช้กําหนดเองในไฟล์ JMX ของคุณและกําหนดค่าของตัวแปรสภาพแวดล้อมโดยใช้ฟังก์ชัน System.getenv

    ฟังก์ชัน System.getenv("<my-variable-name>") ใช้ชื่อตัวแปรสภาพแวดล้อมเป็นอาร์กิวเมนต์ คุณใช้ชื่อเดียวกันนี้เมื่อคุณกําหนดค่าการทดสอบการโหลด

    คุณสามารถสร้างตัวแปรที่ผู้ใช้กําหนดเองโดยใช้ Apache JMeter IDE ดังที่แสดงในรูปต่อไปนี้:

    สกรีนช็อตที่แสดงวิธีการเพิ่มตัวแปรที่ผู้ใช้กําหนดเองสําหรับตัวแปรสภาพแวดล้อมไปยังสคริปต์ JMeter ของคุณ

    อีกวิธีหนึ่งคือ คุณสามารถแก้ไขไฟล์ JMX ได้โดยตรง ดังที่แสดงในส่วนย่อยของโค้ดตัวอย่างนี้:

    <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
      <collectionProp name="Arguments.arguments">
        <elementProp name="appToken" elementType="Argument">
          <stringProp name="Argument.name">udv_webapp</stringProp>
          <stringProp name="Argument.value">${__BeanShell( System.getenv("webapp") )}</stringProp>
          <stringProp name="Argument.desc">Web app URL</stringProp>
          <stringProp name="Argument.metadata">=</stringProp>
        </elementProp>
      </collectionProp>
    </Arguments>
    
  2. อ้างอิงตัวแปรที่ผู้ใช้กําหนดเองในสคริปต์ทดสอบ

    คุณสามารถใช้ไวยากรณ์ ${} เพื่ออ้างอิงตัวแปรในสคริปต์ได้ ในตัวอย่างต่อไปนี้ คุณใช้ตัวแปร udv_webapp เพื่อกําหนดค่า URL ปลายทางของแอปพลิเคชัน

    <stringProp name="HTTPSampler.domain">${udv_webapp}</stringProp>
    

กําหนดค่าตัวแปรสภาพแวดล้อมในการทดสอบการโหลดของ Azure

หากต้องการส่งผ่านตัวแปรสภาพแวดล้อมไปยังสคริปต์ Apache JMeter คุณสามารถกําหนดค่าการทดสอบการโหลดในพอร์ทัล Azure ในไฟล์การกําหนดค่าการทดสอบ YAML หรือโดยตรงในเวิร์กโฟลว์ CI/CD

ส่วนย่อย YAML ต่อไปนี้แสดงตัวอย่างการดําเนินการ GitHub:

- name: 'Azure Load Testing'
  uses: azure/load-testing
  with:
    loadtestConfigFile: 'SampleApp.yaml'
    loadtestResource: 'MyTest'
    resourceGroup: 'loadtests-rg'
    env: |
    [
        {
        "name": "webapp",
        "value": "myapplication.contoso.com"
        }
    ]