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 không thể thiếu 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ử theo cách thủ công tốn thời gian, dễ xảy ra lỗi và thường không thể quản lý được đối với các ứng dụng chạy trên màn hình và thiết bị có nhiều kích thước. Các vấn đề của việc kiểm thử theo cách thủ công thường là do sử dụng một thiết bị duy nhất để phát triển. Do đó, các lỗi có thể không được chú ý trên các thiết bị khác có kiểu dáng khác nhau.

Để xác định các hồi quy trên nhiều kích thước cửa sổ và màn hình, hãy triển khai các bài 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 kiểu dáng. Các bài kiểm thử tự động xác định vấn đề từ sớm, 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 tạo cho nhiều kích thước màn hình và cửa sổ, hãy đặc biệt chú ý đến hai khía cạnh:

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

Thuộc tính trực quan

Dù bạn 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 vẫn nên xác minh rằng giao diện người dùng được hiển thị đúng cách. Hãy tính đến chiều rộng và chiều cao mà 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ể 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 ràng buộc về kích thước của chúng bị kéo dài.

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ổ, bạn nên có các bài kiểm thử tự động để ngăn chặn hồi quy. Ví dụ: việc cố định một lề trên điện thoại có thể dẫn đến sự không nhất quán về bố cục 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à 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 bằng hình ảnh.

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

Các ứng dụng chạy trên các thiết bị như máy tính bảng được xoay và thay đổi kích thước thường xuyên hơn nhiều so với các ứng dụng trên điện thoại. Ngoài ra, thiết bị có thể gập lại còn có các tính năng hiển thị mới, chẳng hạn như gập và mở, có thể kích hoạt các 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 các thay đổi về cấu hình này xảy ra. Sau đó, bạn cũng cần viết các bài kiểm thử để xác nhận rằng ứng dụng của bạn khôi phục trạng thái đúng cách.

Hình 2. Thiết bị có thể gập lại ở tư thế gập lại, mở 180 độ, mở 180 độ xoay ngang và mở một nửa (chế độ trên mặt bàn).

Trước tiên, hãy kiểm thử để đảm bảo ứng dụng của bạn không gặp sự cố khi thay đổi cấu hình. Đả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 kiểu kết hợp của thao tác xoay, thay đổ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 giả định về tính liên tục của 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 một 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 bất kỳ bài kiểm thử giao diện người dùng nào, chẳng hạn như Espresso hoặc Compose, hãy mô phỏng một thay đổi về cấu hình bằng cách gọi Activity.recreate().

Thông thường, bạn không cần sử dụng nhiều thiết bị để kiểm thử việc khôi phục trạng thái nhằm phản hồi các thay đổi về cấu hình. Lý do là vì tất cả các thay đổi về cấu hình tạo lại hoạt động đều có những 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 danh sách-chi tiết trên một 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 thường chuyển sang trang chi tiết. Một bài 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 này, bao gồm cả trạng thái điều hướng.

Để kiểm thử các thay đổi về cấu hình xảy 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ổ, bạn có nhiều lựa chọn:

  • Sử dụng bất kỳ thiết bị nào, hãy thay đổi kích thước màn hình trong khi 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 hoạt động đố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ì các thay đổi về tư thế không kích hoạt thay đổi về 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ử, hãy 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 một thiết bị có thể gập lại hoặc máy tính bảng bằng Espresso Device để chuyển từ trạng thái gập sang trạng thái mở 180 độ ở chế độ ngang. Hãy xem phần Espresso Device của Thư viện và công cụ để kiểm thử nhiều kích thước màn hình để biết các ví dụ.
Hình 3. Trạng thái gập và mở của thiết bị.

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

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

  • Bài kiểm thử hành vi giao diện người dùng chạy một phần giao diện người dùng của ứng dụng, chẳng hạn như màn hình hiển thị của một hoạt động. Các bài kiểm thử xác minh rằng một số thành phần tồn tại hoặc có các thuộc tính cụ thể . Các bài kiểm thử có thể tuỳ ý thực hiện các hành động mô phỏng của người dùng. Đối với khung hiển thị, hãy sử dụng Espresso. Jetpack Compose có API kiểm thử riêng. Các bài kiểm thử hành vi giao diện người dùng có thể được đo lường hoặc cục bộ. Các bài kiểm thử đo lường chạy trên thiết bị hoặc trình mô phỏng, trong khi các bài 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 giao diện người dùng để xác minh rằng việc triển khai tính năng điều hướng của ứng dụng là chính xác. Các bài kiểm thử thực hiện các hành động như nhấp và vuốt. Các bài kiểm thử hành vi giao diện người dùng cũng kiểm tra sự tồn tại của một số thành phần hoặc thuộc tính. Để biết thêm thông tin, hãy xem bài viết Tự động hoá quy trình kiểm thử giao diện người dùng.

  • Bài kiểm thử ảnh chụp màn hình chụp ảnh màn hình của một giao diện người dùng hoặc thành phần và 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ả để bảo vệ chống lại hồi quy, vì một ảnh chụp màn hình có thể bao gồm một số lượng lớn thành phần và các thuộc tính trực quan của nó. Bạn có thể chạy các bài kiểm thử ảnh chụp màn hình trên JVM hoặc trên thiết bị. Có nhiều khung kiểm thử ảnh chụp màn hình. Để biết thêm thông tin, hãy xem bài viết về các bài kiểm thử ảnh chụp màn hình.

Cuối cùng, bạn có thể cần các bài kiểm thử đơn vị để kiểm thử chức năng của các đơn vị logic hoạt động khác nhau tuỳ thuộc vào loại thiết bị hoặc kích thước cửa sổ, nhưng các bài 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 bước kiểm tra có trong tài liệu này, hãy xem bài viết Thư viện và công cụ.