1. Lời mở đầu và vai trò định hình phạm vi của Test Types trong kiểm thử phần mềm:

Trong quy trình phát triển và kiểm định chất lượng phần mềm, nếu như Testing Levels (Các cấp độ kiểm thử như Unit, Integration, System, Acceptance) giải quyết câu hỏi kiểm thử được thực hiện ở tầng kiến trúc nào, thì Test Types (Các loại kiểm thử) lại giải quyết câu hỏi kiểm thử về mặt nội dung gì, khía cạnh nào của sản phẩm. Việc phân chia các loại kiểm thử giúp đội ngũ kỹ sư kiểm thử có cái nhìn đa chiều, toàn diện, không bỏ sót bất kỳ góc khuất kỹ thuật hay trải nghiệm nghiệp vụ nào của hệ thống trước khi đưa ra thị trường.

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

Functional Testing (Kiểm thử chức năng) là loại kiểm thử cốt lõi và chiếm tỷ trọng lớn nhất trong hầu hết các dự án phần mềm truyền thống lẫn hiện đại.

  • Bản chất và mục tiêu: Loại kiểm thử này tập trung hoàn toàn vào việc xác thực xem các tính năng của ứng dụng có hoạt động đúng chính xác theo các yêu cầu nghiệp vụ và tài liệu đặc tả kỹ thuật hay không. Nó trả lời cho câu hỏi thực tế: “Hệ thống đang thực hiện những tính năng gì và các tính năng đó có chạy đúng ý đồ thiết kế không?”.

  • Các hình thức triển khai phổ biến:

    • Kiểm thử hộp đen (Black-box Functional Testing): Kiểm thử viên không cần biết cấu trúc mã nguồn bên trong, chỉ tập trung vào việc nhập dữ liệu đầu vào và kiểm tra kết quả đầu ra so với tài liệu yêu cầu.

    • Kiểm thử nghiệp vụ người dùng (Business Process Testing): Đảm bảo các luồng nghiệp vụ phức tạp từ khâu đăng nhập, chọn sản phẩm, thêm vào giỏ hàng cho đến thanh toán trực tuyến diễn ra mượt mà, không bị đứt gãy giữa chừng.

3. Non-Functional Testing (Kiểm thử phi chức năng) :

Nếu Functional Testing kiểm tra xem phần mềm làm được những tính năng gì, thì Non-Functional Testing (Kiểm thử phi chức năng) lại kiểm tra xem phần mềm làm tốt đến mức độ nào dưới các góc độ vận hành, hiệu năng và bảo mật.

  • Performance Testing (Kiểm thử hiệu năng): Đo lường tốc độ phản hồi, khả năng xử lý và tính ổn định của hệ thống dưới các điều kiện tải khác nhau:

    • Load Testing (Kiểm thử tải): Đánh giá hành vi của hệ thống khi có lượng người dùng truy cập đồng thời ở mức dự kiến.

    • Stress Testing (Kiểm thử sức chịu tải): Đẩy hệ thống vượt quá giới hạn thiết kế để tìm ra điểm gãy (breakpoint) và cách hệ thống phục hồi sự cố.

  • Security Testing (Kiểm thử bảo mật): Rà soát các lỗ hổng tiềm ẩn trong mã nguồn hoặc cấu hình hệ thống nhằm ngăn chặn các nguy cơ tấn công mạng độc hại như SQL Injection, Cross-Site Scripting (XSS), hoặc tình trạng rò rỉ cơ sở dữ liệu người dùng nhạy cảm.

  • Usability Testing (Kiểm thử khả năng sử dụng): Đánh giá mức độ thân thiện của giao diện, tính trực quan của các nút điều hướng và trải nghiệm người dùng (UX) tổng thể.

  • Compatibility Testing (Kiểm thử tính tương thích): Kiểm tra xem ứng dụng có hoạt động đồng bộ và mượt mà trên nhiều nền tảng khác nhau hay không (các trình duyệt web khác nhau như Chrome, Safari, Firefox; các hệ điều hành di động như Android, iOS).

4. Structural Testing & Change-related Testing (Kiểm thử cấu trúc hộp trắng và kiểm thử liên quan đến thay đổi)

