Tự động hóa kiểm thử cấu hình Wi-Fi trên ESP32: 5 phương thức và những khác biệt thực tế

30 tháng 9, 2026·6 phút đọc

Bài viết trình bày cách xây dựng hệ thống kiểm thử tự động cho quy trình cấu hình Wi-Fi trên vi điều khiển ESP32-C6, bao gồm cả năm phương thức phổ biến: Bluetooth, Soft AP, captive portal, SmartConfig và WPS. Kết quả đo đạc cho thấy thời gian và độ ổn định khác nhau rõ rệt giữa các phương thức, đặc biệt là captive portal và SmartConfig.

Tự động hóa kiểm thử cấu hình Wi-Fi trên ESP32: 5 phương thức và những khác biệt thực tế

Wi-Fi là thứ đầu tiên người dùng phải thiết lập trên một sản phẩm IoT mới. Nếu bước này thất bại, mọi tính năng phía sau đều trở nên vô nghĩa. Vì vậy, kiểm thử quy trình cấu hình Wi-Fi cần được tự động hóa nghiêm túc, chạy lại trên mọi thay đổi của firmware.

Bài toán đặt ra

Với một sản phẩm kết nối Wi-Fi, việc đầu tiên khách hàng làm là hoàn tất cấu hình mạng. Cơ chế này phải hoạt động ổn định mọi lúc, bất kể những phần khác của sản phẩm có thay đổi ra sao.

Bài viết gốc từ Groundrun trình bày cách đưa toàn bộ quy trình đó vào hệ thống kiểm thử tự động, sử dụng ESP32-C6 — dòng chip Wi-Fi 6 giá rẻ nhưng phổ biến trong các sản phẩm IoT hiện nay.

Kiểm thử cấu hình Wi-Fi trên ESP32Kiểm thử cấu hình Wi-Fi trên ESP32

Chuẩn bị phần cứng

Cách tiếp cận là hardware-in-the-loop — đưa phần cứng thật vào vòng kiểm thử thay vì mô phỏng. Thiết lập gồm hai bước đơn giản:

  • Kết nối board ESP32-C6 devboard của Espressif với rig Groundrun qua USB.
  • Kết nối một điện thoại Android với cùng rig đó qua USB.

Chỉ vậy là đủ. Điện thoại đóng vai trò thiết bị của người dùng cuối, còn board là sản phẩm cần kiểm thử.

Năm phương thức cấu hình Wi-Fi

Họ ESP32 hỗ trợ nhiều cách khác nhau để truyền thông tin mạng vào board. Mục tiêu của bài kiểm thử là bao phủ tất cả:

  • Bluetooth: điện thoại ghép đôi với board qua BLE rồi gửi trực tiếp tên mạng và mật khẩu.
  • Soft AP: board tự phát một mạng Wi-Fi tạm thời, điện thoại kết nối vào đó để gửi thông tin xác thực thật.
  • Captive portal: cũng dùng mạng Soft AP, nhưng điện thoại được chuyển hướng thẳng tới một trang web nhập thông tin — giống trang đăng nhập Wi-Fi ở khách sạn hay sân bay. Không cần ứng dụng riêng.
  • SmartConfig: kỹ thuật riêng của Espressif, chạy dưới dạng ESPTouch v2 và được tích hợp sẵn trong SDK ESP-IDF. Điện thoại vẫn kết nối với mạng nhà và phát thông tin xác thực dưới dạng chuỗi gói tin mã hóa; board chưa vào mạng nào sẽ bắt tín hiệu này bằng chế độ promiscuous mode.
  • WPS: chuẩn công nghiệp của Wi-Fi Alliance. Chỉ cần nhấn nút trên router, board sẽ tự thương lượng thông tin xác thực trực tiếp với router.

Ứng dụng điện thoại và firmware

Với một sản phẩm đã có sẵn, ứng dụng điện thoại và firmware thường đã hoàn thiện. Trong trường hợp này, cả hai đều được tạo mới để phục vụ minh họa.

