Các Cấp Độ Kiểm Thử Phần Mềm (Test Levels)

November 25, 2024
Các Cấp Độ Kiểm Thử Phần Mềm (Test Levels)

Xem nhanh

Khi bạn bắt đầu sự nghiệp trong lĩnh vực kiểm thử phần mềm hoặc làm việc trong ngành công nghệ thông tin, chắc chắn bạn sẽ nghe nhắc đến hoặc được hỏi về các cấp độ kiểm thử (Test Levels). Hiểu rõ và thực hiện đầy đủ các cấp độ kiểm thử trong quá trình phát triển phần mềm là một trong những yếu tố then chốt để đảm bảo chất lượng và thành công của một dự án phần mềm.

Trong ngành công nghệ thông tin, "Test Levels" được dịch phổ biến là "Các cấp độ kiểm thử" hoặc "Các mức độ kiểm thử", và việc sử dụng đúng thuật ngữ này cũng giúp bạn giao tiếp hiệu quả hơn với đồng nghiệp và khách hàng.

Tổng quan về Test Level

Theo định nghĩa của ISTQB, các cấp độ kiểm thử là các nhóm hoạt động kiểm thử được tổ chức và quản lý cùng nhau. Mỗi cấp độ kiểm thử là một ví dụ của quy trình kiểm thử, được thực hiện liên quan đến phần mềm ở một giai đoạn phát triển cụ thể, từ các thành phần riêng lẻ đến các hệ thống hoàn chỉnh hoặc, nếu có, hệ thống của các hệ thống.

Hiểu đơn giản hơn, các cấp độ kiểm thử là những giai đoạn khác nhau trong quá trình kiểm thử phần mềm. Mỗi giai đoạn tập trung vào một phần cụ thể của phần mềm, từ các đơn vị mã nguồn nhỏ nhất đến toàn bộ hệ thống, để đảm bảo rằng phần mềm hoạt động đúng như mong đợi và đáp ứng các yêu cầu đã đặt ra.

Hãy tưởng tượng quá trình kiểm thử phần mềm như việc kiểm tra một chiếc xe hơi. Để đảm bảo chiếc xe hoạt động tốt, từng bộ phận nhỏ như động cơ, bánh xe, hệ thống phanh... phải được kiểm tra kỹ lưỡng. Tương tự, phần mềm cũng được cấu thành từ nhiều thành phần nhỏ. Các cấp độ kiểm thử giúp chúng ta kiểm tra từng phần nhỏ này, rồi đến toàn bộ hệ thống, nhằm đảm bảo rằng mọi thứ hoạt động đúng và đáp ứng các yêu cầu đã đặt ra.

Test Levels

Có bốn cấp độ kiểm thử được định nghĩa phổ biến, bao gồm:

  1. Unit Testing - Kiểm Thử Đơn Vị
  2. Integration Testing - Kiểm Thử Tích Hợp
  3. System Testing - Kiểm Thử Hệ thống
  4. Acceptance Testing - Kiểm Thử Chấp Nhận

Test Levels in Software Tesing

1. Unit Testing - Kiểm Thử Đơn Vị

Unit Testing hay còn gọi là "Component Testing" hoặc "Module Testing".

Unit Testing tập trung vào kiểm thử thành phần một cách độc lập, kiểm thử từng đơn vị mã nguồn nhỏ nhất của phần mềm. Từng đơn vị mã nguồn ở đây chính là các hàm (function), thủ tục (procedure), lớp (class), hoặc phương thức (method). Lập trình viên sẽ viết các trường hợp kiểm thử để xác định xem các đơn vị mã nguồn này có hoạt động đúng như mong đợi hay không. Quá trình này bao gồm việc xác định đầu vào, đầu ra mong đợi, và thực hiện thử nghiệm. Mục tiêu là để đảm bảo rằng:

  • Mỗi đơn vị mã nguồn hoạt động đúng: Các kiểm thử đơn vị phải được thực hiện độc lập với nhau để đảm bảo rằng kết quả của một bài kiểm thử không ảnh hưởng đến kết quả của bài kiểm thử khác.
  • Không có lỗi logic: Các tính toán, so sánh và các hoạt động khác bên trong đơn vị mã nguồn phải diễn ra chính xác.
  • Phát hiện lỗi sớm: Giúp đảm bảo chất lượng của từng thành phần trước khi tích hợp với các thành phần khác. Khi từng thành phần đã hoạt động đúng, rủi ro sẽ giảm thiểu ở các cấp độ kiểm thử cao hơn khi tích hợp các thành phần khác lại với nhau.

