''''Hiệu suất'''' đề cập đến khả năng của hệ thống để hoàn thành các giao dịch và cung cấpthông tin một cách nhanh chóng và chính xác bất kể có sự tương tác đa người dùng cao haytài nguyên phầ
Trang 1BỘ CÔNG THƯƠNGTRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
Môn học: Đảm bảo chất lượng và kiểm thử phần mềm
Đề tài PERFORMANCE TESTING
Giảng viên hướng dẫn: Châu Thị Bảo Hà Lớp: DHKTPM16B
Nhóm: 01
Thành phố Hồ Chí Minh, ngày 29/10/2023
Trang 2A
20116421 Võ Thị Minh Tiến
Thực hiện phần: Nhữngyếu tố chính trong kiểm thửhiệu suất, ưu nhược điểm vàphân loại Jemeter, quay videothự hiện kiểm thử (Bắt đầuthực hiện công việc từ30/09/2023)
A
Công việc chung: Thực hiện kiểm thử hiệu suất website
https://www.google.com.vn/ trên công cụ Jmeter, phần kết luận
Trang 3Mục lục
I Phần mở đầu 5
1 Lý do chọn đề tài 5
2 Đối tượng và phạm vi nghiên cứu 5
3 Cơ sở lý luận 5
II Phần nội dung 7
1 Khái niệm và tầm quan trọng của kiểm thử hiệu suất 7
1.1 Khái niệm kiểm thử hiệu suất 7
1.2 Tầm quan trọng của kiểm thử hiệu suất trong đảm bảo trải nghiệm người dùng 8
2 Những yếu tố chính trong kiểm thử hiệu suất 8
2.1 Workload (Khối lượng công việc) 8
2.2 System environment and available resources (môi trường hệ thống và tài nguyên có sẵn) 9
2.3 System response time (Thời gian phản hồi hệ thống) 10
3 Các giai đoạn trong kiểm thử hiệu suất 11
3.1 Planning Phase 11
3.2 Testing phase 12
3.3 Analysis phase 13
III Công cụ kiểm thử hiệu suất 13
1 Giới thiệu về công cụ Apache Jmeter 13
1.1 Khái niệm 13
1.2 Tính năng 14
1.3 Ưu nhược điểm 15
1.4 Phân loại 17
2 Demo công cụ Jmeter 18
2.1 Tổng quan 18
2.2 Ví dụ 20
IV Phần kết luận 25
1 Nhận xét 25
2 Ý nghĩa 25
V Tài liệu tham khảo 26
4
Trang 4I Phần mở đầu
1 Lý do chọn đề tài
Ứng dụng ngày càng phức tạp: Trong thời đại số hóa, ứng dụng phần mềm trở nênngày càng phức tạp với nhiều tính năng, dịch vụ, và giao diện người dùng đa dạng Điều nàyđặt ra thách thức về hiệu suất và độ ổn định Hiểu rõ về performance testing giúp đảm bảorằng các ứng dụng này hoạt động mượt mà
Thách thức từ người dùng: Người dùng ngày càng đòi hỏi về tốc độ và sự ổn định củaứng dụng Một trải nghiệm người dùng kém có thể dẫn đến mất khách hàng và tác động đến
uy tín của công ty
Tiết kiệm thời gian và nguồn lực: Hiểu rõ về cách thực hiện performance testing hiệuquả giúp tiết kiệm thời gian và nguồn lực cho việc tối ưu hóa ứng dụng, ngăn chặn sự cố trênmôi trường thực tế
Phần mềm làm việc quan trọng: Phần mềm đã và đang trở thành một phần quan trọngtrong các ngành công nghiệp, từ tài chính đến y tế, giao thông và giáo dục Việc hiểu vềperformance testing là cách để đảm bảo rằng các ứng dụng này thực sự hữu ích và an toàncho người dùng
Phát triển và cải tiến không ngừng: Lĩnh vực performance testing không ngừng pháttriển với sự xuất hiện của các công nghệ và công cụ mới Nghiên cứu về performance testing
sẽ giúp cập nhật kiến thức và thực hành mới nhất trong lĩnh vực này
2 Đối tượng và phạm vi nghiên cứu
Nghiên cứu về khái niệm, các yếu tố chính và các giai đoạn trong kiểm thử hiệu suất.Bên cạnh đó là nghiên cứu về khái niệm, tính năng, ưu nhược điểm, phân loại và cácbước thực hiện công cụ để thực hiện kiểm thử hiệu suất, cụ thể là công cụ Apache Jmeter
Trang 5'Hiệu suất' đề cập đến khả năng của hệ thống để hoàn thành các giao dịch và cung cấpthông tin một cách nhanh chóng và chính xác bất kể có sự tương tác đa người dùng cao haytài nguyên phần cứng bị hạn chế.
Sự cố ứng dụng do vấn đề liên quan đến hiệu suất có thể tránh được thông qua kiểmthử hiệu suất trước khi triển khai Tuy nhiên, hầu hết các nhóm gặp khó khăn do thiếuphương pháp kiểm thử hiệu suất chuyên nghiệp và đảm bảo sự cố liên quan đến tính khảdụng, đáng tin cậy và tính mở rộng khi triển khai ứng dụng của họ vào "thế giới thực".Kiểm thử hiệu suất quan trọng đối với tất cả các loại ứng dụng và hệ thống, đặc biệt làđối với các ứng dụng có tính đời sống quan trọng trong lĩnh vực chăm sóc sức khỏe, y tế,công nghệ sinh học và phát hiện thuốc, cũng như trong các tình huống quan trọng như ô tô,hàng không, quốc phòng và nhiều lĩnh vực khác [1]
6
Trang 6II Phần nội dung
1 Khái niệm và tầm quan trọng của kiểm thử hiệu suất
1.1 Khái niệm kiểm thử hiệu suất
Kiểm thử hiệu suất là một trong ba thuật ngữ để đánh giá khả năng hỗ trợ đa ngườidùng, thông thường người ta thực hiện ba loại kiểm thử: performance, load và stresstests.Mặc dù các thuật ngữ này thường được sử dụng thay thế cho nhau, nhưng mỗi loại kiểm thửđại diện cho một kiểm thử được thiết kế để giải quyết một mục tiêu khác nhau [2]
Hình 1.1 Performance Testing
Kiểm thử hiệu suất là kiểm thử được thực hiện để xác định xem các thành phần của hệthống hoạt động như thế nào trong một tình huống nhất định Việc sử dụng tài nguyên, khảnăng mở rộng và độ tin cậy của sản phẩm cũng được xác nhận trong kiểm thử này Kiểm thửnày là một tập hợp con của kỹ thuật hiệu suất, tập trung vào việc giải quyết các vấn đề vềhiệu
suất trong thiết kế và kiến trúc của một sản phẩm phần mềm [3]
Hình ảnh trên giải thích rõ ràng cho chúng ta rằng Performance testing là tập hợpchứa cả Stress testing và Load testing Các loại thử nghiệm khác có trong thử nghiệm hiệu
Trang 7suất là Spike testing, Endurance testing, Volume testing và Scalability testing Vì vậy, kiểmthử hiệu suất về cơ bản là một thuật ngữ rất rộng [3]
Một trong những mục tiêu chính trong kiểm thử hiệu suất là nâng cao khả năng dựđoán khi mức tải trong tương lai sẽ cạn kiệt hệ thống web để các chiến lược cải tiến hiệu quả
có thể được phát triển nhằm duy trì trải nghiệm người dùng chấp nhận được [2]
1.2 Tầm quan trọng của kiểm thử hiệu suất trong đảm bảo trải nghiệm người dùng
Hai yếu tố quan trọng cho trải nghiệm người dùng chấp nhận được là độ chính xác vàkịp thời Một ví dụ về độ chính xác là khi khách hàng đặt một cốc cappuccino tại một quán
cà phê và bất kể quán cà phê bận đến mức nào vào thời điểm đó thì khách hàng đó vẫn sẽnhận được cappuccino, chứ không phải một ly nước cam Tiếp tục với ví dụ tương tự, nếuthời gian trung bình để giao cappuccino cho khách hàng là ba phút, thì sự kịp thời trongtrường hợp này là không quá ba phút [2]
Một chỉ số quan trọng để đánh giá sự kịp thời là thời gian phản hồi Thời gian phảnhồi là thời gian mà hệ thống mất để xử lý một yêu cầu Quan trọng hơn cả, từ quan điểm củangười dùng, đó là khoảng thời gian mà họ phải chờ đợi để được phục vụ Rõ ràng, thời gianphản hồi càng ngắn, người dùng càng hài lòng; ngược lại, thời gian phản hồi càng dài, ngườidùng càng không hài lòng Khi thời gian phản hồi quá dài, nó sẽ trở nên không chấp nhậnđược đối với người dùng, điều này có thể dẫn đến mất khách hàng, doanh thu, hoặc tiếngxấu, và cuối cùng dẫn đến thiệt hại tài chính [2]
Do đó, việc thực hiện kiểm thử hiệu suất để cung cấp thông tin cần thiết để đưa raquyết định thông minh về cải tiến và rủi ro
2 Những yếu tố chính trong kiểm thử hiệu suất
Kiểm thử hiệu suất bao gồm việc đánh giá ba yếu tố chính sau:
+ Workload
+ System environment and available resources
+ System response time [2]
2.1 Workload (Khối lượng công việc)
Workload đại diện cho số lượng người dùng dự kiến Việc ước tính số lượng ngườidùng mà hệ thống có thể hỗ trợ có thể khá phức tạp bởi vì hoạt động của người dùng có thể
8
Trang 8biến đổi, cũng như thời gian truy cập và tần suất hoạt động Để đánh giá workload của hệthống, cần xem xét ba yếu tố sau:
2.2 System environment and available resources (môi trường hệ thống và tài nguyên cósẵn)
Có ba yếu tố chính đại diện cho các tài nguyên có liên quan đến bất kỳ giao dịch trựctuyến nào:
+ Trình duyệt ở phía máy khách
+ Mạng
+ Phía máy chủ
Hình 2.1 Mỗi liên hệ giữa Client, mạng và ServerBởi vì các ứng dụng web thường bao gồm nhiều thành phần phần cứng và phần mềmtương tác với nhau, và sự cố hay thiếu sót ở bất kỳ đâu trong số những thành phần này có thểảnh hưởng đến hiệu suất một cách “quyết liệt” , việc xác định rõ ràng môi trường và các tàinguyên cần được kiểm thử là rất quan trọng Môi trường và tài nguyên tham gia trong một
Trang 9ứng dụng web (cũng như trong việc kiểm thử hiệu suất của một ứng dụng) bao gồm một sốhoặc tất cả các yếu tố sau đây:
+ Các biến số truy cập mạng Ví dụ, 28.8 Kbps, DSL, T1, và các loại kết nối khác.+ Các biến số dân số Ví dụ: một trang web có nhiều người dùng thành thạo có thể sửdụng chức năng tìm kiếm thường xuyên hơn những người dùng mới làm quen, dẫn đến lượtxem trang tổng thể thấp hơn
+ Các biến số địa lý Ví dụ, nếu máy chủ đặt tại California, và yêu cầu của người dùngđến từ London, tốc độ đến yêu cầu có thể mất thời gian hơn dù dữ liệu được yêu cầu là giốngnhau
+ Các biến số cơ sở hạ tầng ISP Ví dụ, tốc độ truyền dữ liệu có sẵn cho mỗi nhà cungcấp dịch vụ Internet
+ Cấu hình máy khách Ví dụ, hệ điều hành, trình duyệt, và các yếu tố khác.+ Cấu hình máy chủ Ví dụ, tốc độ CPU, bộ nhớ, hệ điều hành, phần mềm, và các yếu
tố khác [2]
2.3 System response time (Thời gian phản hồi hệ thống)
System response time là xác định mức hiệu suất mà hệ thống có thể chấp nhận yêucầu thông tin từ bộ phận tiếp thị và quản lý sản phẩm Cách hiệu suất sẽ được đo lường, mứcgiá trị của nó, các công cụ sẽ được sử dụng và các chỉ số sẽ được áp dụng, tất cả đều là cácyếu tố phải được xem xét Hiểu rõ những thành phần nào ảnh hưởng đến hiệu suất hệ thốngcũng rất quan trọng Mặc dù có thể kiểm thử hiệu suất của hệ thống trong quá trình sử dụngnhưng thường thì chúng ta sẽ thực hiện kiểm thử trên các hệ thống nhỏ hơn và phải sử dụngkết quả của chúng ta để xác định hiệu suất của hệ thống [2]
Các ứng dụng Web có thể bao gồm cả nội dung tĩnh và động, trong các trang có kíchthước khác nhau Khi người dùng gửi một biểu mẫu hoặc nhấp vào một liên kết, trang kếtquả có thể là một tập tin HTML tĩnh đơn giản chứa một số dòng văn bản, hoặc có thể là mộttrang xác nhận đơn hàng được hiển thị sau khi giao dịch mua hàng được xử lý và số thẻ tíndụng được xác minh thông qua dịch vụ bên thứ ba Mỗi loại nội dung này sẽ có thời gianphản hồi chấp nhận được khác nhau Ví dụ, một thời gian phản hồi chấp nhận được chotrang HTML tĩnh có thể là hai giây, trong khi thời gian phản hồi chấp nhận được cho giaodịch mua hàng có thể là tám giây [2]
10
Trang 10
Hình 2.2 Khác nhau giữa Browser, Network và ServerViệc xác định thời gian phản hồi chấp nhận được cho các khu vực khác nhau của mộtứng dụng Web là rất quan trọng để có thể thực hiện các biện pháp thích hợp sau khi ứngdụng đã được kiểm thử Việc không xác định thời gian phản hồi chấp nhận được có thể dẫnđến việc không có hành động cải thiện hiệu suất, hoặc việc chi phí không cần thiết về thờigian, tài nguyên và tiền bạc để cải thiện hiệu suất mà đã chấp nhận được từ trước [2]
3 Các giai đoạn trong kiểm thử hiệu suất
Quá trình kiểm thử hiệu suất chia làm ba giai đoạn:
+Planning Phase (Giai đoạn lập kế hoạch)
+Testing phase (Giai đoạn kiểm thử)
+Analysis phase (Giai đoạn phân tích) [2]
3.1 Planning Phase
Ở giai đoạn này, chúng ta sẽ chia nhỏ công việc thành các mục sau:
+ Xác định mục tiêu, kết quả dự kiến và đặt kỳ vọng: Chúng ta cần xác định rõ ràngnhững gì muốn kiểm thử, tại sao chúng ta muốn kiểm thử và những gì chúng ta mong đợi từviệc kiểm thử Chúng ta cũng cần xác định các mục tiêu cho hiệu suất của hệ thống, ví dụnhư thời gian phản hồi, khả năng xử lý, khả năng mở rộng và độ tin cậy
Trang 11+ Thu thập yêu cầu hệ thống và kiểm thử: Chúng ta cần nghiên cứu các yêu cầu kỹthuật của hệ thống để hiểu được các tính năng, chức năng,phi chức năng và ràng buộc của hệthống Chúng ta cũng cần thu thập thông tin về môi trường kiểm thử, bao gồm phần cứng,phần mềm, mạng và dữ liệu.
+ Xác định khối lượng công việc: Chúng ta cần phân tích hành vi của người dùng đểxác định các tình huống người dùng: số lượng người dùng đồng thời, tần suất sử dụng vàthời lượng sử dụng và thời gian sử dụng Chúng ta cũng cần xem xét các yếu tố ảnh hưởngđến khối lượng công việc, ví dụ như các sự kiện ngoại lệ, các thời gian cao điểm và các yếu
tố của tự nhiên như thời tiết, mùa…
+ Chọn các chỉ số hiệu suất cần theo dõi: Chúng ta cần xác định các chỉ số hiệu suấtquan trọng cho hệ thống của mình, ví dụ như thời gian phản hồi, lưu lượng, khả năng sửdụng tài nguyên, số lỗi ,số phiên bị hủy và các tham số hệ thống khác
+ Xác định các kiểm thử cần thực hiện và quyết định thời điểm thực hiện
+ Quyết định công cụ sử dụng
+ Viết kế hoạch kiểm thử; thiết kế các tình huống người dùng và tạo các kịch bảnkiểm thử: Chúng ta cần viết một tài liệu kế hoạch kiểm thử hiệu suất để mô tả chi tiết cácbước trên và xác định các vai trò, trách nhiệm và nguồn lực cho quá trình kiểm thử Chúng
ta cũng cần thiết kế các tình huống người dùng để mô phỏng hành vi của người dùng và tạocác kịch bản kiểm thử để tự động hóa việc gửi yêu cầu đến hệ thống
3.2 Testing phase
Trong giai đoạn này, chúng ta cũng chia thành các mục nhỏ:
+ Chuẩn bị (ví dụ, thiết lập môi trường thử nghiệm và giám sát hiệu suất trên mạng vàmáy chủ): Đây là giai đoạn chuẩn bị môi trường thử nghiệm và thiết lập các công cụ giámsát hiệu suất trên mạng và máy chủ Việc chuẩn bị một môi trường thử nghiệm đáng tin cậy
và chính xác là rất quan trọng để đảm bảo tính toàn vẹn và chính xác của quá trình kiểm thử.+ Thực hiện các kiểm thử: Bước này liên quan đến việc chạy các test case đã đượcthiết kế để đánh giá hiệu suất của hệ thống Trong quá trình này, các kịch bản kiểm thử sẽđược thực hiện để tạo ra các tải trọng khác nhau và đánh giá phản ứng của hệ thống.+ Thu thập dữ liệu: Trong quá trình kiểm thử, việc thu thập dữ liệu hiệu suất là rấtquan trọng để đánh giá hiệu suất của hệ thống Các dữ liệu này có thể bao gồm các thông sốnhư thời gian phản hồi, lưu lượng, khả năng sử dụng tài nguyên, số lỗi ,số phiên bị hủy và
12
Trang 12các tham số hệ thống khác Việc thu thập dữ liệu đúng cách sẽ cung cấp thông tin quantrọng để đánh giá hiệu suất thực tế của hệ thống trong điều kiện thử nghiệm.
3.3 Analysis phase
Ở giai đoạn này, chúng ta cũng chia thành các mục sau:
+ Phân tích kết quả: Đánh giá các số liệu thu thập được từ các bài kiểm thử hiệu suất,như thời gian phản hồi, lưu lượng, khả năng sử dụng tài nguyên, số lỗi ,số phiên bị hủy vàcác tham số hệ thống khác để xác định các điểm yếu và cải thiện của hệ thống
+ Thay đổi hệ thống để tối ưu hiệu suất: Dựa trên kết quả phân tích, áp dụng các giảipháp để khắc phục các vấn đề hiệu suất phát hiện được, như tăng cường phần cứng, cấu hìnhlại phần mềm, sửa lỗi mã nguồn hoặc cải thiện cấu trúc hạ tầng mạng để đảm bảo hệ thốnghoạt động một cách hiệu quả nhất
+ Thiết kế các test case mới: Dựa trên các điểm yếu và vấn đề đã xác định trong giaiđoạn phân tích để tạo các test case kiểm thử mới để kiểm thử lại và so sánh hiệu suất của hệthống trước và sau khi tối ưu
1 Giới thiệu về công cụ Apache Jmeter
JMeter không phải là trình duyệt, nó hoạt động ở mức giao thức Đối với dịch vụ web
và dịch vụ từ xa, JMeter trông giống như một trình duyệt (hoặc chính xác hơn, nhiều trìnhduyệt); tuy nhiên, JMeter không thực hiện tất cả các hành động được hỗ trợ bởi trình duyệt
Cụ thể, JMeter không thực thi Javascript được tìm thấy trong các trang HTML Nó cũngkhông hiển thị các trang HTML như một trình duyệt làm (có thể xem phản hồi dưới dạngHTML v.v., nhưng các thời gian không được bao gồm trong bất kỳ mẫu nào, và chỉ có một
Trang 131.2 Tính năng
Tính năng của Apache JMeter™ rất đa dạng, nó bao gồm:
Khả năng kiểm thử load và hiệu suất trên nhiều loại ứng dụng/máy chủ/giao thức khácnhau:
+ Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
+ SOAP / REST Webservices
+ FTP
+ Database via JDBC
+ LDAP
+ Message-oriented middleware (MOM) via JMS
+ Mail - SMTP(S), POP3(S) and IMAP(S)
+ Native commands or shell scripts
Báo cáo HTML động hoàn chỉnh và sẵn sàng để trình bày
Tính tương quan dễ dàng thông qua khả năng trích suất dữ liệu từ hầu hết các địnhdạng phản hồi phổ biến, HTML, JSON, XML hoặc bất kỳ định dạng văn bản nào khácKhả năng di động hoàn chỉnh và tính thuần Java 100%
Khung đa luồng đầy đủ cho phép mẫu đo lường đồng thời bởi nhiều luồng và mẫu đolường đồng thời của các chức năng khác nhau bởi các nhóm luồng riêng biệt
Lưu trữ tạm thời và phân tích/phát lại kết quả kiểm thử ngoại tuyến
Có khả năng mở rộng cao:
14