Ứng dụng Android chỉ cần gửi đúng byte vào đúng thời điểm cho mỗi phương thức — không cần đẹp. Firmware cũng được sinh ra để triển khai từng cơ chế cấu hình, trong đó mã WPS đọc thông tin xác thực đã lưu trong NVS trước khi khởi động driver, rồi quyết định gọi esp_wifi_connect() hay chuyển sang start_wps().

Điểm đáng chú ý: công cụ lập trình AI có quyền truy cập trực tiếp vào rig và phần cứng, nên có thể tự làm việc độc lập khi được giao mục tiêu và điều kiện dừng rõ ràng.

Luồng người dùng và kiểm thử hồi quy

Các luồng người dùng ở đây rất đơn giản: mở ứng dụng, nhập mật khẩu Wi-Fi, board tham gia mạng. Nhưng chi tiết khác nhau theo từng phương thức, nên mỗi phương thức có một luồng riêng được mô tả từng bước trong flow builder của Groundrun.

Luồng SmartConfig trong flow builderLuồng SmartConfig trong flow builder

Sau khi thiết lập xong, các luồng có thể chạy tương tác hoặc chạy như kiểm thử hồi quy CI. Bộ kiểm thử này chạy trên mọi thay đổi của hệ thống, bên cạnh các kịch bản cập nhật OTA trong cùng pipeline.

Thời gian: đâu là phương thức nhanh nhất?

Mỗi lần chạy CI được đo thời gian tự động, tách riêng từng bước: nạp firmware, cài và khởi chạy ứng dụng, chạy cơ chế cấu hình, và chờ board xác nhận đã tham gia mạng.

Kết quả đáng chú ý:

  • Nạp và khởi động tốn khoảng 22–24 giây ở mọi phương thức, trừ SmartConfig lên tới 37 giây vì phải nạp thêm một board thứ hai để theo dõi tín hiệu phát.
  • Thời gian riêng của cơ chế khác biệt rất lớn: Soft AP mất gần gấp 13 lần WPS, do có hộp thoại hệ thống và luồng nhiều bước.
  • SmartConfig và WPS đều dưới 15 giây, nhanh hơn hẳn Bluetooth, Soft AP và captive portal.

Thời gian trung bình theo từng phương thứcThời gian trung bình theo từng phương thức

Những điểm bất ngờ khi kiểm thử song song

Chạy cả năm phương thức cạnh nhau làm lộ ra nhiều khác biệt thực tế mà tài liệu ít khi đề cập.

  • Captive portal là phương thức khó nhằn nhất. Trang đăng nhập trên điện thoại chỉ mở trong vài giây, và chính hệ điều hành quyết định thời điểm đóng. Toàn bộ biểu mẫu phải được điền và gửi trong khoảng thời gian đó, nếu không thông tin sẽ không bao giờ tới được board.
  • Bluetooth và Soft AP đều kích hoạt một pop-up hệ thống trước khi điện thoại tham gia mạng của board. Pop-up này có thể mất vài giây mới hiện ra trong lúc điện thoại quét thiết bị.
  • WPS không cần ứng dụng. Sau khi nhấn nút, router và board tự trao đổi thông tin xác thực.
  • SmartConfig chạy chậm hơn rõ rệt so với bốn phương thức còn lại, đôi khi chậm hơn rất nhiều, và hiếm khi thất bại mà không có nguyên nhân truy vết được.

Để kiểm thử WPS, nhóm phải tự đóng vai router: rig dựng một mạng Wi-Fi tạm thời, cố định ở băng tần 2.4 GHz vì radio của board không hỗ trợ 5 GHz, rồi gỡ bỏ sau mỗi lần chạy.

Với bất kỳ sản phẩm IoT nào có Wi-Fi, cấu hình mạng là bước đầu tiên người dùng thực hiện — nên nó phải là cơ chế vững chắc nhất trong toàn hệ thống.

Kết luận

Việc đưa phần cứng thật vào vòng kiểm thử tự động giúp bao phủ cả năm phương thức cấu hình Wi-Fi trên ESP32, đo được thời gian từng bước và phát hiện những điểm yếu khó thấy khi kiểm thử thủ công. Đối với các đội phát triển sản phẩm IoT, đây là hướng đi đáng cân nhắc để đảm bảo trải nghiệm thiết lập mạng luôn ổn định trước khi sản phẩm tới tay người dùng.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