Xuất phát từ thực tế đó, đề tài luận văn “Kỹ thuật kiểm thử hiệu năng phần mềm và ứng dụng” với mục đích tìm hiểu, nghiên cứu các vấn đề trong kiểm thử hiệu năng như các khái niệm cơ bản
Trang 2ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Trang 3LỜ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ọccủa luận văn này
Thái Nguyên, tháng 11 năm 2013
Người cam đoan
Phạm Thị Tú
Trang 4LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành nhất đến thầy giáo PGS.TS Đặng Văn Đức
đã định hướng và nhiệt tình hướng dẫn, giúp đỡ em trong quá trình làm luận văn
Em xin gửi lời biết ơn sâu sắc đến quý thầy cô trường đại học Công nghệthông tin truyền thông, các thầy ở viện công nghệ thông tin Hà Nội đã truyền đạtnhững những kiến thức và kinh nghiệm quý báu cho chúng em trong thời gianhọc tập
Xin chân thành cảm ơn các bạn bè, đồng nghiệp, các bạn học viên lớp cao họcCK10C, những người thân trong gia đình đã động viên, chia sẻ, tạo điều kiện giúp
đỡ 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ú
Trang 5MỤC LỤC
DANH MỤC CÁC TỪ TIẾNG ANH VÀ VIẾT TẮT VII DANH MỤC CÁC HÌNH VẼ VIII DANH MỤC CÁC BẢNG BIỂU X
MỞ ĐẦU 1
1.1 CÁC KHÁI NIỆM CƠ BẢN 4
1.1.1.Kiểm thử phần mềm (Software Testing) [1], [2] 4
1.1.2.Kiểm thử đơn vị (Unit Testing) 5
1.1.3 Kiểm thử tích hợp (Integration Testing) 5
1.1.4.Kiểm thử hệ thống (System Testing) 6
1.1.7.Kiểm thử chức năng (Functional Testing) 8
1.1.8 Kiểm thử hiệu năng (Performance Testing) 9
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 9
1.2.TẦM QUAN TRỌNG CỦA KIỂM THỬ HIỆU NĂNG 12
1.3 TÌNH HÌNH NGHIÊN CỨU HIỆN NAY TRONG VÀ NGOÀI NƯỚC 14
1.4 CÁC HOẠT ĐỘNG TRONG KIỂM THỬ HIỆU NĂNG 14
1.4.1 Xác định môi trường kiểm thử 16
1.4.2.Xác định các tiêu chí hiệu năng 16
1.4.3 Lập kế hoạch và thiết kế kiểm thử 16
1.4.4 Cấu hình môi trường kiểm thử 17
Chuẩn bị môi trường kiểm thử, các công cụ, và các nguồn lực cần thiết để thực hiện mỗi chiến lược kiểm thử 17
1.4.5 Cài đặt thiết kế kiểm thử 17
Phát triển các bài kiểm thử phù hợp với các thiết kế kiểm thử 17
1.4.6 Thực hiện kiểm thử 17
Trang 6Chạ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ử 17
1.4.7 Phân tích kết quả, báo cáo và kiểm thử lại 17
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 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 23
CÁC KỸ THUẬT SỬ DỤNG TRONG KIỂM THỬ 23
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
Trang 72.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
2.7 KẾT LUẬN CHƯƠNG 2 48
CHƯƠNG 3 49
THỬ NGHIỆM KIỂM THỬ HIỆU NĂNG VỚI PHẦN MỀM ĐƯỢC CHỌN 49
3.1 MỞ ĐẦU 49
3.2.GIỚI THIỆU PHẦN MỀM SẼ KIỂM THỬ 49
3.3 GIỚI THIỆU GIAO DIỆN VÀ CÁC THÀNH PHẦN CỦA CÔNG CỤ SỬ DỤNG KIỂM THỬ [3] 51
- Sampler(Mẫu): Cung cấp thông tin cho JMeter gửi các yêu cầu đến máy chủ cần kiểm tra và đợi máy chủ trả lời Tùy theo giao thức kiểm tra, JMeter hỗ trợ những loại sampler khác nhau Bộ điều khiển có thể được sử dụng để thay đổi số lần lặp lại của một sampler 52
3.4 XÁC ĐỊNH WORKLOAD 53
Mục tiêu thử nghiệm kiểm thử Website với tải mục tiêu 1.500 người dùng 53
3.5 THIẾT LẬP MÔI TRƯỜNG KIỂM THỬ (phần cứng/phần mềm/mạng) 53
3.6 LẬP KẾ HOẠCH KIỂM THỬ 53
3.7 XÂY DỰNG KỊCH BẢN KIỂM THỬ 55
3.8 THỰC HIỆN KIỂM THỬ 58
3.9 BÁO CÁO KẾT QUẢ KIỂM THỬ VÀ PHÂN TÍCH 58
Đồ thị kết quả như sau: 61
3.10.KẾT LUẬN CHƯƠNG 3 65
Trang 8KẾT LUẬN 65 DANH MỤC TÀI LIỆU THAM KHẢO 66
Trang 9DANH MỤC CÁC TỪ TIẾNG ANH VÀ VIẾT TẮT
TT Viết tắt Tiếng Anh Nghĩa
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 Service Level-Agreement Cam kết mức độ dịch vụ
8 SPEC Standard Performance
Evalution Corporation
Tập đoàn đánh giá hiệu suất chuẩn
9 SUT Systems Under Test Hệ thống kiểm thử
Trang 10DANH MỤC CÁC HÌNH VẼ
HÌNH 1.1 VÒNG ĐỜI PHÁT TRIỂN HỆ THỐNG 4
HÌNH 1.2 CÁC MỨC ĐỘ KIỂM THỬ CƠ BẢN CỦA PHẦN MỀM [2] 4
HÌNH 1.3 SƠ ĐỒ KIỂM THỬ TÍCH HỢP 5
HÌNH 1.4 CÁC LOẠI KIỂM THỬ KHÁC NHAU TRONG KIỂM THỬ HỆ THỐNG 7
HÌNH 1.5 SƠ ĐỒ KIỂM THỬ CHỨC NĂNG 8
HÌNH 1.6 VÒNG ĐỜI KIỂM THỬ HIỆU NĂNG [6] 10
HÌNH 1.7.A CÁC HOẠT ĐỘNG KIỂM THỬ HIỆU NĂNG [6] 15
HÌNH 1.7.B CÁC HOẠT ĐỘNG KIỂM THỬ HIỆU NĂNG [4] 15
HÌNH 2.1 WORKLOAD ỔN ĐỊNH 24
HÌNH 2.2 WORKLOAD LỆCH 25
HÌNH 2.3 WORKLOAD ĐỘT BIẾN 25
HÌNH 2.4 WORKLOAD ĐẶC TRƯNG THỜI GIAN 26
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
HÌNH 3.2.GIAO DIỆN MÀN HÌNH KHI KHỞI ĐỘNG JMETER 51
CÁC THÀNH PHẦN CHÍNH: 51
HÌNH 3.3.CÁC THÀNH PHẦN CỦA JMETER 52
*TEST PLAN(KẾ HOẠCH KIỂM THỬ): BAO GỒM CÁC BƯỚC SẼ ĐƯỢC JMETER THỰC THI 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
Trang 11HÌ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 HÌNH 3.13 ĐỒ THỊ KẾT QUẢ KIỂM THỬ CỦA GIAO DỊCH HTTT(300 NGƯỜI DÙNG) 60 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 HÌNH 3.20 ĐỒ THỊ KẾT QUẢ KIỂM THỬ CỦA GIAO DỊCH HTTT (1600 NGƯỜI DÙNG) 63
Trang 12HÌNH 3.21.KẾT QUẢ SỬ DỤNG TÀI NGUYÊN GIAO DỊCH HTTT (1600
NGƯỜI DÙNG) 63
HÌNH 3.22 ĐỒ THỊ THÔNG LƯỢNG HỆ THỐNG KIỂM THỬ 64
DANH MỤC CÁC BẢNG BIỂU BẢNG 1.1 BẢNG SO SÁNH GIỮA CÔNG CỤ MÃ NGUỒN MỞ VÀ THƯƠNG MẠI 18
BẢNG 2.1.BẢNG MỘT SỐ CÔNG CỤ PHÂN TÍCH TỆP TIN LOG MÁY CHỦ WEB 27
BẢNG 2.2 BẢNG CÁC MÃ LỖI CƠ BẢN 30
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
Trang 13BẢ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
Trang 14để tìm kiếm, khai thác, xử lý thông tin cũng rất đa dạng và phong phú Khi đó vấn đềtiếp nhận, khai thác, xử lý các nguồn thông tin một cách nhanh chóng, hiệu quả ngàycàng trở lên quan trọng và là mối quan tâm hàng đầu đối với mỗi tổ chức xã hội và đơn
vị sản xuất kinh doanh Vì vậy, một phần mềm ngoài đảm bảo chạy đúng các chứcnăng, yêu cầu của khách hàng còn rất cần tính ổn định khi có số lượng lớn người dùngtruy cập Tiến hành kiểm thử phần mềm nói chung và kiểm thử hiệu năng nói riêng làcông việc rất cần thiết đối với bất kỳ một doanh nghiệp sản xuất phần mềm nào Điều
đó sẽ giúp cho các doanh nghiệp kiểm tra được chất lượng của phần mềm một cách tối
ưu trước khi đưa đến người sử dụng
Xuất phát từ thực tế đó, đề tài luận văn “Kỹ thuật kiểm thử hiệu năng phần
mềm và ứng dụng” với mục đích tìm hiểu, nghiên cứu các vấn đề trong kiểm thử
hiệu năng như các khái niệm cơ bản của kiểm thử hiệu năng, các công cụ hỗ trợkiểm thử hiệu năng, các kỹ thuật sử dụng trong kiểm thử hiệu năng Trên cơ sở cácvấn đề đã nghiên cứu thực hiện thử nghiệm kiểm thử cho một phần mềm có sẵnbằng một công cụ kiểm thử, đưa ra báo cáo và phân tích kết quả kiểm thử
2 Mục tiêu và nhiệm vụ nghiên cứu
Luận văn tập trung nghiên cứu, tìm hiểu và giải quyết các vấn đề trong kiểmthử hiệu năng của phần mềm và ứng dụng, các kỹ thuật sử dụng trong kiểm thử hiệunăng phần mềm như: xác định Workload, xác định và 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ựngbáo cáo kết quả kiểm thử Trên cơ sở đó thực hiện thử nghiệm kiểm thử cho mộtphần mềm được chọn
Trang 153 Đố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ầnmề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ểmthử 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ệutham 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ầnmề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ợpcá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ệmtrong 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 độngtrong 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
Trang 16Trong chương này, luận văn tập trung trình bày các kỹ thuật và cũng là quytrình trong kiểm thử hiệu năng như: xác định workload, thiết lập môi trường kiểmthử, 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âydựng báo cáo và phân tích kết quả kiểm thử.
CHƯƠNG 3: THỬ NGHIỆM KIỂM THỬ HIỆU NĂNG VỚI PHẦN MỀM ĐƯỢC CHỌN
Chương này sẽ trình bày các đặc điểm của phần mềm được lựa chọn thửnghiệm kiểm thử, công cụ kiểm thử hiệu năng sử dụng thử nghiệm kiểm thử cũngnhư quy trình các bước thử nghiệm kiểm thử dựa trên cơ sở lý thuyết đã trình bày.Kết quả tóm tắt của các trường hợp đã thử nghiệm và phân tích
KẾT LUẬN
- Trình bày các kết quả đạt được của luận văn
- Nêu phương hướng phát triển của đề tài trong tương lai
- Nêu các đề xuất, kiến nghị
TÀI LIỆU THAM KHẢO
Trình bày thông tin các danh mục làm tài liệu tham khảo liên quan đến luận văn
Trang 17Chươ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ấpcho 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ếmkhuyế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 trongnhiều ngành khác nhau Kiểm thử phần mềm là một giai đoạn quan trọng trong quytrì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ấylỗ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]
Hình 1.2 Các mức độ kiểm thử cơ bản của phần mềm [2]
Lập kế hoạch
Phân tích
Thiết kế
Mã hóa Kiểm thử
tích hợp các đơn vị (Integration testing)
Các nhóm
bộ phận Kiểm thử mức
hệ thống sau khi tích hợp (System testing)
Toàn bộ
hệ thống
Kiểm thử chấp nhận sản phẩm (Acceptance testing) Toàn bộ hệ thống nhìn
từ khách hàng
Trang 181.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ặckịch bản (script), trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệumong 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ànhphần bên trong của một chương trình chạy đúng, chú trọng đến hoạt độngcủ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ủachươ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
Hình 1.3 Sơ đồ kiểm thử tích hợp
Tiêu chí chấp nhận người dùng
Phần mềm đã
phát triển
Kế hoạch kiểm thử
Sơ đồ phát triển
Kiểm thử tích hợp
Báo cáo chấp nhận phát triển Kế hoạch Phần mềm tích
hợp
Trang 191.1.4.Kiểm thử hệ thống (System Testing)
Là kiểm thử nhằm xác minh toàn bộ các thành phần của hệ thống được tíchhợp có thỏa mãn yêu cầu đặt ra hay không
Sau khi thực hiện kiểm thử đơn vị và kiểm thử tích hợp để bảo đảm mọi đơn
vị và sự tương tác giữa chúng hoạt động chính xác Một hệ thống phần mềm đãđược hình thành cùng với các thành phần đã được kiểm thử đầy đủ Tại thời điểmnày, lập trình viên hoặc kiểm thử viên (tester) bắt đầu kiểm thử phần mềm như một
hệ thống hoàn chỉnh
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ácyê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ảomậ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ầnmề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ặcchiế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ốngthỏ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ệcphâ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ảomậ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ênhoặc dữ liệu; đặc biệt quan trọng đối với các hệ thống giao dịch như ngânhàng trực tuyến
Trang 20Hình 1.4 Các loại kiểm thử khác nhau trong kiểm thử hệ thống
1.1.5 Kiểm thử chấp nhận sản phẩm (Acceptance Testing)
Sau giai đoạn kiểm thử hệ thống là kiểm thử chấp nhận sản phẩm, được kháchhàng thực hiện (hoặc ủy quyền cho một nhóm thứ ba thực hiện) Mục đích của kiểmthử chấp nhận sản phẩm là để chứng minh phần mềm thỏa mãn tất cả yêu cầu củakhách hàng và khách hàng chấp nhận sản phẩm (và trả tiền thanh toán hợp đồng)
Kiểm thử chấp nhận sản phẩm thường thông qua hai loại kiểm thử là: kiểmthử Alpha và kiểm thử Beta Với kiểm thử Alpha, người dùng (tiềm năng) kiểm thửphần mềm ngay tại nơi phát triển phần mềm, lập trình viên sẽ ghi nhận các lỗi hoặcphản hồi, và lên kế hoạch sửa chữa Với kiểm thử Beta, phầm mềm sẽ được gửi tớicho người dùng (tiềm năng) để kiểm thử ngay trong môi trường thực, lỗi hoặc phảnhồi cũng sẽ gửi ngược lại cho lập trình viên để sửa chữa
Trong quá trình thực hiện không nhất thiết phải thực hiện tất cả các loại kiểmthử nêu trên Tùy theo yêu cầu và đặc trưng của từng hệ thống, tuỳ theo khả năng vàthời gian cho phép của dự án, khi lập kế hoạch, trưởng dự án sẽ quyết định áp dụngnhững loại kiểm thử nào
1.1.6 Kiểm thử hồi quy (Regression Testing)
Kiểm thử hồi quy không phải là một mức kiểm thử như các mức khác đã nói
ở trên Kiểm thử hồi quy kiểm thử lại phần mềm sau khi có một sự thay đổi xảy ra,
Hệ thống đã được tích hợp hoàn chỉnh
Các loại tài liệu yêu
cầu của khách hàng
Kiểm thử khả năng 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
Trang 21để 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ũ
và sự thay đổi không gây ra lỗi mới trên những chức năng vốn đã làm việc tốt.Kiểm thử hồi quy có thể thực hiện tại mọi mức kiểm thử
1.1.7.Kiểm thử chức năng (Functional Testing)
Kiểm thử chức năng một phần mềm là kiểm thử được tiến hành trên một hệthống tích hợp đầy đủ, để đánh giá sự phù hợp của hệ thống với các yêu cầu đặc tảcủa nó Kiểm thử chức năng là một loại kiểm thử hộp đen, vì vậy nên không cầnkiến thức về thiết kế hoặc logic bên trong mã nguồn
Trong kiểm thử chức năng các test case của nó được dựa trên đặc tả của ứngdụng phần mềm/thành phần đang kiểm thử Các chức năng được kiểm thử bằngcách nhập vào các giá trị và kiểm tra kết quả đầu ra, và ít quan tâm đến cấu trúc bêntrong của ứng dụng
Kiểm thử chức năng thường bao gồm 5 bước cần thiết sau:
1 Xác định các chức năng mà phần mềm mong muốn sẽ thực hiện
2.Tạo ra các dữ liệu đầu vào dựa trên các tài liệu đặc tả kỹ thuật của các chức năng.3.Xác định kết quả đầu ra dựa trên các tài liệu đặc tả kỹ thuật của các chức năng
4 Thực hiện các trường hợp kiểm thử
5 So sánh kết quả thực tế và kết quả mong muốn
Hình 1.5 Sơ đồ kiểm thử chức năng
Trang 221.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ầncứ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ăngkhả 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ư độ tincậ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êucầ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ầnmề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ắclà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 đờikiểm thử hiệu năng: [6]
Trang 23Hình 1.6 Vòng đời kiểm thử hiệu năng [6]
Trong kiểm thử hiệu năng các khái niệm sau thường được sử dụng:
1.1.8.1.Thời gian phản hồi (Respone Time)
Là khái niệm dùng để chỉ thời gian phục vụ hoặc thời gian xử lý của máy chủ
để phục vụ một yêu cầu người dùng Thời gian phản hồi được tính từ thời điểmtrình duyệt web gửi yêu cầu đến máy chủ web đến khi người dùng yêu cầu nhậnđược các byte đầu tiên của phản hồi sau khi máy chủ xử lý Thời gian phản hồi baogồm thời gian xử lý máy chủ web + thời gian xử lý máy chủ ứng dụng+ thời gian
xử lý máy chủ cơ sở dữ liệu + độ trễ mạng
Thời gian phản hồi là thước đo cơ bản cần được kiểm thử để biết thời gian
xử lý của máy chủ đáp ứng các yêu cầu người dùng
1.1.8.2.Thông lượng (Throughput)
Là khái niệm dùng để chỉ lượng dữ liệu (các byte) được máy chủ chuyển giao
để phục vụ các yêu cầu của máy khách Đó là một chỉ số tốt về hiệu năng máy chủ vì
nó đề cập đến lượng công việc máy chủ hoàn thành Thông lượng cũng đề cập đến số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
Thiết lập môi trường
Chạy kiểm thử hiệu năng
Cung cấp
tài liệu
Tạo báo cáo
Trang 24Ví dụ, thông lượng máy chủ có thể được thể hiện như: 2.5 Mbps hoặc 35lượt truy cập/giây hoặc 8 giao dịch/giây.
1.1.8.3.Việc sử dụng tài nguyên (Resource Utilization)
Là khái niệm chỉ việc theo dõi hiệu suất của các nguồn tài nguyên quan trọngnhư: CPU, Memory(RAM), Disk trên máy chủ, theo dõi tình hình sử dụng Network
1.1.8.4 Tải làm việc (Workload)
Là khái niệm dùng để chỉ tải người dùng được đưa ra bởi một ứng dụng webdưới sự truy cập trong thời gian thực tế của người dùng hoặc trong quá trình kiểmthử hiệu năng và cách thức người dùng được phân phối giữa các luồng giao dịchkhác nhau
Thông thường, đối với các trang web đã thực sự đi vào môi trường sản xuất,các tệp tin log của máy chủ web có thể được phân tích để tìm hiểu về tải làm việccủa trang web đó Đối với các trang web chưa được hoạt động, một mô hình tải làmviệc cần phải được phát triển dựa trên các cuộc thảo luận với các nhà phân tích, cácchuyên gia ứng dụng, Sẽ rất quan trọng khi biết được tải làm việc của ứng dụngtrước khi tiến hành kiểm thử hiệu năng Tiến hành kiểm thử hiệu năng cho một hệthống mà không phân tích đúng tải làm việc có thể dẫn đến kết quả sai lệch
1.1.8.5 Lượt truy cập (Hit)
Là khái niệm dùng để chỉ một yêu cầu về tài nguyên trên máy chủ web (yêucầu về một tệp tin hoặc hình ảnh)
Ví dụ, nếu một trang web có chứa 5 hình ảnh, lúc đó một người dùng truycập đến trang đó tạo ra 6 lượt truy cập trên máy chủ web (5 lượt truy cập để lấy mỗihì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ệună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
Trang 251.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 để suynghĩ 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ậptrong 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ệună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êucầ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ôngviệ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 đượccá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ếtcác doanh nghiệp, tổ chức đều có trang web riêng Một trong những lợi ích điểnhình của các ứng dụng web là chúng cho phép nhiều người dùng truy cập đồng thời.Khi mà trung bình mỗi trang web có vài nghìn người truy cập mỗi ngày sẽ làm chovấn đề lưu thông trở lên quan trọng Nhiều người dùng có thể yêu cầu các dịch vụkhác nhau và truy cập đến các chức năng khác nhau cùng một lúc Vì vậy rất cầnthiết phải đánh giá khả năng hệ thống thực hiện các chức năng phức tạp trong điềukiện sử dụng bình thường và lúc cao điểm Kiểm thử hiệu năng là một phương pháp
Trang 26để đánh giá khả năng chịu tải của hệ thống, đến một mức nào đó tải sẽ vượt quá khảnăng chịu đựng nguồn tài nguyên của hệ thống
Bên cạnh đó, cùng với thời gian và lưu lượng truy cập lớn, dữ liệu cũng pháttriển và có thể vượt ra khỏi giới hạn của nó Nếu không xử lý đúng cách dữ liệu này
sẽ làm cho trang web trở lên chậm chạp Khách hàng sẽ khó chấp nhận mỗi khi truycập và có thể họ sẽ không bao giờ quay trở lại trang web đó Uy tín và doanh thucủa doanh nghiệp sẽ bị giảm sút Thông qua kiểm thử hiệu năng đảm bảo rằng tắcnghẽn được xác định và loại bỏ trước khi ứng dụng đi vào môi trường sản xuất
Hiệu năng của ứng dụng có tác động đến chất lượng tổng thể của phầnmềm Sự cần thiết phải loại bỏ tắc nghẽn đã trở thành vấn đề lớn trong thế giớikinh doanh cạnh tranh Vì vậy kiểm thử hiệu năng là hoạt động cần thiết cho việcphát triển các giải pháp phần mềm tối ưu Kiểm thử hiệu năng giúp trả lời các câuhỏi dưới đây:
+Thời gian phản hồi của hệ thống trong điều kiện chịu tải mong đợi là gì?+Làm thế nào để hệ thống đáp ứng được trong điều kiện chịu tải khôngmong đợi?
+Hệ thống có khả năng mở rộng với tải người dùng cụ thể không?
+Môi trường nào cung cấp hiệu năng tốt nhất cho hệ thống?
+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ácmụ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 kinhdoanh, doanh thu của mỗi đơn vị Một phần mềm mang tính thực thi cao phải đồngthờ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ệccoi 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ầnmềm không đáp ứng được yêu cầu hiệu năng khi đưa vào hoạt động thực tế Trongnhiều trường hợp phần mềm trở lên vô dụng mặc dù chức năng vẫn đúng Việc ápdụng kiểm thử hiệu năng hợp lý sẽ giúp cho việc tìm ra nơi phần mềm cần được cải
Trang 27tiến ngay trong quá trình phát triển phần mềm
1.3 TÌNH HÌNH NGHIÊN CỨU HIỆN NAY TRONG VÀ NGOÀI NƯỚC
Ở nước ta trong thời gian qua, kiểm thử phần mềm và kiểm thử hiệu năngchưa được quan tâm đúng mức, nhiều tổ chức đã quyết định mua phần cứng dunglượng cao để giải quyết vấn đề hiệu năng Vài năm gần đây, nhiều tổ chức đang dầnnhận ra tầm quan trọng của kiểm thử hiệu năng thậm chí từ giai đoạn đầu của vòngđời phát triển hệ thống Bộ thông tin và truyền thông có công văn số 3228/BTTTT-VCL ngày 24 tháng 10 năm 2011 hướng dẫn kiểm thử phần mềm nội bộ trong đó có
kiểm thử hiệu năng phần mềm Tuy nhiên kiểm thử hiệu năng vẫn chưa được coi là
một nhiệm vụ chính trong các doanh nghiệp Thời gian và chi phí cho hoạt độngnày ở các doanh nghiệp còn hạn chế so với các giai đoạn khác của vòng đời pháttriển hệ thống Trong khi nước ta đang trong giai đoạn xây dựng một nghành côngnghiệp phần mềm thì kiểm thử phần mềm cũng như kiểm thử hiệu năng không thể
bị xem nhẹ trong quy trình phát triển phần mềm và công nghệ phần mềm
Hội nghị Quốc tế Kiểm thử phần mềm và kiểm thử tự động (VISTACON
2011) với chủ đề “Nâng cao những phương pháp thực hành trong kiểm thử phần mềm và tự động hóa” diễn ra trong 02 ngày 06-07/12/2011 tại khách sạn Sheraton,
TP HCM Sự kiện do tập đoàn LogiGear và MRD phối hợp tổ chức với nhiềuchuyên đề nhằm nâng cao chất lượng kiểm thử cho các doanh nghiệp
Trên thế giới công việc kiểm thử hiệu năng được phát triển tập trung ở cácnước như: Ấn Độ, Trung Quốc…và hiện tại đã có những công cụ hỗ trợ cho việcphát triển kiểm thử hiệu năng
1.4 CÁC HOẠT ĐỘNG TRONG KIỂM THỬ HIỆU NĂNG
Trong quá trình kiểm thử hiệu năng, cần tiến hành nhiều hoạt động khácnhau Theo Ramya Ramalinga Moorthy [6] các hoạt động sau đây được thực hiệnkhi kiểm thử hiệu năng:
Kế hoạch kiểm thử hiệu năng
Thiết kế kiểm thử hiệu năng
Tạo kịch bản Thiết lập môi trường kiểm thử
Kiểm thử cơ bản/Kiểmthử điểm chuẩn
Trang 28Hình 1.7.a Các hoạt động kiểm thử hiệu năng [6]
Ở một tài liệu khác [4], tác giả đã tổng kết các hoạt động của kiểm thử hiệunăng bao gồm:
Hình 1.7.b Các hoạt động kiểm thử hiệu năng [4]
1.Xác định môi trường kiểm thử 2.Xác định các tiêu chí hiệu năng 3.Lập kế hoạch và thiết kế kiểm thử 4.Cấu hình môi trường kiểm thử 5.Cài đặt thiết kế kiểm thử 6.Thực hiện kiểm thử 7.Phân tích, báo cáo và kiểm thử lại
Trang 291.4.1 Xác định môi trường kiểm thử
Xác định môi trường kiểm thử vật lý và môi trường sản xuất cũng như cáccông cụ và nguồn lực sẵn có cho các nhóm kiểm thử Để thiết kế kiểm thử và lập kếhoạch hiệu quả cần có một sự hiểu biết thấu đáo về toàn bộ môi trường kiểm thửngay từ đầu Trong một số trường hợp, quá trình này phải được xem xét lại định kỳtrong suốt vòng đời của dự án
Môi trường trong đó ứng dụng được kiểm thử hiệu năng gồm công cụ kiểmthử, phần cứng, phần mềm, cấu hình mạng Yếu tố then chốt trong việc xác địnhmôi trường kiểm thử là hiểu được những điểm tương đồng và khác biệt giữa môitrường kiểm thử và môi trường sản xuất Một số yếu tố quan trọng cần xem xéttrong việc xác định môi trường kiểm thử là:
+ Phần cứng: Cấu hình, phần cứng máy (bộ xử lý, RAM…)
+ Mạng: Kiến trúc mạng và định vị người dùng cuối, cấu hình hệ thống tên miền.
+ Công cụ kiểm thử: -Giới hạn của công cụ sinh tải
-Tác động môi trường của công cụ giám sát+ Phần mềm: Những phần mềm khác cài và chạy trong môi trường chia sẻhoặc ảo
1.4.2.Xác định các tiêu chí hiệu năng
Xác định các đặc tính hiệu năng mà người dùng và các bên liên quan quantâm Các thông số đó là:
- Thời gian phản hồi: (tính bằng giây): Thời gian máy chủ thực hiện để đápứng yêu cầu của khách
- Thông lượng: Khả năng xử lý của máy chủ về các yêu cầu xử lý trên mộtđơn vị thời gian, các giao dịch được xử lý trên một đơn vị thời gian hoặc sốbyte trả lại cho người dùng trên một đơn vị thời gian
- Việc sử dụng tài nguyên trên máy chủ: Theo dõi hiệu suất của các nguồn tàinguyên quan trọng như: CPU, Memory (RAM), Disk, Network
1.4.3 Lập kế hoạch và thiết kế kiểm thử
Xác định các kịch bản chính, xác định các dữ liệu kiểm thử
Trang 30-Lập kế hoạch kiểm thử: Hiểu được mục đích và các biểu đồ chức năng
khác nhau của hệ thống, hiểu được mục tiêu kiểm thử hiệu năng của hệ thống,những yêu cầu hoặc mục tiêu hiệu năng cần phải được bắt nguồn dựa trên sự mongđợi của khách hàng
Kế hoạch kiểm thử hiệu năng bao gồm: mục tiêu kiểm thử hiệu năng, công
cụ kiểm thử hiệu năng sẽ được sử dụng, loại kiểm thử được tiến hành, các kịch bảncông việc bao gồm trong quá trình kiểm thử hiệu năng, các tiêu chuẩn được tiếnhành các kiểm thử, điều kiện vào/ra được tiến hành cho các kiểm thử cần phảiđược tạo ra bởi những kiểm thử viên và giao cho các bên liên quan
- Thiết kế kiểm thử: Thiết kế các trường hợp kiểm thử, các loại kiểm thử.
1.4.4 Cấu hình môi trường kiểm thử
Chuẩn bị môi trường kiểm thử, các công cụ, và các nguồn lực cần thiết để
thực hiện mỗi chiến lược kiểm thử
1.4.5 Cài đặt thiết kế kiểm thử
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áckiể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 đã đượcthu 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
Trang 31cá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ựachọn của họ như JMeter, OpenSTA Đối với tổ chức có ứng dụng hiệu năng quantrọ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, HPPerformance 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
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áckị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ịchduy 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ử
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
Trang 325 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ốngtrong 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 đếncá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ăngmá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íchnguyê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ểmthử, 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ủ webkhá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ấpdẫ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,
Trang 33số 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ônglượ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ệphtml 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ệctạ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 đốitượ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 choviệ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 cungcấ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ùychỉ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ốttrê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ínhnă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áctí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 trongJMeter 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êucầ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ênngoài Đối với việc sinh tải, JMeter cung cấp các tính năng để chạy thử nghiệm chobấ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áykhách trong quá trình kiểm thử Không có các tính năng được cung cấp để phântí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ệ
Trang 34thố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ểmtra 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ỏikiế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 chocá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átgiao 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ằngtay đố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ếtquả 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ệnhtrong 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ự độngtă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ôngqua 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ảnkiểm thử theo ý mình và hệ thống báo cáo kết quả kiểm thử không được linh độngnhư JMeter
Trang 351.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áttriể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ăngcầ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áctiê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ườngkiể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ớnrấ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à conngười trong mỗi doanh nghiệp Nhưng dù công cụ kiểm thử có tiến bộ và hiện đạibao 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 mongmuố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ìnhbà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
Trang 362.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áychủ 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ệună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ậphợ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 địnhworkload ảnh hưởng rất lớn tới kết quả việc nghiên cứu hiệu năng, xác địnhworkload 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 workloadthự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áchà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 workloadthự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ệună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
Trang 37thự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ộtkhoảng thời gian dài tới 32 giờ)
Thời gian
Số người dùng
Trang 38Hình 2.2 Workload lệch
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ềukiệ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
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ườidù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ườidù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ácnhau 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ồngché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
Thời gian
86420
Trang 39Hình 2.4 Workload đặc trưng thời gian 2.1.3.Các bước xác định workload
2.1.3.1.Thiết kế các trường hợp sử dụng Các trường hợp sử dụng giúp xác định
các hoạt động của Workload
Đối với một workload, số lượng các hoạt động phải được giữ ở mức nhỏ
(6-8 Không cần thiết phải mô phỏng tất cả các trường hợp sử dụng, thay vào đó tậptrung vào các trường hợp sử dụng mà có nhiều khả năng xảy ra
2.1.3.2 Xác định các thông số
Trong bước này, ta xác định những thông số cần đo Các thông số điển hìnhbao gồm thông lượng, thời gian phản hồi hoặc số lượng người dùng Tuy nhiên, tùythuộc vào workload, các số liệu khác như bộ vi xử lý hoặc việc sử dụng bộ nhớ…
+Thông lượng
Số đo thông lượng đo bao nhiêu giao dịch có thể được xử lý bởi phần mềmkiểm thử trong một đơn vị thời gian Số liệu thông lượng có thể được tính toán bằng
sử dụng một số phương pháp:
Đối với một workload đơn giản điều khiển tất cả các giao dịch, thông lượng (X),
có thể được tính bằng cách tính một số (N) của tất cả các giao dịch thực hiện trong mộtthời gian nhất định (T) như vậy X = N / T Đây là phương pháp đơn giản nhất
Nếu có nhiều workload kết hợp, một trung bình cộng của thông lượng củatất cả các workload có thể được sử dụng nếu các thông lượng của các tải khác nhau
có liên quan
+Thời gian phản hồi
Trong hầu hết các trường hợp, thước đo thông lượng không có ý nghĩa nếukhông có một yêu cầu hoặc số liệu thời gian phản hồi tương ứng
Số đo thời gian phản hồi thường được xác định theo trung bình (trung bình)
và 90 phần trăm Các yêu cầu về thời gian phản hồi có thể được hoàn thành sau khiworkload được xây dựng và mẫu chạy thực hiện
2.1.3.3 Thiết kế workload
Đây là bước quan trọng nhất trong xác định workload Sự liên quan của
Trang 40workload sẽ phụ thuộc chặt chẽ vào cách nó mô phỏng tải ứng dụng trong môitrường sản xuất như thế nào.
2.1.3.4 Xác định quy tắc mở rộng
Các workload phức tạp cần một cách thức mở rộng workload phụ thuộc phầncứng thực tế phát triển Thông thường mở rộng workload được thực hiện bằng cáchtăng hoặc giảm số người dùng mô phỏng Mặc dù điều này làm cho workload trênSUT thay đổi
2.1.3.5 Thiết kế bộ sinh workload
Bộ sinh workload thực hiện sinh tải và theo dõi số liệu hiệu năng khác nhaunhư thời gian phản hồi, thời gian suy nghĩ và thông lượng Một số công cụ có sẵn
để tự động sinh tải
Ngoài ra có thể xác định chính xác workload trên hệ thống trong nhữngkhoảng thời gian khác nhau bằng cách phân tích các tệp tin log của máy chủ webnhư máy chủ IIS hoặc Apache cung cấp các thông tin về hành vi của khách Việcphân tích có thể sử dụng rất nhiều công cụ Bảng 2.1 cung cấp một vài công cụ cóthể sử dụng:
Bảng 2.1.Bảng một số công cụ phân tích tệp tin log máy chủ web
1 Analog Analog http:/ / www an a l o g cx /d o w n l oad ht m l.
Latest Version : 6.0
OS Supported : Windows, Mac
Free (Open Source)
2 Webalizer Mrunix http:/ / www m r un i x net / we b a l i z e r /
Latest Version : 2.0.1-10
OS Supported : Solaris, Linux , Mac, OS/2, Unix
Free (Open Source)
3 Summary Summary.Net http:/ / www s u m m a r y n et/ do wn l o ad ht m l
Latest Version : 3.0.2
OS Supported : Windows, Macintosh OS X , Linux X86 , Free BSD
Commercial (30 days trail version)
4 WebTrends WebTrends
Corp
http : / / ww w webt r e nd s c om Latest Version : 8.0
OS Supported : Windows
Commercial (15 days trail version)
5 AWStats AWStats http:/ /a w s tat s s o u rc e f o r ge.net/ ? Free (Open