Để minh họa rõ hơn, bạn có thể tham khảo ví dụ về Unit Testing trong bài viết "Sơ Lược Về Unit Testing Trên Front End".

Áp dụng Unit Testing đòi hỏi sự kết hợp giữa kiến thức về lập trình, kỹ năng tư duy logic và khả năng sử dụng các công cụ kiểm thử. Unit Testing chủ yếu do lập trình viên (developer) thực hiện và thường không có sự tham gia trực tiếp của kỹ sư kiểm thử phần mềm (tester).

Unit Testing giúp phát hiện và sửa chữa lỗi ngay từ giai đoạn đầu của quá trình phát triển phần mềm. Nhờ xác định chính xác vị trí lỗi, các lập trình viên có thể nhanh chóng phân tích nguyên nhân gốc rễ và cải thiện chất lượng mã nguồn. Điều này không chỉ nâng cao độ tin cậy của từng thành phần mà còn góp phần tăng độ ổn định và chất lượng của toàn bộ phần mềm.

2. Integration Testing - Kiểm Thử Tích Hợp

Integration Testing là kiểm thử sự tương tác giữa các thành phần riêng lẻ của phần mềm được kết hợp lại đảm bảo rằng chúng hoạt động đúng khi được tích hợp với nhau và đảm bảo rằng các giao diện giữa các module hoạt động chính xác.

Integration Testing được chia thành 2 cấp độ con:

  • Component Integration Testing - Kiểm Thử Tích Hợp Thành Phần: Là quá trình kiểm tra cách các thành phần hoặc module phần mềm tương tác với nhau. Mục tiêu của loại kiểm thử này là đảm bảo rằng các thành phần đã được phát triển riêng biệt có thể hoạt động cùng nhau một cách trơn tru và hiệu quả. Component Integration Testing thường được thực hiện sau giai đoạn Unit Testing và được thực hiện bởi Developer.

    Ví dụ:

    • Kiểm thử sự tương tác giữa module thanh toán và module giỏ hàng trong một ứng dụng thương mại điện tử.
    • Kiểm tra sự tương tác giữa module bình luận và module thông báo trong ứng dụng Facebook.
  • System Integration Testing - Kiểm Thử Tích Hợp Hệ Thống: Kiểm thử sự tương tác giữa các hệ thống hoặc các phần lớn của hệ thống. System Integration Testing thường được thực hiện bởi Tester và được thực hiện sau Component Integration Testing.

    Ví dụ:

    • Kiểm thử sự tương tác giữa hệ thống thanh toán và hệ thống quản lý đơn hàng trong một ứng dụng thương mại điện tử.
    • Kiểm tra tính năng tự động đăng bài từ Facebook sang Instagram

Mục tiêu của Integration Testing bao gồm:

  • Đảm bảo rằng các giao diện giữa các phần của hệ thống hoạt động đúng như mong đợi
  • Xây dựng niềm tin vào chất lượng của các giao diện.
  • Tìm lỗi và ngăn chặn lỗi đến cấp độ kiểm thử cao hơn.

3. System Testing - Kiểm Thử Hệ Thống

System Testing tập trung vào hành vi và khả năng tổng thể của toàn bộ hệ thống hoặc sản phẩm để đảm bảo rằng tất cả các thành phần hoạt động cùng nhau một cách chính xác và đáp ứng các yêu cầu đã đặt ra.

Đây là giai đoạn kiểm thử toàn diện, bao gồm cả kiểm thử chức năng từ đầu đến cuối và kiểm thử phi chức năng. Môi trường thực hiện kiểm thử ở giai đoạn này nên giống môi trường thực tế nhất có thể và thường được thực hiện bởi một nhóm kiểm thử độc lập.

Ví dụ (Trang web thương mại điện tử):

  • Kiểm thử chức năng (Functional Testing):

    • Tìm kiếm và giỏ hàng:

      • Kiểm tra xem khách hàng có thể tìm kiếm sản phẩm bằng từ khóa và bộ lọc.
      • Kiểm tra khả năng thêm sản phẩm vào giỏ hàng và cập nhật số lượng.
    • Thanh toán:

      • Kiểm tra quy trình thanh toán, bao gồm nhập thông tin giao hàng và thanh toán.
      • Xác nhận đơn hàng và gửi email xác nhận đến khách hàng.
    • Quản lý tài khoản:

      • Kiểm tra chức năng đăng ký, đăng nhập và cập nhật thông tin cá nhân.
  • Kiểm thử phi chức năng (Non-functional Testing):

    • Hiệu suất (Performance Testing):

      • Kiểm tra xem hệ thống có thể xử lý một lượng lớn lưu lượng truy cập cùng một lúc mà không bị sập.
    • Bảo mật (Security Testing):

      • Kiểm tra tính bảo mật của thông tin thanh toán của khách hàng.
      • Đảm bảo rằng các giao dịch thanh toán được thực hiện qua kết nối an toàn (HTTPS).
    • Khả năng tương thích (Compatibility Testing):

      • Đảm bảo trang web hoạt động tốt trên các trình duyệt và thiết bị khác nhau.

