Kiểm thử nhiều kích thước màn hình và cửa sổ

Kiểm thử là một phần quan trọng trong quá trình phát triển ứng dụng. Bạn thường chạy ứng dụng trên một trình mô phỏng hoặc thiết bị để xác minh theo cách thủ công rằng mã của bạn hoạt động như mong đợi. Tuy nhiên, việc kiểm thử thủ công tốn nhiều thời gian, dễ gặp lỗi và thường không thể quản lý được đối với các ứng dụng chạy trên nhiều màn hình và thiết bị ở nhiều kích thước. Các vấn đề của việc kiểm thử thủ công thường là kết quả của việc sử dụng một thiết bị duy nhất cho hoạt động phát triển. Do đó, lỗi có thể không phát hiện được trên các thiết bị khác có hệ số hình dạng khác nhau.

Để xác định lỗi hồi quy trên nhiều kích thước cửa sổ và màn hình, hãy triển khai quy trình kiểm thử tự động để xác minh rằng hành vi và giao diện của ứng dụng nhất quán trên nhiều hệ số hình dạng. Các bài kiểm thử tự động sẽ sớm xác định được các vấn đề, giảm thiểu nguy cơ các vấn đề đó ảnh hưởng đến trải nghiệm người dùng.

Nội dung cần kiểm thử

Khi phát triển giao diện người dùng được thiết kế cho nhiều kích thước màn hình và cửa sổ, hãy đặc biệt chú ý đến 2 khía cạnh:

  1. Các thuộc tính hình ảnh của các thành phần và bố cục khác nhau như thế nào trên các cửa sổ có kích thước khác nhau
  2. Cách duy trì trạng thái khi thay đổi cấu hình

Thuộc tính hình ảnh

Cho dù có tuỳ chỉnh giao diện người dùng cho nhiều kích thước cửa sổ hay không, bạn cũng nên xác minh rằng các giao diện người dùng hiển thị chính xác. Hãy xét đến chiều rộng và chiều cao nhỏ gọn, trung bình và mở rộng. Xem phần Các lớp kích thước cửa sổ để biết các điểm ngắt được đề xuất.

Hình 1. Màn hình "Dành cho bạn" trong ứng dụng Now In Android ở nhiều kích thước cửa sổ

Ngoài ra, ứng dụng của bạn có thể sẽ không hiển thị một số thành phần trong hệ thống thiết kế như mong đợi khi các giới hạn về kích thước của các thành phần đó bị kéo giãn.

Nếu ứng dụng của bạn có bố cục thích ứng cho nhiều kích thước cửa sổ, thì bạn nên có các bài kiểm thử tự động để ngăn chặn sự hồi quy. Ví dụ: việc sửa lề trên điện thoại có thể dẫn đến bố cục không nhất quán trên máy tính bảng. Tạo các bài kiểm thử giao diện người dùng để xác minh hành vi của bố cục và các thành phần hoặc tạo các bài kiểm thử ảnh chụp màn hình để xác minh bố cục một cách trực quan.

Khôi phục trạng thái

Ứng dụng chạy trên các thiết bị như máy tính bảng được xoay và đổi kích thước thường xuyên hơn nhiều so với ứng dụng trên điện thoại. Ngoài ra, thiết bị có thể gập lại mang đến các tính năng màn hình mới, chẳng hạn như gập và mở, có thể kích hoạt thay đổi về cấu hình. Ứng dụng của bạn cần có khả năng khôi phục trạng thái khi những thay đổi về cấu hình này diễn ra. Sau đó, bạn cũng cần viết các chương trình kiểm thử để xác nhận rằng ứng dụng đã khôi phục trạng thái chính xác.

Hình 2. Thiết bị có thể gập lại, khi gập lại, mặt phẳng mở, mặt phẳng mở xoay theo hướng ngang và mở một nửa (mặt bàn).

Trước tiên, hãy kiểm thử để đảm bảo rằng ứng dụng của bạn không gặp sự cố khi thay đổi cấu hình. Hãy đảm bảo rằng mọi giao diện người dùng trong ứng dụng của bạn đều có thể xử lý mọi thao tác xoay, đổi kích thước hoặc gập. Vì các thay đổi về cấu hình sẽ tạo lại hoạt động theo mặc định, nên một số sự cố xảy ra do các giả định về việc duy trì hoạt động.

Có nhiều cách để kiểm thử các thay đổi về cấu hình, nhưng đối với hầu hết các trường hợp, có 2 cách để kiểm thử:

  • Trong Compose, hãy sử dụng StateRestorationTester để mô phỏng thay đổi về cấu hình một cách hiệu quả mà không cần khởi động lại hoạt động. Hãy xem các phần sau để biết thêm thông tin.
  • Trong mọi quy trình kiểm thử giao diện người dùng như Espresso hoặc Compose, hãy mô phỏng thay đổi về cấu hình bằng cách gọi Activity.recreate().

