Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
bao_cao_apache_jmeter.pdf
1. ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
———————o0o——————–
BÁO CÁO BÀI TẬP LỚN
CÔNG CỤ KIỂM THỬ TỰ ĐỘNG
APACHE JMETER
Môn học : Kiểm thử và đảm bảo chất lượng phần mềm
Giảng viên : TS Nguyễn Văn Sơn
Sinh viên thực hiện : Phan Công Thành - 20020216
Võ Công Thành - 20020472
Lê Thị Xuân Thu - 20020217
Nguyễn Trọng Tuế - 20020498
HÀ NỘI, 2023
2. Mục lục
1 Tổng quan 3
1.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Mục đích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Ý tưởng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Các thành phần cơ bản và cơ chế hoạt động của JMeter 3
2.1 Các thành phần cơ bản của JMeter . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Cách thức xây dựng, hoạt động của công cụ . . . . . . . . . . . . . . . . . 6
3 Đánh giá JMeter 6
3.1 Ưu nhược điểm của JMeter . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 So sánh JMeter với công cụ khác . . . . . . . . . . . . . . . . . . . . . . . 8
4 Demo 10
3. Danh sách hình vẽ
2.1 Các thành phần cơ bản của JMeter . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Mô tả cách thức hoạt động của JMeter . . . . . . . . . . . . . . . . . . . . 6
4.1 Kết quả khi chạy Test plan . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Danh sách bảng
3.1 So sánh Jmeter và Locust . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 So sánh Jmeter và LoadRunner . . . . . . . . . . . . . . . . . . . . . . . . 9
2
4. 1 Tổng quan
1.1 Giới thiệu
Apache JMeter là phần mềm mã nguồn mở được phát triển hoàn toàn dựa trên nền
tảng Java. Ban đầu JMeter được Stefano Mazzocchi tạo ra với mục đích chính là kiểm
tra hiệu năng của Apache Jserv. Sau này cộng đồng Apache đã cải thiện về mặt giao diện
(GUI) cũng như nâng cấp và tích hợp thêm một số tính năng mới.
1.2 Mục đích
Mục đích của JMeter là kiểm tra độ chịu tải và đo lường hiệu năng (performance
testing) của server, ứng dụng web, ứng dụng di động, cơ sở dữ liệu (database), các dịch
vụ web (web services),...
1.3 Ý tưởng
Ý tưởng của JMeter là nó cho phép người dùng tạo ra một lượng lớn yêu cầu (request)
đến hệ thống cần kiểm thử bằng cách tạo ra nhiều luồng (thread) và mỗi luồng (thread)
được mô phỏng giống như một người dùng thực tế đang sử dụng hệ thống. Sau đó JMeter
sẽ lưu lại tất cả phản hồi (response) để trả về các số liệu thống kê theo nhiều giao diện
khác nhau như dạng cây (View results tree), báo cáo (Summary report), biểu đồ (Graph
results),... Một số thông số được hiển thị trong các thống kê của JMeter như thời gian
phản hồi, thời gian thực thi, thời gian kết nối, tốc độ, phần trăm yêu cầu (request) bị
lỗi,...
2 Các thành phần cơ bản và cơ chế hoạt động của JMeter
2.1 Các thành phần cơ bản của JMeter
Hình 2.1: Các thành phần cơ bản của JMeter
2.1.1 Test plan
Là đơn vị cấp cao nhất của JMeter, nó chứa tất cả các yêu cầu cần thực hiện cũng
như tất cả các cài đặt, cấu hình để có thể thực hiện request. Ngoài ra test plan cũng cho
3
5. phép khai báo các biến chung để sử dụng trong suốt bài test. Test plan được lưu trữ trong
file có đuôi là jmx.
2.1.2 Thread group
Tạo ra một nhóm người dùng đồng thời gửi yêu cầu (request) đến hệ thống cùng lúc.
JMeter sẽ chạy nhóm luồng (thread) này cho tới khi đạt đủ số lượng luồng (thread) mà
người dùng thiết lập hoặc hết thời gian.
Một số thuộc tính cơ bản của một thread group bao gồm:
Number of threads: Số lượng luồng (thread) mà người dùng muốn tạo ra để thực hiện
yêu cầu (request) đến hệ thống cần kiểm thử.
Ramp-up period: Thời gian JMeter tạo ra các luồng (thread) mới. Ví dụ chúng ta thiết
lập giá trị cho tham số này là 2s thì mỗi 2s JMeter sẽ tạo ra một luồng (thread) mới.
Trong trường hợp người dùng không thiết lập giá trị cho tham số này thì mặc định hệ
thống sẽ tạo ra tất cả luồng (thread) cùng một lúc.
Loop count: Số lần các yêu cầu (request) sẽ được lặp lại trong mỗi luồng (thread).
Scheduler: Bộ lập lịch sử dụng để xác định thời gian bắt đầu và kết thúc của thread
group. Nếu người dùng không thiết lập giá trị cho tham số này thì hệ thống sẽ thực hiện
cho đến khi nào hết số lượng luồng (thread) được thiết lập trong number of threads thì
mới dừng lại.
2.1.3 Recording
Ghi lại tất cả các yêu cầu (request) mà trình duyệt tạo ra khi người dùng thực hiện
quá trình duyệt các trang web. Mục đích là tạo ra kịch bản kiểm thử vì khi kiểm thử
một trang web bất kỳ chúng ta không thể biết được API và các tham số cần truyền vào
cho các API đó. Ý tưởng để thực hiện được chức năng này là chúng ta sẽ thiết lập cấu
hình proxy của trình duyệt web trỏ đến JMeter để JMeter có thể ghi lại được các yêu cầu
(request) khi người dùng duyệt web.
2.1.4 Sampler
Sampler được sử dụng để mô phỏng hoạt động của người dùng và là một đơn vị đang
chạy gửi yêu cầu đến máy chủ và nhận dữ liệu phản hồi từ máy chủ. Sampler là một
thành phần bên trong Thread Group, vì vậy nó phải được thêm vào Thread Group mỗi
khi thực thi test case. Một số sampler có trong JMeter: TCP sampler, HTTP request,
FTP request, JDBC request, Java request,...
2.1.5 Logic Controller
Logic Controller kiểm soát thứ tự thực hiện của Sampler khi gửi request đến server,
bao gồm cả thời gian và cách thức gửi. Logic Controller được chia thành 2 loại chính:
Kiểm soát thứ tự thực hiện logic của các nút trong quá trình thực hiện kế hoạch kiểm
4
6. tra, chẳng hạn như bộ điều khiển vòng lặp, bộ điều khiển If, v.v.
Nhóm các tập lệnh trong Test plan để tạo điều kiện cho JMeter đếm kết quả thực thi và
kiểm soát thời gian chạy của tập lệnh, chẳng hạn như throughput controller, transaction
controller, v.v.
2.1.6 Listener
Là thành phần được sử dụng để xử lý và trực quan hóa dữ liệu của kết quả kiểm tra
thông qua các format khác nhau như: View Results Tree, Graph Results, and Aggregate
Report. Listener có thể được tạo thành từ nhiều giai đoạn khác nhau trong quá trình
kiểm thử như: Test plan, Thread Group, Sampler,...
2.1.7 Configuration Element
Được sử dụng để thiết lập các cấu hình, giá trị mặc định và các biến sẽ được sử dụng.
Nó có thể được xác định ở cấp độ Test plan, Thread Group hoặc ở Sampler, với các phạm
vi khác nhau cho các cấp độ khác nhau.Configuration Element chủ yếu bao gồm biến do
người dùng định nghĩa, cấu hình tập dữ liệu CSV, cấu hình bộ lấy mẫu TCP, trình quản
lý cookie HTTP, v.v.
2.1.8 Assertion
Sử dụng để kiểm tra phản hồi nhận được từ máy chủ cho một yêu cầu của một Sampler
cụ thể có như kỳ vọng không. Và để kiểm tra một Sampler, có thể thêm Assertion làm
thành phần con cho Sampler đó.
2.1.9 Timer
Là thành phần cho phép cài đặt khoảng thời gian chờ giữa hai yêu cầu gửi đến server
từ người dùng ảo. Điều này mô phỏng các hoạt động thực tế của người dùng trên website
sẽ mất một khoảng thời gian như tìm kiếm, hoặc đọc nội dung. Một số JMeter timer chủ
yếu gồm: Constant Timer, Uniform Random Timer, Precise Throughput Timer, Constant
Throughput Timer, Gaussian Random Timer, JSR223 Timer, Poisson Random Timer,
Synchronizing Timer, BeanShell Timer.
2.1.10 Pre-processors and Post Processors
Pre-processors thực hiện một số thao tác như: sửa đổi các tham số, đặt biến môi
trường hoặc cập nhật biến trước khi có Sampler request.
Post Processors thực hiện một số thao tác sau Sampler request. Dữ liệu phản hồi có
thể cần được sử dụng trong các yêu cầu tiếp theo và cần xử lý các dữ liệu phản hồi này.
Ví dụ: nếu mã thông báo jwt trong phản hồi được lấy và sử dụng để xác thực trong các
yêu cầu tiếp theo, thì Post Processors sẽ được sử dụng.
5
7. 2.2 Cách thức xây dựng, hoạt động của công cụ
Khi chúng ta bắt đầu thực hiện kiểm thử hiệu năng cho một ứng dụng. JMeter sẽ
sinh ra các yêu cầu gửi đến server đích và mô phỏng số lượng người dùng gửi yêu cầu.
Ngay khi máy chủ phản hồi lại yêu cầu, JMeter sẽ lưu lại các phản hồi này. Dưa trên các
dữ liệu phản hồi, nó sẽ thu thập tập hợp để tính toán thống kê. Cuối cùng bằng cách sử
dụng các thông tin thống kê, nó sẽ tạo ra một bản báo cáo cho người dùng về hiệu năng
của hệ thống vừa thực hiện đánh giá bao gồm (Samples, Average, Min, Max, Error).
Hình 2.2: Mô tả cách thức hoạt động của JMeter
3 Đánh giá JMeter
3.1 Ưu nhược điểm của JMeter
3.1.1 Ưu điểm
JMeter là một sản phẩm mã nguồn mở và không tốn phí, các nhà phát triển có thể
truy cập và tham khảo mã nguồn trực tiếp trên github của Apache; điều này tạo ra nhiều
ưu điểm cho JMeter như:
Cộng đồng hỗ trợ lớn, JMeter trở nên phổ biến làm cho nó có cộng đồng người sử
dụng lớn cùng các nhà phát triển tích cực, cung cấp nhiều tài liệu, hướng dẫn để hỗ trợ
người dùng. Ngoài ra, mã nguồn của nó cũng liên tục được cập nhật, bảo trì,... để mang
lại một Jmeter ngày càng hoàn thiện hơn.
Độc lập nền tảng, JMeter được phát triển bằng Java và lưu trữ các test plan của nó
dưới dạng XML. Do đó, nó có thể chạy trên các hệ điều hành phổ biến hỗ trợ máy ảo
Java (JVM) như Windows, Linux hay MacOS.
Giao diện thân thiện, người dùng có thể sử dụng giao diện đồ họa để thiết lập hầu
hết các yếu tố kiểm thử, như các yêu cầu HTTP, các biến, các bộ nghe,. . . giúp việc tạo
và chạy kiểm thử dễ dàng và nhanh chóng.
6
8. Đa dạng hiển thị báo cáo, JMeter có thể tạo báo cáo, biểu thị kết quả một cách đa
dạng. Kết quả có thể được xem lại bằng cách sử dụng Graph, Chart, và Treeview ngay
trong giao diện GUI hoặc lưu trữ với nhiều định dạng như Text, XML, HTML và JSON
để phù hợp với mục đích sử dụng.
Dễ sử dụng, người dùng có thể cài đặt và sử dụng JMeter một cách dễ dàng: chỉ cần
tải về từ Internet, cài đặt và chạy. Là một ứng dụng Java thuần túy, nó sẵn sàng để sử
dụng với các cài đặt mặc định ở bất kì nền tảng nào hỗ trợ JVM. Người dùng có thể dễ
dàng làm quen và tìm kiếm hướng dẫn sử dụng chi tiết ngay trên Internet.
Hỗ trợ đa giao thức, JMeter hỗ trợ nhiều giao thức như HTTP, FTP, SOAP, JDBC,
JMS và LDAP,. . . giúp người dùng có thể thực hiện các loại kiểm thử như Load Test,
Stress Test,. . . hay để kiểm thử hiệu suất của cơ sở dữ liệu.
Khả năng mở rộng, JMeter có thể được mở rộng bằng cách sử dụng các plugin, viết
các script riêng hoặc tích hợp với nhiều công cụ và thư viện khác nhau. JMeter cũng có
thể được cấu hình để chạy trên nhiều máy khác nhau để tạo ra tải cao cho hệ thống và
giảm tải cho máy chạy test.
3.1.2 Nhược điểm
Việc giữ cho JMeter đơn giản, đa nền tảng với khả năng mở rộng cao cũng tạo cho nó
một số nhược điểm không thể tránh khỏi như:
Không hỗ trợ thực thi nội dung trả về của request, JMeter không phải là trình duyệt,
nó hoạt động ở cấp độ giao thức; vì vậy JMeter không thực hiện tất cả các hành động
được hỗ trợ bởi các trình duyệt như hiển thị các trang HTML hay thực thi Javascript.
Với các webapp sử dụng các framework và hiển thị giao diện bằng mã Javascript được
gắn bên trong tệp HTML, JMeter chỉ tính thời gian tải HTML sẽ không bao gồm thời
gian tải và thực thi mã javascript để hiển thị trang (mã javascript có thể tạo các request
để tải dữ liệu trang).
Có thể yêu cầu kỹ năng cao, JMeter có thể yêu cầu nhiều kỹ năng lập trình để tùy
chỉnh các kịch bản kiểm thử phức tạp, hay cấu hình các bộ điều khiển (Logic Controller)
để tạo các ca kiểm thử, xử lý trật tự các Samplers.
Quá tải bộ nhớ, JMeter có thể tiêu tốn nhiều bộ nhớ và tài nguyên khi mô phỏng quá
nhiều người dùng và yêu cầu một lúc hoặc lưu và trực quan hoá các báo cáo, kết quả của
Listener trong giao diện GUI. Điều này có thể tiêu tốn nhiều bộ nhớ và dẫn tới tình trạng
hết bộ nhớ, gây ra lỗi bộ nhớ hoặc làm chậm máy tính khi chạy kiểm thử.
Chỉ hỗ trợ ứng dụng web, một trong những ưu điểm của JMeter là hỗ trợ nhiều giao
thức nhưng hầu hết trong số chúng chỉ làm việc với internet làm cho JMeter khó ứng
dụng trong kiểm thử với desktop hay mobile.
Không lưu vết truy cập như Cookie, JMeter không có tính năng ghi lại hành động của
7
9. người dùng tự động như trên trình duyệt web, để thay thế phải tạo ra các kịch bản thử
nghiệm bằng cách sử dụng các yếu tố như HTTP Request, HTTP Header Manager hay
Cookie Manager.
3.2 So sánh JMeter với công cụ khác
Trong phần này, chúng em tiến hành tìm hiểu và so sánh công cụ Jmeter với hai công
cụ kiểm thử hiệu năng khác là LoadRunner và Locust để tìm ra điểm mạnh, yếu của công
cụ so với các đối thủ. Trong đó, LoadRunner là phần mềm phải trả phí để sử dụng và
Locust là phần mềm miễn phí.
3.2.1 Jmeter và Locust
Bảng 3.1: So sánh Jmeter và Locust
Tiêu chí Jmeter Locust
Chi phí miễn phí miễn phí
Xây dựng test Thiết kế chủ yếu cho tạo test
bằng GUI, k cần viết code. Hỗ
trợ cả non-GUI
Để tạo test phải viết code
python, cần kiến thức về code
Giao thức hỗ trợ Hỗ trợ kiểm thử nhiều giao thức Chủ yếu kiểm thử giao thức
http cho ứng dụng web
Tiêu thụ tài
nguyên
Nhiều hơn Ít hơn nhờ cơ chế event-based,
có thể xử lý được nhiều request
hơn
Cơ chế recording Hỗ trợ Không hỗ trợ
Báo cáo phân tích Đầy đủ, hỗ trợ tốt hơn Còn đơn giản, hỗ trợ ít biểu đồ
Từ bảng so sánh trên có thể thấy, cùng là phần mềm miễn phí, Jmeter có nhiều điểm
mạnh hơn so với Locust. Tuy nhiên, Jmeter vẫn có một số điểm yếu so với Locust như
tiêu thụ nhiều tài nguyên hơn, khả năng mở rộng kém hơn, khó quản lý kịch bản test hơn
do Locust phải viết test bằng code nên có thể quản lý kịch bản test dễ dàng.
3.2.2 Jmeter với LoadRunner
Bảng sau trình bày sự so sánh giữa công cụ Jmeter với LoadRunner dựa trên các tiêu
chí:
8
10. Bảng 3.2: So sánh Jmeter và LoadRunner
Tiêu chí Jmeter LoadRunner
Chi phí Là open source, miễn phí Không phải là 1 open source và
người dùng phải trả phí để sử
dụng đầy đủ các chức năng
GUI Đơn giản hơn, với một màn
hình biểu diễn tất cả những thứ
người dùng cần
Phức tạp hơn, cấu hình, xây
dựng kịch bản, phân tích ở các
nơi khác nhau
Nền tảng hỗ trợ Linux, Windows, Web-based và
Mac
Windows, Web-based và Mac
(không hỗ trợ Linux)
Các giao thức hỗ
trợ
Giới hạn, bao gồm HTTP, FTP,
JDBC, SOAP, LDAP, TCP,
JMS, SMTP, POP3, IMAP
Hỗ trợ tất cả các giao thức
Khả năng tạo tải Không giới hạn Giới hạn
Xây dựng kịch
bản
- Có thể chạy một test tải mà
không cần có kiến thức về code
- Khó khăn trong việc tạo các
kịch bản kiểm thử phức tạp
- Yêu cầu kiến thức về code để
sử dụng
- Có thể tạo các kịch bản kiểm
thử phức tạp
Báo cáo phân tích Kết quả dễ hiểu, cho phép phân
tích chuyên sâu, hỗ trợ ít loại
biểu đồ hơn LoadRunner
Thông tin trong bản raw được
phân tích cú pháp để tạo ra các
biểu đồ. Hỗ trợ nhiều loại biểu
đồ. Báo cáo chi tiết, đầy đủ hơn
Sử dụng Có thể tùy chỉnh các tính năng
theo nhu cầu của người dùng
Không cho phép tùy chỉnh, các
tính năng hiện có chỉ có thể
được sử dụng
Tính ổn định Kém với các hệ thống tải nặng Tốt hơn, có thể bị treo với các
hệ thống tải nặng nhưng không
thường xuyên
Hiệu suất Thấp hơn, phát hiện được bugs
nhỏ, có thể không phát hiện
được trong những hệ thống quy
mô lớn
Phát hiện bugs nhanh hơn và
hiệu quả hơn
Cộng đồng hỗ trợ Rộng lớn Hạn chế hơn
Từ bảng so sánh trên, ta thấy được những điểm mạnh, điểm yếu của Jmeter so với
LoadRunner. Các điểm mạnh của JMeter so với LoadRunner như:
9
11. Miễn phí, dễ sử dụng, hỗ trợ đa nền tảng, giao diện đơn giản. Các thành phần
định nghĩa rõ ràng trên giao diện, có thể thêm các thành phần mới, hoặc tùy chỉnh các
tính năng theo nhu cầu sử dụng.
Việc tạo test đơn giản hơn, không yêu cầu nhiều ràng buộc. Bên cạnh đó, có thể
chạy một test tải mà không cần kiến thức về code, giúp tăng đối tượng người có thể sử
dụng công cụ.
Khả năng tạo tải không giới hạn.
Cộng đồng hỗ trợ rộng lớn.
So với LoadRunner, JMeter:
Khó khăn trong việc tạo các kịch bản phức tạp
Kém hiệu quả đối với các hệ thống tải nặng. Trong các hệ thống quy mô lớn, có
thể không phát hiện được lỗi
Giới hạn các giao thức hỗ trợ. Báo cáo phân tích không chi tiết, đầy đủ, hỗ trợ
nhiều biểu đồ như LoadRunner
LoadRunner phù hợp nếu muốn tìm sự phân tích nguyên nhân gốc, phát hiện nút thắt
cổ chai và các tính năng nâng cao khác. Tuy nhiên, với nhiều team phần mềm, JMeter
lại là một lựa chọn phù hợp cung cấp đầy đủ chức năng cần thiết để kiểm tra hiệu năng
mà không mất phí và có thể điều chỉnh theo nhu cầu.
4 Demo
JMeter là một công cụ kiểm thử hiệu năng và tải cho các ứng dụng web; nó mang
trong mình nhiều ưu điểm như nền tảng độc lập và cộng đồng hỗ lớn cùng với giao diện
thân thiện nên người dùng rất dễ dàng trong việc cài đặt và chạy các bài kiểm thử cơ bản
với nó. Các bước cơ bản để cài đặt và sử dụng JMeter trong giao diện GUI:
Bước 1: Đảm bảo thiết bị kiểm thử hỗ trợ JVM (tối thiểu là JRE 8)
Bước 2: Tải về JMeter từ trang web chính thức của Apache
Bước 3: Giải nén tệp tin tải về và chạy tệp tin jmeter.bat (trên Windows) hoặc
jmeter.sh (trên Linux/Mac) trong thư mục bin để khởi động JMeter.
Bước 4: Tạo một Test Plan mới bằng cách nhấn vào biểu tượng + trên thanh công cụ.
Đặt tên cho Test Plan và thêm các thành phần cần thiết như Thread Group, Sampler,
Listener, Assertion,...
Bước 5: Cấu hình các thông số cho các thành phần của Test Plan như số lượng người
dùng, thời gian chờ, địa chỉ URL, phương thức HTTP,...
Bước 6: Lưu và chạy Test Plan bằng cách nhấn vào biểu tượng Run trên thanh công
cụ. Xem kết quả kiểm thử trên các Listener đã thêm vào Test Plan.
Đặt vấn đề là kiểm thử hiệu năng tải trang chủ của web https://127.0.0.1:5000; theo
3 tiêu chí là thời gian phản hồi trung bình (đo bằng ms), số lượng yêu cầu xử lý được
10
12. (đo bằng requests/s) và tỉ lệ lỗi (đo bằng phần trăm %); với 3 mục tiêu là thời gian phải
hồi trung bình của mỗi yêu cầu không quá 10ms; số lượng yêu cầu xử lý được ít nhất 100
requests/s và tỉ lệ lỗi thấp hơn 1%. Các bước thực hiện kiểm thử hiệu bằng JMeter:
Bước 1: Tạo Test Group từ Test Plan
Chuột phải vào Test Plan, chọn Add > Threads (Users) > Thread Group; với các
thông tin cấu hình:
Name: localhost
Number of Threads (users): 100
Ramp-up period (seconds): 1
Loop Count: 1
Bước 2: Tạo Samplers (HTTP Request)
Chuột phải vào localhost (Thread Group), chọn Add > Sampler > HTTP Request;
với các thông tin cấu hình:
Name: home page
Web server:
Protocol: http; Server Name or IP: 127.0.0.1; Port Number: 5000
HTTP Request:
Scheme: GET; Path: /
Bước 3: Tạo Listener
Chuột phải vào localhost (Thread Group), chọn Add > Listener > Summary Report
Bước 4: Chạy Test Plan
Lưu Test Plan: chọn File > Save Test Plan as > nhập tên file > nhấp vào Save.
Chạy Test Plan: Ctrl + R
Bước 5: Nhận kết quả
Hình 4.1: Kết quả khi chạy Test plan
11
13. Đánh giá kết quả: thời gian phản hồi trung bình (Average) là 2ms; số lượng yêu cầu
xử lý mỗi giây (Throughput) là 101,3 requests/s; tỉ lệ lỗi (Error %) là 0% đã thỏa mãn
yêu cầu hiệu năng đề ra.
12
14. Tài liệu tham khảo
[1] Noga Cohen. (2021). JMeter vs. Loadrunner: Why JMeter is Easier to Use Than
LoadRunner. Truy cập 26/4/2023, từ https://www.blazemeter.com/blog/jmeter-vs-
loadrunner
[2] Yuri Bushnev. (2020). JMeter vs. Locust: Which One Should You Choose?. Truy cập
26/4/2023, từ https://www.blazemeter.com/blog/jmeter-vs-locust
13