Các Mức Độ Kiểm Thử

1.Unit Test - Kiểm tra mức đơn vị

  • Kiểm thử đơn vị là hoạt động kiểm thử nhỏ nhất.Kiểm thử thực hiện trên các hàm hay thành phần riêng lẻ.
  • Cần hiểu biết về thiết kế chương trình và code.
  • Thực hiện bởi Lập trình viên (không phải kiểm thử viên)
  • Đơn vị: Là thành phần nhỏ nhất của phần mềm có thể kiểm thử được. Ví dụ: Các hàm, lớp, thủ tục, phương thức.
  • Mục đích của việc kiểm tra unit test là cô lập từng thành phần của chương trình và chứng minh các bộ phận riêng lẻ chính xác về các yêu cầu chức năng

2.Integration Test - Kiểm tra tích hợp

  • Kiểm thử tích hợp nhằm phát hiện lỗi giao tiếp xảy ra giữa các thành phần cũng như lỗi của bản thân từng thành phần (nếu có).
  • Thành phần có thể là •  Các module •  Các ứng dụng riêng lẻ •  Các ứng dụng client/server trên một mạng
  • Integration Test có 2 mục tiêu chính:
    • Phát hiện lỗi giao tiếp xảy ra giữa các Unit.
    • Tích hợp các Unit đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là nguyên hệ thống hoàn chỉnh (system) chuẩn bị cho kiểm tra ở mức hệ thống (System Test).
  • Trong Unit Test, lập trình viên cố gắng phát hiện lỗi liên quan đến chức năng và cấu trúc nội tại của Unit. Có một số phép kiểm tra đơn giản trên giao tiếp giữa Unit với các thành phần liên quan khác, tuy nhiên mọi giao tiếp liên quan đến Unit thật sự được kiểm tra đầy đủ khi các Unit tích hợp với nhau trong khi thực hiện Integration Test.
  • Có 4 loại kiểm tra trong Integration Test.
    • Kiểm tra cấu trúc (structure): Tương tự White Box Test (kiểm tra nhằm bảo đảm các thành phần bên trong của một chương trình chạy đúng), chú trọng đến hoạt động của các thành phần cấu trúc nội tại của chương trình chẳng hạn các lệnh và nhánh bên trong.
    • Kiểm tra chức năng (functional): Tương tự Black Box Test (kiểm tra chỉ chú trọng đến chức năng của chương trình, không quan tâm đến cấu trúc bên trong), chỉ khảo sát chức năng của chương trình theo yêu cầu kỹ thuật.
    • Kiểm tra hiệu năng (performance): Kiểm tra việc vận hành của hệ thống.
    • Kiểm tra khả năng chịu tải (stress): Kiểm tra các giới hạn của hệ thống.
  • Chiến lược kiểm tra tích hợp (Integration Testing Strategy) •  Một system được tạo bởi 1 tập subsystems (sets of classes) xác định trong quá trình thiết kế hệ thống •  Thứ tự các subsystems được lựa chọn để kiểm thử và tích hợp xác định loại kiểm thử – Big bang integration (Nonincremental) – Bottom up integration – Top down integration – Sandwich testing – Biến thể của các loại trên

3.System Test - Kiểm tra mức hệ thống

  • Kiểm thử hệ thống là một mức của tiến trình kiểm thử phần mềm khi các module và tích hợp các module đã được test.
  • Mục tiêu của kiểm thử hệ thống là để đánh giá phần mềm có tuân thủ theo các yêu cầu đã đưa ra không
  • Điểm khác nhau then chốt giữa Integration Test và System Test là System Test chú trọng các hành vi và lỗi trên toàn hệ thống, còn Integration Test chú trọng sự giao tiếp giữa các đơn thể hoặc đối tượng khi chúng làm việc cùng nhau. Thông thường ta phải thực hiện Unit Test và Integration Test để bảo đảm mọi Unit và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện System Test.
  • System Test thường được thực hiện bởi một nhóm kiểm tra viên hoàn toàn độc lập với nhóm phát triển dự án.
  • Phân loại system test
    • Basic tests để chứng tỏ hệ thống có thể cài đặt được, cấu hình được và hoạt động được
    • Functionality tests cung cấp kiểm tra toàn bộ yêu cầu (requirements) trên cả hệ thống
    • Robustness tests xác định xem khả năng phục hồi của hệ thống từ input errors và các tình huống failure khác
    • Inter-operability tests xác định xem hệ thống có thể tương thích (inter-operate) với các sản phẩm của bên thứ 3
    • Performance tests đánh giá hiệu năng của hệ thống, e.g., băng thông, phản hồi dưới các điều kiện khác nhau
    • Scalability tests xác định giới hạn quy mô của hệ thống, như quy mô người dùng, quy mô địa lý, quy mô nguồn lực
    • Stress tests để hệ thống ở tình trạng áp lực (stress) để xác định giới hạn của hệ thống và, khi nó fail, xác định cách thức để gây ra failure
    • Load and Stability kiểm tra khả năng ổn định của hệ thống trong thời gian dài với toàn tải
    • Reliability tests đánh giá khả năng hệ thống giữ hoạt động trong thời gian dài mà không gây ra failures
    • Regression tests kiểm tra hệ thống vẫn ổn định khi tích hợp thêm các hệ thống con khác và khi bảo trì
    • Documentation tests đảm bảo system’s user guides là chính xác và khả dụng

4.Acceptance test - Kiểm tra chấp nhận

Kiểm thử chấp nhận là một cấp độ trong tiến trình kiểm thử phần mềm nhằm kiểm thử hệ thống về khả năng chấp nhận được. •  Mục tiêu của kiểm thử này là để đánh giá sự tuân thủ của hệ thống với các yêu cầu nghiệp vụ và thẩm định xem đã có thể chấp nhận để bàn giao chưa. •  Kiểm thử chấp nhận được khách hàng thực hiện (hoặc ủy quyền cho một nhóm thứ ba thực hiện).

  • Gồm 2 loại kiểm thử là:
  • Alpha Test, người dùng kiểm thử phần mềm ngay tại nơi phát triển phần mềm, lập trình viên sẽ ghi nhận các lỗi hoặc phản hồi, và lên kế hoạch sửa chữa.
  • Beta Test, phần mềm sẽ được gửi tới cho người dùng để kiểm thử ngay trong môi trường thực, lỗi hoặc phản hồi cũng sẽ gửi ngược lại cho lập trình viên để sửa chữa. => Lưu ý không nhất thiết phải thực hiện tất cả các loại kiểm tra nêu trên. Tùy yêu cầu và đặc trưng của từng hệ thống, tuỳ khả năng và thời gian cho phép của dự án, khi lập kế hoạch, trưởng dự án sẽ quyết định áp dụng những loại kiểm tra nào.