Các loại kiểm thử phần mềm và kiểm thử độ tin cậy·tính khả chuyển
1. Tổng quan
A. Định nghĩa
Kiểm thử phần mềm là hoạt động kiểm chứng·xác nhận được thực hiện ở mọi giai đoạn phát triển·vận hành nhằm phát hiện khiếm khuyết và xác nhận sản phẩm có đáp ứng chất lượng yêu cầu hay không. Trong đó, kiểm thử độ tin cậy·tính khả chuyển theo góc nhìn đặc tính chất lượng ISO/IEC 25010 lần lượt bảo đảm tính ổn định trong vận hành và khả năng thích ứng với nhiều môi trường khác nhau.
B. Bối cảnh ra đời và sự cần thiết
Kiểm thử chỉ xem chức năng có hoạt động đúng đặc tả hay không thì không thể ngăn được các sự cố phát sinh trong vận hành thực tế. Bởi vì việc hệ thống có chạy liên tục nhiều ngày không dừng hay không, dịch vụ có được duy trì khi một số nút ngừng hoạt động hay không, có hoạt động bình thường khi chuyển sang OS hoặc trình duyệt mới hay không là những yêu cầu phi chức năng (chất lượng) không thể hiện trong đặc tả chức năng. Khi cloud·đa nền tảng·dịch vụ 24/365 trở nên phổ biến, độ tin cậy·tính khả chuyển này đã trở thành điều kiện cốt lõi cho tính bền vững của dịch vụ, và kiểm thử định nghĩa·kiểm chứng chúng bằng mục tiêu định lượng (SLA·MTBF·RTO) đã trở nên bắt buộc.
2. Các loại kiểm thử phần mềm
flowchart LR
U[Đơn vị] --> I[Tích hợp] --> S[Hệ thống] --> A[Chấp nhận]
Kiểm thử được phân loại theo nhiều tiêu chí, và các tiêu chí này không loại trừ nhau mà là các trục khác nhau. Cấp độ kiểm thử mở rộng phạm vi kiểm chứng từ nhỏ đến lớn (đơn vị→tích hợp→hệ thống→chấp nhận), mỗi cấp bắt các khiếm khuyết mà cấp trước bỏ sót theo một góc nhìn khác. Kỹ thuật kiểm thử chia thành hộp đen, chỉ kiểm chứng đầu vào·đầu ra mà không xem cấu trúc bên trong, và hộp trắng, xét các đường đi của mã. Kiểm thử phi chức năng nhắm vào các đặc tính chất lượng như hiệu năng·độ tin cậy·tính khả chuyển thay vì chức năng, còn kiểm thử ứng phó thay đổi xác nhận việc sửa đổi không làm hỏng chức năng hiện có (hồi quy).
| Tiêu chí phân loại | Loại | Trọng tâm |
|---|---|---|
| Cấp độ kiểm thử | Đơn vị·tích hợp·hệ thống·chấp nhận | Mở rộng phạm vi kiểm chứng |
| Kỹ thuật kiểm thử | Hộp đen (đặc tả)·hộp trắng (cấu trúc)·dựa trên kinh nghiệm | Có quan sát cấu trúc bên trong hay không |
| Phi chức năng (đặc tính chất lượng) | Hiệu năng·tải·bảo mật·độ tin cậy·tính khả chuyển·tính khả dụng·tính tương thích | Chất lượng của hoạt động |
| Ứng phó thay đổi | Hồi quy·smoke·xác nhận (Confirmation) | Tính ổn định sau thay đổi |
3. Kiểm thử độ tin cậy (Reliability Test)
Độ tin cậy là khả năng liên tục thực hiện chức năng không lỗi trong một khoảng thời gian xác định dưới các điều kiện đã nêu. Kiểm thử độ tin cậy kiểm chứng khả năng này theo từng đặc tính con.
Độ tin cậy được chia thành hai trục: "ít hỏng đến mức nào" và "khi hỏng thì chịu đựng và phục hồi tốt đến mức nào". Trục thứ nhất do độ trưởng thành đảm nhận, trục thứ hai do khả năng chịu lỗi·khả năng phục hồi đảm nhận. Điều quan trọng là mỗi đặc tính con được đánh giá bằng chỉ số định lượng chứ không phải xác nhận định tính.
| Đặc tính con | Nội dung | Phương pháp·chỉ số kiểm chứng |
|---|---|---|
| Độ trưởng thành (Maturity) | Mức độ hiếm gặp của hỏng hóc do khiếm khuyết | Tỷ lệ phát sinh khiếm khuyết·MTBF (thời gian trung bình giữa các lần hỏng), mô hình tăng trưởng độ tin cậy |
| Khả năng chịu lỗi (Fault Tolerance) | Duy trì hiệu năng chỉ định ngay cả khi có sự cố·đầu vào sai | Kiểm thử dự phòng·failover, tiêm lỗi |
| Khả năng phục hồi (Recoverability) | Khôi phục dữ liệu·trạng thái sau sự cố | Kiểm chứng RTO/RPO, kiểm thử sao lưu·khôi phục |
| Tính sẵn sàng (Availability) | Khả năng vận hành liên tục trong thời gian dài | Kiểm thử Soak (độ bền)·tải dài hạn |
Ví dụ, kiểm chứng khả năng chịu lỗi là trong môi trường tương tự vận hành, cưỡng chế tắt một máy chủ cụ thể (tiêm lỗi) để đo xem failover diễn ra trong bao nhiêu giây và trong thời gian đó tỷ lệ yêu cầu thất bại có dưới mức mục tiêu hay không. Khả năng phục hồi được kiểm chứng dựa trên RTO (thời gian khôi phục mục tiêu)·RPO (mức mất dữ liệu cho phép), giả định tình huống thảm họa để xem dữ liệu được khôi phục từ bản sao lưu nhanh đến mức nào và có mất mát hay không. Như vậy, kiểm thử độ tin cậy quyết định đạt hay không bằng con số như "MTBF 10,000 giờ, RTO 30 phút" chứ không phải "trông có vẻ ổn định".
4. Kiểm thử tính khả chuyển (Portability Test)
Tính khả chuyển là khả năng chuyển·thích ứng phần mềm sang môi trường khác (HW·OS·trình duyệt·nền tảng). Kiểm thử tính khả chuyển kiểm chứng khả năng thích ứng·cài đặt·thay thế·cùng tồn tại trước sự thay đổi môi trường.
Tính khả chuyển trở nên quan trọng vì ngày nay phần mềm không chỉ chạy trong một môi trường cố định. Trong môi trường di chuyển từ on-premise lên cloud, từ một OS cụ thể sang container, qua nhiều trình duyệt·thiết bị, cần có tính khả chuyển làm nền tảng để giảm chi phí và rủi ro chuyển đổi.
| Đặc tính con | Nội dung | Phương pháp kiểm chứng |
|---|---|---|
| Khả năng thích ứng (Adaptability) | Thích ứng với nhiều môi trường mà không cần sửa đổi lớn | Kiểm thử hoạt động trên các OS·HW khác nhau |
| Khả năng cài đặt (Installability) | Cài đặt·nâng cấp·gỡ bỏ hoạt động bình thường | Kiểm chứng script cài đặt·rollback |
| Khả năng thay thế (Replaceability) | Thay thế·tương thích với phần mềm hiện có cùng mục đích | Kiểm thử tương thích dữ liệu·giao diện |
| Khả năng cùng tồn tại (Co-existence) | Cùng tồn tại không xung đột với phần mềm khác·nhiều môi trường | Kiểm chứng chéo cross-browsing·đa OS |
Cụ thể, kiểm chứng khả năng cùng tồn tại (tính tương thích) của dịch vụ web là xác nhận chéo bằng cross-browsing xem cùng một màn hình·chức năng có hiển thị trên nhiều trình duyệt như Chrome·Edge·Safari và các thiết bị Windows·macOS·Android hay không. Khả năng cài đặt xem xét toàn bộ quá trình cài đặt·nâng cấp·gỡ bỏ gói triển khai trên máy chủ mới có diễn ra không lỗi và có thể hoàn nguyên hay không. Khả năng thích ứng kiểm thử, ví dụ, ứng dụng đã được kiểm chứng trên x86 khi chuyển sang instance cloud dựa trên ARM có hoạt động mà không cần thay đổi mã hay không.
5. Lưu ý và hàm ý
- Đánh giá dựa trên mục tiêu định lượng: Kiểm thử phi chức năng phải lấy các con số hợp đồng·mục tiêu như SLA·MTBF·RTO/RPO làm tiêu chí đạt thì kết quả mới được chấp nhận mà không tranh cãi.
- Tầm quan trọng của tính khả chuyển tăng lên do môi trường đa dạng hóa: Sự lan rộng của cloud·đa nền tảng·container làm phạm vi kiểm chứng tính khả chuyển·tương thích mở rộng, đòi hỏi pipeline kiểm thử chéo môi trường tự động hóa.
- Liên kết vận hành và chaos engineering: Độ tin cậy không kết thúc ở kiểm thử trước triển khai mà phải liên kết với giám sát APM trong vận hành, và đang tiến hóa theo hướng liên tục kiểm chứng khả năng chịu lỗi bằng chaos engineering — cố ý tiêm lỗi vào hệ thống vận hành thực tế.
Tóm tắt một câu: Kiểm thử được phân loại theo cấp độ·kỹ thuật·phi chức năng·ứng phó thay đổi; kiểm thử độ tin cậy kiểm chứng độ trưởng thành·khả năng chịu lỗi·khả năng phục hồi·tính sẵn sàng, còn kiểm thử tính khả chuyển kiểm chứng khả năng thích ứng·cài đặt·thay thế·cùng tồn tại dựa trên các mục tiêu định lượng như MTBF·RTO, và được mở rộng sang giám sát vận hành·chaos engineering.