SlideShare a Scribd company logo
1 of 47
Jmeter Tool
1
I. Jmeter là gì? Tại sao sử dụng Jmeter
1. Jmeter là gì
Apache JMeterTM là phần mềm mã nguồn mở Java thuần túy, được phát
triển lần đầu bởi Stefano Mazzocchi của Tổ chức phần mềm Apache.
Được thiết kế để thực hiện kiểm tra hiệu năng (performance testing), kiểm
tra tải (load testing) và đo lường hiệu suất. Bạn có thể sử dụng JMeter để phân
tích và đo lường hiệu suất của ứng dụng web hoặc nhiều dịch vụ.
Kiểm thử hiệu suất (performance testing) có nghĩa là kiểm thử một ứng
dụng web với tải nặng, lưu lượng truy cập ,nhiều người dùng và đồng thời.
JMeter ban đầu được sử dụng để thử nghiệm ứng dụng Web hoặc ứng dụng
FTP.Ngày nay, nó được sử dụng để kiểm tra chức năng, kiểm tra máy chủ cơ sở
dữ liệu, v.v.
2. Tại sao sử dụng Jmeter
Mã nguồn mở (Open Source): JMeter hoàn toàn miễn phí, cho phép nhà
phát triển sử dụng mã nguồn cho sự phát triển.
Giao diện thân thiện: JMeter cực kỳ dễ sử dụng và không mất thời gian
để làm quen với nó.
Nền tảng độc lập: JMeter là ứng dụng máy tính để bàn Java nguyên bản
100%. Vì vậy, nó có thể chạy trên nhiều nền tảng. Ví dụ có thể chạy trong bất kỳ
hệ điều hành: Window, Linux hoặc Mac.
Khung đa luồng đầy đủ: JMeter cho phép các sampler xảy ra đồng thời
của các chức năng khác nhau bởi một nhóm luồng(thread group) riêng biệt.
Hiển thị kết quả kiểm tra: Kết quả kiểm thử có thể được hiển thị ở định
dạng khác nhau như biểu đồ, bảng, cây và tệp nhật ký.
Cài đặt dễ dàng: Bạn chỉ cần sao chép và chạy tập tin * .bat để chạy
JMeter. Không cần cài đặt.
2
Khả năng mở rộng cao: Bạn có thể viết các bài kiểm thử của riêng mình.
JMeter cũng hỗ trợ các plugin trực quan cho phép bạn mở rộng kiểm thử của
mình.
Nhiều chiến lược kiểm thử: JMeter hỗ trợ nhiều chiến lược kiểm thử như
Load Testing, Distributed Testing, và Functional Testing.
Mô phỏng: JMeter có thể mô phỏng nhiều người dùng với các chủ
đề(threads) đồng thời, tạo một tải nặng đối với ứng dụng web đang được kiểm
thử.
Hỗ trợ đa giao thức: JMeter không chỉ hỗ trợ kiểm thử ứng dụng web, mà
còn đánh giá hiệu năng máy chủ cơ sở dữ liệu. Tất cả các giao thức cơ bản như
HTTP, JDBC, LDAP, SOAP, JMS và FTP đều được hỗ trợ bởi JMeter.
Record & Playback: Ghi lại hoạt động của người dùng trên trình duyệt và
mô phỏng chúng trong ứng dụng web bằng JMeter.
Script Test: Jmeter có thể được tích hợp với Bean Shell & Selenium để
kiểm tra tự động.
II. Cài đặt Jmeter
1. Cài đặt trên Window
Điều kiện: Jmeter viết bằng Java nên muốn chạy JMeter trước hết máy
của bạn phải cài JRE hoặc JDK
Bước 1: Truy cập trang web: http://jmeter.apache.org/download_jmeter.cgi click
on “apache-jmeter-4.0.zip” để download
3
Bước 2: Giải nén file zip vừa tải về
Bước 3: Click đúp vào file apacheJmeter.jar
4
Giao diện Jmeter hiển thị như sau:
2. Cài đặt trên Ubuntu
Bước 1. Download Java for jmeter: sudo apt-get install openjdk-7-jre-headless
5
Bước 2. Check java version: java -version
Bước 3. Download jmeter as command:
wget-c http://ftp.ps.pl/pub/apache//jmeter/binaries/apache-jmeter-3.0.tgz
Bước 4. Update version for jmeter(if any): sudo apt-get update
Bước 5. Go to Download directory: cd Downloads/
Bước 6. Unpack jmeter: tar -xf apache-jmeter-4.0.tgz
Bước 7. Go to Jmeter directory: cd apache-jmeter-4.0/
Bước 8. Run: ./bin/jmeter
3. Cài đặt trên Mac
Bước 1. Install HomeBrew:
/usr/bin/ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install)"
Bước 2. Update brew : brew update
Đảm bảo cập nhật brew trước khi cài đặt Jmeter , nếu không sẽ gặp vấn đề như
dưới đây.
Downloading
http://www.apache.org/dyn/closer.cgi?path=jmeter/binaries/ap​ ache-jmeter-
2.11.tgz ==> Best Mirror
http://apache.mirrors.hoobly.com/jmeter/binaries/apache-jmet​ er-2.11.tgz curl:
(22) The requested URL returned error: 404 Not Found Error: Failed to download
resource "jmeter" Download failed:
http://apache.mirrors.hoobly.com/jmeter/binaries/apache-jmet​ er-2.11.tgz
Sự cố này xảy ra thường xuyên khi có phiên bản JMeter mới, nhưng định nghĩa
gói HomeBrew local của bạn vẫn trỏ đến phiên bản cũ.
Bước 3. Install môi trường java
Download JRE :
6
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-
2133155.html
Download JDK :
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-
2133151.html
Bước 4. Install Jmeter : brew install jmeter
Bước 5. Khởi chạy Jmeter : jmeter
4. Cài đặt plugin cho Jmeter
Bước 1. Download plugin từ link: https://jmeter-plugins.org/
Tap Install tab => Tap Plugins Manager
Tap JAR file và download JAR file
7
Bước 2. Chuyển jar file vừa download tới thư mục
/usr/local/Cellar/jmeter/4.0/lib/ext
Bước 3. Thoát và mở lại Jmeter
Bước 4. Sử dụng UI : Options -> Plugins Manager
III. Tìm hiểu về Performance Testing
1. Performance Testing là gì ?
Kiểm thử hiệu năng được thực hiện để xác định hệ thống hoặc hệ thống
con thực hiện một khối lượng công việc cụ thể nhanh thế nào? Nó cũng có thể
dùng để xác nhận và xác minh những thuộc tính chất lượng khác của hệ thống
như xác định thời gian phản hồi, thông lượng, khả năng mở rộng, độ tin cậy và
sử dụng tài nguyên.
8
2. Các tiêu chí thực hiện performance testing
● Trả lời câu hỏi hệ thống có thể xử lý các mức chịu tải trong khi vẫn giữ
được thời gian hồi đáp ở mức chấp nhận được hay không?
● Chỉ ra được vào thời điểm nào thì hệ thống bắt đầu hư hỏng và những
thành phần nào là nguyên nhân của sự suy thoái đó.
● Hệ thống hiện tại có thể nâng cấp được k? để phù hợp với sự phát triển
trong tương lai?
● Khi mà hệ thống gặp lỗi thì nó sẽ gây ra những ảnh hưởng gì lên mục
đích kinh doanh của doanh nghiệp?
● Đưa ra tiêu chí cho rằng hiệu năng của hệ thống là tốt.
3. Các loại performance testing
Load test: tìm capacity của server, xác định ngưỡng có thể chịu tải được
của hệ thống.
VD về ngưỡng của hệ thống: Hệ thống chịu được 5k request và không
xảy ra lỗi. Quá 5k sẽ bắt đầu có lỗi, response time bị chậm và sẽ có issue xảy ra.
Vậy thì 5k là capacity của server hoạt động ổn định.
Stress test: Đánh giá hệ thống tại và bên trên ngưỡng limit (capacity của
hệ thống) , tìm ra breaking point của hệ thống (làm cho hệ thống die ko response
được nữa).
VD về Breaking point: Ngưỡng mà hệ thống sẽ chết: Ví dụ 5k là nó hoạt
động ổn ko lỗi, 7k là nó bắt đầu có issue, 10k thì nó chết hẳn, die luôn hệ thống.
Vậy 10k là breaking point.
Spike test: Test 1 lượng load lớn trong 1 khoảng thời gian ngắn, giống
như số lượng request đến server của 1 shop online sẽ tăng cao đột biến ở ngày
black friday.
9
Volume test: Test khả năng chịu tải của phần mềm với 1 lượng dữ liệu
nhất định (thông thường là ngưỡng do spec mong muốn).
VD1: khách hàng mong muốn application có thể chịu tải được 10k user,
nếu hệ thống k đáp ứng được thì cần mở rộng DB, ram, room… để hệ thống có
thể đáp ứng được
VD2: KH muốn hệ thống có thể đọc được file csv khoảng 1000 line.
Scalability test: Kiểm tra khả năng mở rộng của hệ thống, tức là: kiểm tra
khả năng đáp ứng của hệ thống với nhu cầu tăng dần.
VD: Trang web thương mại điện tử có thể xử lý đơn đặt hàng cho tối đa
100 người dùng tại một thời điểm nhưng có thể thực hiện kiểm tra khả năng mở
rộng để kiểm tra xem nó có thể xử lý tải cao hơn trong mùa mua sắm cao điểm
không.
https://docs.google.com/spreadsheets/d/1zzV-jpen9U0vwq03ed8uki3-
Lkows0LdFfboRssPIks/edit#gid=787126708
IV. Tìm hiểu các element của Jmeter
1. Thead Groups
Thread group elements là điểm bắt đầu của một test plan bất kỳ. Tất cả các
Controllers và Samplers phải được đặt dưới một thread group.
Những elements còn lại ( ví dụ Listeners ) có thể đặt trực tiếp dưới test plan.
Trong trường hợp đó chúng sẽ áp dụng đến tất cả thread group.
Thread group element điều khiển số lượng threads mà JMeter sẽ sử dụng để
thực thi kịch bản test.
10
Thread Group có những thành phần sau:
1.1 Action to be taken after a Sampler error
Nó xác định những gì sẽ xảy ra nếu một sampler xảy ra lỗi, hoặc vì bản thân
sampler bị lỗi . Các lựa chọn có thể là:
Continue (default): Bỏ qua lỗi và tiếp tục kiểm thử và chạy sampler tiếp theo.
11
Start Next Loop: Bỏ qua lỗi, bắt đầu vòng lặp tiếp theo và tiếp tục với bài kiểm
thử
Stop Thread: Thoát khỏi thread hiện tại
12
Stop Test: Toàn bộ kiểm thử được dừng lại ở cuối sampler hiện tại. Nó có nghĩa
là các sampler đang chờ xử lý vẫn chạy cho đến khi hoàn tất.
Stop Test Now: Toàn bộ kiểm thử được dừng lại ngay lập tức. Mọi sampler hiện
tại đều bị gián đoạn.
13
1.2. Threads Properties
Number of Threads (Users): Giả lập số user
Ramp-Up Period: Khi giá trị Ramp-up Period được thiết lập thì Jmeter sẽ
biết rằng mất bao lâu để "ramp-up" cho toàn bộ các Threads đã chọn.
Ví dụ có 10 threads và ramp-up period là 100 giây, thì JMeter sẽ mất 100
giây để chạy 10 threads. Mỗi thead sẽ bắt đầu 10 (100/10) giây sau khi thread
trước đó được bắt đầu.
Ví dụ 2: Nếu có 30 threads and ramp-up period là 120 giây, thì mỗi chuỗi
liên tiếp sẽ bị trì hoãn sau 4 giây. Việc khởi động cần đủ dài để tránh tải quá lớn
khi bắt đầu kiểm thử và đủ ngắn để thread cuối cùng bắt đầu chạy trước khi
thread đầu tiên kết thúc (trừ khi ai muốn điều đó xảy ra).
Bạn nên bắt đầu với Ramp-up = số thread và điều chỉnh lên hoặc xuống khi cần
thiết.
LƯU Ý: Nếu Ramp-up = 0, kiểm thử sẽ được diễn ra cho đến khi tất cả
các threads được tạo ra, sau đó bắt đầu tất cả các thread cùng một lúc.
Loop Count: Số lần thực thi kiểm thử cho mỗi thread group . Giá trị mặc
định là 1 nghĩa là không lặp lại.
Delay Thread creation until needed: Làm chậm việc tạo ra thread mới.
Hữu ích khi tạo Thread Group với lượng user lớn. Khi đó tránh được tải lớn do
tạo ra một lượng user lớn ngay lập tức.
Scheduler: Khi được tích, tùy chọn cho scheduler sẽ được enable để thiết
lập việc chạy/dừng test tại những thời điểm nhất định. Nếu không chọn, bản test
sẽ chạy ngay khi chúng ta bấm Start.
1.3. Scheduler Configuration
Duration (seconds): Nếu scheduler checkbox được chọn, có thể chọn
thời gian kết thúc tương đối. JMeter sẽ sử dụng tính năng này để tính Thời gian
14
kết thúc và bỏ qua giá trị Thời gian kết thúc. Khi kiểm thử chạy hết thời gian này,
nó sẽ dừng lại và đang sử dụng chế độ Stop Test như trên.
Startup delay (seconds): Nếu scheduler checkbox được chọn, có thể
chọn độ trễ khởi động tương đối. JMeter sẽ sử dụng điều này để tính thời gian
bắt đầu và bỏ qua giá trị thời gian bắt đầu.
Start Time: Nếu scheduler checkbox được chọn,có thể chọn thời gian bắt
đầu tuyệt đối. Khi bạn bắt đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt
đầu được chỉ định bắt đầu kiểm thử.
End Time: Nếu scheduler checkbox được chọn, có thể chọn thời gian kết
thúc tuyệt đối. Khi bạn bắt đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt
đầu được chỉ định bắt đầu kiểm thử và nó sẽ dừng lại ở thời gian kết thúc được
chỉ định.
2. Listeners
Cung cấp thông tin mà JMeter thu thập được về các test case trong lúc JMeter
chạy
Ví dụ: "View results tree" Listener đưa ra chi tiết thông tin của các sampler
requests và responses. Các Listeners khác cung cấp các thông tin tóm lược
hoặc tổng quát .
Listeners có thể trích xuất data thu thập ra file cho người dùng . Mỗi
listeners cung cấp một field để chỉ định file sẽ chứa data. Có thể tùy chọn định
dạng file là CSV hoặc XML.
Lưu ý rằng tất cả Listeners đều lưu trữ cùng một dữ liệu/kết quả test , chỉ
khác nhau ở cách mà data hiển thị trên màn hình.
Listeners có thể đặt bất cứ đâu trong test plan. Chúng sẽ chỉ thu thập data
từ các elements cùng cấp hoặc dưới cấp.
15
2.1 Aggregate Report.
Các số liệu trong report
Mọi người có thể thấy Aggregate Report là 1 report dạng table, với 12 columns
ứng với 12 thông số. Hãy tìm hiểu xem ý nghĩa của từng thông số là gì nhé
● Label: Hiển thị tên của từng requests có trong test plan.
Mặc định, tất cả những request bị trùng tên trong test plan, sẽ chỉ hiển thị
1 dòng duy nhất trong table này, cho dù nội dung của các request đó có khác
nhau hay nằm khác Thread Group đi chăng nữa. Vì vậy, khi đặt tên cho các
Request, mọi người lưu ý nhớ điều này, và đặt tên khác nhau. Xem hình bên
dưới:
“Include group name in the label?” trong ảnh trên có giá trị mặc định là
UNCHECK.
Nếu lựa chọn “Include group name in the label?” được check, thì những request
sẽ được gán thêm tiền tố = tên của Thread Group chứa request đó. Tham khảo
hình bên dưới:
16
● # Samples: Tổng số lần run của request.
Công thức: # Samples = Number of Threads (users) * Loop Count.
Ví dụ 1: Thread Group có cấu hình
– Number of Threads (users): 10
– Loop Count: 3
Thì 1 HTTP Request của Thread Group này sẽ run 10 x 3 = 30 (lần)
—> # Samples: 30
Tuy nhiên, công thức trên sẽ không còn đúng trong 1 số trường hợp: đó là
khi Request của bạn nằm bên dưới 1 Logic Controller nào đó, chẳng hạn như
Logic Controller, such as Loop Controller, Once Only Controller, While Controller,
v.v…
Ví dụ 2: Tiếp tục với ví dụ 1 ở trên, nhưng lần này thì hãy để HTTP
Request vào 1 Logic Controller, là Loop Controller, và để giá trị Loop Count cho
controller này là 2. Lúc này request của bạn sẽ run: 10 x 3 x 2 = 60 (lần).
—> # Samples: 60
● Average (millisecond): Thời gian phản hồi trung bình (Response Time)
của request, tính cho đến lần run cuối cùng.
17
Ví dụ 3: Một Request A run tổng cộng 4 lần với các kết quả Response
Time tương ứng là 101ms, 106ms, 153ms, và 128ms. Thì Response Time trung
bình của Request A sẽ là 122ms.
● Min (millisecond): Respone Time thấp nhất của request tính cho toàn bộ
tất cả các lần run.
Trong ví dụ 3 ở trên thì Min = 101ms
● Max (millisecond): Respone Time cao nhất của request tính cho toàn bộ
tất cả các lần run.
Trong ví dụ 3 ở trên thì Max = 153ms
● Percentiles (millisecond): Percentiles sẽ là một con số x, và đi kèm theo 1
giá trị A. Nghĩa là sẽ có x% có giá trị thấp hơn giá trị A, còn lại (100-x)% sẽ
có giá trị lớn hơn giá trị A.
● Median (millisecond): Nó gần giống với trung bình, nhưng ý nghĩa thì khác
hoàn toàn. Median + một giá trị A, sẽ chia toàn bộ các giá trị của bạn
thành 2 phần bằng nhau, một phần sẽ chứa những giá trị < A, phần còn lại
sẽ chứa những giá trị > A. Median cũng được hiểu như là 50th Percentile.
Quay lại Performance, thì Median sẽ chỉ ra, sẽ có 50% số request có
response time nhỏ hơn giá trị (hiển thị trên table), và 50% số request còn
lại có response time lớn hơn giá trị này.
● 90% Line (90th Percentile) (millisecond):nghĩa là 90% số requests sẽ có
response time nhỏ hơn giá trị hiển thị trong table, 10% số requests còn lại
sẽ có response time lớn hơn giá trị hiển thị trong table
● 95% Line (90th Percentile) (millisecond):nghĩa là 95% số requests sẽ có
response time nhỏ hơn giá trị hiển thị trong table, 5% số requests còn lại
sẽ có response time lớn hơn giá trị hiển thị trong table
● 99% Line (90th Percentile) (millisecond):nghĩa là 99% số requests sẽ có
response time nhỏ hơn giá trị hiển thị trong table, 1% số requests còn lại
sẽ có response time lớn hơn giá trị hiển thị trong table
● Error %: % số lượng request bị fail, bị lỗi.
18
Ví dụ bạn run request A 100 lần và thấy có 15% errors, nghĩa là request A
đã fail/error 15 lần (100*15%)
● Throughput: Thông lượng. Con số này cho bạn biết được số lượng
requests được hệ thống (server) xử lý trong 1 đơn vị thời gian, có thể là
giây, phút, hoặc giờ. Công thức tính throughput là
Throughput = (Tổng số lượng requests) / (Tổng thời gian) * (Đơn vị
chuyển đổi)
- Tổng số lượng requests = Tổng số lần request này được run
- Tổng thời gian = (Thời gian bắt đầu chạy của request cuối cùng) +
(Thời gian chạy/Response Time của request cuối cùng) - (Thời gian bắt
đầu chạy của request đầu tiên)
- Đơn vị chuyển đổi: Mặc định nó sẽ tính theo millisecond, nên để đổi về
second thì số này sẽ là 1000, hoặc 1000*60 nếu bạn muốn chuyển về phút.
● KB/sec: Cũng là thông lượng, nhưng không đo lường bằng số request,
mà đo bằng Kilobytes/second. Công thức là
Throughput KB/sec = (Throughput * Average Bytes) / 1024
Với Aggregate Report thì mình không thấy được thông số Average Bytes. Bạn
có thể xem thông số này từ Summary Report.
● Total: Trong report có 1 dòng cuối cùng đó là Total, nó sẽ tổng kết lại toàn
bộ kết quả từ những request bên trên. Ngoại trừ # Samples, Throughput
và KB/sec, nó sẽ được cộng lại theo đúng nghĩa "Total". Còn các thông số
còn lại đều được tính Total bằng cách lấy giá trị trung bình từ tất cả những
request ở trên.
2.2 Phân tích Report
Hãy tập trung vào 2 thông số quan trọng nhất của mọi Performance Report.
Response Time: Chỉ ra được việc xử lý request NHANH hay CHẬM. Và
đương nhiên, Response Time thì phải càng THẤP càng tốt.
19
Throughput: Chỉ ra được số lượng requests được server xử lý trong một
đơn vị thời gian. Vậy thì, cùng một thời gian, càng xử lý được càng nhiều càng
tốt. Nên với Throughput thì nó phải càng CAO càng tốt.
Dựa vào đó, chúng ta có những trường hợp như sau:
● Response Time: THẤP and Throughput: THẤP => Trường hợp này sẽ
không bao giờ xảy ra. Vì Response Time THẤP nghĩa là thời gian đáp ứng
rất nhanh, nhưng Throughput THẤP lại chỉ ra rằng số request được xử lý
rất ít. Chuyện này là vô lý.
● Response Time: THẤP and Throughput: CAO --> Đây là một kết quả lý
tưởng . Thời gian xử lý thấp và số lượng request xử lý cùng đồng thời lại
cao. Còn chần chờ gì nữa mà không tự tin báo cáo rằng Server đang rất
tốt. Hãy xem xét khả năng mở rộng các tính năng, hoặc tăng thêm số
lượng test để tìm xem giới hạn của server là bao nhiêu.
● Response Time: CAO and Throughput: THẤP --> Ngược lại với bên
trên, đây là lúc mà Performance Test của bạn đã bị fail. Test chỉ ra rằng
thời gian xử lý quá cao, và lượng request được xử lý lại rất thấp. Phải xem
xét để improve về phía sever.
● Response Time: CAO and Throughput: CAO --> Khá nhạy cảm, vì bạn
có thể thấy Throughput cao, tức là server đang làm việc rất tốt, vậy tại sao
thời gian xử lý lại cũng cao (không tốt). Có thể vấn đề lúc này đế từ phía
Client, hoặc cụ thể là đến từ JMeter, có thể đoạn script của bạn viết chưa
được tối ưu, khiến quá trình nó xử lý mất nhiều thời gian chẳng hạn? Hãy
kiểm tra lại để chắc chắn rằng mình có một kết quả test chính xác.
Link tham khảo :
https://jmetervn.com/2016/10/10/analyze-the-aggregate-report-in-jmeter/
20
2.3 View Results Tree
Hiển thị kết quả dạng cây của tất cả các sample responses,cho phép bạn xem
phản hồi cho bất kỳ mẫu nào. Ngoài việc hiển thị phản hồi, bạn có thể thấy thời
gian cần để nhận phản hồi này và một số mã phản hồi.
To be up to date in next version...
3. Sampler
Sampler thực hiện công việc thực của Jmeter. Mỗi Sampler có thể tạo ra một
hoặc nhiều kết quả sample. Những kết quả sample có những thuộc tính đa dạng
được hiển thị ở listener
21
3.1 FTP request
Cho phép bạn gửi một request “upload file” đến server FTP. Nếu bạn gửi
nhiều request đến cùng một server FTP thì có thể dùng FTP Request Defaut
(chuột phải vào Thread Group/Config Element/FTP Request Defaut) và cấu hình
những thành phần mặc định.
Khi tải một một file, nó có thể được lưu trong đĩa (Local file) hay trong dữ
liệu trả về, hoặc cả hai.
Các thành phần chính:
+ Name: Tên của sampler này được hiển thị trong Test plan
+ Server Name or IP: tên miền hay địa chỉ IP của FTP server (*)
+ Port: Nếu nhập port >0 thì port được sử dụng, nếu không nhập sẽ sử
dụng port mặc định của FPT server.
+ Remote File: tên của tệp địch được tải lên (*)
+ Local file: Tệp để tải lên hoặc đích để tải xuống ( mặc định là tên Remote
File).
+ Local File Contents: cung cấp nội dung để upload. Sẽ được ghi đè lên
Local file.
+ get(RETR)/put(STOR): có thể truy xuất hoặc tải tệp hay không.
22
+ Use Binary mode? : kiểm tra chế độ nhị phân (mặc định ASCII).
Save File In Response?: Có lưu trữ nội dung của tệp đã truy xuất trong dữ
liệu phản hồi hay không. Nếu chế độ là ASCII, thì nội dung sẽ hiển thị trong View
Result Tree (Listener).
+ Username: Tên acc FTP.
+ Password: Password acc FTP
3.2 HTTP Request
HTTP Request này cho phép bạn gửi yêu cầu HTTP / HTTPS tới máy chủ
web. Nó cũng cho phép bạn kiểm soát hay không kiểm soát JMeter phân tích cú
pháp các tệp HTML cho hình ảnh, các sources được nhúng khác và gửi các yêu
cầu HTTP để truy xuất chúng. Các loại resource nhúng sau đây được truy xuất:
+ Hình ảnh
+ Applet
+ Bảng định kiểu (CSS) và tài nguyên được tham chiếu từ các tệp đó
+ external scripts
+ frames, iframes
+ background images (body, table, TD, TR)
+ background sound
Các thành phần chính: Basic
23
+ Name: Tên của HTTP request được biể thị trên Test plan.
+ Server Name or IP: tên miền hay địa chỉ IP của FTP server (*).
+ Port Number: Cổng Web server đang nghe, mặc định là 80.
+ Protocol: HTTP, HTTPS or FILE. Default: HTTP.
+ Method: GET , POST , HEAD , TRACE , OPTIONS , PUT ,DELETE ,
PATCH (không được hỗ trợ để thực hiệnJAVA ). Với HttpClient4 , các phương
thức sau liên quan đến WebDav cũng được cho phép: COPY, LOCK, MKCOL,
MOVE, PROPFIND, PROPPATCH, UNLOCK, REPORT, MKCALENDAR,
SEARCH.
+ Path: đường dẫn đến resource (ví dụ, /servlets/myServlet).
+ Content Encoding: Mã hóa nội dung sẽ được sử dụng (cho POST , PUT,
PATCH và FILE ). Đây là mã hóa ký tự được sử dụng và không liên quan đến
Content-Encoding HTTP header.
+ Redirect Automatically:Đặt trình xử lý giao thức http cơ bản để tự động
theo các chuyển hướng, vì vậy chúng không được JMeter nhìn thấy, và do đó sẽ
24
không xuất hiện như các sample. Chỉ nên được sử dụng cho các yêu cầu GET
và HEAD . Trình lấy mẫu HttpClient sẽ từ chối sử dụng nó cho POST hoặc PUT.
+ Follow Redirects: Điều này chỉ có tác dụng nếu " Redirect Automatically "
không được bật. Nếu được select, JMeter sampler sẽ kiểm tra xem phản hồi có
phải là một chuyển hướng hay không và follow theo nó nếu có.
+ Use KeepAlive.
+ Use multipart/form-data for HTTP POST: Sử dụng một request post
multipart/form-data or application/x-www-form-urlencoded
+ Browser-compatible headers: Khi sử dụng multipart / form-data , điều
này sẽ loại bỏ các tiêu đề Content-Type và Content-Transfer-Encoding ; chỉ tiêu
đề Content-Disposition được gửi.
+ Parameters: Mỗi param bao gồm Name và Value. Thường được sử
dụng cho method POST, PUT.
+ Files Upload: Tên của tệp cần gửi. Nếu để trống, JMeter không gửi tệp,
nếu được điền, JMeter sẽ tự động gửi yêu cầu dưới dạng multipart form request
(yêu cầu biểu mẫu nhiều phần).
Các thành phần chính: Advanced
25
+ Implementation: Java , HttpClient4 . Nếu không được chỉ định (và không
được xác định bởi các yêu cầu mặc định HTTP), giá trị mặc định sẽ phụ thuộc
vào giá trị của thuộc tính JMeter jmeter.httpsampler , thất bại, việc thực hiện
HttpClient4 được sử dụng.
+ Connect Timeout: Thời gian chờ kết nối. Số mili giây để chờ kết nối mở.
+ Response Timeout: Thời gian chờ phản hồi. Số mili giây để chờ phản
hồi( áp dụng cho mỗi lần chờ).
+ Retrieve All Embedded Resources: Yêu cầu JMeter phân tích cú pháp
HTML file và gửi HTTP / HTTPS request cho tất cả hình ảnh, Java applets,
JavaScript files, CSSs, v.v. được tham chiếu trong file.
+ URLs must match: URL được nhúng phải khớp bất kỳ URL nào được
tìm thấy. Nếu bạn chỉ muốn tải xuống resource được nhúng từ
http://example.com/ , hãy sử dụng biểu thức: http: // example  .com /.*
+ Source address type: Chỉ dành cho HTTP request với triển khai
HTTPClient.
+ Chọn IP/Hostname để sử dụng địa chỉ IP cụ thể hoặc tên máy chủ (cục
bộ).
26
+ Chọn Device để chọn địa chỉ có sẵn đầu tiên cho giao diện đó, đây có
thể là IPv4 hoặc IPv6.
+ Chọn Device IPv4 để chọn địa chỉ IPv4 của tên thiết bị (như eth0 , lo ,
em0 , v.v.)
+ Chọn Device IPv6 để chọn địa chỉ IPv6 của tên thiết bị (như eth0 , lo ,
em0 , v.v.)
+ Source address field: Chỉ dành cho HTTP request với triển khai
HTTPClient. Thuộc tính này được sử dụng để kích hoạt tính năng giả mạo IP.
Nó ghi đè địa chỉ IP cục bộ mặc định cho sample này. Máy chủ lưu trữ JMeter
phải có nhiều địa chỉ IP (ví dụ: bí danh IP, network interfaces, device). Giá trị có
thể là IP address, hay network interface device như "eth0" or "lo" or "wlan0".
+ Proxy Server: Tên máy chủ hoặc địa chỉ IP của máy chủ proxy để thực
hiện yêu cầu. [Không bao gồm tiền tố http: // .]
+ Port: Cổng máy chủ proxy đang nghe.
+ Username: tên người dùng cho máy chủ proxy.
+ Password: mật khẩu cho máy chủ proxy.
+ Save response as MD5 hash?: Nhằm mục đích thử nghiệm một lượng
lớn dữ liệu. Nếu được select, thì phản hồi sẽ không được lưu trữ trong kết quả
mẫu. Thay vào đó, MD5 hash 32 ký tự của dữ liệu được tính toán và lưu trữ thay
thế.
3.3 Test Action
Được thiết kế để sử dụng trong một controller có điều kiện. Thay vì tạo một
sample, phần tử test sẽ pause hoặc stop mục tiêu đã chọn.
Test Action cũng có thể kết hợp hữu ích với Transaction Controller, vì nó
cho phép tạm dừng được bao gồm mà không cần tạo sample. Đối với sự delay
biến, thiết lập thời gian tạm dừng bằng không, và thêm một bộ đếm thời gian nhỏ.
27
Các thành phần của Test Action:
+ Name: Tên của sampler này được hiển thị trong Test plan.
+ Comments: Những comment cho sampler này.
+ Target:Current Thread / All Threads bỏ qua cho Pause and Go to next
loop iteration).
+ Action:
+ Pause: Tạm dừng các thread hay test
+ Stop: dừng các thread hay test sau khi hoàn thành bất kỳ sample
nào, cái mà đang progress
+ Stop now: dừng ngay lập tức các thread hay test mà không đợi
sample hoàn thành
+ Start Next Thread Group: bắt đầu với vòng lặp tiếp theo
+ Duration (mili seconds): thời gian Pause trong bao lâu (mili giây)
3.4 JDBC Request
JDBC Request cho phép bạn gửi một request (một SQL query) đến một
database.
28
Chi tiết thông số:
+ Name: Tên của sampler này được hiển thị trong Test plan.
+ Variable Name of Pool declared in JDBC Connection Configuration: tên
biến của Jmeter. Tên biến phải phù hợp với tên biến trong JDBC Connection
Configuration..
+ Query Type: chọn loại query tương ứng.
+ SQL Query:
+ Parameter values: danh sách các tham số được ngăn cách bằng dấu
phẩy.
+ Parameter types: các loại param ví dụ như: INTEGER, DATE,
VARCHAR, DOUBLE.
+ Variable Names: tên biến, danh sách biến được ngăn cách bằng dấu
phẩy.
+ Result Variable Name: tên biến kết quả.
+ Handle ResultSet:
+ Store As String : tất cả các biến trên danh sách Variable
Names được lưu trữ dưới dạng chuỗi
29
+ Store As Object: Các biến của kiểu ResultSet trên các biến
Variable Names sẽ được lưu trữ dưới dạng Object
+ Count Records: Các biến của các kiểu ResultSet sẽ được lặp
lại thông qua hiển thị tổng số bản ghi là kết quả. Các biến sẽ
được lưu trữ dưới dạng Chuỗi.
3.5 Java Request
Cho phép bạn kiểm soát java class, triển khai interface
org.apache.jmeter.protocol.java.sampler.JavaSamplerClient. Bạn có thể sử dụng
JMeter để khai thác nhiều chủ đề, kiểm soát tham số đầu vào, và thu thập dữ
liệu.
Chi tiết các field trong Java Request:
+ Name: Tên của sampler này được hiển thị trong Test plan.
+ Classname.
+ Send Parameters with Request: Một danh sách các đối số sẽ được
chuyển đến sampled class. Tất cả các đối số được gửi dưới dạng Chuỗi.
+ Sleep_time: sleep trong bao lâu (ms).
30
+ Sleep_mask: Bao nhiêu "randomness" để thêm. Thời gian ngủ được tính
như sau: totalSleepTime = SleepTime + (System.currentTimeMillis() %
SleepMask).
+ Label: Nếu điền sẽ ghi đè Name.
+ ResponseCode: Nếu điền sẽ cài đặt ResponseCode cho kết quả sample.
+ ResponseMessage: Nếu điền sẽ cài đặt ResponseMessage cho kết quả
sample.
+ Status: Nếu điền sẽ cài đặt Status cho kết quả sample.
+ SamplerData: Nếu điền sẽ cài đặt SamplerDataResponseCode cho kết
quả sample.
+ ResultData: Nếu điền sẽ cài đặt ResultData cho kết quả sample
3.6 Debug Sampler
To be up to date in next version...
4. Assertions
Assertions để xác nhận và kiểm tra lại các kết quả trả về.
4.1 Response Assertion
Response Assertion xác nhận phản hồi cho phép bạn thêm một chuỗi
được so sánh với các trường khác nhau của request hoặc response.
31
Chi tiết các field trong Response Assertion:
+ Name: Tên của Response Assertion này được hiển thị trong Test plan.
+ Apply to: Điều này là để sử dụng với các samplers có thể tạo các sub-
samples.
+ Main sample only: chỉ áp dụng cho sample chính
+ Sub-samples only: chỉ áp dụng cho sample phụ
+ Main sample and sub-samples: áp dụng cho cả hai
+ JMeter Variable Name to use: áp dụng cho nội dung biến
được đặt tên
+ Field to Test: chọn các field nào của Request hay Response để kiểm tra
+ Text Response: kiểm tra text trả về từ server
+ Request data: kiểm tra text của request đã gửi đến server
+ Response Code: Ví dụ: 200
+ Response Message: Ví dụ: OK
32
+ Response Headers: bao gồm Set-Cookie headers
+ Request Headers:
+ URL sampled
+ Document (text)
+ Ignore status: nếu được check thì status của response bắt buộc phải
thành công trước khi đánh giá Assertion
+ Pattern Matching Rules: các cách để kiểm tra
+ Contains: response trả về chứa pattern muốn kiểm tra
+ Matches : response trả về phù hợp hoàn toàn với pattern
muốn kiểm tra
+ Equals:
+ Substring: response trả về chứa một chuỗi string muốn kiểm
tra
+ Not: Đảo ngược lại kết quả kiểm tra
+ OR: sẽ có >2 pattern được kiểm tra. Nếu chỉ cần có 1 pattern
pass thì Assertion sẽ pas
+ Pattern to test: Nội dung muốn được kiểm tra từ response trả về
+ Custom failure message: cho phép thay thế thông báo lỗi ( hiển thị trong
Assertion results).
4.2 Duration Assertion
Duration Assertion để xác định khoảng thời gian phản hồi. Bất kỳ phản hồi
nào nhiều hơn số thời gian cho phép thì được coi là phản hồi không thành công.
33
Chi tiết các field trong Duration Assertion:
+ Name: Tên của Duration Assertion này được hiển thị trong Test plan
+ Apply to: Điều này là để sử dụng với các samplers có thể tạo các sub-
samples,
+ Main sample only: chỉ áp dụng cho sample chính
+ Sub-samples only: chỉ áp dụng cho sample phụ
+ Main sample and sub-samples: áp dụng cho cả hai
+ Duration to assert: Số lượng tối đa mili giây cho mỗi response/ phản hồi
4.3 Size Assertion
Size Assertion để kiểm tra xem mỗi response/ phản hồi có chứa đúng số
byte yêu cầu hay không (số Bytes trả về của response được hiển thị trong cột
Bytes tại View Results in Table)
34
Chi tiết các field trong Size Assertion:
+ Name: Tên của Size Assertion này được hiển thị trong Test plan
+ Apply to: Điều này là để sử dụng với các samplers có thể tạo các sub-
samples.
+ Main sample only: chỉ áp dụng cho sample chính
+ Sub-samples only: chỉ áp dụng cho sample phụ
+ Main sample and sub-samples: áp dụng cho cả hai
+ JMeter Variable Name to use: áp dụng cho nội dung biến
được đặt tên
+ Response Size Field to Test: test kích cỡ ở phần nào của response/
phản hồi.
+ Full Response: kiểm tra kích cỡ tại full response
+ Response Headers: Chỉ kiểm tra size tại phần Headers của
response
+ Response Body: Chỉ kiểm tra size tại phần Body của response
+ Response Code: Chỉ kiểm tra size tại phần Code của
response
35
+ Response Message: Chỉ kiểm tra size tại phần Message của
response
+ Size to Assert:
+ Size in bytes: Kích cỡ cho mỗi response
+ Type of Comparison: Các loại so sánh >;<;=;>=;<=;!=. Của
response trả về với “Size in bytes” được cài đặt.
4.4 XML Assertion
XML Assertion để kiểm tra rằng dữ liệu response bao gồm một documnent
XML chính xác
4.5 MD5Hex Assertion
MD5Hex Assertion cho phép người dùng kiểm tra MD5 Hex trong dữ liệu
phản hồi.
36
MD5 Hex: 32 chữ số thập lục phân đại diện cho MD5 hash
4.6 HTML Assertion
HTML Assertion cho phép người dùng kiểm tra cú pháp HTML của dữ liệu phản
hồi bằng cách sử dụng Jtidy.
Chi tiết các field trong HTML Assertion:
+ Name: Tên của HTML Assertion này được hiển thị trong Test plan
+ Doctype: omit/bỏ qua, auto/tự dộng, strict/Nghiêm ngặt, loose/Lỏng lẻo
+ Format: chọn định dạng HTML, XHTML, XML
+ Errors only: chỉ ghi chú với lỗi
+ Error threshold: Số lỗi được cho phép trước khi response không thành
công
+ Warning threshold: Số cảnh báo được cho phép trước khi phản hồi
không thành công.
+ Filename: Report được vào tệp frontpage_JTidy.txt
37
4.7 XPath Assertion
To be up to date in next version...
5. Logic controllers
Logic controller giúp bạn định nghĩa thứ tự xử lý request trong một Thread.
Ví dụ, ban có thể sử dụng Random controller để gửi HTTP request tới server
một cách ngẫu nhiên.
Logic controller định nghĩa thứ tự request để thực thi.
38
Dưới đây là một vài Logic controller thường được sử dụng:
5.1 Recording controller
Jmeter có thể ghi lại các thao tác test. Recording controller là một Place holder
để lưu trữ lại các Recording step này.
39
5.2 Simple controller
Simple controller chỉ là một container cho user request. Simple controller cho
phép bạn tổ chức và lưu trữ các bộ điều khiển khác.
5.3 Loop controller
Loop controller làm cho các request chạy trong số lần được chỉ định or
forever, ngoài giá trị vòng lặp mà bạn đã thiết lập cho thread group.
40
Ví dụ: Trong 1 HTTP request, bạn thiết lập loop controller có loop count là
2 và thread group cũng có loop count là 2. Thì lúc này Jmeter sẽ chạy tổng 4
HTTP requests.
Và loop controller chỉ chạy cho các child request được thiết lập trong loop
controller.
Ví dụ: Thread group có loop count là 1 và thiết lập loop controller cho
News Page request có loop count là 3.
Như điều kiện trên thì Jmeter sẽ chạy theo thứ tự sau: Home page, News page,
news page, new page.
5.4 Once only controller
Thiết lập once only controller cho phép Jmeter xử lý các bộ điều khiển bên
trong nó chỉ một lần cho mỗi thread. Nếu once only controller được thiết lập thì
nó sẽ được chạy duy nhất trong lần đầu tiên của thread group, còn các lần chạy
sau đó thì request được pass over.
Ví dụ: Thread group có loop count là 3 và bên trong HTTP request thiết lập
once only controller cho một HTTP request như hình bên dưới.
41
Lúc này, Jmeter sẽ chạy theo thứ tự sau: Home page, Bug page, Bug page, Bug
page.
5.5 Random controller
Random controller làm cho tất cả các yêu cầu người dùng chạy với
random order trong mỗi vòng lặp.
Ví dụ: Bạn có 3 yêu cầu tới trang google.com theo thứ tự như sau:
+ 1. HTTP request
+ 2. FTP request
+ JDBC request.
Và yêu cầu là, 3 request này chạy 5 lần. Tổng sẽ có 5 request gửi tới server bởi
jmeter.
- Trường hợp gửi tuần tự: HTTP request -> FTP request -> JDBC request cho
mỗi vòng lặp.
- Trường hợp random thì các request sẽ được gửi ngẫu nhiên: FTP -> JDBC ->
HTTP OR JDBC -> HTTP -> FTP cho mỗi vòng lặp.
6. Timer
Timer cho phép Jmeter delay giữa mỗi request mà Thread tạo ra. Timer có
thể giải quyết được vấn đề quá tải của server. Trong thực tế, sẽ không có trường
hợp nhiều người truy cập cùng lúc vào server mà nó trong một khoảng thời gian
khác nhau. Timer giúp mô tả lại hành vi này.
6.1 Một số Rule cho Timer
Rule 1: Timer sẽ được chạy trước Sampler nhưng sau PreProcessor.
42
Rule 2: Timer sẽ được apply cho tất cả element cùng cấp và nhỏ hơn. Hoặc
apply cho duy nhất một sampler cha.
Hãy nhìn vào ví dụ ở các hình dưới đây:
Ở ví dụ này, Timer sẽ apply cho Request 1 và Request 2 cùng cấp với Timer 1
Ở ví dụ này, Timer sẽ apply cho Request 1, Request 2 và Request 3.
43
Lúc này, Timer 1 không apply cho Request 0 bởi vì sampler này có level cao hơn
Timer 1.
Timer 1 chỉ apply cho Request 1 và không apply cho request 2.
Note: Nếu Timer được thiết lập bên dưới Sampler thì nó chỉ apply cho duy nhất
1 sampler đó.
Rule 3: Nếu có nhiều Timer apply cho một sampler thì thời gian dừng của
sampler đó bằng tổng thời gian của tất cả Timer.
44
Trong ví dụ này, thời gian delay trước khi thực hiện Request A bằng total của
Timer 1 + Timer 2 + Timer 3 + Timer 4.
Rule 4: Response Timer không bao gồm thời gian thực thi các Timer.
Ví dụ: Thiết lập cho Sampler thực hiện trong 5s và sampler này có Timer 2s.
Đồng nghĩa với việc tổng thời gian cho bài test là 7s, nhưng Response time của
Sampler vẫn là 5s.
Dưới đây là một số loại Timer thường dùng trong jmeter.
6.2 Constant timer
Constant timer delay cho mỗi request cùng một khoảng thời gian.
6.3 Gaussian Random Timer
Gaussian Random Timer delay cho mỗi request một khoảng thời gian ngẫu
nhiên.
45
+ Deviation: Độ lệch tính bằng milliseconds
+ Constant Delay Offset: Add thêm value và cũng tính bằng milliseconds.
Trong trường hợp này, tổng thời gian delay sẽ được tính như sau:
6.4 Uniform Random Timer
Uniform Random Timer delay cho mỗi request một khoảng thời gian ngẫu nhiên.
46
+ Random Delay Maximum: Giá trị delay ngẫu nhiên lớn nhất, tính bằng
milliseconds.
+ Constant Delay Offset: Add thêm value và cũng tính bằng milliseconds.
Tổng thời gian delay bằng tổng của Random Value và Offset Value.
Uniform Random Timer khác với Gaussian Random Timer ở chỗ: Trong Uniform
thì chỉ xác định được giới hạn của Random value còn không xác định được giá
trị cụ thể, còn Gaussian thì Random value mình đã thiết lập trước.
7. PreProcessor Elements
Preprocessor thực hiện một vài action trước khi thực thi Sampler Request.

