0
0
Lập trình
Admin Team
Admin Teamtechmely

Tự động hóa kiểm thử với Keploy: Giải pháp hiệu quả

Đăng vào 2 tháng trước

• 9 phút đọc

Giới thiệu

Khi tôi lần đầu tiên bắt đầu học về APIs và các thao tác CRUD, tôi đã thử nghiệm mọi thứ một cách thủ công. Tôi chạy ứng dụng, thực hiện hành động trong giao diện người dùng hoặc gọi một API, và sau đó kiểm tra xem nó hoạt động đúng hay không. Thời điểm đó, tôi thậm chí không biết kiểm thử đơn vị hay kiểm thử API là gì.

Sau này, tôi nhận ra rằng việc viết các trường hợp kiểm thử là rất quan trọng. Chúng giúp phát hiện lỗi sớm, giảm nguy cơ hồi quy, và tăng cường sự tự tin khi thực hiện thay đổi. Tuy nhiên, có một vấn đề lớn: việc viết kiểm thử cảm thấy lặp đi lặp lại và tốn thời gian. Thay vì tập trung vào việc xây dựng tính năng, tôi đã dành hàng giờ để viết mã mẫu cho các kiểm thử.

Đó là khi tôi tìm thấy Keploy, một công cụ tự động ghi lại các cuộc gọi API và tạo ra các trường hợp kiểm thử và dữ liệu giả lập. Điều này có nghĩa là bạn có thể kiểm thử ứng dụng của mình mà không cần viết các kịch bản kiểm thử truyền thống.

Tại sao kiểm thử tự động lại quan trọng

Trước khi đi vào mã, hãy cùng điểm qua lý do tại sao kiểm thử tự động — dù là kiểm thử đơn vị hay kiểm thử API — lại quan trọng:

  • Phát hiện lỗi sớm – Vấn đề được phát hiện trước khi triển khai.
  • Ngăn chặn hồi quy – Đảm bảo rằng những thay đổi mới không làm hỏng các tính năng hiện có.
  • Tăng cường sự tự tin – Các lập trình viên có thể tái cấu trúc mã mà không lo lắng.
  • Tiết kiệm thời gian trong dài hạn – Kiểm thử thủ công trở nên không cần thiết cho các kiểm tra định kỳ.

Thách thức duy nhất? Việc viết và duy trì các kiểm thử thủ công là rất tẻ nhạt. Đây là nơi mà Keploy xuất hiện.

Keploy là gì?

Keploy là một bộ công cụ kiểm thử mã nguồn mở được thiết kế chủ yếu cho kiểm thử API. Nó giúp bạn tự động hóa việc xác thực mà không cần viết các kịch bản kiểm thử truyền thống:

  • Ghi lại các cuộc gọi API và phản hồi trong khi bạn sử dụng ứng dụng của mình.
  • Tự động tạo ra các trường hợp kiểm thử ở định dạng YAML.
  • Tạo ra các mô phỏng cho các phụ thuộc bên ngoài (cơ sở dữ liệu, APIs bên thứ ba).
  • Cung cấp một chế độ kiểm thử đơn giản để phát lại các yêu cầu và xác thực phản hồi.

Hãy nghĩ về Keploy như một công cụ kiểm thử ghi và phát lại. Bạn tương tác với ứng dụng của mình một lần, và Keploy tạo ra các kiểm thử cấp API có thể tái sử dụng cho bạn.

Bước 1: Xây dựng ứng dụng To-Do List

Trước khi chúng ta đi sâu vào Keploy, hãy xây dựng một ứng dụng To-Do List đơn giản. Ứng dụng này sẽ là nền tảng mà chúng ta sẽ tạo ra các trường hợp kiểm thử tự động sau này.

Chúng ta sẽ sử dụng:

  • Flask → Một framework web Python nhẹ.
  • SQLite → Một cơ sở dữ liệu đơn giản để lưu trữ các tác vụ.
  • Flask-SQLAlchemy → ORM (Object Relational Mapper) để quản lý các thao tác cơ sở dữ liệu.
  • Jinja2 Templates → Để hiển thị các trang HTML.

Ứng dụng này là một ví dụ điển hình về CRUD (Tạo, Đọc, Cập nhật, Xóa), làm cho nó trở thành ứng viên hoàn hảo cho việc học kiểm thử tự động.

Các tính năng