Thường thì bạn không phải sử dụng nhiều thiết bị để kiểm thử tính năng khôi phục trạng thái theo các thay đổi về cấu hình. Lý do là tất cả thay đổi về cấu hình tạo lại hoạt động đều gây ra hậu quả tương tự. Tuy nhiên, một số thay đổi về cấu hình có thể kích hoạt các cơ chế khôi phục trạng thái khác nhau trên các thiết bị cụ thể.

Ví dụ: khi người dùng đang xem giao diện người dùng chi tiết về danh sách trên thiết bị có thể gập lại đang mở và họ gập thiết bị để chuyển sang màn hình trước, thì giao diện người dùng này thường sẽ chuyển sang trang chi tiết. Một quy trình kiểm thử tự động sẽ bao gồm việc khôi phục trạng thái giao diện người dùng, bao gồm cả trạng thái điều hướng.

Bạn có nhiều lựa chọn để kiểm thử các thay đổi về cấu hình diễn ra trên các thiết bị chuyển từ màn hình này sang màn hình khác hoặc chuyển sang chế độ nhiều cửa sổ:

  • Dùng bất kỳ thiết bị nào để đổi kích thước màn hình trong quá trình kiểm thử. Trong hầu hết các trường hợp, thao tác này sẽ kích hoạt tất cả các cơ chế khôi phục trạng thái mà bạn cần xác minh. Tuy nhiên, bài kiểm thử này sẽ không hiệu quả đối với logic phát hiện các tư thế cụ thể trong thiết bị có thể gập lại, vì việc thay đổi về tư thế không làm thay đổi cấu hình.
  • Sử dụng một thiết bị hoặc trình mô phỏng hỗ trợ các tính năng mà bạn muốn kiểm thử, kích hoạt các thay đổi về cấu hình liên quan. Ví dụ: bạn có thể điều khiển thiết bị có thể gập lại hoặc máy tính bảng bằng Thiết bị Espresso để chuyển từ thiết bị gập sang mở theo chiều ngang. Hãy xem phần Thiết bị Espresso trong bài viết Thư viện và công cụ để kiểm thử nhiều kích thước màn hình để xem ví dụ.
Hình 3. Trạng thái gập và mở của thiết bị.

Các kiểu kiểm thử cho nhiều kích thước màn hình và cửa sổ

Sử dụng loại hình kiểm thử thích hợp cho từng trường hợp sử dụng để xác minh rằng hoạt động kiểm thử đang hoạt động đúng cách trên nhiều hệ số hình dạng:

  • Kiểm thử hành vi trên giao diện người dùng khởi chạy một số phần trên giao diện người dùng của ứng dụng, chẳng hạn như màn hình của một hoạt động. Các bài kiểm thử xác minh rằng một số phần tử nhất định tồn tại hoặc có các thuộc tính cụ thể . Các bài kiểm thử có thể thực hiện các thao tác mô phỏng của người dùng (không bắt buộc). Đối với khung hiển thị, hãy sử dụng Espresso. Jetpack Compose có các API kiểm thử riêng. Hoạt động kiểm thử hành vi trên giao diện người dùng có thể được đo lường hoặc cục bộ. Các chương trình kiểm thử đo lường sẽ chạy trên các thiết bị hoặc trình mô phỏng, trong khi các chương trình kiểm thử giao diện người dùng cục bộ chạy trên Robolectric trên JVM.

    Sử dụng các bài kiểm thử hành vi trên giao diện người dùng để xác minh rằng cách triển khai điều hướng của một ứng dụng là chính xác. Các bài kiểm thử sẽ thực hiện các thao tác như nhấp và vuốt. Các hoạt động kiểm thử hành vi trên giao diện người dùng cũng kiểm tra sự tồn tại của một số phần tử hoặc thuộc tính nhất định. Để biết thêm thông tin, hãy xem bài viết Tự động kiểm thử giao diện người dùng.

  • Kiểm thử ảnh chụp màn hình chụp ảnh màn hình một giao diện người dùng hoặc thành phần rồi so sánh hình ảnh đó với ảnh chụp màn hình đã được phê duyệt trước đó. Đây là một cách rất hiệu quả để chống hồi quy, vì một ảnh chụp màn hình có thể bao phủ một lượng lớn phần tử và thuộc tính trực quan của phần tử đó. Bạn có thể chạy kiểm thử ảnh chụp màn hình trên JVM hoặc trên các thiết bị. Hiện có nhiều khung kiểm thử ảnh chụp màn hình.

Cuối cùng, bạn có thể cần kiểm thử đơn vị để kiểm thử chức năng của các đơn vị logic hoạt động theo cách khác nhau tuỳ thuộc vào loại thiết bị hoặc kích thước cửa sổ, nhưng kiểm thử đơn vị ít phổ biến hơn trong lĩnh vực này.

Các bước tiếp theo

Để biết thêm thông tin về cách triển khai các quy trình kiểm tra có trong tài liệu này, hãy xem phần Thư viện và công cụ.