Quá trình xây dựng kế hoạch cho việc kiểm thử hiệu năng (What to include in a performance test plan) Phần 1
Bài đăng này đã không được cập nhật trong 3 năm
1. Mục đích bài viết
Kiểm thử hiệu năng (Performance Testing) là việc thực hiện test để xác định một hệ thống phần mềm có thể đáp ứng và ổn định với yêu cầu độ tải cao. Nó có thể phục vụ để điều tra, đo đạc, xác nhận hoặc xác minh chất lượng các thuộc tính của hệ thống phần mềm như: khả năng thay đổi, tính tin cậy, và tài nguyên sử dụng.
Bài viết sẽ đi sâu phân tích về các bước xây dựng nên một kế hoạch tốt cho quá trình kiểm thử hiệu năng của một hệ thống phần mềm để đảm bảo tính tối ưu cũng như hiệu quả của quá trình kiểm thử này dựa trên kinh nghiệm thực tế và bài viết của một số chuyên gia có kinh nghiệm trong lĩnh vực kiểm thử phần mềm.
2. Tổng quan các yêu cầu đối với một kế hoạch kiểm thử hiệu năng
Để quá trình kiểm thử hiệu năng được thực hiện một cách hiệu quả, một kế hoạch chi tiết cần được đưa ra để xác định rõ quá trình kiểm thử hiệu năng sẽ diễn ra như thế nào, từ phương diện công việc đến phương diện kỹ thuật. Ở mức tối thiểu, một kế hoạch kiểm thử hiệu năng cần phải chỉ ra được những điểm sau:
-
Phân tích tổng quan về hệ thống (Overall approach)
-
Những phụ thuộc và những điều kiện gốc (Dependencies and baseline assumptions)
-
Những hoạt động cần được thực hiện trước khi kiểm thử hiệu năng (Pre-performance testing actions)
-
Cách thức tiến hành kiểm thử hiệu năng (Performance testing approach)
-
Những hoạt động kiểm thử hiệu năng (Performance testing activities)
-
Những chức năng hệ thống liên quan trực tiếp đến công việc (In-scope business processes)
-
Những chức năng hệ thống không liên quan trực tiếp đến công việc (Out-of-scope business processes)
-
Kịch bản kiểm thử hiệu năng (Performance testing scenarios)
-
Thực hiện quá trình kiểm thử hiệu năng (Performance test execution)
-
Những thước đo quá trình kiểm thử hiệu năng (Performance test metrics)
Như bất kỳ kế hoạch kiểm thử nào, những kế hoạch kiểm thử hiệu năng tốt cần tối ưu về ngôn từ và giữ được số lượng từ diễn đạt ở mức tối thiểu, sử dụng tối đa các bảng và các danh sách để thể hiện thông tin rõ ràng. Điều này sẽ làm tăng hiệu quả đáng kể và giảm thiểu việc không nắm được thông tin muốn truyền đạt.
3. Chi tiết các bước bên trong một kế hoạch kiểm thử hiệu năng
3.1. Phân tích tổng quan về hệ thống (Overall approach)
Ở phần đầu tiên của một kế hoạch kiểm thử hiệu năng, chúng ta cần phân tích được kiến trúc tổng quan của hệ thống phần mềm và tập trung chỉ ra được các điểm sau bằng ngôn ngữ thông thường nhất:
- Những nguy cơ, rủi ro lớn nhất đối với hệ thống phần mềm nếu có
- Những hoạt động cơ bản nhất của hệ thống phần mềm và sẽ được tập trung để thực hiện kiểm thử hiệu năng
- Mức độ và cường độ thực hiện kiểm thử hiệu năng (stress testing) đưa ra thế nào là phù hợp đối với hệ thống phần mềm hiện có.
3.2. Những phụ thuộc và những điều kiện gốc (Dependencies and baseline assumptions)
Phần này cần chỉ ra những phụ thuộc (những nội dung phải được hoàn thành trong quá trình thực hiện kiểm thử hiệu năng) và những điều kiện gốc (những điều kiện về môi trường kiểm thử được tin tưởng là đúng).
Những phụ thuộc bao gồm:
-
Các thành phần được thực hiện kiểm thử hiệu năng bao gồm các chứng năng của hệ thống phần mềm đang được thực hiện kiểm tra.
-
Các thành phần được thực hiện kiểm thử hiệu năng nằm trong danh sách phần cứng, phần mềm đại diện cho hệ thống phần mềm đang được thực hiện kiểm tra.
-
Kho dữ liệu đại diện cho hệ thống phần mềm đang được thực hiện kiểm tra.
-
Những đối tượng được đưa ra kiểm thử bao gồm những điều kiện thực hiện của hệ thống phần mềm và kịch bản kiểm thử.
Những điều kiện gốc bao gồm:
-
Những công cụ thực hiện trong quá trình kiểm thử hiệu năng và những kỹ thuật hỗ trợ trong quá trình kiểm thử. Những công cụ này đều cần được cài đặt và có bản quyền đầy đủ để đảm bảo thực thi chính xác.
3.3. Những hoạt động cần được thực hiện trước khi kiểm thử hiệu năng (Pre-performance testing actions)
Phần này bao hàm những hoạt động cần được thực hiện trước khi quá trình kiểm thử hiệu năng bắt đầu nhằm đảm bảo quá trình kiểm hiệu năng là sẵn sàng. Những hoạt động này chủ yếu nhằm giảm thiểu rủi ro cho quá trình kiểm thử thực sự được tiến hành sau đó. Cụ thể, các hoạt động tiền kiểm thử này bao gồm:
- Tạo ra những công cụ hoặc tiện ích để đẩy nhanh quá trình chuyển từ môi trường kiểm thử này sang môi trường kiểm thử khác. Điều này sẽ làm giảm thời gian kiểm thử thực thi.
- Tạo ra những công cụ hoặc tiện ích để thay thế việc chuyển từ công việc này sang công việc khác đối với một số công việc không thể kiểm thử hoặc được biết trước sẽ vượt quá giới hạn chịu đựng của hệ thống phần mềm. Điều này sẽ làm giảm nguy cơ lỗi do quá tải trong quá trình kiểm thử thực thi.
- Tạo ra những công cụ hoặc tiện ích thay thế các thành phần nội bộ bên trong hệ thống phần mềm cái mà không xuất hiện trong quá trình kiểm thử hiệu năng. Điều này sẽ loại bỏ nguy cơ phụ thuộc vào các thành phần này.
- Lựa chọn sử dụng những máy server có cấu hình đủ mạnh.
3.4. Cách thức tiến hành kiểm thử hiệu năng (Performance testing approach)
Phần này là một sự mở rộng của mục 3.1. với một số nội dung mở rộng như sau:
- Đưa ra phương án sử dụng một công cụ kiểm thử thực thi có khả năng tái tạo một môi trường với số lượng sản phẩm hoặc số lượng người dùng được mong đợi.
- Đưa ra phương án sử dụng một môi trường có khả năng tái tạo những thành phần (như chúng sẽ tồn tạo trong sản phẩm) để kiểm tra thực thi và đưa ra tất cả các ngoại lệ nếu có.
- Đưa ra phương án sử dụng cả những phương thức quản lý mang tính sản phẩm và không mang tính sản phẩm để đo lường thực thi của hệ thống bên trong quá trình kiểm thử hiệu năng.
3.5. Những hoạt động kiểm thử hiệu năng (Performance testing activities)
Phần này sẽ xác định rõ những hoạt động sẽ xảy ra trong quá trình kiểm thử hiệu năng, những hoạt động này có thể bao gồm:
- Tạo ra những tải phù hợp với những kịch bản hệ thống, cụ thể có thể bao gồm những hoạt động của người dùng (các thao tác sử dụng hệ thống phần mềm theo trình tự), những sự chuyển dịch hoặc thay đổi bên trong hệ thống (có thể tính theo số dịch chuyển hoặc thay đổi theo thời gian), hoặc những chuẩn mực về đáp ứng hệ thống đã được đưa ra (thời gian đáp ứng của từng đối tượng cụ thể bên trong hệ thống).
- Kết hợp đồng thời việc kiểm thử thủ công bằng tay và kiểm thử tự động để chắc chắn các hoạt động của người dùng trên hệ thống phần mềm không bị ảnh hưởng bởi những tải hiện tại.
- Những phần mềm quản lý hệ thống cũng cần được thêm vào để quan sát thực hiện của hệ thống server trong quá trình thực tế khi hệ thống phần mềm thực hiện để chắc chắn chúng đảm bảo tốt yêu cầu đưa ra về thực thi.
4. Lời cuối
Mình xin kết thúc phần 1 bài viết ở đây. Phần 2, mình sẽ tiếp tục nói đến các vấn đề còn lại bao gồm:
3.6. Những chức năng hệ thống liên quan trực tiếp đến công việc (In-scope business processes) 3.7. Những chức năng hệ thống không liên quan trực tiếp đến công việc (Out-of-scope business processes) 3.8. Kịch bản kiểm thử hiệu năng (Performance testing scenarios) 3.9. Thực hiện quá trình kiểm thử hiệu năng (Performance test execution) 3.10. Những thước đo quá trình kiểm thử hiệu năng (Performance test metrics)
Ngoài ra, mình cũng sẽ cố gắng phân tích cụ thể hơn vào một tình huống cụ thể của một bài toán để làm rõ các yêu cầu cụ thể đối với việc lên kế hoạch ban đầu cho công việc kiểm thử hiệu năng của một hệ thống phần mềm.
Bài viết này mình tham khảo của David W. Johnson, người đã có 20 năm kinh nghiệm trong lĩnh vực CNTT và 13 năm kinh nghiệm trong việc phát triển các phần mềm kiểm thử, bao gồm những chiến lược kiểm thử, kế hoạch kiểm thử, kiểm thử tự động và những giải pháp kiểm thử tự động. Các bạn có thể kết nối với David tại DavidWJohnson@Eastlink.ca.
All rights reserved