Trong bối cảnh Internet ngày càng chi phối sâu sắc tới các hoạt động sản xuất kinh doanh cũng như đời sống xã hội, xu hướng dung lượng phần cứng ngày càng tăng mạnh với giá thành rẻ đáp
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
Trang 3Mục lục
LỜI CẢM ƠN 3
LỜI CAM ĐOAN 4
DANH MỤC HÌNH VẼ, BẢNG BIỂU 5
Chương 1: Giới thiệu 6
Chương 2: Tổng quan về kiểm thử hiệu năng 10
2.1 Định nghĩa kiểm thử hiệu năng 10
2.2 Phân loại kiểm thử hiệu năng 11
2.3 Các thuật ngữ 14
Chương 3: Phương pháp kiểm thử hiệu năng và công cụ 16
3.1 Kiểm thử hiệu năng trong vòng đời phát triển phần mềm 16
3.2 Các dạng yêu cầu kiểm thử hiệu năng trong thực tế 20
3.3 Quy trình thực hiện kiểm thử hiệu năng 22
3.3.1 Lập kế hoạch và kiểm soát kiểm thử 23
3.3.2 Phân tích và thiết kế kiểm thử 24
3.3.3 Triển khai (Implementation) và thực thi (Execution) kiểm thử 26 3.3.4 Đánh giá các kết quả đầu ra và báo cáo 27
3.3.5 Các hoạt động kết thúc kiểm thử 27
3.4 Một số công cụ kiểm thử hiệu năng 28
Chương 4: Ứng dụng kiểm thử hiệu năng vào dự án của đơn vị 34
4.1 Giới thiệu về dự án 34
4.2 Kế hoạch tổng thể của dự án 35
4.3 Lập kế hoạch kiểm thử hiệu năng 38
4.4 Thiết kế kiểm thử hiệu năng 42
4.4.1 Thiết kế môi trường 42
4.4.2 Thiết kế các kịch bản kiểm thử 44
4.5 Triển khai và thực thi kiểm thử hiệu năng 47
4.5.1 Cài đặt môi trường, công cụ 47
4.5.2 Tạo các kịch bản kiểm thử bằng JMeter 48
4.5.3 Chạy các kịch bản 50
4.6 Đánh giá kết quả đầu ra và báo cáo 51
Trang 4KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 55
Trang 5LỜI CẢM ƠN
Trước tiên tôi xin gửi lời cảm ơn chân thành và sâu sắc đến thầy giáo, Tiến sĩ Phạm Ngọc Hùng – người đã hướng dẫn, khuyến khích và tạo điều kiện tốt nhất cho tôi thực hiện đề tài này Bằng niềm đam mê và kinh nghiệm tuyệt vời về kiểm thử, thầy luôn là người đồng hành và truyền cảm hứng cho tôi trong suốt quá trình thực hiện nghiên cứu này
Tôi xin gửi lời cảm ơn chân thành tới các thầy, cô giáo trong khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội đã tận tình đào tạo, trang bị cho tôi những kiến thức vô cùng quý giá trong suốt quá trình học tập, nghiên cứu tại trường
Đồng thời tôi xin cảm ơn tất cả những người thân yêu trong gia đình tôi cùng toàn thể bạn bè những người đã luôn giúp đỡ, động viên tôi những khi tôi gặp khó khăn, bế tắc trong nghiên cứu
Cuối cùng, tôi xin chân thành cảm ơn các đồng nghiệp của tôi tại Công ty Trách Nhiệm Hữu Hạn Phần Mềm FPT, đặc biệt các anh chị em trong đội kiểm thử, đã giúp đỡ, tạo điều kiện thuận lợi cho tôi học tập và nghiên cứu chương trình thạc sĩ tại Đại học Công nghệ, Đại học Quốc Gia Hà Nội
Trang 6LỜI CAM ĐOAN
Tôi xin cam đoan rằng luận văn thạc sĩ công nghệ thông tin “Kiểm thử hiệu năng và ứng dụng đảm bảo chất lượng cho các ứng dụng Web” là công trình nghiên cứu của riêng tôi, không sao chép lại của người khác Trong toàn bộ nội dung của luận văn, những điều đã được trình bày hoặc là của chính cá nhân tôi hoặc là được tổng hợp từ nhiều nguồn tài liệu Tất cả các nguồn tài liệu tham khảo đều có xuất
Trang 7DANH MỤC HÌNH VẼ, BẢNG BIỂU
Hình 3.1 Kiểm thử hiệu năng nằm trong các mức độ kiểm thử của hệ thống 16
Hình 3.2 Kiểm thử hiệu năng trong mô hình thác nước 17
Hình 3.3 Kiểm thử hiệu năng trong mô hình chữ V 19
Hình 3.4 Kiểm thử hiệu năng trong mô hình Agile – Scrum 20
Bảng 3.6 Tài liệu đầu vào và đầu ra của giai đoạn lập kế hoạch 23
Bảng 3.7 Tài liệu đầu vào và đầu ra của giai đoạn lập phân tích và thiết kế kiểm thử 25
Bảng 3.8 Tài liệu đầu vào và đầu ra của giai đoạn triển khai kiểm thử 26
Bảng 3.9 So sánh một số công cụ tính phí phổ biến 29
Bảng 3.10 So sánh một số công cụ mã nguồn mở phổ biến 31
Bảng 4.1 Tỉ lệ phân bổ thời gian giữa các công đoạn 35
Bảng 4.2 Tỉ lệ phân bổ thời gian giữa các công đoạn (tính theo ngày làm việc) 35
Hình 4.3 Chi tiết công việc trong từng giai đoạn 37
Bảng 4.4 Các thành viên tham gia vào dự án 38
Hình 4.5 Kế hoạch thời gian kiểm thử hiệu năng (Đơn vị tính: Ngày làm việc) 41
Hình 4.6 Tương tác giữa Maven, Jenkins và JMeter 44
Bảng 4.7 Các kịch bản kiểm thử 45
Hình 4.8 Maven sau khi cài đặt 47
Hình 4.9 JMeter sau khi cài đặt 47
Hình 4.10 Jenkins sau khi cài đặt 48
Hình 4.11 Cấu trúc thư mục dự án 48
Hình 4.12 Các kịch bản kiểm thử 49
Hình 4.13 Dữ liệu kiểm thử 50
Hình 4.14 Kết quả chạy với 10 người dùng đồng thời 50
Hình 4.15 Kết quả chạy với 80 người dùng đồng thời 50
Hình 4.16 Kết quả chạy với 100 người dùng đồng thời 51
Hình 4.17 Kết quả chạy với 100 người dùng đồng thời 51
Trang 8Chương 1: Giới thiệu
Kiểm thử hiệu năng (Performance test) là một phần rất quan trọng trong việc đảm bảo chất lượng phần mềm Đặc biệt đối với các ứng dụng Web, kiểm thử hiệu năng ảnh hưởng trực tiếp đến người sử dụng hệ thống cũng như các bên liên quan Chẳng hạn như, khách hàng truy cập một trang Web bán hàng trực tuyến của một công ty Sau một vài phút hoặc lâu hơn nữa, hệ thống mới tải xong ảnh sản phẩm mà họ cần tìm Việc này chắc hẳn sẽ ảnh hưởng đến thái độ của khách hàng đối với công ty đó Họ cảm thấy khó chịu, mất thời gian Những lần sau, họ sẽ đắn
đo hoặc có thể không bao giờ quay trở lại trang này nữa Điều này đồng nghĩa với việc công ty mất quan hệ khách hàng, mất doanh thu Ở mức độ nghiêm trọng hơn, khách hàng có thể mất tiền, thậm chí rất nhiều tiền do lỗi hiệu năng của hệ thống Dưới đây, có thể kể ra một số thảm họa về hiệu năng của ứng dụng Web đã từng xảy ra và mức độ thiệt hại mà nó gây ra
Trang Web của Nectar 1
Ngay khi ra mắt năm 2002, chương trình thẻ tri ân khách hàng của Nectar đã rất
nỗ lực quảng cáo trên truyền hình và tiếp thị trực tiếp qua thư điện tử tới trên mười triệu hộ gia đình, hướng mọi người tới dịch vụ mới ra mắt của họ Mặc dù, đã có phương tiện đăng kí qua đường điện thoại và thư điện tử trực tiếp, Nectar vẫn cố gắng tiết kiệm chi phí bằng cách cung cấp một phần thưởng khuyến khích mọi người đăng kí trực tuyến qua trang Web Trong khi Nectar đã chuẩn bị cho sự kiện này bằng cách tăng dung lượng máy chủ lên gấp sáu lần, thì tại thời điểm đỉnh điểm với mười nghìn lượt khách truy cập trong vòng một giờ đã đủ để trang Web bị chết trong vòng ba ngày Nectar đã dẫn ra độ phức tạp của quá trình đăng kí (bảo mật và
mã hóa) như là một nút thắt cổ chai [1]
Trang Web Bản đồ tội phạm của cảnh sát Anh 2
Trong một động thái nhằm tăng tính minh bạch trong thống kê tội phạm, Chính phủ Anh đưa ra một trang Web trong tháng hai năm 2011, cho phép các thành viên
1 Đường dẫn truy cập: http://www.nectar.com/
2 Đường dẫn truy cập: http://www.police.uk
Trang 9của công chúng có quyền truy cập vào thông tin về tỉ lệ tội phạm ở khu vực của họ thông qua các điểm đánh dấu trên bản đồ tương tác Điều này đã nhận được những tin tức chính thống, với những câu hỏi được đặt ra về độ chính xác và sự tác động của các báo cáo, ví dụ, ảnh hưởng đến tỉ lệ bảo hiểm hoặc giá nhà Các bản đồ tội phạm đã nhận được sự quan tâm rất lớn của công chúng Nó nhận được mười tám triệu hit một giờ trong ngày đầu tiên (Hit: là đơn vị dùng để đo lượng truy cập của trang Web, mỗi tập tin gửi đến máy chủ được tính là 1 hit Ví dụ, một trang Web có
20 hình ảnh mà người dùng có thể chọn để xem mỗi cái một lần, được tính là 20 hit) Điều này làm nó sập xuống trong vòng vài giờ theo kiểu rất công khai Dường như có lý khi một trang Web bị sập dưới mười tám triệu hit một giờ Rõ ràng là trang Web đơn giản là không thiết kế để có thể hoạt động được ở bất kì quy mô nào, mặc dù nó đã dùng máy chủ Amazon EC2 để tăng thêm dung lượng Như vậy bạn vẫn cần xây dựng một trang Web mà dung lượng của nó không cần đến 1000 lần máy chủ [2]
Trang Web bán vé Thế vận hội London năm 2012 3
Có quá nhiều bài viết về sự kiện này Tháng tư năm 2011, sau lượt bán vé đầu tiên kết thúc, 6.6 triệu vé đã được bán trực tuyến Vấn đề là vé không được bán ra lần lượt, không phải là người đến trước được phục vụ trước, mà nhiều người đợi đến phút cuối mới quyết định đặt mua Trang Web đã chậm như rùa bò vì quá tải
Họ đã phải chặn các cửa sổ để có thể tồn tại thêm vài giờ Vài tháng sau, trang bán
vé của Thế vận hội được mở trở lại, cho phép người ta mua và bán vé chính thức với nhau Nhưng nó vẫn không thể đối phó với nhu cầu, vẫn chậm Nhiều vấn đề xảy ra trong tháng mười hai và tháng một, với càng nhiều sự gián đoạn của trang Web bán vé, dẫn đến nhiều sự kiện đã bị bán giảm giá [3]
Thông qua các ví dụ trên, ta có thể thấy tầm quan trọng về hiệu năng của các ứng dụng Web, cũng như mức độ thiệt hại mà nó gây ra nếu như hệ thống không được kiểm thử đầy đủ trước khi đưa vào vận hành Việc cân bằng giữa công nghệ, thời gian và tiền bạc để đạt được hiệu suất cao nhất của hệ thống cũng là một chủ
3
Đường dẫn truy cập: http://www.tickets.london2012.com
Trang 10đề chính của Hội nghị thường niên O‟Reilly4, một trong những hội nghị uy tín bàn
về các vấn đề nóng trong lĩnh vực công nghệ thông tin diễn ra hàng năm, tháng ba năm 2014 tại San Francisco
Trong bối cảnh Internet ngày càng chi phối sâu sắc tới các hoạt động sản xuất kinh doanh cũng như đời sống xã hội, xu hướng dung lượng phần cứng ngày càng tăng mạnh với giá thành rẻ đáp ứng quy mô của ứng dụng, bài toán kiểm thử hiệu năng trở nên cấp thiết hơn bao giờ hết Trên thế giới, nhiều tác giả với nhiều công trình nghiên cứu đã đưa ra nhiều phương pháp tiếp cận và giải quyết bài toán kiểm thử hiệu năng cho các ứng dụng Web Các doanh nghiệp và cộng đồng yêu thích kiểm thử hiệu năng cũng ra mắt nhiều công cụ hỗ trợ kiểm thử hiệu năng hiệu quả loại ứng dụng này Tuy nhiên, đối với thị trường phần mềm non trẻ của Việt Nam, không phải lúc nào việc kiểm thử hiệu năng của các ứng dụng Web cũng được quan tâm một cách đúng mức Nó có thể bị bỏ qua hoặc không được thực hiện một cách đúng đắn, kỹ lưỡng trước khi triển khai sản phẩm Kết quả là, các ứng dụng thường
có độ tin cậy thấp và khả năng chịu tải kém Một số nguyên nhân có thể kể đến là: Một là, bản thân doanh nghiệp phát triển, doanh nghiệp đầu tư chưa ý thức được tầm quan trọng của kiểm thử hiệu năng; Hai là, chưa có phương pháp kiểm thử hiệu năng một cách đúng đắn; Cuối cùng là, chi phí kiểm thử tốn kém (chi phí mua công
cụ, đào tạo kiểm thử viên, thực hiện kiểm thử, v.v.) Kiểm thử hiệu năng vẫn là bài
toán khó Vì vậy, tôi quyết định chọn đề tài “Kiểm thử hiệu năng và ứng dụng
đảm bảo chất lượng cho các ứng dụng Web”
Đề tài này nhằm cung cấp cái nhìn tổng thể về kiểm thử hiệu năng, đưa ra phương pháp, công cụ cũng như cách thức giải quyết bài toán kiểm thử hiệu năng của các ứng dụng Web, trong điều kiện thực tế của doanh nghiệp phần mềm ở Việt Nam Đặc biệt, phương pháp sử dụng trong đề tài áp dụng cho mô hình phát triển phần mềm nhanh – Agile, một trong những mô hình phát triển phần mềm mới và hiệu quả hiện nay
Luận văn bao gồm bốn chương và một phần kết luận Chương 1 giới thiệu đề tài Chương này giúp người đọc hiểu bối cảnh của đề tài, lý do chọn đề tài, mục
4 Đường dẫn truy cập: http://fluentconf.com/
Trang 11đích của đề tài và cấu trúc luận văn Chương 2 trình bày tổng quan về kiểm thử hiệu năng Chương này mô tả các khái niệm, thuật ngữ và các phân loại cơ bản trong kiểm thử hiệu năng Chương 3 trình bày các phương pháp kiểm thử hiệu năng
và công cụ Một số cách tiếp cận bài toán kiểm thử hiện nay và các công cụ phổ biến được phân tích kĩ lưỡng ở chương này Chương 4 trình bày ứng dụng kiểm thử hiệu năng vào dự án của đơn vị Ở chương này, người đọc được tiếp cận với một bài toán kiểm thử hiệu năng trọn vẹn theo mô hình phát triển phần mềm Agile – Scrum thực tế trong một doanh nghiệp phần mềm - được cho là lớn nhất Việt Nam hiện nay Cuối cùng là phần kết luận Phần này đánh giá kết quả đạt được của luận văn, hướng mở rộng và tài liệu tham khảo
Trang 12Chương 2: Tổng quan về kiểm thử hiệu năng
Chương này đưa ra các khái niệm, thuật ngữ cơ bản của kiểm thử hiệu năng và một
số phân loại kiểm thử hiệu năng Việc hiểu đúng các khái niệm cũng như phân loại kiểm thử hiệu năng giúp các nhóm kiểm thử chọn được phương pháp kiểm thử hiệu năng tối ưu cho đơn vị mình
2.1 Định nghĩa kiểm thử hiệu năng
Kiểm thử hiệu năng được định nghĩa theo nhiều cách khác nhau
Theo [4], “Hiệu năng là mức độ mà một hệ thống hay thành phần thực hiện các chức năng xác định của nó trong các ràng buộc nhất định, như tốc độ, độ chính xác hay khả năng sử dụng bộ nhớ Kiểm thử hiệu năng là kiểm thử được tiến hành để đánh giá việc tuân thủ đúng của một hệ thống hoặc thành phần theo các yêu cầu hiệu năng xác định.”
Theo [5], Kiểm thử hiệu năng nói chung là một loại kiểm thử với với ý định là
để xác định khả năng phản hồi, thông lượng, độ tin cậy và/hoặc khả năng mở rộng của hệ thống dưới lượng tải công việc (workload) xác định Theo đó, các tác giả cũng cho rằng các hoạt động liên quan đến hiệu năng, như kiểm tra và chỉnh sửa, quan tâm đến việc đạt được thời gian phản hồi (response times), thông lượng (throughput) và các mức độ tối ưu hóa tài nguyên (resource-utilization) phù hợp với các mục tiêu hiệu năng đối với ứng dụng cần kiểm tra
Hai định nghĩa ở trên là hai định nghĩa chính thống, được đưa ra bởi các tổ chức
uy tín và được công nhận, sử dụng rộng rãi Ngoài ra, kiểm thử hiệu năng còn tồn tại nhiều cách hiểu khác nhau Mặc dù nó được mô tả theo các cách thức khác nhau, nhưng trong các định nghĩa, một số điểm chung của nó vẫn được làm nổi bật như: Nó là một loại kiểm thử phi chức năng của hệ thống (non-functional), do các bên liên quan đưa ra hoặc chính đội phát triển phần mềm có nhu cầu kiểm tra sản phẩm của mình, nhằm kiểm tra các đặc tính của ứng dụng như tốc độ, khả năng mở rộng, tính ổn định, trong một điều kiện nhất định (môi trường kiểm thử) Việc thực hiện kiểm thử hiệu năng thường tốn nhiều thời gian và cần phải được thực hiện
Trang 13thường xuyên Đặc biệt, để lấy được chính xác các thông số hiệu năng quan trọng,
nó thường được thực hiện bằng công cụ
2.2 Phân loại kiểm thử hiệu năng
Theo [5], kiểm thử hiệu năng là một hoạt động rộng và phức tạp, nó có thể thực hiện ở nhiều dạng dẫn đến nhiều rủi ro, và cung cấp một loạt các giá trị cho một tổ chức Việc quan trọng là hiểu được các loại kiểm thử hiệu năng khác nhau để giảm rủi ro, giảm thiểu chi phí và để biết khi nào áp dụng kiểm thử hiệu năng trong một
dự án kiểm thử hiệu năng xác định Để áp dụng các loại kiểm thử hiệu năng khác nhau, đội kiểm thử cần đánh giá được một số điểm chính như được trình bày dưới đây
Thứ nhất, các mục tiêu của việc kiểm thử hiệu năng phải được xác định rõ ràng Đối với hầu hết các ứng dụng Web, các mối quan tâm về hiệu năng thường được đặt ra như “Nó có đủ nhanh không?”, “Nó phục vụ được tất cả các khách hàng không?”, “Điều gì xảy ra nếu nó hoạt động sai?”, và “Tôi cần có kế hoạch gì khi tôi có thêm nhiều khách hàng nữa?” Ở mức độ thông thường, mọi người liên hệ việc “đủ nhanh” với kiểm thử hiệu năng, “đáp ứng mức chuẩn người dùng hiện tại/kỳ vọng” với kiểm thử tải, “một cái gì
đó chạy sai” (something going wrong) với kiểm thử áp lực, và “lập kế hoạch cho sự phát triển tương lai” với kiểm thử dung lượng
Thứ hai, ngữ cảnh kiểm thử hiệu năng, ví dụ, các tài nguyên liên quan, chi phí và các giá trị tiềm năng về mặt công sức kiểm thử cũng phải được đánh giá cụ thể Kiểm thử hiệu năng phụ thuộc rất lớn vào yếu tố môi trường như phần cứng, phần mềm, hệ thống mạng và kinh nghiệm của người thực hiện
Để lấy được các số liệu quan trọng, nó đòi hỏi phải thực hiện lặp lại trong một thời gian dài Do vậy, chi phí kiểm thử hiệu năng thường rất tốn kém
Từ việc xác định rõ mục tiêu, đội kiểm thử cần đánh giá chi tiết ngữ cảnh kiểm thử để cân đối giữa giá trị đạt được và chi phí tiêu tốn
Trang 14Theo [7], kiểm thử hiệu năng (Performance test) là một thuật ngữ chung Nó bao gồm các loại kiểm thử nhỏ hơn: kiểm thử tải (Load test), kiểm thử áp lực (Stress test)
Kiểm thử tải: Phân loại nhỏ của kiểm thử hiệu năng, tập trung vào xác định
hoặc kiểm tra các đặc tính hiệu năng của hệ thống hoặc ứng dụng cần kiểm thử khi chịu tải công việc và khối lượng tải cho trước trong các hoạt động của sản phẩm Kiểm thử tải để kiểm tra khả năng xử lý của ứng dụng ở các điều kiện tải bình thường hoặc điều kiện tải tối đa
Kiểm thử áp lực: Phân loại nhỏ của kiểm thử hiệu năng, tập trung xác định
hoặc kiểm tra các đặc tính hiệu năng của hệ thống hoặc ứng dụng cần kiểm thử trong những điều kiện vượt ra ngoài những điều kiện dự đoán trước trong các hoạt động của sản phẩm Kiểm thử áp lực cũng có thể bao gồm những kiểm thử tập trung vào xác định hoặc kiểm tra các đặc tính hiệu năng của hệ thống hay ứng dụng cần test khi chịu các điều kiện về áp lực, như bộ nhớ bị giới hạn, không gian ổ đĩa không đủ, lỗi máy chủ Những kiểm thử này được thiết kế để xác định dưới những điều kiện gì mà ứng dụng bị lỗi, lỗi như thế nào và những chỉ số gì có thể được kiểm soát để đưa ra cảnh báo về lỗi sắp xảy ra Kiểm thử áp lực để xác định hoặc kiểm tra hành vi của một ứng dụng khi đẩy nó vượt ra ngoài các điều kiện tải bình thường hoặc tối đa
Ngoài hai loại kiểm thử hiệu năng phổ biến gồm kiểm thử tải và kiểm thử áp lực, một số tác giả còn đưa ra nhiều loại nhỏ khác nhau:
Kiểm thử dung lượng (Capacity test): kiểm thử dung lượng bổ sung cho kiểm
thử tải bằng cách xác định điểm lỗi cuối cùng của máy chủ, trong khi kiểm thử tải theo dõi các kết quả ở các mức độ khác nhau của các mẫu lưu lượng và tải Kiểm thử dung lượng được thực hiện cùng với các kế hoạch về dung lượng, cái được sử dụng để lập kế hoạch cho sự tăng trưởng trong tương lai, như tăng số lượng người dùng cơ bản hoặc tăng khối lượng dữ liệu Ví dụ, để phù hợp với lượng tải trong tương lai, bạn cần biết có bao nhiêu tài nguyên cần thiết được thêm vào để hỗ trợ các mức độ sử dụng trong tương lai như dung lượng bộ vi xử lý, khả năng sử dụng
bộ nhớ, dung lượng ổ đĩa hoặc băng thông mạng Kiểm thử dung lượng giúp bạn
Trang 15xác định được một chiến lược mở rộng quy mô để xác định nên mở rộng theo chiều dọc hoặc chiều ngang (scale up hoặc scale out) [5]
Kiểm thử sức bền (Endurance test): Kiểm thử sức bền là một loại kiểm thử
hiệu năng tập trung vào xác định hoặc kiểm tra các đặc tính hiệu năng của ứng dụng khi chịu các mô phỏng tải làm việc hoặc khối lượng tải cho trước trong một khoảng thời gian dài Kiểm thử sức chịu đựng là một tập con của kiểm thử tải [5]
Kiểm thử tăng đột ngột (Spike test): Kiểm thử tăng đột ngột là một loại kiểm
thử tập trung vào xác định hoặc kiểm tra các đặc tính hiệu năng của sản phẩm cần kiểm thử khi chịu các mô phỏng tải làm việc và khối lượng tải tăng liên tục, vượt qua các hoạt động định trước trong một khoảng thời gian ngắn Kiểm thử tăng đột ngột là một tập con của kiểm thử áp lực [5]
Kiểm thử mức cơ sở (Baseline test): Việc kiểm thử này thiết lập một điểm so
sánh cho thử nghiệm chạy, đặc trưng cho việc đo đạc thời gian phản hồi của giao dịch (transaction) Kiểm thử này thường được thực hiện trong một giao dịch đơn lẻ cũng như một người dùng ảo đơn lẻ trong một khoảng thời gian cố định hoặc một
số lượng lặp các giao dịch cố định Việc này nên được thực hiện mà không có bất
kì gi hoạt động nào khác trong hệ thống nhằm cung cấp một số đo trong “trường hợp tốt nhất” Giá trị thu được có thể được sử dụng để xác định lượng suy giảm hiệu suất xảy ra trong phản hồi để tăng số lượng người dùng hoặc thông lượng [7] Việc kiểm thử này sẽ giúp phát hiện vấn đề và cô lập nó trong một kịch bản Chúng ta sẽ không mất thời gian lãng phí để xây dựng và chuẩn bị một kiểm thử tải đầy đủ với nhiều kịch bản và tốn nhiều thời gian để cô lập nguyên nhân gây ra Mục đích của nó là để giải quyết các vấn đề sớm và có một kiểm thử chạy rõ ràng (clear run) khi kiểm thử tải đầy đủ đầu tiên được thực hiện Nó làm giảm thất bại trong việc tìm nguyên nhân gây ra vấn đề hoặc nút thắt cổ chai so với việc giám sát nhiều người dùng và giao dịch ở cùng một thời điểm [8]
Kiểm thử dài (Soak test): Một kiểm thử dài là một kiểm thử tải chạy trong
khoảng thời gian dài Những rò rỉ của bộ nhớ có lẽ là vấn đề được phát hiện phổ biến nhất trong suốt quá trình kiểm thử dài, nhưng việc mất kết nối cũng được phát hiện và việc tăng cơ sở dữ liệu cũng được kiểm soát Những người liên quan sẽ
Trang 16tham gia vào lập kế hoạch kiểm thử dài và hỏi họ muốn kiểm soát những gì trong lĩnh vực cụ thể của họ Thời gian và các vấn đề cần thiết khác như dữ liệu kiểm thử cũng là một số vấn đề chính cần giải quyết khi lập kế hoạch và thực hiện một kiểm thử dài đúng đắn Kiểm thử nên chạy trong thời gian dài nhất có thể hoặc đến khi xác định được xu hướng cụ thể qua một số giám sát Quá trình kiểm thử dài có lẽ
đã phát hiện ra nhiều nhất các lỗi nghiêm trọng [8]
Kiểm thử khối lượng (Volume test): Kiểm thử khối lượng đề cập đến kích cỡ
hay cụ thể hơn là các kích thước của tập tin và cơ sở dữ liệu Kiểm thử này thường không có yêu cầu, nhưng quan trọng, phụ thuộc vào loại ứng dụng được kiểm thử Kích cỡ của cơ sở dữ liệu ảnh hưởng lớn đến hiệu năng và nó nên được đưa ra như một rủi ro khi kiểm thử hiệu năng được thực hiện đối với cơ sở một cơ sở dữ liệu nhỏ so sánh với kích thước thật trên môi trường vận hành sản phẩm Với kiểm thử khối lượng, tải không đòi hỏi số lượng người dùng cao mà việc lập kế hoạch cẩn thận về cách thực hiện test như thế nào mới là cần thiết [8]
2.3 Các thuật ngữ
Để tìm hiểu kiểm thử hiệu năng, các thuật ngữ cơ bản cần phải được hiểu rõ Một số thuật ngữ chính được trình bày như dưới dây
Dung lượng (capacity): Dung lượng của hệ thống là tổng các tải làm việc nó
xử lý mà không gây xung đột với tiêu chí chính chấp nhận về hiệu năng cho trước [5]
Thời gian nghĩ (Think time): Là thời gian thể hiện độ trễ hoặc tạm dừng mà
một người dùng nào đó thực hiện trong khi tương tác với một ứng dụng [7]
Tải công việc (Work load): Tải công việc là một tác nhân kích thích được sử
dụng cho một hệ thống, ứng dụng hoặc thành phần mô phỏng một mẫu sử dụng, liên quan đến tính đồng thời và/hoặc dữ liệu nhập Tải làm việc bao gồm tổng số lượng người dùng, người dùng đồng thời, khối lượng dữ liệu và khối lượng giao dịch đi kèm với giao dịch Đối với mô hình hiệu năng, bạn kết hợp một tải công việc với một kịch bản riêng [5]
Trang 17Thời gian phản hồi (Response time): Là việc đo đạc một ứng dụng hoặc hệ
thống con đáp ứng như thế nào đối với một yêu cầu từ máy khách (client) [5]
Thông lượng (Throughput): Là số lượng đơn vị công việc được xử lí trong
một đơn vị thời gian Ví dụ, số yêu cầu trên giây, số cuộc gọi trong một ngày, số hit trong một giây, v.v [5]
Người dùng đồng thời (concurrent user): Là người sử dụng hệ thống ở cùng
một thời điểm
Trang 18Chương 3: Phương pháp kiểm thử hiệu năng và công cụ
Sau khi hiểu các khái niệm cơ bản cũng như một số loại kiểm thử hiệu năng ở chương 2, chương này sẽ cung cấp phương pháp tiếp cận và giải quyết bài toán kiếm thử hiệu năng và phân tích một số công cụ kiểm thử hiệu năng phổ biến trên thị trường
3.1 Kiểm thử hiệu năng trong vòng đời phát triển phần
mềm
Xem xét ở mức độ kiểm thử, theo [6], nếu chia kiểm thử thành các cấp độ: Kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử cài đặt/triển khai, kiểm thử chấp nhận, thì kiểm thử hiệu năng bắt đầu được thực thi từ giai đoạn kiểm thử tích hợp Hình 3.1 mô tả giai đoạn mà kiểm thử hiệu năng được thực hiện Dễ thấy, kiểm thử hiệu năng là một phần của kiểm thử tích hợp Thông thường, kiểm thử hiệu năng được tiến hành ngay khi tích hợp các thành phần phần mềm Ở mức
độ này, các thành phần của hệ thống đủ nhỏ để tiến hành kiểm thử Các thông số và lỗi hiệu năng được phát hiện sớm, dẫn đến việc phân tích vấn đề và sửa lỗi được dễ dàng
Kiểm thử hiệu năng
Hình 3.1 Kiểm thử hiệu năng nằm trong các mức độ kiểm thử của hệ thống
Xem xét ở cấp độ cao hơn, trong vòng đời phát triển phần mềm, việc tiến hành kiểm thử hiệu năng phụ thuộc vào mô hình phát triển phần mềm được định nghĩa ở
Trang 19giai đoạn đầu của dự án Mỗi mô hình sẽ áp dụng kiểm thử hiệu năng theo một cách riêng biệt và phù hợp Dưới đây, kiểm thử hiệu năng được áp dụng cho ba mô hình phát triển phần mềm nổi tiếng là mô hình thác nước truyền thống, mô hình phát triển hình chữ V và mô hình phát triển nhanh – Agile –Scrum Những phân tích này
sẽ giúp đội kiểm thử dự đoán được những thuận lợi và khó khăn, đồng thời nhanh chóng tìm ra những giải pháp tốt nhất giải quyết những vấn đề gặp phải
Với dự án áp dụng mô hình thác nước truyền thống: Các bước của hoạt động
kiểm thử hiệu năng được tiến hành trọn vẹn ở giai đoạn kiểm thử Hình 3.2 thể hiện các hoạt động kiểm thử hiệu năng được thực hiện trong pha kiểm thử của mô hình thác nước Mũi tên đi xuống thể hiện thứ tự hoàn thành của từng pha Ưu nhược điểm của việc kiểm thử này cũng tương tự như ưu nhược điểm của mô hình truyền thống Kiểm thử hiệu năng được gói gọn trong một pha Nên quá trình kiểm thử này dễ dàng được phân công, phân bổ chi phí và kiểm soát Tuy nhiên, nhược điểm của việc áp dụng kiểm thử hiệu năng trong mô hình này cũng khá lớn Các giai đoạn phát triển được tiến hành tuần tự, xong giai đoạn này mới đến giai đoạn tiếp theo Trong trường hợp lý tưởng, các yêu cầu kiểm thử hiệu năng đúng đắn và rõ ràng ngay từ đầu Một khi quá trình kiểm thử phát hiện ra lỗi ở pha kiểm thử, đội phát triển lại tiến hành phân tích ngược lại pha lập trình, thiết kế và phân tích yêu cầu để tìm ra vấn đề Lỗi càng được tìm ra muộn, thì chi phí sửa lỗi càng cao Trong một trường hợp khác – trường hợp phổ biến, khi phân tích yêu cầu về hiệu năng ở giai đoạn kiểm thử, đội kiểm thử phát hiện ra những yêu cầu chưa phù hợp
và quyết định thay đổi Đội phát triển phải phân tích yêu cầu lại, thiết kế lại, và lập trình lại Vậy, thời gian dự án kéo dài, khả năng thất bại cao
Bước 1, Bước 2,
… Bước n
Hình 3.2 Kiểm thử hiệu năng trong mô hình thác nước
Trang 20Với dự án áp dụng mô hình chữ V (V-Model): Các bước kiểm thử hiệu năng
được tiến hành song song với các giai đoạn của dự án Hình 3.3 minh họa các bước của kiểm thử hiệu năng được thực hiện trong mô hình phát triển phần mềm hình chữ V Hướng mũi tên thể hiện các hoạt động theo trình tự thời gian từ trái sang phải Mỗi giai đoạn phát triển ở nửa chữ V bên trái tương ứng với một số hoạt động của các mức độ kiểm thử ở nửa chữ V bên phải và cột các hoạt động kiểm thử hiệu năng Cụ thể là, ngay ở giai đoạn phân tích yêu cầu, kiểm thử viên được tham gia phân tích và đưa ra các tiêu chí đầu ra chấp nhận của kiểm thử chấp nhận, trong đó, các tiêu chí chấp nhận của kiểm thử hiệu năng được xác định Ở giai đoạn này, đối với kiểm thử chức năng, tài liệu liên quan đến các ca kiểm thử chấp nhận được tạo
ra, đối với kiểm thử hiệu năng, một bản kế hoạch chi tiết được hoàn thành Tiếp theo, ở giai đoạn thiết kế kiến trúc, đội phát triển sẽ thiết kế tổng quát cấu trúc các thành phần hệ thống Tương ứng với hoạt động kiểm thử chức năng, các kiểm thử viên sẽ phân tích và tạo ra tài liệu về các ca kiểm thử mức hệ thống Hoạt động kiểm thử hiệu năng sẽ là phân tích, thiết kế tổng quát các kịch bản kiểm thử, thiết
kế môi trường Ở giai đoạn thiết kế chi tiết, các thiết kế kiểm thử hiệu năng sẽ được triển khai chi tiết thành các ca kiểm thử Đội kiểm thử sẽ cài đặt công cụ, môi trường để chuyển các ca kiểm thử dạng ngôn ngữ tự nhiên sang các kịch bản của công cụ Sau đó, các kịch bản được chạy, thu thập kết quả và phân tích đánh giá Như vậy, các hoạt động kiểm thử hiệu năng được thực hiện song song với các hoạt động kiểm thử khác Các tài liệu tạo ra tương ứng với quá trình phát triển dự án Điều này giúp cho đội kiểm thử phát hiện lỗi sớm, làm cho chi phí điều tra lỗi và sửa lỗi giảm xuống Tuy nhiên, dễ dàng nhận thấy các hoạt động kiểm thử hiệu năng được thực hiện đan xen với các hoạt động kiểm thử chức năng trong các pha của dự án Các tài liệu được tạo ra cho từng giai đoạn Đây chính là những khó khăn khi áp dụng kiểm thử hiệu năng cho mô hình này Việc quản lý, phân công công việc và kiểm soát các hoạt động trở nên phức tạp
Trang 21Phân tích yêu cầu
Thiết kế kiến trúc
Thiết kế chi tiết
Lập trình & Kiểm thử đơn vị
Thực hiện kiểm thử hiệu năng
Bước 1
Bước 2
Kiểm thử tích hợp Kiểm thử hệ thống
Kiểm thử chấp nhận
Bước n
Hình 3.3 Kiểm thử hiệu năng trong mô hình chữ V
Với dự án áp dụng mô hình phát triển nhanh – Agile-Scrum: Có sự khác biệt
trong việc ứng dụng kiểm thử hiệu năng vào mô hình phát triển phần mềm nhanh – Agile-Scrum Trong mô hình Agile - Scrum, dự án được chia thành các giai đoạn nhỏ (gọi là Sprint), yêu cầu của người dùng được chia thành các nhiệm vụ nhỏ, thực hiện một nghiệp vụ tương đối độc lập trong hệ thống (gọi là các User Story) Mỗi Sprint kéo dài khoảng 2 tuần và thực hiện một hoặc vài User Story Mỗi Sprint hoàn thành bao gồm phần hệ thống được phát triển trong Sprint đó cộng với phần được phát triển trong các Sprint trước đó Ứng dụng được tích hợp các phần mới liên tục qua các Sprint Việc kiểm thử hiệu năng trong mô hình này đòi hỏi phải phù hợp
Thuận lợi của việc áp dụng kiểm thử hiệu năng trong mô hình này là các yêu cầu được chia nhỏ, thời gian ngắn dễ quản lý và và kiểm soát thực hiện Sau mỗi Sprint, đội phát triển sẽ bàn giao phần hoàn thiện của Sprint đó và các tài liệu liên quan cho khách hàng của họ Điều này giúp cho tương tác giữa khách hàng và đội phát triển tăng lên Khách hàng phản hồi sớm đồng nghĩa với việc các yêu cầu được thay đổi và cập nhật nhanh, đáp ứng sự hài lòng của khách hàng Khó khăn trong
mô hình này là khi tích hợp các Sprint đã hoàn thiện vào với nhau Lỗi gặp phải lúc này thường tốn thời gian tìm và sửa Do vậy các đội phát triển đã chọn phương án tích hợp dần, tích hợp liên tục từng phần ngay khi Sprint được hoàn thiện Mặc dù vậy, kiểm thử hiệu năng vẫn gặp những khó khăn: các thông số hiệu năng đã đạt yêu cầu ở Sprint trước, nhưng khi tích hợp với phần hệ thống của Sprint sau, nó lại
Trang 22không thỏa mãn yêu cầu khách hàng nữa Nếu đội kiểm thử không có phương pháp tốt, họ rất dễ phải đập đi làm lại Và, càng ở các Sprint cuối, khi hệ thống càng hoàn thiện, các vấn đề liên quan đến hiệu năng càng phát sinh Theo minh họa ở Hình 3.4, để đạt được hiệu quả của việc kiểm thử hiệu năng, việc kiểm thử ở Sprint
2 phải bao gồm phần mới ở Sprint 2 mà không ảnh hưởng đến phần đã kiểm tra ở Sprint 1 Do vậy, cách tốt nhất là thực hiện lại các kiểm thử đã chạy ở Sprint 1, vừa chạy song song với cái mới ở Sprint 2
Phân tích
yêu cầu Thiết kế Lập trình Kiểm thử
Phân tích yêu cầu
Thiết
Bước 1,
Bước 2,
(v.v.)
Bước 1, Bước 2, (v.v.)
Bước 1, Bước 2, (v.v.)
Hình 3.4 Kiểm thử hiệu năng trong mô hình Agile – Scrum
3.2 Các dạng yêu cầu kiểm thử hiệu năng trong thực tế
Kiểm thử hiệu năng là một bài toán đặc thù Về lý thuyết, tất cả các ứng dụng Web trước khi được đưa vào vận hành đều phải được kiểm thử đầy đủ, trong đó có kiểm thử hiệu năng Tuy nhiên, không phải ứng dụng nào hay đơn vị sản xuất phần mềm nào cũng thực hiện một bài toán kiểm thử như nhau Các bên liên quan luôn phải cân đối giữa công nghệ, thời gian và chi phí Do đó, các bài toán kiểm thử hiệu năng trên thực tế cũng có nhiều màu sắc đa dạng khác nhau
Qua khảo sát các dự án có yêu cầu về kiểm thử hiệu năng tại nhiều Công ty phần mềm lớn tại Việt Nam, nhiều dạng yêu cầu về bài toán kiểm thử hiệu năng được ghi nhận trên thực tế Nếu theo thời gian phát sinh yêu cầu kiểm thử hiệu năng, các bài toán được chia làm hai dạng: dạng có yêu cầu rõ ràng từ đầu và dạng phát sinh
Dạng 1 - Loại bài toán có yêu cầu rõ ràng từ đầu: Thường gặp đối với các hệ
thống lớn như trang Web của các hệ thống ngân hàng, các trang nhận gửi hàng đa quốc gia, các sàn giao dịch chứng khoán, v.v Đối tác nắm rõ lưu lượng người dùng
Trang 23cuối truy cập trang Web của mình Họ có yêu cầu chi tiết về kiểm thử hiệu năng đối với đội phát triển ngay từ khi bắt đầu dự án Khi hệ thống được đưa vào vận hành,
họ có các giai đoạn bảo trì hoặc nâng cấp thêm Song song với các giai đoạn này,
họ cũng cập nhật thêm các yêu cầu về kiểm thử hiệu năng Với loại này, các bước thực hiện kiểm thử sẽ được tiến hành như ở mục 3.3
Dạng 2 - Loại bài toán phát sinh: Loại này thường gặp đối với các dự án nhỏ
hoặc các dự án mà ngay từ đầu các bên liên quan như đối tác và đội phát triển phần mềm không xác định rõ được các yêu cầu về hiệu năng Sau đó, trong giai đoạn phát triển, tích hợp, kiểm thử, v.v thậm chí cả khi vận hành, hệ thống gặp vấn đề
về hiệu suất (tải chậm, treo, v.v.) Lúc này, yêu cầu về kiểm thử hiệu năng mới phát sinh Với bài toán này, việc tiến hành thực hiện kiểm thử hiệu năng trở nên khó khăn hơn Đội phát triển phải dựa vào giai đoạn phát sinh yêu cầu kiểm thử để đánh giá được hệ thống trong các điều kiện ràng buộc (tốc độ mạng, dung lượng phần cứng, lưu lượng truy cập, v.v.) Từ đó, định mức các thông số hiệu năng của hệ thống và thực hiện các bước kiểm thử như trình bày ở mục 3.3
Sự phân chia bên trên chỉ là tương đối Ngay cả đối với bài toán đã có yêu cầu kiểm thử hiệu năng rõ ràng từ đầu, thì trong các giai đoạn phát triển sau, các yêu cầu kiểm thử hiệu năng vẫn phát sinh
Đặc thù của yêu cầu kiểm thử hiệu năng thường rất chi tiết, cụ thể Tuy nhiên, trong thực tế, bên đưa yêu cầu kiểm thử hiệu năng thường không mô tả đầy đủ, chi tiết yêu cầu của họ được Thậm chí việc xác định đúng, rõ yêu cầu phải được tham gia thảo luận, đánh giá của nhiều bên liên quan Đặc biệt với đội tham gia thực hiện kiểm thử hiệu năng Do vậy, việc hiểu đúng ngữ cảnh xuất phát yêu cầu kiểm thử hiệu năng như trên giúp đội phát triển xác định nhanh chóng và rõ ràng các yêu cầu
về đặc tính hiệu năng của hệ thống
Với bài toán dạng 1, khi phân tích yêu cầu, đội phát triển phải dựa vào điều kiện thực tế khi vận hành sản phẩm để cụ thể hóa các yêu cầu Chẳng hạn, công ty chứng khoán A muốn xây dựng một trang Web giống như một sàn giao dịch trực tuyến Hiện tại công ty họ có 15000 khách hàng Khi mô tả yêu cầu về hiệu năng của mình, họ nói muốn trang Web hoạt động bình thường với 15000 tài khoản truy
Trang 24cập cùng một lúc Rõ ràng, với yêu cầu này, đội phát triển phải khảo sát được thực trạng hạ tầng công nghệ thông tin của công ty A như máy chủ, cơ sở dữ liệu, hệ thống mạng, v.v Từ đó, đưa ra các yêu cầu kiểm thử hiệu năng chính xác nhất Với dạng bài toán thứ hai, đội phát triển phải khoanh vùng được vấn đề, tìm ra nguyên nhân có khả năng ảnh hưởng đến hiệu năng của trang Web, sau đó đưa ra các yêu cầu kiểm thử hiệu năng chi tiết
3.3 Quy trình thực hiện kiểm thử hiệu năng
Kiểm thử hiệu năng là một loại kiểm thử phi chức năng Các yêu cầu thường rất
cụ thể Quy trình thực hiện kiểm thử hiệu năng cũng tuân theo quy trình kiểm thử nói chung Dựa vào quy trình kiểm thử cơ bản của [9], chương 1, mục 1.4, ta có thể
áp dụng cho bài toán kiểm thử hiệu năng, thực hiện kiểm thử hiệu năng gồm các hoạt động như sau:
Lập kế hoạch và kiểm soát kiểm thử
Phân tích và thiết kế kiểm thử
Triển khai và thực thi kiểm thử
Đánh giá các kết quả đầu ra và báo cáo
Các hoạt động kết thúc kiểm thử
Hình 3.5 mô tả trình tự các hoạt động trong kiểm thử hiệu năng Trong đó, hoạt động kiểm soát và điều chỉnh kiểm thử nằm trong hoạt động lập kế hoạch nhưng được kéo dài từ lúc bắt đầu đến khi kết thúc kiểm thử hiệu năng Điều này cho thấy, việc lập kế hoạch luôn phải gắn liền với việc kiểm soát các hoạt động Trong quá trình thực hiện kiểm thử hiệu năng, các vấn đề phát sinh sẽ được xem xét, đánh giá
và điều chỉnh cho phù hợp
Lập kế hoạch Phân tích và thiết kế Triển khai và thực thi quả và báo cáoĐánh giá kết Kết thúc
Kiểm soát và điều chỉnh
Hình 3.5 Các hoạt động kiểm thử hiệu năng
Trang 253.3.1 Lập kế hoạch và kiểm soát kiểm thử
Trong giai đoạn này, chúng ta phải đảm bảo chúng ta hiểu được mục đích của việc kiểm thử hiệu năng, mong muốn của khách hàng và các bên liên quan cũng như dự đoán các rủi ro của quá trình thực hiện kiểm thử
Lập kế hoạch kiểm thử :
Tài liệu đầu vào và đầu ra của giai đoạn này được thể hiện trong bảng 3.6
Bảng 3.6 Tài liệu đầu vào và đầu ra của giai đoạn lập kế hoạch
Tài liệu đầu vào Tài liệu đầu ra
Bản đặc tả yêu cầu dự án
Bản kế hoạch tổng thể của dự án
Bản kế hoạch kiểm thử hiệu năng
Dựa vào bản đặc tả yêu cầu của dự án, trong đó có đặc tả yêu cầu phi chức năng – yêu cầu về kiểm thử hiệu năng và bản kế hoạch tổng thể của dự án, đội kiểm thử
sẽ tham gia vào lập kế hoạch kiểm thử hiệu năng Bản kế hoạch này sau đó sẽ được xem xét đánh giá và đồng thuận của các bên liên quan Các hoạt động bao gồm:
Xác định phạm vi, rủi ro và mục tiêu của việc kiểm thử hiệu năng Chẳng hạn như, kiểm thử hiệu năng toàn bộ trang Web hay một phần nào đó của trang, thời gian cho kiểm thử hiệu năng là bao lâu, các rủi ro là gì và mục tiêu của việc kiểm thử hiệu năng liên quan đến yêu cầu khách hàng, chất lượng của trang Web, v.v
Xác định các phương pháp kiểm thử Việc xác định phương pháp kiểm thử hiệu năng nhằm xác định xem việc kiểm thử hiệu năng được tiến hành như thế nào Nó bao gồm xác định loại kiểm thử hiệu năng sẽ được sử dụng (Kiểm thử áp lực, kiểm thử tải, v.v.), công cụ sử dụng (công cụ mã nguồn
mở hay công cụ tính phí), v.v
Xác định các tài nguyên kiểm thử (con người, môi trường, thời gian, v.v.) Ở giai đoạn lập kế hoạch, việc xác định các nguồn lực cho kiểm thử hiệu năng rất quan trọng Tùy vào mục tiêu của dự án, mục tiêu và phương pháp kiểm
Trang 26thử mà ta xác định được thời gian kiểm thử hiệu năng là bao lâu, ai sẽ là người tham gia vào việc kiểm thử, các yêu cầu về môi trường kiểm thử, yêu cầu về phần cứng, phần mềm, công cụ, dữ liệu kiểm thử, v.v cũng được định nghĩa rõ ràng
Lập lịch cho các công việc Lập kế hoạch cho các hoạt động kiểm thử và theo dõi chúng, đảm bảo mỗi nhiệm vụ được hoàn thành đúng hạn
Xác định các tiêu chí đầu ra Chúng ta không có đủ thời gian, sức lực và tiền bạc để kiểm thử toàn bộ các thành phần của trang Web trong tất cả các trường hợp Do vậy, chúng ta cần xác định các tiêu chí đầu ra cụ thể Các tiêu chí này sẽ được đồng thuận của các bên liên quan Các tiêu chí để xác định khi nào việc kiểm thử hiệu năng được kết thúc Nó được thể hiện ở các
số liệu: tỉ lệ lỗi trong một yêu cầu gửi đi (request), thời gian phản hồi, thông lượng, số người dùng truy cập tối đa trong một giây, phần trăm sử dụng bộ nhớ, v.v
Kiểm soát các hoạt động kiểm thử :
Song song với việc lập kế hoạch và thực hiện kế hoạch là việc kiểm soát và theo dõi các hoạt động kiểm thử hiệu năng Việc kiểm thử hiệu năng chịu áp lực rất lớn
về mặt thời gian, môi trường, công cụ Do vậy, việc lập kế hoạch luôn đi đôi với việc kiểm soát tốt các kết quả của từng hoạt động để có các quyết định điều chỉnh phù hợp, giảm thiểu rủi ro Trong thực tế, đội kiểm thử luôn dựa vào các số liệu thống kê theo từng giai đoạn để đánh giá giữa chi phí tiêu tốn và kết quả thu được
để điều chỉnh hợp lý
3.3.2 Phân tích và thiết kế kiểm thử
Từ bản kế hoạch kiểm thử, chúng ta tiến hành cụ thể hóa phương pháp kiểm thử hiệu năng bằng cách phân tích và thiết kế các kiểm thử Bảng 3.7 thể hiện các tài liệu cần cho quá trình phân tích, thiết kế kiểm thử hiệu năng và tài liệu thu được khi kết thúc quá trình này
Trang 27Bảng 3.7 Tài liệu đầu vào và đầu ra của giai đoạn lập phân tích và thiết kế
kiểm thử Tài liệu đầu vào Tài liệu đầu ra
Bản kế hoạch kiểm thử hiệu năng
Bản yêu cầu dự án
Bản thiết kế kiến trúc, thiết kế chi tiết
của hệ thống, giao diện
Bản đặc tả thiết kế kiểm thử hiệu năng
Các công việc của hoạt động này :
Xem xét và phân tích các tài liệu cơ bản của dự án phục vụ cho việc thiết kế kiểm thử như bản kế hoạch kiểm thử hiệu năng, tài liệu yêu cầu dự án, bản thiết kế kiến trúc, thiết kế chi tiết của hệ thống, các giao diện, bản đánh giá rủi ro, v.v
Xác định các điều kiện kiểm thử dựa trên các kết quả phân tích ở trên Các điều kiện kiểm thử ở đây là tất cả những gì mà việc kiểm thử hiệu năng quan tâm đến như các yêu cầu gửi đến máy chủ trong một luồng nghiệp vụ của trang Web, các loại dữ liệu cần cho các yêu cầu này
Thiết kế kiểm thử Dựa vào phương pháp kiểm thử đã xác định, chúng ta thiết kế các kịch bản kiểm thử bằng ngôn ngữ tự nhiên, thiết kế các ca kiểm thử chúng ta cần thực hiện
Đánh giá khả năng kiểm thử hiệu năng phù hợp với hệ thống và yêu cầu khách hàng Sau khi thiết kế kiểm thử, chúng ta cần đánh giá các thiết kế đã bao phủ đầy đủ yêu cầu kiểm thử hiệu năng của dự án hay chưa Việc kiểm thử hiệu năng của trang Web phụ thuộc và các cấu hình phần cứng, hệ điều hành, trình duyệt, các kết nối mạng, tường lửa, v.v mà chúng ta không thể xác định hoặc tạo lại được
Thiết kế môi trường kiểm thử Việc kiểm thử hiệu năng trang Web mô phỏng người dùng truy cập vào phần nào đó của trang Với lượng người
Trang 28dùng lớn, ví dụ 100 người dùng, chúng ta không tạo một môi trường với
100 máy tính và 100 nhân viên cùng thực hiện truy cập Chúng ta sẽ dùng công cụ để mô phỏng thực hiện, gửi đi các mẫu giống nhau truy cập vào trang Web Việc thiết kế môi trường kiểm thử giúp đội kiểm thử xác định công cụ hoặc bộ công cụ được sử dụng Trong kiểm thử hiệu năng, việc thiết
kế môi trường kiểm thử rất quan trọng Nó đòi hỏi phù hợp yêu cầu dự án cũng như cân bằng giữa thời gian, chi phí và mục tiêu kiểm thử
3.3.3 Triển khai (Implementation) và thực thi (Execution) kiểm
thử
Dựa vào các thiết kế ở mục 3.3.2, chúng ta triển khai các kiểm thử hiệu năng Bảng 3.8 mô tả các tài liệu đầu vào và kết quả đầu ra cho hoạt động này
Bảng 3.8 Tài liệu đầu vào và đầu ra của giai đoạn triển khai kiểm thử
Tài liệu đầu vào Tài liệu đầu ra
Bản đặc tả thiết kế kiểm thử hiệu năng
Các báo cáo thu được
Theo đó, các công việc trong giai đoạn triển khai gồm :
Thiết lập môi trường kiểm thử kiểm thử hiệu năng: Các công cụ, phần cứng, phần mềm được sử dụng sẽ được cài đặt Trang Web được phát triển sẵn sàng để đưa vào kiểm thử
Tạo các kịch bản kiểm thử : Các thiết kế kiểm thử và ca kiểm thử được triển khai trên công cụ Các kiểm thử viên sẽ sử dụng công cụ để tạo các kịch bản cho các ca kiểm thử Để tạo các kịch bản kiểm thử được tốt, các kiểm thử viên cần hiểu rõ về công cụ cũng như hệ thống cần kiểm thử