1. Giới thiệu

Backend là thành phần quan trọng trong hệ thống phần mềm, đảm nhiệm các chức năng như xử lý logic, lưu trữ và truy xuất dữ liệu, đảm bảo tính bảo mật và hiệu suất. Việc kiểm tra backend giúp phát hiện lỗi, tối ưu hiệu suất và đảm bảo hệ thống hoạt động chính xác.

Trong bài viết này, chúng ta sẽ đi sâu vào từng phương pháp kiểm tra backend, bao gồm kiểm tra API, database, hiệu suất và bảo mật.

2. Các loại kiểm tra backend

2.1. Kiểm tra API (API Testing)

API (Application Programming Interface) là cầu nối giữa frontend và backend, do đó kiểm tra API là bước quan trọng để đảm bảo dữ liệu được xử lý và truyền tải đúng cách.

a) Các loại kiểm tra API

  • Kiểm tra chức năng (Functional Testing): Đảm bảo API hoạt động đúng theo yêu cầu.
  • Kiểm tra xử lý lỗi (Negative Testing): Kiểm tra API có phản hồi chính xác khi gặp dữ liệu sai hoặc request không hợp lệ.
  • Kiểm tra hiệu suất (Performance Testing): Đánh giá tốc độ và khả năng xử lý số lượng lớn request.
  • Kiểm tra bảo mật (Security Testing): Đảm bảo API không có lỗ hổng bảo mật.

b) Cách thực hiện kiểm tra API

  1. Sử dụng Postman để gửi request GET, POST, PUT, DELETE và kiểm tra response.
  2. Kiểm tra mã phản hồi (Status Code) để đảm bảo API hoạt động đúng (200 OK, 400 Bad Request, 500 Internal Server Error...).
  3. Xác thực dữ liệu trả về: So sánh response với dữ liệu mong đợi.
  4. Thực hiện kiểm thử tải (Load Testing) bằng JMeter hoặc K6.
  5. Kiểm tra bảo mật API bằng cách thử SQL Injection, kiểm tra lỗi CORS, xác thực OAuth, JWT.

2.2. Kiểm tra Database (Database Testing)

Dữ liệu là thành phần cốt lõi của backend, do đó kiểm tra database giúp đảm bảo tính toàn vẹn và hiệu suất của hệ thống.

a) Các loại kiểm tra database

  • Kiểm tra tính toàn vẹn dữ liệu: Đảm bảo dữ liệu không bị mất, trùng lặp hoặc sai lệch.
  • Kiểm tra truy vấn SQL: Đánh giá hiệu suất của các câu truy vấn, tối ưu index.
  • Kiểm tra ràng buộc dữ liệu: Đảm bảo khóa chính, khóa ngoại hoạt động đúng.
  • Kiểm tra bảo mật: Kiểm tra lỗ hổng SQL Injection.
  • Kiểm tra đồng nhất dữ liệu: Đảm bảo dữ liệu trên nhiều bảng hoặc hệ thống không bị sai lệch.
  • Kiểm tra tính logic của dữ liệu: Đảm bảo dữ liệu tuân theo quy tắc nghiệp vụ.
  • Phát hiện bottleneck (nút thắt hiệu suất): Kiểm tra các truy vấn chậm, deadlocks, và tối ưu hoá cấu trúc database.

b) Cách thực hiện kiểm tra database

  1. Viết test case kiểm tra dữ liệu khi thêm/sửa/xóa để đảm bảo dữ liệu thay đổi đúng như mong đợi.
  2. Sử dụng SQL EXPLAIN PLAN để phân tích hiệu suất truy vấn và tối ưu hóa câu lệnh SQL.
  3. Tạo dữ liệu kiểm thử (Test Data) với các giá trị hợp lệ, không hợp lệ và dữ liệu biên để kiểm tra hệ thống phản hồi như thế nào.
  4. Kiểm tra ràng buộc khóa chính (Primary Key), khóa ngoại (Foreign Key), Unique Constraints để đảm bảo dữ liệu không bị trùng lặp hoặc mất tính liên kết.
  5. Kiểm tra sự nhất quán của dữ liệu giữa nhiều bảng bằng cách so sánh dữ liệu được liên kết với nhau.
  6. Thực hiện kiểm thử tải (Load Testing) cho database bằng JMeter để xem khả năng xử lý số lượng lớn truy vấn.
  7. Kiểm tra bảo mật database bằng cách thử SQL Injection, kiểm tra quyền truy cập, bảo vệ dữ liệu nhạy cảm.

Phát hiện bottleneck trong database:

  • Dùng pg_stat_statements (PostgreSQL) hoặc SHOW PROCESSLIST (MySQL) để tìm các truy vấn chậm.
  • Kiểm tra index: Dùng EXPLAIN ANALYZE để xem truy vấn có sử dụng index hay không.
  • Tối ưu hóa connection pool để tránh quá tải khi có quá nhiều kết nối cùng lúc.

💡 Ví dụ: Kiểm tra hiệu suất truy vấn SQL:

EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';

💡 Ví dụ: Kiểm tra tính nhất quán của dữ liệu:

SELECT COUNT(*) FROM orders WHERE user_id NOT IN (SELECT id FROM users);

💡 Ví dụ: Kiểm tra các truy vấn chậm trong MySQL:

SHOW PROCESSLIST;

2.3. Kiểm tra hiệu suất (Performance Testing)

Kiểm tra hiệu suất giúp xác định backend có thể xử lý số lượng lớn request mà không bị chậm hoặc crash.

a) Các loại kiểm tra hiệu suất

  • Load Testing: Kiểm tra hệ thống dưới tải trọng cao.
  • Stress Testing: Đẩy hệ thống đến giới hạn để tìm điểm yếu.
  • Scalability Testing: Đánh giá khả năng mở rộng của backend.
  • Phát hiện bottleneck (nút thắt hiệu suất): Xác định thành phần gây chậm hệ thống như CPU, RAM, I/O, database, hoặc mạng.

b) Cách thực hiện kiểm tra hiệu suất

  1. Xác định số lượng request trung bình và tải cao nhất.
  2. Dùng JMeter hoặc K6 để mô phỏng nhiều người dùng truy cập cùng lúc.
  3. Đánh giá thời gian phản hồi, tỷ lệ lỗi, CPU/RAM sử dụng.

Tối ưu backend nếu có bottleneck:

  • Dùng cache như Redis để giảm tải database.
  • Dùng load balancer để phân phối request.
  • Sử dụng message queue (RabbitMQ, Kafka) để xử lý các tác vụ tốn thời gian.
  • Kiểm tra logging quá tải: Hệ thống ghi log quá nhiều có thể làm chậm API.

💡 Ví dụ: Chạy Load Test với K6

import http from 'k6/http';
import { check, sleep } from 'k6';

export default function () {
  let res = http.get('https://your-api.com');
  check(res, { 'status is 200': (r) => r.status === 200 });
  sleep(1);
}

4. Kết luận

Kiểm tra backend là bước quan trọng trong phát triển phần mềm, giúp phát hiện lỗi, tối ưu hiệu suất và đảm bảo bảo mật. Kết hợp kiểm thử thủ công và tự động giúp backend hoạt động ổn định hơn.

Bài viết này chỉ mang tính chất tham khảo.  Nó sẽ chỉ cho bạn các nguồn lực và tài liệu tham khảo để giúp bạn có thể hình dung được những phần cần kiểm tra của Backend.