More Related Content

What's hot

Kiểm thử bảo mật web
Kiểm thử bảo mật webKiểm thử bảo mật web
Kiểm thử bảo mật webMinh Tri Nguyen
 
Kiem thu phan mem
Kiem thu phan memKiem thu phan mem
Kiem thu phan memTIen Le
 
[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test caseLe Vu Trung Thanh
 
Pairwise testing
Pairwise testingPairwise testing
Pairwise testingDuyenxau
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMNguyễn Anh
 
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
[Java] Khái niệm về RMI trong Java và cách sử dụng RMITí Bụng Bự
 
Performance testing and reporting with JMeter
Performance testing and reporting with JMeterPerformance testing and reporting with JMeter
Performance testing and reporting with JMeterjvSlideshare
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMNguyễn Anh
 
Nguyên tắc cơ bản của kiểm thử phần mềm
Nguyên tắc cơ bản của kiểm thử phần mềmNguyên tắc cơ bản của kiểm thử phần mềm
Nguyên tắc cơ bản của kiểm thử phần mềmNgọc Khánh
 
Hướng dẫn sử dụng Selenium ide
Hướng dẫn sử dụng Selenium ideHướng dẫn sử dụng Selenium ide
Hướng dẫn sử dụng Selenium ideThiện Dương
 
Giáo trình Tester Full
Giáo trình Tester FullGiáo trình Tester Full
Giáo trình Tester FullThanh Sơn
 
Introduction to jmeter
Introduction to jmeterIntroduction to jmeter
Introduction to jmetertest test
 
Performance testing jmeter
Performance testing jmeterPerformance testing jmeter
Performance testing jmeterBhojan Rajan
 
Apache JMeter - A brief introduction
Apache JMeter - A brief introductionApache JMeter - A brief introduction
Apache JMeter - A brief introductionsilenceIT Inc.
 
Loadrunner vs Jmeter
Loadrunner vs JmeterLoadrunner vs Jmeter
Loadrunner vs JmeterAtul Pant
 
12 Steps to API Load Testing with Apache JMeter
12 Steps to API Load Testing with Apache JMeter12 Steps to API Load Testing with Apache JMeter
12 Steps to API Load Testing with Apache JMeterWSO2
 

What's hot (20)

Kiểm thử bảo mật web
Kiểm thử bảo mật webKiểm thử bảo mật web
Kiểm thử bảo mật web
 
Kiem thu phan mem
Kiem thu phan memKiem thu phan mem
Kiem thu phan mem
 
[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case
 
Load testing with J meter
Load testing with J meterLoad testing with J meter
Load testing with J meter
 
Luận văn: Kiểm thử tự động tương tác giao diện người dùng, 9đ
Luận văn: Kiểm thử tự động tương tác giao diện người dùng, 9đLuận văn: Kiểm thử tự động tương tác giao diện người dùng, 9đ
Luận văn: Kiểm thử tự động tương tác giao diện người dùng, 9đ
 
Pairwise testing
Pairwise testingPairwise testing
Pairwise testing
 
Metasploit
MetasploitMetasploit
Metasploit
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
 
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
[Java] Khái niệm về RMI trong Java và cách sử dụng RMI
 
Kiem thu
Kiem thuKiem thu
Kiem thu
 
Performance testing and reporting with JMeter
Performance testing and reporting with JMeterPerformance testing and reporting with JMeter
Performance testing and reporting with JMeter
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀMTÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
 
Nguyên tắc cơ bản của kiểm thử phần mềm
Nguyên tắc cơ bản của kiểm thử phần mềmNguyên tắc cơ bản của kiểm thử phần mềm
Nguyên tắc cơ bản của kiểm thử phần mềm
 
Hướng dẫn sử dụng Selenium ide
Hướng dẫn sử dụng Selenium ideHướng dẫn sử dụng Selenium ide
Hướng dẫn sử dụng Selenium ide
 
Giáo trình Tester Full
Giáo trình Tester FullGiáo trình Tester Full
Giáo trình Tester Full
 
Introduction to jmeter
Introduction to jmeterIntroduction to jmeter
Introduction to jmeter
 
Performance testing jmeter
Performance testing jmeterPerformance testing jmeter
Performance testing jmeter
 
Apache JMeter - A brief introduction
Apache JMeter - A brief introductionApache JMeter - A brief introduction
Apache JMeter - A brief introduction
 
Loadrunner vs Jmeter
Loadrunner vs JmeterLoadrunner vs Jmeter
Loadrunner vs Jmeter
 
12 Steps to API Load Testing with Apache JMeter
12 Steps to API Load Testing with Apache JMeter12 Steps to API Load Testing with Apache JMeter
12 Steps to API Load Testing with Apache JMeter
 

Similar to Jmeter tool

TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)Đông Đô
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Selenium ide
Selenium ide Selenium ide
Selenium ide Pé Vịt
 
Thuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_JoomlaThuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_JoomlaTrung Mai
 
Test Driven development
Test Driven developmentTest Driven development
Test Driven developmentMU VN
 
Hdth02 ltudql02-su dungsubversion-1
Hdth02 ltudql02-su dungsubversion-1Hdth02 ltudql02-su dungsubversion-1
Hdth02 ltudql02-su dungsubversion-1Dũng Đinh
 
6 câu hỏi phỏng vấn tester thông dụng năm 2021
6 câu hỏi phỏng vấn tester thông dụng năm 20216 câu hỏi phỏng vấn tester thông dụng năm 2021
6 câu hỏi phỏng vấn tester thông dụng năm 2021MDuyn83
 
cài đặt metasploit
cài đặt metasploitcài đặt metasploit
cài đặt metasploitLê Lãnh
 
Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server Ho Quang Thanh
 
Nhóm 1.docx
Nhóm 1.docxNhóm 1.docx
Nhóm 1.docxThuTrPhm1
 
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdfDuongDo35
 
Kiểm Thử Junit
Kiểm Thử Junit Kiểm Thử Junit
Kiểm Thử Junit Thanh Huong
 
Core java 8
Core java 8Core java 8
Core java 8. .
 
Kanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoKanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoVu Hung Nguyen
 

Similar to Jmeter tool (20)

TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)
 
