Nếu bạn đã từng đưa ra bản sửa lỗi vào hôm trước, chỉ để nhận được báo cáo lỗi năm phút sau đó… Bạn biết nỗi đau của việc thử nghiệm trên thiết bị di động.
Giữa các thử nghiệm UI không ổn định, sự chậm trễ của trình giả lập và sự kỳ lạ của từng thiết bị, việc thử nghiệm thường giống như phỏng đoán.
Chúng tôi muốn thứ gì đó sạch hơn và nhận thấy rằng thử nghiệm di động dựa trên API sẽ thay đổi cuộc chơi.
Chu kỳ đau đớn của thử nghiệm di động
- Trình giả lập bị sập vào thời điểm tệ nhất
- Các bài kiểm tra đạt yêu cầu cục bộ nhưng không đạt yêu cầu CI
- Viết các tập lệnh kiểm tra giao diện người dùng dễ vỡ, hỏng khi thực hiện mọi thay đổi giao diện người dùng
- Mất nhiều giờ chờ đợi để hoàn tất quá trình xây dựng thiết bị. Bạn có thấy quen không?
Chúng tôi cho rằng phải có cách tốt hơn - và đúng là như vậy.
Kiểm thử di động theo API là gì?
Thay vì chỉ dựa vào luồng UI, chúng tôi bắt đầu kích hoạt hành vi ứng dụng di động thông qua API trong quá trình chạy CI. Điều này mang lại cho chúng tôi:
- Kiểm soát nhiều hơn việc thực hiện thử nghiệm
- Khả năng bỏ qua UI khi không cần thiết
- Tự động hóa thực sự trên nhiều thiết bị, ngay cả khi không có UI
Thực ra, bạn không cần phải "nhìn thấy" ứng dụng để biết nó có hoạt động hay không - bạn chỉ cần kiểm tra đúng đường dẫn, nhanh chóng.
Chúng tôi đã đưa nó vào CI/CD như thế nào?
- Chúng tôi đã tích hợp một lớp thử nghiệm API nhẹ vào quy trình hiện có của mình.
- Chúng tôi đã sử dụng một công cụ cho phép chúng tôi:
- Chạy thử nghiệm trên thiết bị thực, từ xa
- Kích hoạt quy trình làm việc từ GitHub Actions
- Nhận kết quả qua webhook
- Bỏ qua việc duy trì các tập lệnh giả lập
Nó dễ dàng được đưa vào đường ống của chúng tôi và chúng tôi không bao giờ phải hối hận nữa.
Tại sao cách tiếp cận này hiệu quả?
- Ít bong tróc hơn
- Phản hồi nhanh hơn
- Hoạt động trên nhiều loại thiết bị
- Dễ dàng mở rộng quy mô
Quan trọng nhất là nó cho phép chúng ta di chuyển nhanh mà không làm hỏng đồ vật.
Những gì chúng tôi đã sử dụng
Chúng tôi đã thử một vài thứ, nhưng cuối cùng đã sử dụng các công cụ như NativeBridge (rẻ nhất), Appetize, BrowserStack và Lambda giúp cho phần tích hợp API trở nên trơn tru. Không cần cài đặt SDK, không cần thiết lập nặng nề — chỉ cần chạy thử nghiệm sạch sẽ được API kích hoạt.
Chúng tôi không có kế hoạch thay đổi toàn bộ chiến lược thử nghiệm, nhưng điều này diễn ra một cách tự nhiên khi chúng tôi thấy nó ổn định và có khả năng mở rộng như thế nào.
Suy nghĩ cuối cùng
Bạn không cần phải viết lại toàn bộ bộ kiểm thử của mình.
Chỉ cần tìm những nơi mà các kiểm thử theo API có thể thay thế các kiểm thử thủ công — và bắt đầu từ quy mô nhỏ. Không phải là chạy theo xu hướng — mà là không làm kiệt sức nhóm phát triển của bạn khi duy trì mã kiểm thử không ổn định.