Bên cạnh kiểm thử chức năng và phi chức năng, hệ thống kiểm thử chuyên nghiệp còn đòi hỏi các hình thức chuyên sâu gắn liền với cấu trúc mã nguồn và chu kỳ thay đổi của dự án:

  • White-box Testing (Kiểm thử cấu trúc / Hộp trắng): Loại kiểm thử đòi hỏi người thực hiện phải có chuyên môn lập trình, thấu hiểu cấu trúc bên trong của mã nguồn để kiểm tra các đường đi logic (path coverage), điều kiện rẽ nhánh (branch coverage) và độ bao phủ câu lệnh.

  • Regression Testing (Kiểm thử hồi quy): Đây là hoạt động kiểm thử cực kỳ quan trọng, được thực hiện lặp đi lặp lại mỗi khi hệ thống có đoạn code mới được thêm vào hoặc một lỗi cũ vừa được vá. Mục đích là bảo đảm những thay đổi mới này không vô tình làm hỏng các tính năng cũ đang hoạt động ổn định trước đó.

  • Sanity Testing và Smoke Testing: Các bài kiểm tra nhanh gọn, mang tính chất “khám sức khỏe sơ bộ” nhằm xác định xem một bản build mới của phần mềm có đủ độ ổn định tối thiểu hay không trước khi giao cho đội ngũ kiểm thử sâu.

Bảng tóm tắt nhanh Test Types

Nhóm chính Các loại cụ thể Mục đích chính
1. Functional (Chức năng) Unit, Integration, System, UAT Kiểm tra xem tính năng có chạy đúng như yêu cầu nghiệp vụ không.
2. Non-functional (Phi chức năng) Performance, Security, Usability, Compatibility Kiểm tra tốc độ, bảo mật, giao diện và độ mượt mà của hệ thống.

3.Structural Testing & Change-related Testing

Smoke, Sanity, Regression Kiểm tra tính ổn định và an toàn của hệ thống sau khi chỉnh sửa/cập nhật code.

5. Mối quan hệ tương hỗ giữa các loại kiểm thử :

  • Sự bổ trợ toàn diện: Không một Test Type đơn lẻ nào có thể đảm bảo 100% chất lượng sản phẩm. Một phần mềm xuất sắc đòi hỏi sự kết hợp đồng bộ: Functional Testing giữ cho tính năng đúng chuẩn, Non-Functional Testing bảo đảm hệ thống chạy nhanh, an toàn và mượt mà, trong khi Regression Testing giữ cho sản phẩm không bị lỗi vặt khi nâng cấp.

  • Bài học thực tế: Quá trình tìm hiểu sâu về các loại kiểm thử giúp em nhận thức rõ ràng rằng công việc của một kỹ sư kiểm thử không chỉ là bấm máy tính tìm lỗi một cách máy móc, mà là việc áp dụng linh hoạt các phương pháp kiểm định khoa học phù hợp với từng giai đoạn và đặc thù của dự án công nghệ.

Bài viết khác

JWT Token Theft & Payload Tampering

Ở bài JWT & Token Authentication, ta đã biết JWT được sử dụng để xác thực user sau khi đăng nhập: Login ↓ Server xác thực username/password ↓ Access Token + Refresh Token ↓ Client lưu token ↓ Gửi Access Token trong mỗi request Ví dụ: GET /api/profile Authorization: Bearer <access-token> Server nhận token, verify […]

PHP & Laravel Fundamentals

1. PHP là gì? PHP là ngôn ngữ lập trình phía server, thường dùng để xây dựng backend và web application. Flow cơ bản: Client ↓ HTTP Request PHP / Laravel ↓ Business Logic ↓ Database ↓ HTTP Response Laravel được xây dựng trên PHP, nên muốn học Laravel cần nắm những nền tảng PHP […]

JWT & Token Authentication

1. Token Authentication là gì? Token Authentication là cơ chế xác thực trong đó Client đăng nhập và nhận một Token từ Server. Sau đó, Client sử dụng Token này trong các request tiếp theo để chứng minh rằng request đã được xác thực. Thay vì gửi lại username/password cho mỗi request: Login ↓ Access […]

Series 1 — Web Fundamentals: DNS – Browser

Series 1 — Web Fundamentals   Internet → HTTP/HTTPS → DNS → Browser   Bài 3 :DNS & Domain   DNS & Domain – Làm thế nào Domain được chuyển thành IP? Ở hai bài trước, chúng ta đã tìm hiểu: Internet là gì? Client và Server là gì? IP Address là gì? HTTP/HTTPS dùng […]

Authentication & Authorization

1. Authentication & Authorization là gì? Hai khái niệm này thường đi cùng nhau nhưng khác nhau hoàn toàn. Authentication – Xác thực trả lời cho câu hỏi bạn là ai Ví dụ: Đăng nhập bằng: – Username + Password – Access Token – JWT – OAuth 2.0 Server xác định danh tính của User. […]

API Error Handling – Xử lý lỗi trong API

1. API Error Handling là gì? API Error Handling là cách API phát hiện, xử lý và trả về lỗi một cách nhất quán khi request không thể thực hiện thành công. Ví dụ: Client ↓ API ↓ Có lỗi? ├── Không → Success Response └── Có → Error Handling → Error Response mục tiêu […]

Leave a Reply

Your email address will not be published. Required fields are marked *