กําหนดค่าข้อมูลลับและตัวแปรสภาพแวดล้อม
เรียนรู้วิธีการส่งความลับและสภาพแวดล้อมเป็นพารามิเตอร์เพื่อทดสอบการโหลดในการทดสอบการโหลดของ Azure คุณสามารถใช้พารามิเตอร์เพื่อเปลี่ยนลักษณะการทํางานของการทดสอบการโหลดโดยไม่ต้องแก้ไขสคริปต์ Apache JMeter ตัวอย่างเช่น หากต้องการทดสอบเว็บแอปพลิเคชัน ให้ระบุ URL จุดสิ้นสุดเป็นพารามิเตอร์เพื่อนําสคริปต์การทดสอบของคุณไปใช้ใหม่ในหลายสภาพแวดล้อม คุณยังสามารถใช้พารามิเตอร์เพื่อหลีกเลี่ยงไม่ต้องเขียนโค้ดข้อมูลที่ละเอียดอ่อนในสคริปต์การทดสอบ JMeter
บริการทดสอบการโหลดของ Azure สนับสนุนพารามิเตอร์สองชนิด:
ข้อมูลลับ: ประกอบด้วยข้อมูลที่สําคัญและจะถูกส่งผ่านอย่างปลอดภัยไปยังเครื่องมือทดสอบโหลด ตัวอย่างเช่น ข้อมูลลับให้ข้อมูลประจําตัวของบริการเว็บแทนการเขียนโค้ดแบบตายตัวในสคริปต์การทดสอบ
ตัวแปรสภาพแวดล้อม : ประกอบด้วยข้อมูลที่ไม่เหมาะสมและพร้อมใช้งานเป็นตัวแปรสภาพแวดล้อมในเครื่องมือทดสอบการโหลด ตัวอย่างเช่น ตัวแปรสภาพแวดล้อมทําให้ URL ตําแหน่งข้อมูลของแอปพลิเคชันสามารถกําหนดค่าได้
คุณสามารถระบุพารามิเตอร์ในการกําหนดค่าการทดสอบการโหลดเมื่อคุณสร้างการทดสอบใหม่หรืออัปเดตการทดสอบที่มีอยู่ ถ้าคุณเรียกใช้การทดสอบการโหลดในเวิร์กโฟลว์ CI/CD ของคุณ คุณจะต้องกําหนดพารามิเตอร์ในไฟล์การกําหนดค่าการทดสอบการโหลดหรือในข้อกําหนดเวิร์กโฟลว์ CI/CD
กําหนดค่าการทดสอบการโหลดด้วยข้อมูลลับ
ในส่วนนี้ คุณจะได้เรียนรู้วิธีการส่งความลับไปยังสคริปต์ทดสอบการโหลดของคุณในการทดสอบการโหลดของ Azure ตัวอย่างเช่น คุณอาจใช้ข้อมูลลับเพื่อส่งผ่านคีย์ API ไปยังจุดสิ้นสุดของบริการเว็บที่คุณกําลังโหลดการทดสอบ แทนที่จะจัดเก็บคีย์ API ในการกําหนดค่าหรือการเขียนโค้ดแบบตายตัวในสคริปต์ คุณสามารถบันทึกไว้ในที่เก็บความลับเพื่อควบคุมการเข้าถึงข้อมูลลับอย่างเข้มงวด
การทดสอบการโหลดของ Azure ช่วยให้คุณสามารถจัดเก็บข้อมูลลับในชุดเก็บคีย์ของ Azure ได้ อีกวิธีหนึ่งคือ เมื่อคุณเรียกใช้การทดสอบการโหลดของคุณในไปป์ไลน์ CI/CD คุณยังสามารถใช้ที่เก็บข้อมูลลับที่เชื่อมโยงกับเทคโนโลยี CI/CD ของคุณ เช่น การดําเนินการไปป์ไลน์ Azure หรือ GitHub ได้
หากต้องการใช้ข้อมูลลับด้วยการทดสอบการโหลดของ Azure คุณต้องดําเนินการขั้นตอนต่อไปนี้:
- จัดเก็บค่าข้อมูลลับในที่เก็บข้อมูลลับ
- ส่งการอ้างอิงไปยังข้อมูลลับลงในสคริปต์การทดสอบ Apache JMeter
- ใช้ค่าข้อมูลลับในสคริปต์การทดสอบ Apache JMeter โดยใช้ฟังก์ชัน
GetSecretแบบกําหนดเอง
สําคัญ
คุณสามารถใช้ฟังก์ชันแบบกําหนดเองของ GetSecret เมื่อคุณเรียกใช้สคริปต์การทดสอบ JMeter ของคุณด้วยการทดสอบการโหลด Azure ถ้าคุณเรียกใช้สคริปต์การทดสอบภายในเครื่องของคุณ คุณจําเป็นต้องอัปเดตสคริปต์การทดสอบของคุณและอ่านค่าความลับด้วยวิธีอื่น
ใช้ที่เก็บข้อมูลลับของ GitHub เพื่อบันทึกความลับของการทดสอบการโหลด
หากต้องการใช้ข้อมูลลับในที่เก็บข้อมูลลับ CI/CD และส่งผ่านไปยังการทดสอบการโหลดของคุณใน CI/CD:
เพิ่มค่าข้อมูลลับลงในที่เก็บข้อมูลลับของการดําเนินการ GitHub
ใน GitHub คุณสามารถใช้ข้อมูลลับที่เก็บ GitHub ได้
ส่งผ่านข้อมูลลับเป็นพารามิเตอร์การป้อนข้อมูลไปยังงาน/การดําเนินการการทดสอบการโหลดในเวิร์กโฟลว์ 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
สร้างตัวแปรที่ผู้ใช้กําหนดเองในไฟล์ JMX ของคุณและกําหนดค่าความลับโดยใช้ฟังก์ชัน
GetSecretแบบกําหนดเองฟังก์ชัน
GetSecret(<my-secret-name>)ใช้ชื่อลับเป็นอาร์กิวเมนต์ คุณใช้ชื่อเดียวกันนี้เมื่อคุณกําหนดค่าการทดสอบการโหลดในขั้นตอนถัดไปคุณสามารถสร้างตัวแปรที่ผู้ใช้กําหนดเองโดยใช้ Apache JMeter IDE ดังที่แสดงในรูปต่อไปนี้:
อีกวิธีหนึ่งคือ คุณสามารถแก้ไขไฟล์ 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>อ้างอิงตัวแปรที่ผู้ใช้กําหนดเองในสคริปต์ทดสอบ
คุณสามารถใช้ไวยากรณ์
${}เพื่ออ้างอิงตัวแปรในสคริปต์ได้ ในตัวอย่างต่อไปนี้ คุณใช้ตัวแปร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>
กําหนดค่าการทดสอบการโหลดด้วยตัวแปรสภาพแวดล้อม
ในส่วนนี้ คุณใช้ตัวแปรสภาพแวดล้อมเพื่อส่งผ่านพารามิเตอร์ไปยังการทดสอบการโหลดของคุณ
อัปเดตสคริปต์ Apache JMeter เพื่อใช้ตัวแปรสภาพแวดล้อม ตัวอย่างเช่น ในการกําหนดค่าชื่อโฮสต์จุดสิ้นสุดของแอปพลิเคชัน
กําหนดค่าการทดสอบการโหลดและส่งผ่านตัวแปรสภาพแวดล้อมไปยังสคริปต์ทดสอบ
ใช้ตัวแปรสภาพแวดล้อมใน Apache JMeter
ในส่วนนี้ คุณอัปเดตสคริปต์ Apache JMeter เพื่อใช้ตัวแปรสภาพแวดล้อมเพื่อควบคุมลักษณะการทํางานของสคริปต์
ก่อนอื่น คุณกําหนดตัวแปรที่ผู้ใช้กําหนดเองซึ่งอ่านตัวแปรสภาพแวดล้อม และจากนั้นคุณสามารถใช้ตัวแปรนี้ในการดําเนินการทดสอบได้ ตัวอย่างเช่น เพื่ออัปเดตโดเมน HTTP
สร้างตัวแปรที่ผู้ใช้กําหนดเองในไฟล์ JMX ของคุณและกําหนดค่าของตัวแปรสภาพแวดล้อมโดยใช้ฟังก์ชัน
System.getenvฟังก์ชัน
System.getenv("<my-variable-name>")ใช้ชื่อตัวแปรสภาพแวดล้อมเป็นอาร์กิวเมนต์ คุณใช้ชื่อเดียวกันนี้เมื่อคุณกําหนดค่าการทดสอบการโหลดคุณสามารถสร้างตัวแปรที่ผู้ใช้กําหนดเองโดยใช้ Apache JMeter IDE ดังที่แสดงในรูปต่อไปนี้:
อีกวิธีหนึ่งคือ คุณสามารถแก้ไขไฟล์ 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>อ้างอิงตัวแปรที่ผู้ใช้กําหนดเองในสคริปต์ทดสอบ
คุณสามารถใช้ไวยากรณ์
${}เพื่ออ้างอิงตัวแปรในสคริปต์ได้ ในตัวอย่างต่อไปนี้ คุณใช้ตัวแปร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"
}
]