Phát triển các bài kiểm thử phù hợp với các thiết kế kiểm thử. 1.4.6. Thực hiện kiểm thử
Chạy và theo dõi các kiểm thử. Xác nhận các kiểm thử, dữ liệu kiểm thử, và
thu thập kết quả. Thực hiện xác nhận kiểm thử để phân tích trong khi theo dõi các kiểm thử và môi trƣờng kiểm thử.
1.4.7. Phân tích kết quả, báo cáo và kiểm thử lại
Củng cố và chia sẻ dữ liệu kết quả. Phân tích các dữ liệu cá nhân cũng nhƣ
cả nhóm. Thực hiện các bài kiểm thử còn lại và thực hiện lại chúng khi cần thiết. Khi tất cả các giá trị số liệu trong giới hạn chấp nhận, không một thông số nào trong số các ngƣỡng quy định đã bị vi phạm, và tất cả các thông tin mong muốn đã đƣợc thu thập, thử nghiệm mà kịch bản xác định trên cấu hình cụ thể đã hoàn thành.
1.5.CÁC CÔNG CỤ HỖ TRỢ KIỂM THỬ HIỆU NĂNG
Kiểm thử hiệu năng khó có thể hoàn thành một cách hiệu quả mà không sử dụng một công cụ tự động nào. Vì phải tiến hành kiểm thử ứng dụng trên một số lƣợng lớn ngƣời dùng và công việc lặp đi lặp lại là khá mệt mỏi nếu thực hiện một
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
cách thủ công. Hiện nay trên thị trƣờng có nhiều công cụ kiểm thử hiệu năng gồm cả phần mềm thƣơng mại và phần mềm mã nguồn mở. Việc lựa chọn một công cụ kiểm thử phù hợp cần đƣợc quyết định trong giai đoạn lập kế hoạch. Thông thƣờng đối với tổ chức nhỏ, có hạn chế về ngân sách, công cụ mã nguồn mở sẽ là sự lựa chọn của họ nhƣ JMeter, OpenSTA. Đối với tổ chức có ứng dụng hiệu năng quan trọng, do kỳ vọng về tính chính xác cao và độ tin cậy về kết quả kiểm thử, thƣờng sử dụng các công cụ bản quyền trên thị trƣờng nhƣ HP Load Runner, HP Performance Center…
Dƣới đây là bảng so sánh giữa công cụ kiểm thử hiệu năng mã nguồn mở và công cụ kiểm thử hiệu năng thƣơng mại. (Bảng 1.1)
Bảng 1.1. Bảng so sánh giữa công cụ mã nguồn mở và thương mại
Chỉ tiêu so sánh Công cụ mã nguồn mở Công cụ thƣơng
mại
Giao thức hỗ trợ Một số hạn chế
Hỗ trợ kỹ thuật/tài liệu Một số công cụ không có tài liệu hỗ trợ
Tính dễ sử dụng Hạn chế
Báo cáo/phân tích Một số hạn chế
Kiểm tra phân bổ
Chế độ record/playback
Mức độ ổn định Một số công cụ vẫn cần đƣợc cải tiến
Hỗ trợ lập trình phổ thông Một số hạn chế
Chi phí Đắt tiền
1.5.1.Một số lƣu ý cho việc lựa chọn công cụ kiểm thử chính xác
1.Xem xét công cụ kiểm thử hỗ trợ những giao thức nào. Công cụ có hỗ trợ các ứng dụng web hay các ứng dụng clien- server không?
2. Kiểm tra xem công cụ đó có cung cấp trình soạn thảo để phát triển các kịch bản kiểm thử?
3. Kiểm tra xem công cụ có cung cấp các tính năng để xác định các giao dịch duy nhất, cung cấp cho ngƣời dùng thời gian suy nghĩ, cung cấp các dữ liệu kiểm thử.
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
4. Kiểm tra xem công cụ có tùy chọn để cấu hình các lựa chọn .ramp up, . ramp down.
5. Kiểm tra xem công cụ có cung cấp việc giám sát các tài nguyên hệ thống trong quá trình kiểm thử.
6. Kiểm tra xem công cụ có cung cấp kết quả kiểm thử trong một định dạng có thể đọc đƣợc (Chẳng hạn html hay định dạng văn bản)
7. Kiểm tra xem công cụ này cung cấp đủ thông tin về số lƣợt truy cập/giây, thông lƣợng (các giao dịch/giây và số byte/giây), số ngƣời dùng chạy/giây, theo dõi, giám sát tài nguyên hệ thống và các lỗi/giây.
8. Các công cụ không nên tiêu thụ nhiều tài nguyên của máy khách dẫn đến các vấn đề về tải.
Các công cụ kiểm thử hiệu năng chỉ có thể cung cấp chi tiết về hiệu năng máy chủ, nhƣng còn rất cần có các kiểm thử viên để dịch chính xác và phân tích nguyên nhân của các vấn đề, xác nhận tắc nghẽn bằng cách chạy lại các bài kiểm thử, cung cấp báo cáo, quan sát và giải thích ở định dạng ngƣời dùng dễ hiểu. Mặc dù các công cụ kiểm thử có nhiều tiến bộ chuyên môn, kiểm thử viên cần xử lý chính xác các khả năng để xác định các vấn đề hiệu năng của ứng dụng. Đó chính là điều làm nên thành công của kiểm thử hiệu năng.
1.5.2.Giới thiệu một số công cụ kiểm thử hiệu năng phổ biến [6]
+ HP load Runner (bản quyền) + Radview’s Webload (bản quyền) + Compuware’s Qaload (bản quyền) +Borland’s SilkPerformer (bản quyền)
+ Empirix’s e-Load (bản quyền) + OpenSTA (miễn phí)
+ JMeter (miễn phí) + Grinder (miễn phí)
1.5.2.1. HPLoadRunner
Đây là công cụ hỗ trợ một loạt các giao thức HTTP/HTTPS, SAP, PeopleSoft, Citrix, Oracle Apps, RTE, Winsock, COM/DCOM, SOAP, Tuxedo. Công cụ sử dụng ngôn ngữ TSL để tạo ra các kịch bản trong đó có cú pháp C và cho phép bổ sung thƣ viện C. Việc tạo kịch bản dễ dàng vì không yêu cầu bất kỳ nền tảng lập trình nào. Đối với bộ sinh tải, nó cung cấp tính năng kiểm soát nhiều đại diện/bộ sinh tải và thu thập kết quả. Nó cung cấp việc giám sát các máy chủ web
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
khác nhau, máy chủ ứng dụng và máy chủ cơ sở dữ liệu với một giao diện rất hấp dẫn dễ sử dụng. Đồng thời công cụ này cung cấp nhiều đồ thị về số giao dịch/giây, số truy cập mỗi giây, việc sử dụng tài nguyên máy chủ, hiệu năng theo tải, thông lƣợng máy chủ, ... và cũng cung cấp tính năng tùy chỉnh các đồ thị và xuất sang tệp html hoặc các định dạng văn bản. Nó cũng cung cấp một công cụ phân tích với việc tạo ra đồ thị động. Mặc dù nó là công cụ rất phổ biến trên thị trƣờng với rộng rãi đối tƣợng ngƣời dùng, tuy nhiên chi phí rất cao của công cụ này tạo ra một rào cản cho việc sử dụng công cụ trong tất cả các tổ chức.
1.5.2.2.OpenSTA
Là một công cụ mã nguồn mở chỉ hỗ trợ chỉ các giao thức HTTP/HTTPS. Nó sử dụng ngôn ngữ SCL để tạo ra các kịch bản. Tính dễ sử dụng của công cụ này đƣợc đánh giá cao. Đối với việc sinh tải, nó cung cấp tính năng kiểm soát nhiều bộ sinh tải và thu thập kết quả trên bộ điều khiển duy nhất. Công cụ này không cung cấp hỗ trợ sẵn có cho việc che giấu địa chỉ IP, mô phỏng mạng WAN/LAN và mô phỏng băng thông mạng. Phân tích kết quả sẵn có của công cụ này là rất hạn chế và nó cung cấp các biểu đồ và đồ thị đơn giản có thể đƣợc xuất sang MS excel. Ngƣời sử dụng cần sử dụng các macro và các nguồn bên ngoài để tạo ra các đồ thị tùy chỉnh. Điểm hạn chế nữa của OpenSTA là chỉ hoạt động trên môi trƣờng Windows.
1.5.2.3.JMeter
JMeter là một công cụ mã nguồn mở đƣợc viết bằng Java và hoạt động tốt trên Windows và Linux/Solaris. Công cụ này hỗ trợ HTTP, FTP, JNDI và JDBC, mặc dù HTTP đến nay là một phần trƣởng thành nhất của JMeter. Nó cung cấp tính năng giao diện ngƣời dùng dễ dàng dựa trên các đặc điểm phát triển kịch bản và các tính năng quản lý kịch bản, nhƣng sự ổn định của công cụ này là hạn chế lớn trong JMeter. Nó cung cấp việc giám sát giao dịch rất hạn chế. Vì vậy, kịch bản đƣợc yêu cầu phải đồng bộ hóa dữ liệu kiểm thử với các dữ liệu giám sát hiệu năng bên ngoài. Đối với việc sinh tải, JMeter cung cấp các tính năng để chạy thử nghiệm cho bất kỳ số lƣợng ngƣời dùng nào và điều khiển đa tải. JMeter không thu thập bất kỳ số liệu hiệu năng nào phía máy chủ. Nhƣng nó có thể tạo ra một số đồ thị phía máy khách
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
trong quá trình kiểm thử. Không có các tính năng đƣợc cung cấp để phân tích kết quả kiểm thử và các tập tin log cần đƣợc phân tích để xác định hiệu năng hệ thống. Các tính năng nhƣ che dấu địa chỉ IP, mô phỏng mạng WAN/LAN và mô phỏng băng thông mạng không đƣợc hỗ trợ. Đây là công cụ chuyên dùng để kiểm tra hiệu năng của các ứng dụng web, JMeter có thể hoạt động trên các hệ điều hành có hỗ trợ JVM (Java Virtual Machine) phiên bản 1.4 trở lên. JMeter không đòi hỏi kiến thức lập trình chuyên sâu để sử dụng. Hiện nay ứng dụng này đã đƣợc cải tiến để có thể đo lƣờng hiệu năng hoạt động của các đối tƣợng và giao thức sau: HTTP, HTTPS, SOAP, JDBC, LDAP, JMS, POP3 ...
1.5.2.4. Grinder
Là một công cụ miễn phí đƣợc phát triển dựa trên Swing, Java và Jython, chỉ hỗ trợ giao thức HTTP. Nó sử dụng ngôn ngữ Jython cho việc tạo ra các kịch bản và cung cấp tính năng quản lý kịch bản tốt. Công cụ này chủ yếu là mục tiêu cho các nhà phát triển vì nó cần nhiều sự hiểu biết về lập trình hƣớng đối tƣợng, do đó, xây dựng kịch bản cần đáng kể các kỹ năng lập trình. Nó cung cấp việc giám sát giao dịch rất hạn chế. Đối với việc sinh tải, cung cấp các tính năng để chạy kiểm thử cho bất kỳ số lƣợng ngƣời sử dụng, nhƣng các kịch bản cần đƣợc triển khai bằng tay đối với mỗi đại diện tải. Không có các tính năng đƣợc cung cấp để phân tích kết quả kiểm thử. Không có tính năng lập lịch trình kiểm thử hoặc thực hiện dòng lệnh trong công cụ và nó không hỗ trợ che dấu địa chỉ IP, mô phỏng mạng WAN/LAN và mô phỏng băng thông mạng. Công cụ này không cung cấp các tùy chọn tự động tăng hoặc giảm tải ngƣời dùng trong khi kiểm thử đang chạy. Nhìn chung Grinder có nhiều điểm tƣơng đồng với JMeter là một ứng dụng Java hoạt động trên nhiều hệ điều hành, thƣờng đƣợc sử dụng để kiểm thử hiệu năng web, cơ sở dữ liệu thông qua JDBC và một số giao thức khác. Điều khác biệt là Grinder đòi hỏi kiểm thử viên phải có khả năng sử dụng ngôn ngữ Jython để có thể viết, chỉnh sửa kịch bản kiểm thử theo ý mình và hệ thống báo cáo kết quả kiểm thử không đƣợc linh động nhƣ JMeter.
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
1.6. KẾT LUẬN CHƢƠNG 1
Kiểm thử hiệu năng là một nhiệm vụ không thể thiếu trong quy trình phát triển phần mềm cũng nhƣ công nghệ phần mềm.Việc tiến hành kiểm thử hiệu năng cần thực hiện các hoạt động cụ thể nhƣ: xác định môi trƣờng kiểm thử, xác định các tiêu chí hiệu năng, lập kế hoạch kiểm thử và thiết kế kiểm thử, cấu hình môi trƣờng kiểm thử, cài đặt thiết kế kiểm thử, thực hiện kiểm thử và phân tích báo cáo kết quả kiểm thử. Để thực hiện kiểm thử hiệu năng hiệu quả với số lƣợng ngƣời dùng lớn rất cần có sự hỗ trợ của các công cụ kiểm thử hiệu năng. Việc lựa chọn công cụ kiểm thử hiệu năng sẽ dựa trên đặc điểm của công cụ, nguồn lực tài chính và con ngƣời trong mỗi doanh nghiệp. Nhƣng dù công cụ kiểm thử có tiến bộ và hiện đại bao nhiêu cũng rất cần những kiểm thử viên hiệu năng có trình độ chuyên môn tốt để thực hiện, phân tích, báo cáo chính xác, dễ hiểu và có khả năng hiểu đƣợc mong muốn của khách hàng.
Những khái niệm và kiến thức cơ sở về kiểm thử hiệu năng đã đƣợc trình bày trong chƣơng 1 sẽ đƣợc thực hiện đầy đủ, chi tiết trong các kỹ thuật kiểm thử hiệu năng của chƣơng 2.
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
Chƣơng 2
CÁC KỸ THUẬT SỬ DỤNG TRONG KIỂM THỬ HIỆU NĂNG
Nhƣ đã trình bày trong chƣơng 1, kiểm thử hiệu năng có tầm quan trọng đặc biệt trong việc tồn tại của một phần mềm và ứng dụng. Để tiến hành kiểm thử hiệu năng cần phải có một quy trình thực hiện cụ thể. Chƣơng 2 sẽ giới thiệu khái quát các bƣớc trong quy trình kiểm thử hiệu năng [5],[6].
2.1. XÁC ĐỊNH WORKLOAD
2.1.1. Workload là gì?
Workload (tải làm việc) liên quan đến tải ngƣời dùng đƣợc tạo ra trên máy chủ bằng sự truy cập thời gian thực của ngƣời dùng hoặc trong các kiểm thử hiệu năng. Theo nhƣ G.Kotis, "Workload có thể đƣợc định nghĩa là tập hợp các thiết lập đầu vào (các chƣơng trình, lệnh, ...) từ môi trƣờng của ngƣời sử dụng tới hệ thống.
Ví dụ, đối với một thiết bị đầu cuối UNIX, cách thức ngƣời dùng đƣa tập hợp các lệnh vào hệ thống trong thiết bị đầu cuối là workload.
Workload mô tả lƣu lƣợng truyền tin trong một hệ thống. Việc xác định workload ảnh hƣởng rất lớn tới kết quả việc nghiên cứu hiệu năng, xác định workload sai sẽ dẫn đến kết luận sai.
Workload có thể tự nhiên hoặc giả lập. Workload tự nhiên hoặc workload thực tế là tải trong môi trƣờng sản xuất thực tế. Còn workload giả lập bắt chƣớc các hành vi của workload tự nhiên.
Workload đƣợc chọn để thực hiện kiểm thử nên giống với mô hình workload thực của các ứng dụng web. Nếu có nhiều sai lệch giữa workload kiểm thử và workload hệ thống sản xuất thì sẽ đƣa ra kết quả kiểm thử không chính xác về hiệu năng của hệ thống trong môi trƣờng sản xuất.
2.1.2. Các loại workload[6]
Phân tích và thiết kế workload của một hệ thống là việc làm rất quan trọng. Nếu workload của máy chủ không đƣợc phân tích và hiểu đúng, khi đó kiểm thử hiệu năng có thể tạo ra các tải khác nhau trên máy chủ dẫn đến các kiểm thử không
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
thực tế. Trong khi tiến hành kiểm thử hiệu năng các workload sau đây có thể đƣợc sử dụng.
2.1.2.1. Workload ổn định
Đại diện cho tải ngƣời dùng không đổi đồng thời truy cập vào hệ thống. Số lƣợng ngƣời dùng truy cập vào ứng dụng tại bất kỳ thời điểm nào là hằng số. Workload này không đại diện cho môhình thời gian thực của các ứng dụng web và đƣợc sử dụng rộng rãi để thực hiện kiểm thử tính ổn định (có thể kéo dài trong một khoảng thời gian dài tới 32 giờ)
0 1 2 3 4 5 6 7 8 Hình 2.1. Workload ổn định 2.1.2.2. Workload lệch
Đại diện cho việc tăng tải ngƣời dùng truy cập đồng thời vào hệ thống. Kiểm thử đƣợc bắt đầu với số lƣợng tối thiểu ngƣời dùng và ngƣời dùng ảo đƣợc tăng từng bƣớc một cách định kỳ. Workload này đại diện cho mô hình thời gian thực của các ứng dụng web. Kiểm thử tải sử dụng workload này để xác định số ngƣời dùng tối đa mà hệ thống hỗ trợ. 0 1 2 3 4 5 6 7 8 Hình 2.2. Workload lệch Số n gườ i d ùn g 8 6 4 2 0 Thời gian 8 6 4 2 0 Thời gian Số người dùng
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
2.1.2.3. Workload đột biến
Workload đại diện cho tải ngƣời dùng cao đột ngột truy cập vào hệ thống. Thử nghiệm này thƣờng đƣợc thực hiện để kiểm thử hiệu năng hệ thống trong điều kiện tải đột ngột. Đôi khi trong kiểm thử khả năng chịu tải, workload đột biến sẽ đƣợc sử dụng để xác định hiệu năng hệ thống chấm dứt đột ngột.
0 1 2 3 4 5 6 7 8
Hình 2.3. Workload đột biến
2.1.2.4. Workload đặc trưng thời gian
Workload đặc trƣng thời gian rất khó để đạt đƣợc. Thông thƣờng, khi ngƣời dùng truy cập các ứng dụng web theo phân phối địa lý, tại một thời điểm ngƣời dùng truy cập vào ứng dụng từ các vùng, miền khác nhau với các múi giờ khác nhau. Chỉ có một thời gian rất ngắn một hay hai giờ tải trên máy chủ sẽ giảm vì không bị chồng chéo về múi giờ. Đối với các ứng dụng nhƣ vậy, mẫu ngƣời dùng sẽ có mức lặp đi lặp lại cao và thấp suốt trong ngày và sẽ quá tải tại thời điểm chồng chéo múi giờ. Để mô phỏng những điều kiện nhƣ vậy, workload đặc trƣng thời gian có thể đƣợc sử dụng.
0 1 3 5 7 9 11 13 15
Hình 2.4. Workload đặc trƣng thời gian Thời gian