Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG PHẠM THỊ TÚ
KỸ THUẬT KIỂM THỬ HIỆU NĂNG
PHẦN MỀM VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Ngƣời hƣớng dẫn khoa học: PGS.TS ĐẶNG VĂN ĐỨC
Thái Nguyên - 2013Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
i
LỜI CAM ĐOAN
Tôi xin cam đoan, kết quả của luận văn hoàn toàn là kết quả của tự bản thân
tôi tìm hiểu, nghiên cứu dƣới sự hƣớng dẫn của thầy giáo PGS.TS Đặng Văn Đức.
Tôi hoàn toàn chịu trách nhiệm về tính pháp lý quá trình nghiên cứu khoa học
của luận văn này.
đỡ trong suốt quá trình học và làm luận văn.
Thái Nguyên, tháng 11 năm 2013
Phạm Thị Tú
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
iii
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
iv
1.4.6. Thực hiện kiểm thử 17
1.4.7. Phân tích kết quả, báo cáo và kiểm thử lại 17
1.5.CÁC CÔNG CỤ HỖ TRỢ KIỂM THỬ HIỆU NĂNG 17
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 18
1.5.2.Giới thiệu một số công cụ kiểm thử hiệu năng phổ biến [6] 19
1.6. KẾT LUẬN CHƢƠNG 1 22
CHƯƠNG 2: CÁC KỸ THUẬT SỬ DỤNG TRONG KIỂM THỬ HIỆU NĂNG 23
2.1. XÁC ĐỊNH WORKLOAD 23
2.1.1. Workload là gì? 23
2.1.2. Các loại workload [6] 23
2.1.3.Các bƣớc xác định workload 26
2.2.THIẾT LẬP MÔI TRƢỜNG KIỂM THỬ 30
2.2.1. Cô lập môi trƣờng kiểm thử 31
2.2.2. Cô lập mạng 31
2.2.3. Sinh tải 32
2.2.4. Sinh dữ liệu kiểm thử 32
2.3. LẬP KẾ HOẠCH KIỂM THỬ 32
2.4. XÂY DỰNG KỊCH BẢN KIỂM THỬ 33
2.5.THỰC HIỆN KIỂM THỬ 35
2.5.1.Điều kiện thực hiện kiểm thử hiệu năng [5] 35
2.5.2.Các loại kiểm thử hiệu năng. 36
2.5.3.Phƣơng pháp tiếp cận thực hiện kiểm thử 39
2.5.4.Các yếu tố thực hiện kiểm thử 41
2.6. XÂY DỰNG BÁO CÁO VÀ PHÂN TÍCH KẾT QUẢ KIỂM THỬ HIỆU NĂNG 44
2.6.1.Xây dựng báo cáo kết quả kiểm thử 44
2.6.2.Phân tích kết quả kiểm thử hiệu năng 47
TT
Viết tắt
Tiếng Anh
Nghĩa
1.
GV
Giáo viên
2.
HSSV
Học sinh sinh viên
3.
ND
Ngƣời dùng
4.
QTHT
Quản trị hệ thống
5.
AUT
Application Under Test
Ứng dụng kiểm thử
6.
DBA
Database Administrator
Ngƣời quản trị cơ sở dữ liệu
7.
SLA
Hình 2.2. Workload lệch 24
Hình 2.3. Workload đột biến 25
Hình 2.4. Workload đặc trƣng thời gian 25
Hình 2.5. Tải ngƣời dùng mục tiêu và số kiểm thử 42
Hình 2.6. Tải ngƣời dùng và thời gian phản hồi 42
Hình 2.7. Tải ngƣời dùng và thông lƣợng hệ thống 43
Hình 2.8. Tải ngƣời dùng và nút cổ chai hệ thống 43
Hình 3.1.Giao diện ứng dụng thử nghiệm kiểm thử 49
3.2.Giao diện màn hình khi khởi động JMeter 51
Hình 3.3.Các thành phần của JMeter 52
Hình 3.4. Biểu đồ Ucase của hệ thống kiểm thử 55
Hình 3.5. Kịch bản kiểm thử của giao dịch HTTT (1 ngƣời dùng) 56
Hình 3.6. Giao diện cấu hình HTTP Request cho giao dịch HTTT 56
Hình 3.7. Kịch bản kiểm thử của giao dịch HTTT(300 ngƣời dùng) 57
Hình 3.8. Kịch bản kiểm thử của giao dịch HTTT(500 ngƣời dùng) 57
Hình 3.9. Kịch bản kiểm thử của giao dịch HTTT(600 ngƣời dùng) 58
Hình 3.10.Giao diện báo cáo kết quả kiểm thử giao dịch HTTT (1 ngƣời dùng) 58
Hình 3.11.Giao diện bảng kết quả kiểm thử giao dịch HTTT (300 ngƣời dùng) 59
Hình 3.12. Giao diện kết quả kiểm thử của giao dịch HTTT (300 ngƣời dùng) 59
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
viii
Hình 3.13. Đồ thị kết quả kiểm thử của giao dịch HTTT(300 ngƣời dùng) 60
Hình 3.14. Kết quả sử dụng tài nguyên giao dịch HTTT (300 ngƣời dùng) 60
Hình 3.15. Giao diện kết quả kiểm thử của giao dịch HTTT (500 ngƣời dùng) 60
Hình 3.16. Đồ thị kết quả kiểm thử của giao dịch HTTT (500 ngƣời dùng) 61
Hình 3.17. Giao diện kết quả kiểm thử giao dịch HTTT (600 ngƣời dùng) 61
Hình 3.18. Giao diện kết quả kiểm thử của giao dịch HTTT (900 ngƣời dùng) 62
Hình 3.19. Giao diện kết quả kiểm thử của giao dịch HTTT (1600 ngƣời dùng) 62
Bảng 2.3.Tính toán kết quả kịch bản theo các yếu tố 33
Bảng 2.4.Chiến lƣợc thực hiện kiểm thử tải 41
Bảng 2.5.Báo cáo thời gian phản hồi 46
Bảng 2.6.Bảng so sánh thời gian phản hồi 46
Bảng 3.1.Môi trƣờng thực hiện thử nghiệm kiểm thử. 53
Bảng 3.2.Bảng so sánh hiệu năng các kết quả kiểm thử 64 Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
1
MỞ ĐẦU
2
3. Đối tƣợng và phạm vi nghiên cứu
Cơ sở lý thuyết kiểm thử hiệu năng, các kỹ thuật sử dụng trong kiểm thử
hiệu năng phần mềm nhƣ: xác định Workload, thiết lập môi trƣờng kiểm thử, lập kế
hoạch kiểm thử, xây dựng kịch bản kiểm thử, thực hiện kiểm thử, xây dựng báo cáo
và phân tích kết quả kiểm thử.
Tìm hiểu tính năng công cụ kiểm thử hiệu năng giúp kiểm thử tự động phần
mềm, ứng dụng.
Lựa chọn một phần mềm có sẵn để thực hiện thử nghiệm kiểm thử trên cơ sở
kỹ thuật đã nghiên cứu trên đây.
4. Ý nghĩa khoa học và thực tiễn của đề tài
Phần nghiên cứu lý thuyết của đề tài cung cấp cách nhìn tổng quan về kiểm
thử hiệu năng, quy trình kiểm thử hiệu năng. Kết quả nghiên cứu có thể làm tài liệu
tham khảo cho những ngƣời phát triển kiểm thử hiệu năng.
Đề tài có mục tiêu giải quyết vấn đề thực tiễn là đề xuất quy trình kiểm thử
hiệu năng thành một quy trình bắt buộc cần phải có trong các doanh nghiệp phần
mềm Việt Nam hiện nay nhằm đảm bảo chất lƣợng sản phẩm.
5. Phƣơng pháp nghiên cứu
Luận văn sử dụng phƣơng pháp nghiên cứu thu thập, chọn lọc và tổng hợp
các tài liệu liên quan đến kiểm thử hiệu năng, kết hợp với triển khai thực hiện thử
nghiệm kiểm thử để làm rõ nội dung lý thuyết đã nghiên cứu.
6. Bố cục của luận văn
Bố cục của luận văn bao gồm các phần sau:
CHƢƠNG 1:TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
Chƣơng này sẽ giới thiệu tổng quan về kiểm thử phần mềm, các khái niệm
trong kiểm thử phần mềm nói chung và kiểm thử hiệu năng nói riêng, các hoạt động
trong kiểm thử hiệu năng và các công cụ hỗ trợ kiểm thử hiệu năng.
CHƯƠNG 2: CÁC KỸ THUẬT SỬ DỤNG TRONG KIỂM THỬ HIỆU NĂNG
Trong chƣơng này, luận văn tập trung trình bày các kỹ thuật và cũng là quy
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
4
Chƣơng 1
TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ
phần mềm trong đúng môi trƣờng chúng dự định sẽ đƣợc triển khai nhằm cung cấp
cho ngƣời có lợi ích liên quan những thông tin về chất lƣợng của sản phẩm hay dịch
vụ phần mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm
khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ƣu của phần mềm trong
nhiều ngành khác nhau. Kiểm thử phần mềm là một giai đoạn quan trọng trong quy
trình phát triển một phần mềm (Hình 1.1)
Hình 1.1. Vòng đời phát triển hệ thống
1.1. CÁC KHÁI NIỆM CƠ BẢN
1.1.1.Kiểm thử phần mềm (Software Testing) [1], [2]
Kiểm thử phần mềm là tiến trình thực thi chƣơng trình với mục đích tìm thấy
lỗi (Glen Myer). Theo định nghĩa của Glen Myers, kiểm thử mà không phát hiện
đƣợc lỗi đƣợc coi là không thành công.
Trong kiểm thử phần mềm chia ra các cấp độ kiểm thử sau: [2]
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
5
1.1.2.Kiểm thử đơn vị (Unit Testing)
Kiểm thử đơn vị là kiểm thử một thành phần nhỏ nhất của phần mềm nhƣ
các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc phƣơng thức (Method)…
Mục đích của kiểm thử đơn vị là bảo đảm thông tin đƣợc xử lý và xuất là
chính xác, trong mối tƣơng quan với dữ liệu nhập và chức năng của đơn vị.
Kiểm thử đơn vị đòi hỏi phải chuẩn bị trƣớc các tình huống (test case) hoặc
kịch bản (script), trong đó chỉ định rõ dữ liệu vào, các bƣớc thực hiện và dữ liệu
mong chờ sẽ xuất ra. Các test case và script này nên đƣợc giữ lại để tái sử dụng.
1.1.3. Kiểm thử tích hợp (Integration Testing)
Là kiểm thử đƣợc thực hiện bằng cách tích hợp từng module vào hệ thống và
kiểm thử.
Có 4 loại kiểm thử trong kiểm thử tích hợp: (Hình 1.3)
Kiểm thử cấu trúc(Structure Testing): Kiểm thử nhằm bảo đảm các thành
phần bên trong của một chƣơng trình chạy đúng, chú trọng đến hoạt động
của các thành phần cấu trúc nội tại của chƣơng trình nhƣ các lệnh và nhánh.
Kiểm thử chức năng (Functional Testing): Kiểm thử chú trọng chức năng của
chƣơng trình theo yêu cầu kỹ thuật, không quan tâm đến cấu trúc bên trong.
Kiểm thử hiệu năng (Performance Testing): Kiểm thử việc vận hành của hệ thống.
Kiểm thử khả năng chịu tải (Stress Testing): Kiểm thử giới hạn của hệ thống.
Kiểm thử hệ thống kiểm thử cả các hành vi chức năng của phần mềm lẫn các
yêu cầu về chất lƣợng nhƣ độ tin cậy, tính tiện lợi khi sử dụng, hiệu năng và bảo
mật. Mức kiểm thử này đặc biệt thích hợp cho việc phát hiện lỗi giao tiếp với phần
mềm hoặc phần cứng bên ngoài, chẳng hạn các lỗi “tắc nghẽn” (deadlock) hoặc
chiếm dụng bộ nhớ.
Trong kiểm thử hệ thống lại gồm nhiều loại kiểm thử khác nhau (hình1.4),
phổ biến nhất gồm:
Kiểm thử chức năng (Functional Testing): bảo đảm các hành vi của hệ thống
thỏa mãn đúng yêu cầu thiết kế.
Kiểm thử khả năng vận hành (Performance Testing): bảo đảm tối ƣu việc
phân bổ tài nguyên hệ thống nhằm đạt các chỉ tiêu nhƣ thời gian xử lý hay
đáp ứng câu truy vấn…
Kiểm thử tải hoặc khả năng chịu tải (Stress Testing hay Load Testing): bảo đảm
hệ thống vận hành đúng dƣới áp lực cao (ví dụ nhiều ngƣời truy cập cùng lúc),
các trạng thái tới hạn, các “điểm chết”, các tình huống bất thƣờng…
Kiểm thử cấu hình (Configuration Testing).
Kiểm thử khả năng bảo mật (Security Testing): bảo đảm tính toàn vẹn, bảo
mật của dữ liệu và của hệ thống.
Kiểm thử khả năng phục hồi (Recovery Testing): bảo đảm hệ thống có khả
năng khôi phục trạng thái ổn định trƣớc đó trong tình huống mất tài nguyên
hoặc dữ liệu; đặc biệt quan trọng đối với các hệ thống giao dịch nhƣ ngân
hàng trực tuyến. Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
7
chịu tải
Kiểm thử
khả năng
bảo mật
Kiểm thử
cấu hình
Kiểm thử khả
năng vận
hành
Kiểm thử khả
năng phục hồi
Hệ thống đã sẵn sàng
để khách hàng kiểm
thử chấp nhận
Kiểm thử
chức năng
Kiểm thử đã
hoàn thành
Kiểm thử mức hệ thống
(System testing)
Dữ
liệu
Tài
liệu sử
dụng
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
8
để bảo đảm phiên bản phần mềm mới thực hiện tốt các chức năng nhƣ phiên bản cũ
9
1.1.8. Kiểm thử hiệu năng (Performance Testing)
Là hoạt động thử nghiệm, đánh giá phần mềm, các thành phần hoặc phần
cứng về sự tƣơng thích của nó với mục tiêu kiểm thử hiệu năng. Đó là loại kiểm thử
với mục đích xác định khả năng mở rộng của ứng dụng.
Mục đích của kiểm thử hiệu năng ngoài việc tìm ra các thông số tiêu chuẩn
về hiệu năng nhƣ: thông lƣợng, thời gian phản hồi, các tài nguyên bị chiếm giữ
…còn tìm ra điểm “thắt cổ chai” của phần mềm để từ đó có những cải tiến nhằm
tăng khả năng thực thi của phần mềm
Thực chất của kiểm thử hiệu năng là quá trình xác định tốc độ và hiệu quả
của máy tính, mạng, phần mềm, chƣơng trình hoặc thiết bị. Quá trình này có thể
liên quan đến các kiểm thử định lƣợng nhƣ đo thời gian phản hồi, thông lƣợng hệ
thống và việc sử dụng tài nguyên của máy chủ… hoặc các thuộc tính nhƣ độ tin cậy,
khả năng mở rộng và khả năng tƣơng tác cũng có thể đƣợc đánh giá.
Khác với các loại kiểm thử khác, kiểm thử hiệu năng xác nhận những yêu
cầu phi chức năng của hệ thống, nghĩa là đánh giá xem khả năng vận hành của phần
mềm ấy trên toàn bộ hệ thống nhƣ thế nào.
Ví dụ: Thời gian để nạp hoàn chỉnh một trang web theo yêu cầu là tối đa 10s.
Vậy, nếu kiểm thử hiệu năng cho thấy các trang đƣợc nạp trong vòng 10s tức là hệ
thống đạt yêu cầu về hiệu năng.
Kiểm thử hiệu năng chỉ có giá trị khi hệ thống không còn sự chỉnh sửa về mã
nguồn và kiểm thử chức năng cơ bản đƣợc hoàn thành.
Khi tiến hành kiểm thử hiệu năng cần có quy trình thực hiện và nguyên tắc
làm việc để đạt đƣợc mục tiêu cao nhất. Dƣới đây là các giai đoạn của vòng đời
kiểm thử hiệu năng: [6]
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
lƣợng các yêu cầu hoặc giao dịch mà máy chủ xử lý tại bất kỳ thời điểm nào.
Lập kế
hoạch
kiểm thử
Xây dựng
kịch bản
Thực hiện và
phân tích
kiểm thử
Báo cáo
kiểm thử
Hiểu biết hệ
thống
Xác định mục
tiêu hiệu năng
Mô hình
ngƣời dùng
Mô hình tải
làm việc
Phát triển
kịch bản
Tạo dữ liệu
kiểm thử
Hiểu biết
hệ thống
Thiết lập
môi trƣờng
Chạy kiểm
thử hiệu năng
Cung cấp
hình ảnh và 1 lƣợt truy cập để lấy trang web). Đối với một trang web, yêu cầu hiệu
năng có thể đƣợc thể hiện trong thuật ngữ số lƣợt truy cập trên mỗi đơn vị thời gian.
1.1.8.6. Người dùng ảo (Virtual User)
Là khái niệm chỉ ngƣời dùng giả lập, đƣợc tạo ra từ các công cụ kiểm thử
hiệu năng để mô phỏng lƣu lƣợng truy cập ngƣời dùng thực. Một ngƣời dùng ảo
đƣợc cấu hình trong công cụ kiểm thử hiệu năng để chạy kịch bản mô phỏng hành
vi ngƣời dùng thực.
Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/
12
1.1.8.7.Thời gian suy nghĩ (Think Time)
Là khái niệm dùng để chỉ thời gian đƣợc thực hiện bởi ngƣời dùng để suy
nghĩ hoặc nhấp chuột vào bất kỳ liên kết hoặc các nút… của trang web trong khi
điều hƣớng qua trang web.
Thời gian suy nghĩ là một tham số rất quan trọng cần phải đƣợc thiết lập
trong khi xây dựng kịch bản kiểm thử bằng việc sử dụng các công cụ kiểm thử hiệu
năng. Các nhà phân tích ứng dụng hoặc đội ngũ quản lý trang web hoặc thậm chí
đôi khi khảo sát ngƣời dùng cuối có thể cung cấp một hình ảnh thực tế về các yêu
cầu thời gian suy nghĩ của một giao dịch.
1.1.8.8.Kịch bản kiểm thử (Test Scenario)
Là khái niệm dùng để chỉ một giao dịch quan trọng hoặc một tiến trình công
việc có lƣu lƣợng cao đƣợc xác định cho kiểm thử hiệu năng. Kịch bản kiểm thử
trong kiểm thử hiệu năng thƣờng đƣợc tạo ra bằng các công cụ kiểm thử.
1.2.TẦM QUAN TRỌNG CỦA KIỂM THỬ HIỆU NĂNG
Kiểm thử hiệu năng đƣợc thực hiện để xác định tốc độ, khả năng phân tải và
mức độ tin tƣởng của phần mềm trong môi trƣờng nhiều ngƣời dùng, có nhiều hoạt
động khác nhau. Việc thực hiện kiểm thử hiệu năng giúp kiểm thử viên biết đƣợc
các thông số ngƣỡng của phần mềm.
Thực tế cho thấy các trang web hiện nay đƣợc phát triển rất rộng rãi. Hầu hết
+Hệ thống có hoạt động tốt sau khi thêm card NIC mới? Hệ thống sẽ xử lý
tải ngƣời dùng tăng đột biến? Hoặc nó sẽ sụp đổ?
+Hệ thống có cần một máy chủ cơ sở dữ liệu chuyên dụng để đáp ứng các
mục tiêu hiệu năng?
Tóm lại duy trì sự tồn tại của một phần mềm và ứng dụng trên nền web là
công việc đáng quan tâm đối với mỗi doanh nghiệp. Điều đó thể hiện năng lực kinh
doanh, doanh thu của mỗi đơn vị. Một phần mềm mang tính thực thi cao phải đồng
thời đáp ứng đƣợc các tiêu chí vận hành quan trọng là chức năng và hiệu năng. Việc
coi nhẹ hoặc không thực hiện kiểm thử hiệu năng có thể dẫn đến tình trạng phần
mềm không đáp ứng đƣợc yêu cầu hiệu năng khi đƣa vào hoạt động thực tế. Trong