Ứng dụng To-Do List của chúng ta sẽ hỗ trợ các tính năng sau:

  • Thêm tác vụ: Nhập một tác vụ và lưu vào cơ sở dữ liệu.
  • Xem tác vụ: Xem tất cả các tác vụ cùng với thời gian tạo.
  • Cập nhật tác vụ: Chỉnh sửa nội dung của một tác vụ hiện có.
  • Xóa tác vụ: Loại bỏ các tác vụ không còn cần thiết.
  • API endpoints: Truy cập cùng một chức năng một cách lập trình với REST APIs.

Bằng cách này, chúng ta sẽ có cả giao diện web và một tập hợp các APIs để tương tác.

Cấu trúc dự án

Copy
D:.
├─ static
│  └─ css
├─ templates
├─ tests
└─ app.py
  • app.py – Ứng dụng Flask chính chứa:
    • Mô hình cơ sở dữ liệu (Todo)
    • Các tuyến đường UI (cho các trang web)
    • Các tuyến đường API (cho REST APIs)
  • templates/ – Các mẫu HTML được sử dụng để hiển thị các trang:
    • base.html → Bố cục chia sẻ cho tất cả các trang.
    • index.html → Trang chính hiển thị danh sách tác vụ.
    • update.html → Trang cho việc cập nhật một tác vụ hiện có.
  • static/css/ – CSS tùy chỉnh để định dạng giao diện người dùng.
  • tests/ – Thư mục placeholder nơi các trường hợp kiểm thử tự động sẽ được tạo ra sau này bằng Keploy.

Mô hình cơ sở dữ liệu

Trong app.py, chúng ta sẽ định nghĩa một mô hình Todo đơn giản bằng SQLAlchemy.

  • id: Định danh duy nhất cho mỗi tác vụ.
  • content: Mô tả thực tế của tác vụ.
  • date_created: Thời gian thêm tác vụ.

Giao diện danh sách tác vụ

Khi bạn bắt đầu ứng dụng và thêm một số tác vụ, trang chính (index.html) sẽ hiển thị chúng trong một bảng gọn gàng:

  • Cột 1 → Mô tả tác vụ.
  • Cột 2 → Ngày tạo.
  • Cột 3 → Các hành động Cập nhật/Xóa.

Ở dưới cùng, có một biểu mẫu nhập liệu để nhanh chóng thêm các tác vụ mới.

✅ Tại thời điểm này, chúng ta đã xây dựng một ứng dụng Flask To-Do List hoàn chỉnh với cả UI và APIs. Điều này sẽ phục vụ như một dự án cơ sở cho việc tích hợp Keploy và tự động tạo các trường hợp kiểm thử.

Bước 2: Chạy ứng dụng

Bạn có thể sao chép dự án từ [To-Do-List-Flask] và theo dõi README để khởi tạo và chạy ứng dụng.

Cài đặt virtualenv:

Copy
$ pip install virtualenv

Mở một terminal trong thư mục gốc của dự án và chạy:

Copy
$ python -m venv .venv

Sau đó chạy lệnh:

Copy
$ .venv\Scripts\activate

Tiếp theo cài đặt các phụ thuộc:

Copy
$ (.venv) pip install -r requirements.txt

Cuối cùng khởi động máy chủ web:

Copy
$ (env) python app.py

Máy chủ này sẽ bắt đầu trên http://127.0.0.1:8080/ theo mặc định.

Bước 3: Cài đặt Keploy

Nếu bạn đang sử dụng Windows, bạn sẽ cần WSL (Windows Subsystem for Linux).

Khởi tạo wsl:

Copy
C:\Users\Dell> wsl
unix@DESKTOP:/mnt/c/Users/Dell$ 

Cài đặt lệnh:

Copy
$ curl --silent -O -L https://keploy.io/install.sh && source install.sh

Kiểm tra cài đặt:

Copy
$ keploy -v 

👉 Đối với Linux/macOS, theo dõi hướng dẫn cài đặt Keploy.

Bước 4: Ghi lại với Keploy

Bây giờ đến phần thú vị. Keploy có chế độ ghi lại lắng nghe các cuộc gọi API trong khi bạn sử dụng ứng dụng của mình.

Chạy:

Copy
keploy record -c "python app.py"

Bây giờ, thực hiện một số hành động qua cả giao diện người dùng và APIs.

Các hành động UI được ghi lại

  • Tạo một tác vụ
  • Xem các tác vụ
  • Cập nhật một tác vụ
  • Xóa một tác vụ

Các hành động API được ghi lại

  • Tạo một tác vụ