Bai bao cao 3
Bai bao cao 3Bai bao cao 3
Bai bao cao 3
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Đánh giá tải với Gatling [Meetup #21 - 02]
Đánh giá tải với Gatling [Meetup #21 - 02]Đánh giá tải với Gatling [Meetup #21 - 02]
Đánh giá tải với Gatling [Meetup #21 - 02]
 
CHUONG 2.pdf
CHUONG 2.pdfCHUONG 2.pdf
CHUONG 2.pdf
 
Selenium ide
Selenium ide Selenium ide
Selenium ide
 
Tuan 3
Tuan 3Tuan 3
Tuan 3
 
Thuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_JoomlaThuyet_trinh_de_tai_Joomla
Thuyet_trinh_de_tai_Joomla
 
Test Driven development
Test Driven developmentTest Driven development
Test Driven development
 
Hdth02 ltudql02-su dungsubversion-1
Hdth02 ltudql02-su dungsubversion-1Hdth02 ltudql02-su dungsubversion-1
Hdth02 ltudql02-su dungsubversion-1
 
Đề tài: Công cụ sinh dữ liệu thử tự động cho chương trình Java
Đề tài: Công cụ sinh dữ liệu thử tự động cho chương trình JavaĐề tài: Công cụ sinh dữ liệu thử tự động cho chương trình Java
Đề tài: Công cụ sinh dữ liệu thử tự động cho chương trình Java
 
6 câu hỏi phỏng vấn tester thông dụng năm 2021
6 câu hỏi phỏng vấn tester thông dụng năm 20216 câu hỏi phỏng vấn tester thông dụng năm 2021
6 câu hỏi phỏng vấn tester thông dụng năm 2021
 
cài đặt metasploit
cài đặt metasploitcài đặt metasploit
cài đặt metasploit
 
Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server Cấu hình và bảo mật cho Ubuntu Server
Cấu hình và bảo mật cho Ubuntu Server
 
Nhóm 1.docx
Nhóm 1.docxNhóm 1.docx
Nhóm 1.docx
 
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
 
Kiểm Thử Junit
Kiểm Thử Junit Kiểm Thử Junit
Kiểm Thử Junit
 
Core java 8
Core java 8Core java 8
Core java 8
 
Kanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoKanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng cao
 
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.docKiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
Kiểm Thử Hồi Quy Tự Động Cho Các Ứng Dụng LustreScade.doc
 

Recently uploaded

BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Jmeter tool

  • 2. 1 I. Jmeter là gì? Tại sao sử dụng Jmeter 1. Jmeter là gì Apache JMeterTM là phần mềm mã nguồn mở Java thuần túy, được phát triển lần đầu bởi Stefano Mazzocchi của Tổ chức phần mềm Apache. Được thiết kế để thực hiện kiểm tra hiệu năng (performance testing), kiểm tra tải (load testing) và đo lường hiệu suất. Bạn có thể sử dụng JMeter để phân tích và đo lường hiệu suất của ứng dụng web hoặc nhiều dịch vụ. Kiểm thử hiệu suất (performance testing) có nghĩa là kiểm thử một ứng dụng web với tải nặng, lưu lượng truy cập ,nhiều người dùng và đồng thời. JMeter ban đầu được sử dụng để thử nghiệm ứng dụng Web hoặc ứng dụng FTP.Ngày nay, nó được sử dụng để kiểm tra chức năng, kiểm tra máy chủ cơ sở dữ liệu, v.v. 2. Tại sao sử dụng Jmeter Mã nguồn mở (Open Source): JMeter hoàn toàn miễn phí, cho phép nhà phát triển sử dụng mã nguồn cho sự phát triển. Giao diện thân thiện: JMeter cực kỳ dễ sử dụng và không mất thời gian để làm quen với nó. Nền tảng độc lập: JMeter là ứng dụng máy tính để bàn Java nguyên bản 100%. Vì vậy, nó có thể chạy trên nhiều nền tảng. Ví dụ có thể chạy trong bất kỳ hệ điều hành: Window, Linux hoặc Mac. Khung đa luồng đầy đủ: JMeter cho phép các sampler xảy ra đồng thời của các chức năng khác nhau bởi một nhóm luồng(thread group) riêng biệt. Hiển thị kết quả kiểm tra: Kết quả kiểm thử có thể được hiển thị ở định dạng khác nhau như biểu đồ, bảng, cây và tệp nhật ký. Cài đặt dễ dàng: Bạn chỉ cần sao chép và chạy tập tin * .bat để chạy JMeter. Không cần cài đặt.
  • 3. 2 Khả năng mở rộng cao: Bạn có thể viết các bài kiểm thử của riêng mình. JMeter cũng hỗ trợ các plugin trực quan cho phép bạn mở rộng kiểm thử của mình. Nhiều chiến lược kiểm thử: JMeter hỗ trợ nhiều chiến lược kiểm thử như Load Testing, Distributed Testing, và Functional Testing. Mô phỏng: JMeter có thể mô phỏng nhiều người dùng với các chủ đề(threads) đồng thời, tạo một tải nặng đối với ứng dụng web đang được kiểm thử. Hỗ trợ đa giao thức: JMeter không chỉ hỗ trợ kiểm thử ứng dụng web, mà còn đánh giá hiệu năng máy chủ cơ sở dữ liệu. Tất cả các giao thức cơ bản như HTTP, JDBC, LDAP, SOAP, JMS và FTP đều được hỗ trợ bởi JMeter. Record & Playback: Ghi lại hoạt động của người dùng trên trình duyệt và mô phỏng chúng trong ứng dụng web bằng JMeter. Script Test: Jmeter có thể được tích hợp với Bean Shell & Selenium để kiểm tra tự động. II. Cài đặt Jmeter 1. Cài đặt trên Window Điều kiện: Jmeter viết bằng Java nên muốn chạy JMeter trước hết máy của bạn phải cài JRE hoặc JDK Bước 1: Truy cập trang web: http://jmeter.apache.org/download_jmeter.cgi click on “apache-jmeter-4.0.zip” để download
  • 4. 3 Bước 2: Giải nén file zip vừa tải về Bước 3: Click đúp vào file apacheJmeter.jar
  • 5. 4 Giao diện Jmeter hiển thị như sau: 2. Cài đặt trên Ubuntu Bước 1. Download Java for jmeter: sudo apt-get install openjdk-7-jre-headless
  • 6. 5 Bước 2. Check java version: java -version Bước 3. Download jmeter as command: wget-c http://ftp.ps.pl/pub/apache//jmeter/binaries/apache-jmeter-3.0.tgz Bước 4. Update version for jmeter(if any): sudo apt-get update Bước 5. Go to Download directory: cd Downloads/ Bước 6. Unpack jmeter: tar -xf apache-jmeter-4.0.tgz Bước 7. Go to Jmeter directory: cd apache-jmeter-4.0/ Bước 8. Run: ./bin/jmeter 3. Cài đặt trên Mac Bước 1. Install HomeBrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Bước 2. Update brew : brew update Đảm bảo cập nhật brew trước khi cài đặt Jmeter , nếu không sẽ gặp vấn đề như dưới đây. Downloading http://www.apache.org/dyn/closer.cgi?path=jmeter/binaries/ap​ ache-jmeter- 2.11.tgz ==> Best Mirror http://apache.mirrors.hoobly.com/jmeter/binaries/apache-jmet​ er-2.11.tgz curl: (22) The requested URL returned error: 404 Not Found Error: Failed to download resource "jmeter" Download failed: http://apache.mirrors.hoobly.com/jmeter/binaries/apache-jmet​ er-2.11.tgz Sự cố này xảy ra thường xuyên khi có phiên bản JMeter mới, nhưng định nghĩa gói HomeBrew local của bạn vẫn trỏ đến phiên bản cũ. Bước 3. Install môi trường java Download JRE :
  • 7. 6 http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads- 2133155.html Download JDK : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- 2133151.html Bước 4. Install Jmeter : brew install jmeter Bước 5. Khởi chạy Jmeter : jmeter 4. Cài đặt plugin cho Jmeter Bước 1. Download plugin từ link: https://jmeter-plugins.org/ Tap Install tab => Tap Plugins Manager Tap JAR file và download JAR file
  • 8. 7 Bước 2. Chuyển jar file vừa download tới thư mục /usr/local/Cellar/jmeter/4.0/lib/ext Bước 3. Thoát và mở lại Jmeter Bước 4. Sử dụng UI : Options -> Plugins Manager III. Tìm hiểu về Performance Testing 1. Performance Testing là gì ? Kiểm thử hiệu năng được thực hiện để xác định hệ thống hoặc hệ thống con thực hiện một khối lượng công việc cụ thể nhanh thế nào? Nó cũng có thể dùng để xác nhận và xác minh những thuộc tính chất lượng khác của hệ thống như xác định thời gian phản hồi, thông lượng, khả năng mở rộng, độ tin cậy và sử dụng tài nguyên.
  • 9. 8 2. Các tiêu chí thực hiện performance testing ● Trả lời câu hỏi hệ thống có thể xử lý các mức chịu tải trong khi vẫn giữ được thời gian hồi đáp ở mức chấp nhận được hay không? ● Chỉ ra được vào thời điểm nào thì hệ thống bắt đầu hư hỏng và những thành phần nào là nguyên nhân của sự suy thoái đó. ● Hệ thống hiện tại có thể nâng cấp được k? để phù hợp với sự phát triển trong tương lai? ● Khi mà hệ thống gặp lỗi thì nó sẽ gây ra những ảnh hưởng gì lên mục đích kinh doanh của doanh nghiệp? ● Đưa ra tiêu chí cho rằng hiệu năng của hệ thống là tốt. 3. Các loại performance testing Load test: tìm capacity của server, xác định ngưỡng có thể chịu tải được của hệ thống. VD về ngưỡng của hệ thống: Hệ thống chịu được 5k request và không xảy ra lỗi. Quá 5k sẽ bắt đầu có lỗi, response time bị chậm và sẽ có issue xảy ra. Vậy thì 5k là capacity của server hoạt động ổn định. Stress test: Đánh giá hệ thống tại và bên trên ngưỡng limit (capacity của hệ thống) , tìm ra breaking point của hệ thống (làm cho hệ thống die ko response được nữa). VD về Breaking point: Ngưỡng mà hệ thống sẽ chết: Ví dụ 5k là nó hoạt động ổn ko lỗi, 7k là nó bắt đầu có issue, 10k thì nó chết hẳn, die luôn hệ thống. Vậy 10k là breaking point. Spike test: Test 1 lượng load lớn trong 1 khoảng thời gian ngắn, giống như số lượng request đến server của 1 shop online sẽ tăng cao đột biến ở ngày black friday.
  • 10. 9 Volume test: Test khả năng chịu tải của phần mềm với 1 lượng dữ liệu nhất định (thông thường là ngưỡng do spec mong muốn). VD1: khách hàng mong muốn application có thể chịu tải được 10k user, nếu hệ thống k đáp ứng được thì cần mở rộng DB, ram, room… để hệ thống có thể đáp ứng được VD2: KH muốn hệ thống có thể đọc được file csv khoảng 1000 line. Scalability test: Kiểm tra khả năng mở rộng của hệ thống, tức là: kiểm tra khả năng đáp ứng của hệ thống với nhu cầu tăng dần. VD: Trang web thương mại điện tử có thể xử lý đơn đặt hàng cho tối đa 100 người dùng tại một thời điểm nhưng có thể thực hiện kiểm tra khả năng mở rộng để kiểm tra xem nó có thể xử lý tải cao hơn trong mùa mua sắm cao điểm không. https://docs.google.com/spreadsheets/d/1zzV-jpen9U0vwq03ed8uki3- Lkows0LdFfboRssPIks/edit#gid=787126708 IV. Tìm hiểu các element của Jmeter 1. Thead Groups Thread group elements là điểm bắt đầu của một test plan bất kỳ. Tất cả các Controllers và Samplers phải được đặt dưới một thread group. Những elements còn lại ( ví dụ Listeners ) có thể đặt trực tiếp dưới test plan. Trong trường hợp đó chúng sẽ áp dụng đến tất cả thread group. Thread group element điều khiển số lượng threads mà JMeter sẽ sử dụng để thực thi kịch bản test.
  • 11. 10 Thread Group có những thành phần sau: 1.1 Action to be taken after a Sampler error Nó xác định những gì sẽ xảy ra nếu một sampler xảy ra lỗi, hoặc vì bản thân sampler bị lỗi . Các lựa chọn có thể là: Continue (default): Bỏ qua lỗi và tiếp tục kiểm thử và chạy sampler tiếp theo.
  • 12. 11 Start Next Loop: Bỏ qua lỗi, bắt đầu vòng lặp tiếp theo và tiếp tục với bài kiểm thử Stop Thread: Thoát khỏi thread hiện tại
  • 13. 12 Stop Test: Toàn bộ kiểm thử được dừng lại ở cuối sampler hiện tại. Nó có nghĩa là các sampler đang chờ xử lý vẫn chạy cho đến khi hoàn tất. Stop Test Now: Toàn bộ kiểm thử được dừng lại ngay lập tức. Mọi sampler hiện tại đều bị gián đoạn.
  • 14. 13 1.2. Threads Properties Number of Threads (Users): Giả lập số user Ramp-Up Period: Khi giá trị Ramp-up Period được thiết lập thì Jmeter sẽ biết rằng mất bao lâu để "ramp-up" cho toàn bộ các Threads đã chọn. Ví dụ có 10 threads và ramp-up period là 100 giây, thì JMeter sẽ mất 100 giây để chạy 10 threads. Mỗi thead sẽ bắt đầu 10 (100/10) giây sau khi thread trước đó được bắt đầu. Ví dụ 2: Nếu có 30 threads and ramp-up period là 120 giây, thì mỗi chuỗi liên tiếp sẽ bị trì hoãn sau 4 giây. Việc khởi động cần đủ dài để tránh tải quá lớn khi bắt đầu kiểm thử và đủ ngắn để thread cuối cùng bắt đầu chạy trước khi thread đầu tiên kết thúc (trừ khi ai muốn điều đó xảy ra). Bạn nên bắt đầu với Ramp-up = số thread và điều chỉnh lên hoặc xuống khi cần thiết. LƯU Ý: Nếu Ramp-up = 0, kiểm thử sẽ được diễn ra cho đến khi tất cả các threads được tạo ra, sau đó bắt đầu tất cả các thread cùng một lúc. Loop Count: Số lần thực thi kiểm thử cho mỗi thread group . Giá trị mặc định là 1 nghĩa là không lặp lại. Delay Thread creation until needed: Làm chậm việc tạo ra thread mới. Hữu ích khi tạo Thread Group với lượng user lớn. Khi đó tránh được tải lớn do tạo ra một lượng user lớn ngay lập tức. Scheduler: Khi được tích, tùy chọn cho scheduler sẽ được enable để thiết lập việc chạy/dừng test tại những thời điểm nhất định. Nếu không chọn, bản test sẽ chạy ngay khi chúng ta bấm Start. 1.3. Scheduler Configuration Duration (seconds): Nếu scheduler checkbox được chọn, có thể chọn thời gian kết thúc tương đối. JMeter sẽ sử dụng tính năng này để tính Thời gian
  • 15. 14 kết thúc và bỏ qua giá trị Thời gian kết thúc. Khi kiểm thử chạy hết thời gian này, nó sẽ dừng lại và đang sử dụng chế độ Stop Test như trên. Startup delay (seconds): Nếu scheduler checkbox được chọn, có thể chọn độ trễ khởi động tương đối. JMeter sẽ sử dụng điều này để tính thời gian bắt đầu và bỏ qua giá trị thời gian bắt đầu. Start Time: Nếu scheduler checkbox được chọn,có thể chọn thời gian bắt đầu tuyệt đối. Khi bạn bắt đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt đầu được chỉ định bắt đầu kiểm thử. End Time: Nếu scheduler checkbox được chọn, có thể chọn thời gian kết thúc tuyệt đối. Khi bạn bắt đầu kiểm thử, JMeter sẽ đợi cho đến khi thời gian bắt đầu được chỉ định bắt đầu kiểm thử và nó sẽ dừng lại ở thời gian kết thúc được chỉ định. 2. Listeners Cung cấp thông tin mà JMeter thu thập được về các test case trong lúc JMeter chạy Ví dụ: "View results tree" Listener đưa ra chi tiết thông tin của các sampler requests và responses. Các Listeners khác cung cấp các thông tin tóm lược hoặc tổng quát . Listeners có thể trích xuất data thu thập ra file cho người dùng . Mỗi listeners cung cấp một field để chỉ định file sẽ chứa data. Có thể tùy chọn định dạng file là CSV hoặc XML. Lưu ý rằng tất cả Listeners đều lưu trữ cùng một dữ liệu/kết quả test , chỉ khác nhau ở cách mà data hiển thị trên màn hình. Listeners có thể đặt bất cứ đâu trong test plan. Chúng sẽ chỉ thu thập data từ các elements cùng cấp hoặc dưới cấp.
  • 16. 15 2.1 Aggregate Report. Các số liệu trong report Mọi người có thể thấy Aggregate Report là 1 report dạng table, với 12 columns ứng với 12 thông số. Hãy tìm hiểu xem ý nghĩa của từng thông số là gì nhé ● Label: Hiển thị tên của từng requests có trong test plan. Mặc định, tất cả những request bị trùng tên trong test plan, sẽ chỉ hiển thị 1 dòng duy nhất trong table này, cho dù nội dung của các request đó có khác nhau hay nằm khác Thread Group đi chăng nữa. Vì vậy, khi đặt tên cho các Request, mọi người lưu ý nhớ điều này, và đặt tên khác nhau. Xem hình bên dưới: “Include group name in the label?” trong ảnh trên có giá trị mặc định là UNCHECK. Nếu lựa chọn “Include group name in the label?” được check, thì những request sẽ được gán thêm tiền tố = tên của Thread Group chứa request đó. Tham khảo hình bên dưới:
  • 17. 16 ● # Samples: Tổng số lần run của request. Công thức: # Samples = Number of Threads (users) * Loop Count. Ví dụ 1: Thread Group có cấu hình – Number of Threads (users): 10 – Loop Count: 3 Thì 1 HTTP Request của Thread Group này sẽ run 10 x 3 = 30 (lần) —> # Samples: 30 Tuy nhiên, công thức trên sẽ không còn đúng trong 1 số trường hợp: đó là khi Request của bạn nằm bên dưới 1 Logic Controller nào đó, chẳng hạn như Logic Controller, such as Loop Controller, Once Only Controller, While Controller, v.v… Ví dụ 2: Tiếp tục với ví dụ 1 ở trên, nhưng lần này thì hãy để HTTP Request vào 1 Logic Controller, là Loop Controller, và để giá trị Loop Count cho controller này là 2. Lúc này request của bạn sẽ run: 10 x 3 x 2 = 60 (lần). —> # Samples: 60 ● Average (millisecond): Thời gian phản hồi trung bình (Response Time) của request, tính cho đến lần run cuối cùng.
  • 18. 17 Ví dụ 3: Một Request A run tổng cộng 4 lần với các kết quả Response Time tương ứng là 101ms, 106ms, 153ms, và 128ms. Thì Response Time trung bình của Request A sẽ là 122ms. ● Min (millisecond): Respone Time thấp nhất của request tính cho toàn bộ tất cả các lần run. Trong ví dụ 3 ở trên thì Min = 101ms ● Max (millisecond): Respone Time cao nhất của request tính cho toàn bộ tất cả các lần run. Trong ví dụ 3 ở trên thì Max = 153ms ● Percentiles (millisecond): Percentiles sẽ là một con số x, và đi kèm theo 1 giá trị A. Nghĩa là sẽ có x% có giá trị thấp hơn giá trị A, còn lại (100-x)% sẽ có giá trị lớn hơn giá trị A. ● Median (millisecond): Nó gần giống với trung bình, nhưng ý nghĩa thì khác hoàn toàn. Median + một giá trị A, sẽ chia toàn bộ các giá trị của bạn thành 2 phần bằng nhau, một phần sẽ chứa những giá trị < A, phần còn lại sẽ chứa những giá trị > A. Median cũng được hiểu như là 50th Percentile. Quay lại Performance, thì Median sẽ chỉ ra, sẽ có 50% số request có response time nhỏ hơn giá trị (hiển thị trên table), và 50% số request còn lại có response time lớn hơn giá trị này. ● 90% Line (90th Percentile) (millisecond):nghĩa là 90% số requests sẽ có response time nhỏ hơn giá trị hiển thị trong table, 10% số requests còn lại sẽ có response time lớn hơn giá trị hiển thị trong table ● 95% Line (90th Percentile) (millisecond):nghĩa là 95% số requests sẽ có response time nhỏ hơn giá trị hiển thị trong table, 5% số requests còn lại sẽ có response time lớn hơn giá trị hiển thị trong table ● 99% Line (90th Percentile) (millisecond):nghĩa là 99% số requests sẽ có response time nhỏ hơn giá trị hiển thị trong table, 1% số requests còn lại sẽ có response time lớn hơn giá trị hiển thị trong table ● Error %: % số lượng request bị fail, bị lỗi.
  • 19. 18 Ví dụ bạn run request A 100 lần và thấy có 15% errors, nghĩa là request A đã fail/error 15 lần (100*15%) ● Throughput: Thông lượng. Con số này cho bạn biết được số lượng requests được hệ thống (server) xử lý trong 1 đơn vị thời gian, có thể là giây, phút, hoặc giờ. Công thức tính throughput là Throughput = (Tổng số lượng requests) / (Tổng thời gian) * (Đơn vị chuyển đổi) - Tổng số lượng requests = Tổng số lần request này được run - Tổng thời gian = (Thời gian bắt đầu chạy của request cuối cùng) + (Thời gian chạy/Response Time của request cuối cùng) - (Thời gian bắt đầu chạy của request đầu tiên) - Đơn vị chuyển đổi: Mặc định nó sẽ tính theo millisecond, nên để đổi về second thì số này sẽ là 1000, hoặc 1000*60 nếu bạn muốn chuyển về phút. ● KB/sec: Cũng là thông lượng, nhưng không đo lường bằng số request, mà đo bằng Kilobytes/second. Công thức là Throughput KB/sec = (Throughput * Average Bytes) / 1024 Với Aggregate Report thì mình không thấy được thông số Average Bytes. Bạn có thể xem thông số này từ Summary Report. ● Total: Trong report có 1 dòng cuối cùng đó là Total, nó sẽ tổng kết lại toàn bộ kết quả từ những request bên trên. Ngoại trừ # Samples, Throughput và KB/sec, nó sẽ được cộng lại theo đúng nghĩa "Total". Còn các thông số còn lại đều được tính Total bằng cách lấy giá trị trung bình từ tất cả những request ở trên. 2.2 Phân tích Report Hãy tập trung vào 2 thông số quan trọng nhất của mọi Performance Report. Response Time: Chỉ ra được việc xử lý request NHANH hay CHẬM. Và đương nhiên, Response Time thì phải càng THẤP càng tốt.
  • 20. 19 Throughput: Chỉ ra được số lượng requests được server xử lý trong một đơn vị thời gian. Vậy thì, cùng một thời gian, càng xử lý được càng nhiều càng tốt. Nên với Throughput thì nó phải càng CAO càng tốt. Dựa vào đó, chúng ta có những trường hợp như sau: ● Response Time: THẤP and Throughput: THẤP => Trường hợp này sẽ không bao giờ xảy ra. Vì Response Time THẤP nghĩa là thời gian đáp ứng rất nhanh, nhưng Throughput THẤP lại chỉ ra rằng số request được xử lý rất ít. Chuyện này là vô lý. ● Response Time: THẤP and Throughput: CAO --> Đây là một kết quả lý tưởng . Thời gian xử lý thấp và số lượng request xử lý cùng đồng thời lại cao. Còn chần chờ gì nữa mà không tự tin báo cáo rằng Server đang rất tốt. Hãy xem xét khả năng mở rộng các tính năng, hoặc tăng thêm số lượng test để tìm xem giới hạn của server là bao nhiêu. ● Response Time: CAO and Throughput: THẤP --> Ngược lại với bên trên, đây là lúc mà Performance Test của bạn đã bị fail. Test chỉ ra rằng thời gian xử lý quá cao, và lượng request được xử lý lại rất thấp. Phải xem xét để improve về phía sever. ● Response Time: CAO and Throughput: CAO --> Khá nhạy cảm, vì bạn có thể thấy Throughput cao, tức là server đang làm việc rất tốt, vậy tại sao thời gian xử lý lại cũng cao (không tốt). Có thể vấn đề lúc này đế từ phía Client, hoặc cụ thể là đến từ JMeter, có thể đoạn script của bạn viết chưa được tối ưu, khiến quá trình nó xử lý mất nhiều thời gian chẳng hạn? Hãy kiểm tra lại để chắc chắn rằng mình có một kết quả test chính xác. Link tham khảo : https://jmetervn.com/2016/10/10/analyze-the-aggregate-report-in-jmeter/
  • 21. 20 2.3 View Results Tree Hiển thị kết quả dạng cây của tất cả các sample responses,cho phép bạn xem phản hồi cho bất kỳ mẫu nào. Ngoài việc hiển thị phản hồi, bạn có thể thấy thời gian cần để nhận phản hồi này và một số mã phản hồi. To be up to date in next version... 3. Sampler Sampler thực hiện công việc thực của Jmeter. Mỗi Sampler có thể tạo ra một hoặc nhiều kết quả sample. Những kết quả sample có những thuộc tính đa dạng được hiển thị ở listener
  • 22. 21 3.1 FTP request Cho phép bạn gửi một request “upload file” đến server FTP. Nếu bạn gửi nhiều request đến cùng một server FTP thì có thể dùng FTP Request Defaut (chuột phải vào Thread Group/Config Element/FTP Request Defaut) và cấu hình những thành phần mặc định. Khi tải một một file, nó có thể được lưu trong đĩa (Local file) hay trong dữ liệu trả về, hoặc cả hai. Các thành phần chính: + Name: Tên của sampler này được hiển thị trong Test plan + Server Name or IP: tên miền hay địa chỉ IP của FTP server (*) + Port: Nếu nhập port >0 thì port được sử dụng, nếu không nhập sẽ sử dụng port mặc định của FPT server. + Remote File: tên của tệp địch được tải lên (*) + Local file: Tệp để tải lên hoặc đích để tải xuống ( mặc định là tên Remote File). + Local File Contents: cung cấp nội dung để upload. Sẽ được ghi đè lên Local file. + get(RETR)/put(STOR): có thể truy xuất hoặc tải tệp hay không.
  • 23. 22 + Use Binary mode? : kiểm tra chế độ nhị phân (mặc định ASCII). Save File In Response?: Có lưu trữ nội dung của tệp đã truy xuất trong dữ liệu phản hồi hay không. Nếu chế độ là ASCII, thì nội dung sẽ hiển thị trong View Result Tree (Listener). + Username: Tên acc FTP. + Password: Password acc FTP 3.2 HTTP Request HTTP Request này cho phép bạn gửi yêu cầu HTTP / HTTPS tới máy chủ web. Nó cũng cho phép bạn kiểm soát hay không kiểm soát JMeter phân tích cú pháp các tệp HTML cho hình ảnh, các sources được nhúng khác và gửi các yêu cầu HTTP để truy xuất chúng. Các loại resource nhúng sau đây được truy xuất: + Hình ảnh + Applet + Bảng định kiểu (CSS) và tài nguyên được tham chiếu từ các tệp đó + external scripts + frames, iframes + background images (body, table, TD, TR) + background sound Các thành phần chính: Basic
  • 24. 23 + Name: Tên của HTTP request được biể thị trên Test plan. + Server Name or IP: tên miền hay địa chỉ IP của FTP server (*). + Port Number: Cổng Web server đang nghe, mặc định là 80. + Protocol: HTTP, HTTPS or FILE. Default: HTTP. + Method: GET , POST , HEAD , TRACE , OPTIONS , PUT ,DELETE , PATCH (không được hỗ trợ để thực hiệnJAVA ). Với HttpClient4 , các phương thức sau liên quan đến WebDav cũng được cho phép: COPY, LOCK, MKCOL, MOVE, PROPFIND, PROPPATCH, UNLOCK, REPORT, MKCALENDAR, SEARCH. + Path: đường dẫn đến resource (ví dụ, /servlets/myServlet). + Content Encoding: Mã hóa nội dung sẽ được sử dụng (cho POST , PUT, PATCH và FILE ). Đây là mã hóa ký tự được sử dụng và không liên quan đến Content-Encoding HTTP header. + Redirect Automatically:Đặt trình xử lý giao thức http cơ bản để tự động theo các chuyển hướng, vì vậy chúng không được JMeter nhìn thấy, và do đó sẽ
  • 25. 24 không xuất hiện như các sample. Chỉ nên được sử dụng cho các yêu cầu GET và HEAD . Trình lấy mẫu HttpClient sẽ từ chối sử dụng nó cho POST hoặc PUT. + Follow Redirects: Điều này chỉ có tác dụng nếu " Redirect Automatically " không được bật. Nếu được select, JMeter sampler sẽ kiểm tra xem phản hồi có phải là một chuyển hướng hay không và follow theo nó nếu có. + Use KeepAlive. + Use multipart/form-data for HTTP POST: Sử dụng một request post multipart/form-data or application/x-www-form-urlencoded + Browser-compatible headers: Khi sử dụng multipart / form-data , điều này sẽ loại bỏ các tiêu đề Content-Type và Content-Transfer-Encoding ; chỉ tiêu đề Content-Disposition được gửi. + Parameters: Mỗi param bao gồm Name và Value. Thường được sử dụng cho method POST, PUT. + Files Upload: Tên của tệp cần gửi. Nếu để trống, JMeter không gửi tệp, nếu được điền, JMeter sẽ tự động gửi yêu cầu dưới dạng multipart form request (yêu cầu biểu mẫu nhiều phần). Các thành phần chính: Advanced
  • 26. 25 + Implementation: Java , HttpClient4 . Nếu không được chỉ định (và không được xác định bởi các yêu cầu mặc định HTTP), giá trị mặc định sẽ phụ thuộc vào giá trị của thuộc tính JMeter jmeter.httpsampler , thất bại, việc thực hiện HttpClient4 được sử dụng. + Connect Timeout: Thời gian chờ kết nối. Số mili giây để chờ kết nối mở. + Response Timeout: Thời gian chờ phản hồi. Số mili giây để chờ phản hồi( áp dụng cho mỗi lần chờ). + Retrieve All Embedded Resources: Yêu cầu JMeter phân tích cú pháp HTML file và gửi HTTP / HTTPS request cho tất cả hình ảnh, Java applets, JavaScript files, CSSs, v.v. được tham chiếu trong file. + URLs must match: URL được nhúng phải khớp bất kỳ URL nào được tìm thấy. Nếu bạn chỉ muốn tải xuống resource được nhúng từ http://example.com/ , hãy sử dụng biểu thức: http: // example .com /.* + Source address type: Chỉ dành cho HTTP request với triển khai HTTPClient. + Chọn IP/Hostname để sử dụng địa chỉ IP cụ thể hoặc tên máy chủ (cục bộ).
  • 27. 26 + Chọn Device để chọn địa chỉ có sẵn đầu tiên cho giao diện đó, đây có thể là IPv4 hoặc IPv6. + Chọn Device IPv4 để chọn địa chỉ IPv4 của tên thiết bị (như eth0 , lo , em0 , v.v.) + Chọn Device IPv6 để chọn địa chỉ IPv6 của tên thiết bị (như eth0 , lo , em0 , v.v.) + Source address field: Chỉ dành cho HTTP request với triển khai HTTPClient. Thuộc tính này được sử dụng để kích hoạt tính năng giả mạo IP. Nó ghi đè địa chỉ IP cục bộ mặc định cho sample này. Máy chủ lưu trữ JMeter phải có nhiều địa chỉ IP (ví dụ: bí danh IP, network interfaces, device). Giá trị có thể là IP address, hay network interface device như "eth0" or "lo" or "wlan0". + Proxy Server: Tên máy chủ hoặc địa chỉ IP của máy chủ proxy để thực hiện yêu cầu. [Không bao gồm tiền tố http: // .] + Port: Cổng máy chủ proxy đang nghe. + Username: tên người dùng cho máy chủ proxy. + Password: mật khẩu cho máy chủ proxy. + Save response as MD5 hash?: Nhằm mục đích thử nghiệm một lượng lớn dữ liệu. Nếu được select, thì phản hồi sẽ không được lưu trữ trong kết quả mẫu. Thay vào đó, MD5 hash 32 ký tự của dữ liệu được tính toán và lưu trữ thay thế. 3.3 Test Action Được thiết kế để sử dụng trong một controller có điều kiện. Thay vì tạo một sample, phần tử test sẽ pause hoặc stop mục tiêu đã chọn. Test Action cũng có thể kết hợp hữu ích với Transaction Controller, vì nó cho phép tạm dừng được bao gồm mà không cần tạo sample. Đối với sự delay biến, thiết lập thời gian tạm dừng bằng không, và thêm một bộ đếm thời gian nhỏ.
  • 28. 27 Các thành phần của Test Action: + Name: Tên của sampler này được hiển thị trong Test plan. + Comments: Những comment cho sampler này. + Target:Current Thread / All Threads bỏ qua cho Pause and Go to next loop iteration). + Action: + Pause: Tạm dừng các thread hay test + Stop: dừng các thread hay test sau khi hoàn thành bất kỳ sample nào, cái mà đang progress + Stop now: dừng ngay lập tức các thread hay test mà không đợi sample hoàn thành + Start Next Thread Group: bắt đầu với vòng lặp tiếp theo + Duration (mili seconds): thời gian Pause trong bao lâu (mili giây) 3.4 JDBC Request JDBC Request cho phép bạn gửi một request (một SQL query) đến một database.
  • 29. 28 Chi tiết thông số: + Name: Tên của sampler này được hiển thị trong Test plan. + Variable Name of Pool declared in JDBC Connection Configuration: tên biến của Jmeter. Tên biến phải phù hợp với tên biến trong JDBC Connection Configuration.. + Query Type: chọn loại query tương ứng. + SQL Query: + Parameter values: danh sách các tham số được ngăn cách bằng dấu phẩy. + Parameter types: các loại param ví dụ như: INTEGER, DATE, VARCHAR, DOUBLE. + Variable Names: tên biến, danh sách biến được ngăn cách bằng dấu phẩy. + Result Variable Name: tên biến kết quả. + Handle ResultSet: + Store As String : tất cả các biến trên danh sách Variable Names được lưu trữ dưới dạng chuỗi
  • 30. 29 + Store As Object: Các biến của kiểu ResultSet trên các biến Variable Names sẽ được lưu trữ dưới dạng Object + Count Records: Các biến của các kiểu ResultSet sẽ được lặp lại thông qua hiển thị tổng số bản ghi là kết quả. Các biến sẽ được lưu trữ dưới dạng Chuỗi. 3.5 Java Request Cho phép bạn kiểm soát java class, triển khai interface org.apache.jmeter.protocol.java.sampler.JavaSamplerClient. Bạn có thể sử dụng JMeter để khai thác nhiều chủ đề, kiểm soát tham số đầu vào, và thu thập dữ liệu. Chi tiết các field trong Java Request: + Name: Tên của sampler này được hiển thị trong Test plan. + Classname. + Send Parameters with Request: Một danh sách các đối số sẽ được chuyển đến sampled class. Tất cả các đối số được gửi dưới dạng Chuỗi. + Sleep_time: sleep trong bao lâu (ms).
  • 31. 30 + Sleep_mask: Bao nhiêu "randomness" để thêm. Thời gian ngủ được tính như sau: totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask). + Label: Nếu điền sẽ ghi đè Name. + ResponseCode: Nếu điền sẽ cài đặt ResponseCode cho kết quả sample. + ResponseMessage: Nếu điền sẽ cài đặt ResponseMessage cho kết quả sample. + Status: Nếu điền sẽ cài đặt Status cho kết quả sample. + SamplerData: Nếu điền sẽ cài đặt SamplerDataResponseCode cho kết quả sample. + ResultData: Nếu điền sẽ cài đặt ResultData cho kết quả sample 3.6 Debug Sampler To be up to date in next version... 4. Assertions Assertions để xác nhận và kiểm tra lại các kết quả trả về. 4.1 Response Assertion Response Assertion xác nhận phản hồi cho phép bạn thêm một chuỗi được so sánh với các trường khác nhau của request hoặc response.
  • 32. 31 Chi tiết các field trong Response Assertion: + Name: Tên của Response Assertion này được hiển thị trong Test plan. + Apply to: Điều này là để sử dụng với các samplers có thể tạo các sub- samples. + Main sample only: chỉ áp dụng cho sample chính + Sub-samples only: chỉ áp dụng cho sample phụ + Main sample and sub-samples: áp dụng cho cả hai + JMeter Variable Name to use: áp dụng cho nội dung biến được đặt tên + Field to Test: chọn các field nào của Request hay Response để kiểm tra + Text Response: kiểm tra text trả về từ server + Request data: kiểm tra text của request đã gửi đến server + Response Code: Ví dụ: 200 + Response Message: Ví dụ: OK
  • 33. 32 + Response Headers: bao gồm Set-Cookie headers + Request Headers: + URL sampled + Document (text) + Ignore status: nếu được check thì status của response bắt buộc phải thành công trước khi đánh giá Assertion + Pattern Matching Rules: các cách để kiểm tra + Contains: response trả về chứa pattern muốn kiểm tra + Matches : response trả về phù hợp hoàn toàn với pattern muốn kiểm tra + Equals: + Substring: response trả về chứa một chuỗi string muốn kiểm tra + Not: Đảo ngược lại kết quả kiểm tra + OR: sẽ có >2 pattern được kiểm tra. Nếu chỉ cần có 1 pattern pass thì Assertion sẽ pas + Pattern to test: Nội dung muốn được kiểm tra từ response trả về + Custom failure message: cho phép thay thế thông báo lỗi ( hiển thị trong Assertion results). 4.2 Duration Assertion Duration Assertion để xác định khoảng thời gian phản hồi. Bất kỳ phản hồi nào nhiều hơn số thời gian cho phép thì được coi là phản hồi không thành công.
  • 34. 33 Chi tiết các field trong Duration Assertion: + Name: Tên của Duration Assertion này được hiển thị trong Test plan + Apply to: Điều này là để sử dụng với các samplers có thể tạo các sub- samples, + Main sample only: chỉ áp dụng cho sample chính + Sub-samples only: chỉ áp dụng cho sample phụ + Main sample and sub-samples: áp dụng cho cả hai + Duration to assert: Số lượng tối đa mili giây cho mỗi response/ phản hồi 4.3 Size Assertion Size Assertion để kiểm tra xem mỗi response/ phản hồi có chứa đúng số byte yêu cầu hay không (số Bytes trả về của response được hiển thị trong cột Bytes tại View Results in Table)
  • 35. 34 Chi tiết các field trong Size Assertion: + Name: Tên của Size Assertion này được hiển thị trong Test plan + Apply to: Điều này là để sử dụng với các samplers có thể tạo các sub- samples. + Main sample only: chỉ áp dụng cho sample chính + Sub-samples only: chỉ áp dụng cho sample phụ + Main sample and sub-samples: áp dụng cho cả hai + JMeter Variable Name to use: áp dụng cho nội dung biến được đặt tên + Response Size Field to Test: test kích cỡ ở phần nào của response/ phản hồi. + Full Response: kiểm tra kích cỡ tại full response + Response Headers: Chỉ kiểm tra size tại phần Headers của response + Response Body: Chỉ kiểm tra size tại phần Body của response + Response Code: Chỉ kiểm tra size tại phần Code của response
  • 36. 35 + Response Message: Chỉ kiểm tra size tại phần Message của response + Size to Assert: + Size in bytes: Kích cỡ cho mỗi response + Type of Comparison: Các loại so sánh >;<;=;>=;<=;!=. Của response trả về với “Size in bytes” được cài đặt. 4.4 XML Assertion XML Assertion để kiểm tra rằng dữ liệu response bao gồm một documnent XML chính xác 4.5 MD5Hex Assertion MD5Hex Assertion cho phép người dùng kiểm tra MD5 Hex trong dữ liệu phản hồi.
  • 37. 36 MD5 Hex: 32 chữ số thập lục phân đại diện cho MD5 hash 4.6 HTML Assertion HTML Assertion cho phép người dùng kiểm tra cú pháp HTML của dữ liệu phản hồi bằng cách sử dụng Jtidy. Chi tiết các field trong HTML Assertion: + Name: Tên của HTML Assertion này được hiển thị trong Test plan + Doctype: omit/bỏ qua, auto/tự dộng, strict/Nghiêm ngặt, loose/Lỏng lẻo + Format: chọn định dạng HTML, XHTML, XML + Errors only: chỉ ghi chú với lỗi + Error threshold: Số lỗi được cho phép trước khi response không thành công + Warning threshold: Số cảnh báo được cho phép trước khi phản hồi không thành công. + Filename: Report được vào tệp frontpage_JTidy.txt
  • 38. 37 4.7 XPath Assertion To be up to date in next version... 5. Logic controllers Logic controller giúp bạn định nghĩa thứ tự xử lý request trong một Thread. Ví dụ, ban có thể sử dụng Random controller để gửi HTTP request tới server một cách ngẫu nhiên. Logic controller định nghĩa thứ tự request để thực thi.
  • 39. 38 Dưới đây là một vài Logic controller thường được sử dụng: 5.1 Recording controller Jmeter có thể ghi lại các thao tác test. Recording controller là một Place holder để lưu trữ lại các Recording step này.
  • 40. 39 5.2 Simple controller Simple controller chỉ là một container cho user request. Simple controller cho phép bạn tổ chức và lưu trữ các bộ điều khiển khác. 5.3 Loop controller Loop controller làm cho các request chạy trong số lần được chỉ định or forever, ngoài giá trị vòng lặp mà bạn đã thiết lập cho thread group.
  • 41. 40 Ví dụ: Trong 1 HTTP request, bạn thiết lập loop controller có loop count là 2 và thread group cũng có loop count là 2. Thì lúc này Jmeter sẽ chạy tổng 4 HTTP requests. Và loop controller chỉ chạy cho các child request được thiết lập trong loop controller. Ví dụ: Thread group có loop count là 1 và thiết lập loop controller cho News Page request có loop count là 3. Như điều kiện trên thì Jmeter sẽ chạy theo thứ tự sau: Home page, News page, news page, new page. 5.4 Once only controller Thiết lập once only controller cho phép Jmeter xử lý các bộ điều khiển bên trong nó chỉ một lần cho mỗi thread. Nếu once only controller được thiết lập thì nó sẽ được chạy duy nhất trong lần đầu tiên của thread group, còn các lần chạy sau đó thì request được pass over. Ví dụ: Thread group có loop count là 3 và bên trong HTTP request thiết lập once only controller cho một HTTP request như hình bên dưới.
  • 42. 41 Lúc này, Jmeter sẽ chạy theo thứ tự sau: Home page, Bug page, Bug page, Bug page. 5.5 Random controller Random controller làm cho tất cả các yêu cầu người dùng chạy với random order trong mỗi vòng lặp. Ví dụ: Bạn có 3 yêu cầu tới trang google.com theo thứ tự như sau: + 1. HTTP request + 2. FTP request + JDBC request. Và yêu cầu là, 3 request này chạy 5 lần. Tổng sẽ có 5 request gửi tới server bởi jmeter. - Trường hợp gửi tuần tự: HTTP request -> FTP request -> JDBC request cho mỗi vòng lặp. - Trường hợp random thì các request sẽ được gửi ngẫu nhiên: FTP -> JDBC -> HTTP OR JDBC -> HTTP -> FTP cho mỗi vòng lặp. 6. Timer Timer cho phép Jmeter delay giữa mỗi request mà Thread tạo ra. Timer có thể giải quyết được vấn đề quá tải của server. Trong thực tế, sẽ không có trường hợp nhiều người truy cập cùng lúc vào server mà nó trong một khoảng thời gian khác nhau. Timer giúp mô tả lại hành vi này. 6.1 Một số Rule cho Timer Rule 1: Timer sẽ được chạy trước Sampler nhưng sau PreProcessor.
  • 43. 42 Rule 2: Timer sẽ được apply cho tất cả element cùng cấp và nhỏ hơn. Hoặc apply cho duy nhất một sampler cha. Hãy nhìn vào ví dụ ở các hình dưới đây: Ở ví dụ này, Timer sẽ apply cho Request 1 và Request 2 cùng cấp với Timer 1 Ở ví dụ này, Timer sẽ apply cho Request 1, Request 2 và Request 3.
  • 44. 43 Lúc này, Timer 1 không apply cho Request 0 bởi vì sampler này có level cao hơn Timer 1. Timer 1 chỉ apply cho Request 1 và không apply cho request 2. Note: Nếu Timer được thiết lập bên dưới Sampler thì nó chỉ apply cho duy nhất 1 sampler đó. Rule 3: Nếu có nhiều Timer apply cho một sampler thì thời gian dừng của sampler đó bằng tổng thời gian của tất cả Timer.
  • 45. 44 Trong ví dụ này, thời gian delay trước khi thực hiện Request A bằng total của Timer 1 + Timer 2 + Timer 3 + Timer 4. Rule 4: Response Timer không bao gồm thời gian thực thi các Timer. Ví dụ: Thiết lập cho Sampler thực hiện trong 5s và sampler này có Timer 2s. Đồng nghĩa với việc tổng thời gian cho bài test là 7s, nhưng Response time của Sampler vẫn là 5s. Dưới đây là một số loại Timer thường dùng trong jmeter. 6.2 Constant timer Constant timer delay cho mỗi request cùng một khoảng thời gian. 6.3 Gaussian Random Timer Gaussian Random Timer delay cho mỗi request một khoảng thời gian ngẫu nhiên.
  • 46. 45 + Deviation: Độ lệch tính bằng milliseconds + Constant Delay Offset: Add thêm value và cũng tính bằng milliseconds. Trong trường hợp này, tổng thời gian delay sẽ được tính như sau: 6.4 Uniform Random Timer Uniform Random Timer delay cho mỗi request một khoảng thời gian ngẫu nhiên.
  • 47. 46 + Random Delay Maximum: Giá trị delay ngẫu nhiên lớn nhất, tính bằng milliseconds. + Constant Delay Offset: Add thêm value và cũng tính bằng milliseconds. Tổng thời gian delay bằng tổng của Random Value và Offset Value. Uniform Random Timer khác với Gaussian Random Timer ở chỗ: Trong Uniform thì chỉ xác định được giới hạn của Random value còn không xác định được giá trị cụ thể, còn Gaussian thì Random value mình đã thiết lập trước. 7. PreProcessor Elements Preprocessor thực hiện một vài action trước khi thực thi Sampler Request.