Mục tiêu của System Testing bao gồm:

  • Tìm lỗi và ngăn chặn lỗi đến cấp độ kiểm thử cao hơn.
  • Đảm bảo rằng toàn bộ hệ thống hoạt động đúng theo yêu cầu đã được chỉ định.
  • Xây dựng niềm tin vào chất lượng tổng thể của hệ thống.

4. Acceptance Testing - Kiểm Thử Chấp Nhận

Acceptance Testing tập trung vào xác nhận và chứng minh rằng phần mềm đã sẵn sàng đáp ứng nhu cầu của khách hàng trước khi phần mềm được đưa vào môi trường triển khai chính thức. Đây là giai đoạn cuối cùng trong quá trình kiểm thử phần mềm, do đó, sự tham gia của người dùng cuối và khách hàng là rất quan trọng. Ngoài ra, kiểm thử này cũng có thể được thực hiện bởi một nhóm kiểm thử chuyên biệt hoặc nhân viên nội bộ.

Các hình thức của Acceptance Testing phổ biến, bao gồm:

  • Kiểm thử chấp nhận của người dùng (User Acceptance Testing - UAT): Người dùng cuối thực hiện kiểm thử để đảm bảo hệ thống đáp ứng nhu cầu của họ.
  • Kiểm thử chấp nhận vận hành (Operational Acceptance Testing): Đảm bảo rằng hệ thống có thể hoạt động ổn định trong môi trường vận hành thực tế.
  • Kiểm thử chấp nhận theo hợp đồng và quy định (Contractual and Regulatory Acceptance Testing): Đảm bảo rằng hệ thống tuân thủ các yêu cầu hợp đồng và quy định pháp lý.
  • Kiểm thử alpha (Alpha Testing): Được thực hiện bởi các nhân viên nội bộ hoặc nhóm phát triển để phát hiện lỗi trước khi phát hành cho người dùng bên ngoài.
  • Kiểm thử beta (Beta Testing): Được thực hiện bởi một nhóm người dùng bên ngoài để thu thập phản hồi và phát hiện lỗi trong môi trường thực tế.

Mục tiêu của Acceptance Testing bao gồm:

  • Thiết lập niềm tin của khách hàng vào chất lượng của toàn bộ hệ thống.
  • Xác nhận rằng hệ thống đã đáp ứng yêu cầu của khách hàng.
  • Xác minh rằng các hành vi chức năng và phi chức năng của hệ thống được hoạt động như mong đợi.

Mặc dù lỗi vẫn có thể được phát hiện trong giai đoạn Acceptance Testing, nhưng việc tìm lỗi không phải là mục tiêu chính của giai đoạn này. Nếu phát hiện ra một số lượng lỗi đáng kể, điều đó có thể được coi là một rủi ro lớn cho dự án. Tuy nhiên, việc phát hiện lỗi cũng là cơ hội để cải thiện chất lượng sản phẩm trước khi triển khai vào môi trường chính thức.

Tổng kết

Mỗi cấp độ kiểm thử sẽ có những đặc điểm riêng biệt về đối tượng kiểm thử, mục tiêu kiểm thử, tài liệu đầu vào, lỗi phát hiện, cách tiếp cận và trách nhiệm thực hiện. Bảng dưới đây sẽ cung cấp cho bạn cái nhìn tổng quan về những đặc điểm này ở từng cấp độ kiểm thử.

Bảng so sánh đặc điểm của từng cấp độ

Đó là tất cả các cấp độ kiểm thử trong bài viết này. Hy vọng rằng bài viết đã giúp bạn hiểu rõ hơn về từng cấp độ kiểm thử. Cảm ơn bạn đã dành thời gian đọc!

Thanks for readings

Tài liệu tham khảo

  • ISTQB Certified Tester Foundation Level Syllabus.