ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ HOÀNG THỊ LUY 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 LUẬN VĂN THẠC SĨ Hà Nội – 2015 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ HOÀNG THỊ LUY 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 Ngành: Công nghệ Thông tin Chuyên ngành: Kỹ thuật Phần mềm Mã Số: 60480103 LUẬN VĂN THẠC SĨ NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. PHẠM NGỌC HÙNG Hà Nội – 2015 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 1 Mụ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 .1 Định nghĩa kiểm thử hiệu năng .2 Phân loại kiểm thử hiệu năng. 14 Chƣơng 3: Phƣơng pháp kiểm thử hiệu năng và công cụ .1 Kiểm thử hiệu năng trong vòng đời phát triển phần mềm .2 Các dạng yêu cầu kiểm thử hiệu năng trong thực tế .3 Quy trình thực hiện kiểm thử hiệu năng .1 Lập kế hoạch và kiểm soát kiểm thử .2 Phân tích và thiết kế kiểm thử.3 Triển khai (Implementation) và thực thi (Execution) kiểm thử 26 3.4 Đánh giá các kết quả đầu ra và báo cáo .5 Các hoạt động kết thúc kiểm thử .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ị .1 Giới thiệu về dự án.2 Kế hoạch tổng thể của dự án .3 Lập kế hoạch kiểm thử hiệu năng .4 Thiết kế kiểm thử hiệu năng .1 Thiết kế môi trƣờng .2 Thiết kế các kịch bản kiểm thử .5 Triển khai và thực thi kiểm thử hiệu năng .1 Cài đặt môi trƣờng, công cụ.2 Tạo các kịch bản kiểm thử bằng JMeter .3 Chạy các kịch bản .6 Đánh giá kết quả đầu ra và báo cáo . 51 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 2 KẾT LUẬN . 53 TÀI LIỆU THAM KHẢO. 55 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 3 LỜ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. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 4 LỜ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 xứ rõ ràng và hợp pháp. Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan này. Hà Nội, ngày 09 tháng 05 năm 2015 Hoàng Thị Luy LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 5 DANH MỤC HÌNH VẼ, BẢNG BIỂU Hình 3. Kiểm thử hiệu năng nằm trong các mức độ kiểm thử của hệ thống . Kiểm thử hiệu năng trong mô hình thác nƣớc . Kiểm thử hiệu năng trong mô hình chữ V . Kiểm thử hiệu năng trong mô hình Agile – Scrum . 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 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 và đầu ra của giai đoạn triển khai kiểm thử .9 So sánh một số công cụ tính phí phổ biến .10 So sánh một số công cụ mã nguồn mở phổ biến . Tỉ lệ phân bổ thời gian giữa các công đoạn . 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) . Chi tiết công việc trong từng giai đoạn . Các thành viên tham gia vào dự án. Kế hoạch thời gian kiểm thử hiệu năng (Đơn vị tính: Ngày làm việc) . Tƣơng tác giữa Maven, Jenkins và JMeter . Các kịch bản kiểm thử . Maven sau khi cài đặt. JMeter sau khi cài đặt. Jenkins sau khi cài đặt . Cấu trúc thƣ mục dự án . Các kịch bản kiểm thử. Dữ liệu kiểm thử . Kết quả chạy với 10 ngƣời dùng đồng thời. Kết quả chạy với 80 ngƣời dùng đồng thời. Kết quả chạy với 100 ngƣời dùng đồng thời. Kết quả chạy với 100 ngƣời dùng đồng thời. 51 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 6 Chƣơ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 Nectar1 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 Anh2 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.com/ 2 Đƣờng dẫn truy cập: http://www.uk LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 7 củ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 20123 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.com LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
Tổng quan nghiên cứu
Kiểm thử hiệu năng là một phần thiết yếu trong việc đảm bảo chất lượng phần mềm, đặc biệt là các ứng dụng Web, nơi mà hiệu suất ảnh hưởng trực tiếp đến trải nghiệm người dùng và hiệu quả kinh doanh. Theo ước tính, các sự cố về hiệu năng có thể dẫn đến mất hàng triệu đô la doanh thu và làm giảm uy tín của doanh nghiệp. Ví dụ, trang Web của Nectar đã bị sập trong vòng ba ngày do quá tải với hàng nghìn lượt truy cập trong một giờ, gây thiệt hại nghiêm trọng về mặt kinh tế và uy tín. Tương tự, trang Web bản đồ tội phạm của cảnh sát Anh nhận được 18 triệu hit trong ngày đầu tiên đã bị sập chỉ trong vài giờ. Mục tiêu nghiên cứu là phát triển phương pháp 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, đặc biệt trong bối cảnh phát triển phần mềm nhanh Agile-Scrum tại Việt Nam. Nghiên cứu tập trung vào giai đoạn từ năm 2014 đến 2015, tại các doanh nghiệp phần mềm lớn ở Việt Nam, nhằm cung cấp giải pháp kiểm thử hiệu năng phù hợp với điều kiện thực tế, giúp nâng cao độ tin cậy và khả năng chịu tải của ứng dụng Web. Các chỉ số quan trọng được đo đạc bao gồm thời gian phản hồi, tỉ lệ lỗi, và số lượng người dùng đồng thời, với mục tiêu đảm bảo thời gian phản hồi không vượt quá 5 giây khi có 100 người dùng đồng thời.
Cơ sở lý thuyết và phương pháp nghiên cứu
Khung lý thuyết áp dụng
- Lý thuyết kiểm thử hiệu năng: Định nghĩa kiểm thử hiệu năng là kiểm thử phi chức năng nhằm đánh giá các đặc tính như tốc độ, khả năng mở rộng, tính ổn định của hệ thống trong các điều kiện tải khác nhau.
- Mô hình phát triển phần mềm Agile-Scrum: Phân chia dự án thành các sprint nhỏ, mỗi sprint kéo dài khoảng 2 tuần, cho phép tích hợp liên tục và kiểm thử hiệu năng song song với phát triển.
- Các loại kiểm thử hiệu năng: Bao gồm kiểm thử tải (Load test), kiểm thử áp lực (Stress test), kiểm thử dung lượng (Capacity test), kiểm thử sức bền (Endurance test), kiểm thử tăng đột ngột (Spike test), kiểm thử mức cơ sở (Baseline test), kiểm thử dài (Soak test) và kiểm thử khối lượng (Volume test).
- Thuật ngữ chuyên ngành: Thời gian phản hồi (Response time), thông lượng (Throughput), người dùng đồng thời (Concurrent user), tải công việc (Work load), thời gian nghĩ (Think time).
Phương pháp nghiên cứu
- Nguồn dữ liệu: Thu thập từ các dự án kiểm thử hiệu năng thực tế tại các doanh nghiệp phần mềm lớn ở Việt Nam, tài liệu kỹ thuật, và các công cụ kiểm thử hiệu năng phổ biến.
- Phương pháp phân tích: Áp dụng phương pháp kiểm thử hiệu năng theo quy trình chuẩn gồm lập kế hoạch, phân tích và thiết kế kiểm thử, triển khai và thực thi, đánh giá kết quả và báo cáo, kết thúc kiểm thử.
- Timeline nghiên cứu: Nghiên cứu được thực hiện trong khoảng thời gian từ tháng 10/2014 đến tháng 4/2015, với dự án mẫu áp dụng mô hình Agile-Scrum, chia thành 14 sprint, mỗi sprint kéo dài 10 ngày làm việc.
Kết quả nghiên cứu và thảo luận
Những phát hiện chính
- Phát hiện 1: Việc áp dụng kiểm thử hiệu năng từ giai đoạn tích hợp phần mềm giúp phát hiện lỗi sớm, giảm chi phí sửa lỗi lên đến 30% so với phát hiện muộn trong giai đoạn kiểm thử cuối.
- Phát hiện 2: Sử dụng mô hình Agile-Scrum cho phép kiểm thử hiệu năng liên tục, giúp duy trì hiệu suất ổn định khi tích hợp các phần mới, giảm 25% thời gian phát hiện và khắc phục sự cố hiệu năng.
- Phát hiện 3: Công cụ Apache JMeter kết hợp với Maven và Jenkins giúp tự động hóa kiểm thử hiệu năng, giảm 40% thời gian thực hiện kiểm thử so với phương pháp thủ công.
- Phát hiện 4: Trong dự án mẫu, hệ thống đáp ứng được yêu cầu thời gian phản hồi dưới 5 giây với 100 người dùng đồng thời, đạt mục tiêu đề ra, với tỉ lệ lỗi dưới 1%.
Thảo luận kết quả
Nguyên nhân của các phát hiện trên là do việc tích hợp kiểm thử hiệu năng sớm và liên tục trong quá trình phát triển giúp phát hiện và xử lý các nút thắt hiệu năng kịp thời. So với các nghiên cứu trước đây, việc áp dụng mô hình Agile-Scrum và công cụ tự động hóa đã nâng cao hiệu quả kiểm thử, giảm thiểu chi phí và thời gian. Kết quả này có ý nghĩa quan trọng trong bối cảnh thị trường phần mềm Việt Nam, nơi mà kiểm thử hiệu năng thường bị xem nhẹ hoặc thực hiện không đầy đủ. Dữ liệu có thể được trình bày qua biểu đồ thời gian phản hồi theo số lượng người dùng đồng thời và bảng so sánh chi phí, thời gian giữa các phương pháp kiểm thử.
Đề xuất và khuyến nghị
- Áp dụng kiểm thử hiệu năng từ giai đoạn tích hợp phần mềm: Để phát hiện sớm các vấn đề hiệu năng, giảm chi phí sửa lỗi, nên bắt đầu kiểm thử hiệu năng từ giai đoạn tích hợp.
- Tích hợp kiểm thử hiệu năng trong mô hình Agile-Scrum: Thực hiện kiểm thử hiệu năng liên tục trong các sprint để đảm bảo hiệu suất ổn định khi tích hợp các phần mới.
- Sử dụng công cụ tự động hóa kiểm thử hiệu năng: Khuyến khích sử dụng các công cụ mã nguồn mở như Apache JMeter kết hợp với Maven và Jenkins để giảm thời gian và chi phí kiểm thử.
- Đào tạo và nâng cao nhận thức về kiểm thử hiệu năng: Tổ chức các khóa đào tạo cho đội ngũ phát triển và kiểm thử để nâng cao nhận thức và kỹ năng kiểm thử hiệu năng.
- Lập kế hoạch kiểm thử chi tiết và xác định tiêu chí đầu ra rõ ràng: Đảm bảo các tiêu chí về thời gian phản hồi, tỉ lệ lỗi, thông lượng được xác định rõ ràng và đồng thuận giữa các bên liên quan.
Đối tượng nên tham khảo luận văn
- Nhà phát triển phần mềm: Hiểu rõ về kiểm thử hiệu năng để thiết kế và phát triển ứng dụng có khả năng chịu tải tốt.
- Kiểm thử viên phần mềm: Áp dụng các phương pháp và công cụ kiểm thử hiệu năng hiệu quả, nâng cao kỹ năng chuyên môn.
- Quản lý dự án phần mềm: Lập kế hoạch và phân bổ nguồn lực hợp lý cho kiểm thử hiệu năng, đảm bảo chất lượng sản phẩm.
- Doanh nghiệp phát triển phần mềm: Nâng cao chất lượng sản phẩm, giảm thiểu rủi ro về hiệu năng, tăng sự hài lòng của khách hàng.
Câu hỏi thường gặp
-
Kiểm thử hiệu năng là gì?
Kiểm thử hiệu năng là kiểm thử phi chức năng nhằm đánh giá tốc độ, khả năng mở rộng và tính ổn định của hệ thống dưới các điều kiện tải khác nhau. -
Tại sao kiểm thử hiệu năng quan trọng với ứng dụng Web?
Bởi vì hiệu năng ảnh hưởng trực tiếp đến trải nghiệm người dùng và doanh thu, các sự cố hiệu năng có thể gây mất khách hàng và thiệt hại kinh tế lớn. -
Các loại kiểm thử hiệu năng phổ biến là gì?
Bao gồm kiểm thử tải, kiểm thử áp lực, kiểm thử dung lượng, kiểm thử sức bền, kiểm thử tăng đột ngột, kiểm thử mức cơ sở, kiểm thử dài và kiểm thử khối lượng. -
Làm thế nào để lựa chọn công cụ kiểm thử hiệu năng phù hợp?
Cần cân nhắc chi phí, tính năng, khả năng tích hợp, dễ sử dụng và phù hợp với yêu cầu dự án. Công cụ mã nguồn mở như JMeter thường được ưu tiên vì chi phí thấp và tính linh hoạt. -
Kiểm thử hiệu năng nên được thực hiện khi nào trong vòng đời phát triển phần mềm?
Nên bắt đầu từ giai đoạn tích hợp phần mềm và tiếp tục thực hiện liên tục trong các sprint của mô hình Agile để phát hiện sớm và xử lý kịp thời các vấn đề hiệu năng.
Kết luận
- Kiểm thử hiệu năng là yếu tố then chốt đảm bảo chất lượng và hiệu suất của các ứng dụng Web.
- Áp dụng kiểm thử hiệu năng trong mô hình Agile-Scrum giúp phát hiện lỗi sớm và duy trì hiệu suất ổn định.
- Sử dụng công cụ tự động hóa như Apache JMeter kết hợp Maven và Jenkins giúp tiết kiệm thời gian và chi phí kiểm thử.
- Kết quả nghiên cứu cung cấp phương pháp và quy trình kiểm thử hiệu năng phù hợp với điều kiện thực tế tại Việt Nam.
- Đề xuất các giải pháp cụ thể nhằm nâng cao hiệu quả kiểm thử hiệu năng trong các dự án phát triển phần mềm.
Hãy bắt đầu áp dụng kiểm thử hiệu năng một cách bài bản để nâng cao chất lượng sản phẩm và sự hài lòng của khách hàng ngay hôm nay!