feature-image-jmeter-test-fragment
feature-image-jmeter-test-fragment

จากปัญหาใหญ่ของการ development กันเป็น Team หลายๆคน ก็คือเรื่องของการ conflict กันของ source code เลยเกิด version control ซึ่งมีความสามารถในการจัดการ source code ขึ้นมานั้นเอง

ซึ่งปัญหานี้เองก็มีบนการทํา Performance Script ด้วยเหมือนกัน….สมมุติถ้า Test Engineer 2 คนทํางานบน jMeter Script เดียวกัน เรามีสิทธิ์มากๆที่จะเกิดการ conflict ของ code แต่ด้วยความยากกว่านั้นคือ jMeter อยู่ในรูปแบบของ jmx ไฟล์ ซึ่งเป็น xml based … แล้วมันแปลว่าอะไร? มันแปลว่าเวลาที่เอาไปใส่ใน version control พวก git หรือ svn มันยากมากที่จะแยกออกว่าส่วนไหนใครทําอะไร

ดังนั้นเราเลยจะขอนําเสนอออออ ความสามารถของ jMeter เองอยู่แล้ว นั่นก็คือ Test Fragment นั้นเองงงง

Test Fragment คืออะไร? 

มันก็คือ element ตัวนึงที่ถูกออกแบบมาให้ไม่ต้องอยู่ใต้ thread group ใดๆ เป็นตัวลอยๆอยู่ level เดียวกับ thread group เพื่อแยก elements อื่นๆไว้ในตัวมันเอง และจะไม่ทํางานอะไรด้วย

test-fragment-jmeter
test-fragment-jmeter

อ่าว แล้วมีไว้เพื่ออะไร? มันมีไว้เพื่อแยก element ที่สําคัญๆออกมาออกมาเป็น Module และ reuseable กับเข้าหลักการณ์ของ DRY (don’t repeat yourself) ด้วยวิธีนี้ Test Fragment จะไม่ถูกเรียกใช้จนกว่าจะมีการ referenced จาก Module Controller หรือ Include Controller ดังรูปข้างล่างน่ะ

jMeter-Module-Controller-test-fragment
jMeter-Module-Controller-test-fragment

Module Controller คืออะไร? 

เจ้า Module Controller ถูกออกแบบมาให้จัดการกับ test fragment ตอน run-time นั้นเอง ซึ่งเจ้า test fragment เนี่ยอย่างที่บอกมันไม่ได้ทําอะไร มันแค่ถือ controller กับ test element อื่นๆ ไว้เป็น moduleๆ ในตัวมันเอง แล้วรอคนมาเรียกเท่านั้น

แต่ข้อสําคัญคือ Fragments ใดๆที่ถูกใช้โดย Module Controller ต้องเป็น unique name เพราะชื่อเนี่ยจะถูกใช้หาตอน run time

 

example-jmeter-module-controller
example-jmeter-module-controller

 

Include Controller คืออะไร? 

เจ้า Include Controller หลักการณ์เดียวกันกับ Module Controller แต่แตกต่างกันตรงที่ว่ามันถูกออกมาเพื่อ external jmx file โดยการใช้ include controller จะ reference ไปที่ external jmx ไฟล์ที่มี Test Fragment อยู่

include-controller-jmeter-example
include-controller-jmeter-example

ผู้เล่นอีกคน Parameterized Controller ที่น่าสนใจ

เมื่อเราใช้พวก test fragment พวกนี้ ในบางทีมันจะมี scenario ที่เราต้องเข้าไปยุ่งกับ parameter ต่างๆ ซึ่งจะเป็นการยากมากที่จะส่ง paramter ไปให้กับ test fragment มันจึงมี Plugin ตัวนึงชื่อ Parameterized Controller

ซึ่งการใช้ Plugin ตัวนี้จะใช้ควบคู่กับ Module/Include Controller เพื่อที่จะควบคุมการส่ง parameter นั้นเอง โดยหลักการง่ายๆเลยจะตามข้างล่างนี้

parameterized-controller-jmeter-example
parameterized-controller-jmeter-example
parameterized-controller-jmeter-example-on-fragment
parameterized-controller-jmeter-example-on-fragment

ที่นี้ด้วยการเอา Controller ตัวนี้ครอบมันก็จะสามารถส่ง parameter กลับไปที่ Test Fragment ได้แล้วนั้นเอง โดยสามารถส่งต่าง Value ก็ยังได้ เพราะเราก็ครอบบน HTTP Sampler ตัวอื่นๆนั้นเอง

สรุปกัน

สรุปแล้ว Test Fragment ช่วยให้เราแยกเป็น Module ย่อยเพื่อให้เรา Reuesable code, DRY concept และทํางานกันง่ายขึ้นเมื่อมีหลายคนเราก็แบ่ง Module

ถ้าจะ Access Test Fragment ให้ใช้ Module Controller หรือ Include Controller แล้วถ้าจะควบคุม parameter เพื่อส่งให้ Test Fragment ใช้ Parameterized Controller

Noted.

  1. ตัวอย่างของ Plugin เพื่อเข้าใจการใช้งานมากขึ้น ลอง download ลงมาเล่นดู

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.