Ở bài viết trước, chúng ta đã cùng nhau tìm hiểu về tầm quan trọng của Kiểm thử Sự phù hợp của chức năng. Trong bài viết này, hãy cùng mình tìm hiểu về Kiểm tra độ tin cậy của phần mềm nhé.
Độ Tin Cậy Của Phần Mềm Là Gì?
ISO 9126 định nghĩa reliability – độ tin cậy là “khả năng của sản phẩm phần mềm thực hiện các chức năng được yêu cầu của nó trong các điều kiện đã nêu trong một khoảng thời gian xác định hoặc trong một số hoạt động xác định.” Các lỗi thường gặp gây ra sự cố về độ tin cậy bao gồm: rò rỉ bộ nhớ, phân mảnh, cạn kiệt ổ đĩa, sự cố cơ sở hạ tầng không liên tục và giá trị thời gian chờ thấp hơn mức khả thi.
Kế Hoạch Kiểm Tra Độ Tin Cậy
Khi lên kế hoạch kiểm thử độ tin cậy cần xem xét những điều sau đây:
- Thời điểm tiến hành: Thử nghiệm độ tin cậy thường yêu cầu khi các loại kiểm thử khác đã được hoàn thành.
- Chi phí: Chi phí thử nghiệm độ tin cậy khá tốn kém. Do các hệ thống phải được thử nghiệm trong thời gian dài mà không bị lỗi để có thể dự đoán MTBF cao cần thiết.
- Thời gian: Kiểm tra độ tin cậy sử dụng các mô hình tăng trưởng độ tin cậy dựa trên các lỗi được phát hiện và đối với các mức độ tin cậy cao, sẽ mất nhiều thời gian để có được kết quả có ý nghĩa thống kê.
- Môi trường kiểm thử: Môi trường kiểm thử cần phải càng giống với môi trường thực tế hoạt động càng tốt, hoặc có thể sử dụng môi trường hoạt động. Tuy nhiên, nếu sử dụng môi trường vận hành, điều này có thể gây gián đoạn cho người dùng và có thể có rủi ro cao. Ví dụ, thử nghiệm khắc phục thảm họa ảnh hưởng xấu đến hệ thống vận hành.
- Phạm vi: Các hệ thống con và thành phần khác nhau có thể được thử nghiệm cho các loại và mức độ tin cậy khác nhau
- Tiêu chí đầu ra: Các yêu cầu về độ tin cậy phải được thiết lập theo tiêu chuẩn quy định cho các ứng dụng liên quan đến an toàn.
- Lỗi: Các biện pháp đo lường độ tin cậy phụ thuộc rất nhiều vào việc đếm các lỗi và do đó phải có thỏa thuận trước về những gì tạo thành lỗi.
- Nhà phát triển: Để thực hiện kiểm tra độ tin cậy bằng cách sử dụng mô hình tăng trưởng độ tin cậy, phải đạt được thỏa thuận với nhà phát triển rằng các lỗi đã xác định được khắc phục càng sớm càng tốt.
- Thử nghiệm sớm: Để đạt được độ tin cậy cao yêu cầu thử nghiệm bắt đầu càng sớm càng tốt, với việc xem xét nghiêm ngặt các tài liệu cơ bản ban đầu và phân tích code tĩnh.
Các Loại Kiểm Tra Độ Tin Cậy
Khi tiến hành kiểm tra độ tin cậy của hệ thống, nhà kiểm thử có thể xem xét đến các loại kiểm thử sau đây:
Kiểm Tra Khả Năng Chịu Lỗi
Khả năng chịu lỗi – Fault tolerance được định nghĩa là khả năng của một hệ thống duy trì mức hiệu suất được chỉ định trong trường hợp có lỗi phần mềm.
Khi khả năng chịu lỗi được tích hợp vào phần mềm, nó thường bao gồm mã bổ sung để tránh việc tồn tại và xử lý các điều kiện ngoại lệ. Việc hệ thống thể hiện khả năng chịu lỗi càng quan trọng thì càng phải thêm nhiều mã và độ phức tạp.
Khả năng chịu lỗi có xu hướng được thử nghiệm ở mỗi giai đoạn thử nghiệm.
- Trong giai đoạn unit test: kiểm tra khả năng chịu lỗi có thể là việc xử lý lỗi và ngoại lệ với các giá trị giao diện bị lỗi như: nằm ngoài phạm vi, định dạng kém, hoặc không chính xác về mặt ngữ nghĩa.
- Trong giai đoạn integration test: kiểm tra khả năng chịu lỗi là việc kiểm tra đầu vào không chính xác từ giao diện người dùng, tệp và thiết bị.
- Trong giai đoạn system test: kiểm tra khả năng chịu lỗi là việc kiểm tra đầu vào không chính xác từ OS, hệ thống tương tác, thiết bị và đầu vào của người dùng.
Các kỹ thuật kiểm tra có giá trị bao gồm kiểm tra giá trị biên không hợp lệ, kiểm tra thăm dò, kiểm tra chuyển đổi trạng thái (đặc biệt là tìm kiếm chuyển đổi không hợp lệ) và tấn công (attack).
Kiểm Tra Khả Năng Khôi Phục
Khả năng khôi phục – Recoverability là thước đo khả năng khôi phục của hệ thống (hoặc phần mềm) sau lỗi, về thời gian cần thiết để khôi phục (có thể ở trạng thái hoạt động giảm dần) hoặc lượng dữ liệu bị mất. Các phương pháp kiểm tra khả năng phục hồi bao gồm: kiểm tra chuyển đổi dự phòng, kiểm tra sao lưu và khôi phục. Cả hai thường bao gồm các quy trình kiểm tra dựa trên các lần chạy khô (dry runs) và chỉ thỉnh thoảng lý tưởng nhất là không báo trước, kiểm tra thực hành trong môi trường vận hành.
Thử nghiệm sao lưu (backup) và khôi phục (restore) tập trung vào thử nghiệm các quy trình tại chỗ để giảm thiểu ảnh hưởng của lỗi đối với dữ liệu hệ thống. Mặc dù thử nghiệm sao lưu dữ liệu tương đối dễ dàng, nhưng thử nghiệm khôi phục hệ thống từ dữ liệu đã sao lưu có thể phức tạp hơn và thường yêu cầu lập kế hoạch cẩn thận để đảm bảo giảm thiểu sự gián đoạn đối với hệ điều hành. Các biện pháp bao gồm thời gian thực hiện các loại sao lưu khác nhau, ví dụ: đầy đủ và tăng dần; thời gian cần thiết để khôi phục dữ liệu và mức độ mất dữ liệu có thể chấp nhận được.
Kiểm Thử Khả Năng Chuyển Đổi Dự Phòng
Kiểm thử chuyển đổi dự phòng – Failover Testing được thực hiện khi kiến trúc hệ thống bao gồm cả hệ thống chính và hệ thống chuyển đổi dự phòng sẽ tiếp quản nếu hệ thống chính bị lỗi. Khi một hệ thống phải có khả năng phục hồi sau một sự cố nghiêm trọng (ví dụ: lụt (flood), tấn công khủng bố hoặc một cuộc tấn công bằng mã độc tống tiền nghiêm trọng) thì thử nghiệm chuyển đổi dự phòng thường được gọi là thử nghiệm khôi phục sau thảm họa và hệ thống chuyển đổi dự phòng thường có thể ở trạng thái khác vị trí địa lý.
Việc thực hiện thử nghiệm chuyển đổi dự phòng đầy đủ trên một hệ thống đang vận hành cần phải lập kế hoạch cực kỳ cẩn thận do rủi ro và sự gián đoạn (thường là do thời gian rảnh của các nhà quản lý cấp cao, có khả năng sẽ được sử dụng để quản lý việc khôi phục). Nếu toàn bộ quá trình kiểm tra khắc phục thảm họa không thành công thì chúng cần ngay lập tức hoàn nguyên về hệ thống chính (vì nó chưa thực sự bị phá hủy!).
Kiểm Tra Mức Độ Hoàn Thiện
Mức độ hoàn thiện – Maturity được định nghĩa là khả năng của hệ thống có thể tránh lỗi do lỗi trong phần mềm. Theo truyền thống, mức độ hoàn thiện đã được chỉ định và đo lường cho các hệ thống có độ tin cậy cao, chẳng hạn như những hệ thống liên quan đến các chức năng quan trọng về an toàn, (ví dụ: hệ thống điều khiển chuyến bay của máy bay), trong đó mục tiêu hoàn thiện được xác định là một phần của tiêu chuẩn quy định.
Cách tiếp cận thông thường để kiểm tra mức độ hoàn thiện của các hệ thống có độ tin cậy cao được gọi là mô hình tăng trưởng độ tin cậy. Nó thường diễn ra khi kết thúc giai đoạn kiểm thử hệ thống, sau khi quá trình kiểm tra các đặc tính chất lượng khác đã được hoàn thành và mọi lỗi liên quan đến lỗi được phát hiện đã được khắc phục. Đó là một phương pháp thống kê thường được thực hiện trong môi trường thử nghiệm càng gần với môi trường vận hành càng tốt. Để đo lường một MTBF đã chỉ định, các đầu vào kiểm tra được tạo dựa trên cấu hình vận hành và hệ thống đang chạy và các lỗi được ghi lại (và sau đó được khắc phục). Tần suất hỏng hóc giảm cho phép dự đoán MTBF bằng cách sử dụng mô hình tăng trưởng độ tin cậy.
Kiểm Tra Tính Sẵn Sàng
Tính sẵn sàng – Availibility được định nghĩa là khả năng của hệ thống ở trạng thái thực hiện các chức năng được yêu cầu tại một thời điểm nhất định và trong các điều kiện sử dụng đã nêu. Điều này có thể bao gồm sự kết hợp của mức độ hoàn thiện, khả năng chịu lỗi và khả năng khôi phục.
Đo lường tính sẵn sàng trước khi vận hành thường được thực hiện bằng cách sử dụng các thử nghiệm tương tự được sử dụng để đo lường mức độ hoàn thiện; các thử nghiệm dựa trên hồ sơ hoạt động của việc sử dụng dự kiến trong một thời gian dài và được thực hiện trong môi trường thử nghiệm càng gần với môi trường hoạt động càng tốt. Tính khả dụng có thể được đo bằng MTTF/(MTTF + MTTR), trong đó MTTF là thời gian trung bình dẫn đến hỏng hóc và MTTR là thời gian trung bình để sửa chữa (MTTR), thường được đo như một phần của thử nghiệm khả năng bảo trì.
Ví dụ, tính khả dụng của một hệ thống có thể được mô tả là 99,999% (‘năm số chín’), trong trường hợp đó, nó sẽ không khả dụng không quá 5 phút mỗi năm, hoặc tính khả dụng của hệ thống có thể được chỉ định theo nghĩa không khả dụng (ví dụ: hệ thống sẽ không khả dụng hơn 60 phút mỗi tháng).
Mình xin dừng bài viết hôm nay tại đây. Hẹn gặp lại các bạn trong các bài viết tiếp theo về Kiểm thử các đặc điểm chất lượng phần mềm.
Happy testing!