Copy
curl -X POST http://localhost:8080/api/tasks \
  -H "Content-Type: application/json" \
  -d '{"content":"blog demo task"}'
  • Cập nhật một tác vụ
Copy
curl -X PUT http://localhost:8080/api/tasks/1 \
  -H "Content-Type: application/json" \
  -d '{"content":"updated task"}'
  • Xem các tác vụ
Copy
curl -X GET http://localhost:8080/api/task
  • Xóa một tác vụ
Copy
curl -X DELETE http://localhost:8080/api/tasks/1

Đầu ra terminal
Mỗi tương tác này được lưu trữ dưới dạng một trường hợp kiểm thử trong định dạng YAML bên trong thư mục keploy-tests/.

Bước 5: Chạy kiểm thử với Keploy

Khi các kiểm thử đã được ghi lại, bạn có thể chạy chúng bất cứ lúc nào với:

Copy
$ keploy test -c "python app.py"

Keploy sẽ:

  • Phát lại tất cả các yêu cầu đã ghi.
  • So sánh các phản hồi thực tế với các phản hồi đã ghi.
  • Tạo một báo cáo kiểm thử chi tiết.

Điều này đảm bảo rằng API của bạn hoạt động nhất quán theo thời gian.

Lợi ích của việc sử dụng Keploy

Việc áp dụng Keploy trong quy trình phát triển của bạn mang lại nhiều lợi ích:

  1. Tự động tạo kiểm thử

    • Không cần phải viết các trường hợp kiểm thử lặp đi lặp lại.
    • Keploy ghi lại lưu lượng API thực tế của bạn và tạo ra các trường hợp kiểm thử ở định dạng YAML.
  2. Giữ cho các kiểm thử luôn cập nhật

    • Bất cứ khi nào API của bạn thay đổi, chỉ cần ghi lại lại.
    • Các trường hợp kiểm thử phát triển cùng với ứng dụng của bạn, giảm thiểu công việc bảo trì.
  3. Dữ liệu giả lập cho các dịch vụ bên ngoài

    • Keploy tự động tạo ra các mô phỏng cho cơ sở dữ liệu, APIs bên thứ ba hoặc các phụ thuộc bên ngoài.
    • Điều này cho phép các kiểm thử chạy đáng tin cậy mà không phụ thuộc vào các hệ thống bên ngoài đang hoạt động.
  4. Không phụ thuộc vào ngôn ngữ & framework

    • Hoạt động với các framework backend phổ biến như Flask, Django, FastAPI, Spring Boot, Express.js và nhiều hơn nữa.
    • Đủ linh hoạt để tích hợp vào các công nghệ khác nhau.
  5. Bao phủ toàn diện

    • Ghi lại cả các hành động được điều khiển bởi UI và các yêu cầu API.
    • Cung cấp kiểm thử toàn diện mà không cần thiết lập thêm.
  6. Tích hợp CI/CD

    • Các kiểm thử được tạo ra có thể được chạy trong các pipeline.
    • Đảm bảo mỗi lần triển khai đều được xác thực với cùng mức độ nghiêm ngặt như môi trường địa phương của bạn.

Kết luận

Kiểm thử tự động là rất quan trọng trong việc xây dựng các ứng dụng mạnh mẽ, không có lỗi, nhưng việc viết và duy trì các trường hợp kiểm thử có thể cảm thấy lặp đi lặp lại và tốn thời gian. Đây là nơi Keploy thay đổi cuộc chơi.

Bằng cách tự động ghi lại các tương tác API thực tế và tạo ra các kiểm thử với dữ liệu giả lập, Keploy đảm bảo:

  • Các API của bạn hoạt động nhất quán.
  • Các kiểm thử phát triển tự nhiên cùng với ứng dụng của bạn.
  • Các chu kỳ phát triển trở nên nhanh hơn và đáng tin cậy hơn.

Trong bài viết này, chúng ta đã xây dựng một ứng dụng Flask To-Do List và thấy cách dễ dàng mà Keploy có thể ghi lại các tương tác, tạo ra các trường hợp kiểm thử API và xác thực các endpoints của chúng ta. Điều quan trọng cần rút ra là:

👉 Với Keploy, bạn chỉ cần ghi lại một lần và kiểm thử mãi mãi.

Nếu bạn đang làm việc với Flask, Django, FastAPI hoặc bất kỳ backend hiện đại nào, tôi khuyến khích bạn thử nghiệm Keploy. Đây là một công cụ tăng năng suất lớn và đảm bảo các ứng dụng của bạn vẫn đáng tin cậy khi chúng phát triển.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào