Kiểm thử ảnh chụp màn hình

Kiểm thử ảnh chụp màn hình là một cách rất hiệu quả để xác minh giao diện người dùng của ứng dụng. Kiểm thử ảnh chụp màn hình có thể tồn tại trong kiểm thử Thành phần, Tính năng và Ứng dụng.

Bạn có thể sử dụng các công cụ của bên thứ ba để tạo cả kiểm thử ảnh chụp màn hình đo lường và kiểm thử ảnh chụp màn hình cục bộ. Nếu dùng Compose, bạn có thể dùng Công cụ kiểm thử ảnh chụp màn hình của tính năng Xem trước trong Compose chính thức.

Định nghĩa

Kiểm thử ảnh chụp màn hình sẽ chụp ảnh màn hình giao diện người dùng và so sánh với một hình ảnh đã được phê duyệt trước đó, được gọi là "tiêu chuẩn" hoặc "vàng":

Thử nghiệm ảnh chụp màn hình so sánh hai hình ảnh, một ảnh chụp màn hình mới và một ảnh đối chiếu.
Hình 1. Kiểm thử ảnh chụp màn hình so sánh hai hình ảnh

Nếu các hình ảnh giống nhau, thì kiểm thử thành công. Nếu có sự khác biệt giữa các báo cáo, công cụ này sẽ tạo một báo cáo:

Báo cáo thử nghiệm bằng ảnh chụp màn hình, trong đó cho thấy tệp tham chiếu và ảnh chụp màn hình mới ở hai bên, cùng sự khác biệt ở giữa.
Hình 2. Báo cáo kiểm thử ảnh chụp màn hình, hiển thị ảnh chụp màn hình tham chiếu và ảnh chụp màn hình mới ở hai bên, và sự khác biệt ở giữa.

Với báo cáo này, bạn có thể đưa ra 2 phản hồi:

  • Nhận thấy có lỗi trong mã mới và sửa lỗi.
  • Phê duyệt ảnh chụp màn hình mới và thay hình ảnh tham chiếu bằng ảnh mới.

Quy trình kiểm thử ảnh chụp màn hình khác với quy trình kiểm thử thông thường vì một kiểm thử không thành công không phải lúc nào cũng có nghĩa là có lỗi.

Ưu điểm

Các ưu điểm của kiểm thử ảnh chụp màn hình là:

  • Mỗi lần kiểm thử ảnh chụp màn hình sẽ thực hiện nhiều câu nhận định. Ví dụ: một quy trình kiểm thử đơn lẻ có thể kiểm tra màu sắc, lề, kích thước và phông chữ.
  • Kiểm thử ảnh chụp màn hình dễ viết, dễ hiểu và dễ duy trì hơn so với kiểm thử hành vi tương đương.
  • Chúng đặc biệt hữu ích khi xác minh và phát hiện lỗi hồi quy trên nhiều kích thước màn hình.

Nhược điểm

Tuy nhiên, việc kiểm thử ảnh chụp màn hình cũng có thể có những nhược điểm:

  • Việc xử lý hình ảnh tham chiếu có thể gây phiền toái, vì một dự án lớn có thể kết thúc bằng hàng nghìn tệp PNG.
  • Các nền tảng khác nhau (Linux, Max và Windows) tạo ra ảnh chụp màn hình hơi khác nhau.
  • Các kiểm thử này chậm hơn so với các kiểm thử hành vi tương đương.
  • Việc có một số lượng lớn kiểm thử ảnh chụp màn hình có thể gây ra sự cố, ví dụ như khi một thay đổi duy nhất ảnh hưởng đến hàng nghìn ảnh chụp màn hình.

Các phần sau đây đưa ra đề xuất về cách giải quyết những vấn đề này.

Hạn chế tối đa việc kiểm tra ảnh chụp màn hình

Bạn nên giảm thiểu số lượng kiểm thử ảnh chụp màn hình trong khi tối đa hoá phản hồi và mức độ bao phủ cho các lần hồi quy.

Việc kết hợp các trạng thái giao diện người dùng khác nhau có thể làm tăng số lượng kiểm thử rất nhanh. Sau đây là một số cách bạn có thể xác minh một phần giao diện người dùng của ứng dụng:

  • Trên các chủ đề khác nhau
  • Sử dụng nhiều cỡ chữ
  • Bên trong các kích thước hoặc giới hạn màn hình khác nhau

Nếu làm như vậy cho mọi thành phần, bố cục và màn hình của ứng dụng, bạn sẽ có hàng nghìn tệp ảnh chụp màn hình, hầu hết trong số đó không cung cấp thêm phản hồi nào.

Ví dụ: nếu muốn kiểm thử một nút tuỳ chỉnh có giao diện sáng và tối, cũng như có 3 kích thước phông chữ, bạn không cần tạo tổ hợp của tất cả các nút đó. Thay vào đó, bạn chỉ có thể chọn một trong các giao diện. Điều này là do cách nút phản ứng với các từ dài không ảnh hưởng đến giao diện.

Bạn có thể bỏ qua một số tổ hợp thuộc tính giao diện người dùng.
Hình 3. Bạn có thể bỏ qua một số tổ hợp thuộc tính giao diện người dùng.

Lưu trữ hình ảnh tham khảo

Hình ảnh tham chiếu (hoặc hình ảnh vàng) thường là các tệp PNG có thể được kiểm tra vào hệ thống quản lý nguồn của bạn. Tuy nhiên, Git và hầu hết các trình quản lý kiểm soát nguồn đều được tối ưu hoá cho các tệp văn bản, chứ không phải các tệp nhị phân lớn.

Bạn có 3 lựa chọn để quản lý các tệp này:

  • Tiếp tục sử dụng git, nhưng cố gắng giảm thiểu mức sử dụng bộ nhớ.
  • Sử dụng Git LFS.
  • Sử dụng một dịch vụ đám mây để quản lý ảnh chụp màn hình.

Sự khác biệt về nền tảng

Việc kiểm thử ảnh chụp màn hình dựa vào API nền tảng cấp thấp để vẽ những tính năng cụ thể như văn bản hoặc bóng đổ và các nền tảng có thể triển khai những tính năng đó theo nhiều cách. Nếu phát triển trên máy Mac và lưu ảnh chụp màn hình mới được chụp trên máy, bạn có thể thấy các kiểm thử bị hỏng trên máy CI Linux.

Có 2 cách để giải quyết vấn đề này:

  • Chấp nhận các thay đổi nhỏ
  • Chụp ảnh màn hình trên máy chủ

Có thể chấp nhận những thay đổi nhỏ

Bạn có thể định cấu hình hầu hết các thư viện kiểm thử ảnh chụp màn hình để cho phép có sự khác biệt nhỏ khi so sánh hai ảnh chụp màn hình.

Có hai cách để thực hiện việc này:

  • Định cấu hình dung sai dựa trên tỷ lệ phần trăm pixel đã sửa đổi hoặc tỷ lệ phần trăm tổng chênh lệch về giá trị pixel.
  • Sử dụng thuật toán so sánh thông minh (so sánh các ảnh chụp màn hình) để xác minh mức độ tương đồng về cấu trúc và ngữ nghĩa thay vì pixel.

Nhược điểm của phương pháp này là có thể tạo ra kết quả dương tính giả và không phát hiện được các lỗi dưới ngưỡng hoặc bị nhầm là tương tự.

Chụp ảnh màn hình trên máy chủ

Để sử dụng trình so sánh ảnh chụp màn hình chính xác đến từng pixel, bạn phải đảm bảo rằng các chương trình kiểm thử của mình chụp ảnh màn hình trong cùng một điều kiện. Để làm như vậy, bạn có thể sử dụng hệ thống Tích hợp liên tục (CI) hoặc sử dụng dịch vụ đám mây.

Ví dụ: bạn có thể tạo một bước trong quy trình làm việc CI để thực hiện những việc sau:

  1. Chạy các kiểm thử ảnh chụp màn hình (chỉ cần thiết khi không sử dụng tính năng so khớp pixel hoàn hảo).
  2. Ghi lại ảnh chụp màn hình mới nếu bước trước đó không thành công.
  3. Gửi các tệp mới vào nhánh.
Văn bản thay thế: Sơ đồ minh hoạ cách chụp ảnh màn hình trên CI
Hình 4. Sơ đồ minh hoạ cách chụp ảnh màn hình trên CI

Khi sử dụng phương pháp này, các kiểm thử ảnh chụp màn hình sẽ không bao giờ không thành công trên CI, nhưng sẽ sửa đổi thay đổi cho bạn. Bằng cách này, bạn và người xem xét thay đổi có thể chấp nhận ảnh chụp màn hình mới bằng cách hợp nhất thay đổi.

Công cụ kiểm thử ảnh chụp màn hình

Hãy cân nhắc những điểm khác biệt chính sau đây giữa các công cụ và thư viện có sẵn để kiểm thử ảnh chụp màn hình:

  • Môi trường: Kiểm thử cục bộ chạy trên máy chủ hoặc kiểm thử đo lường chạy trên trình mô phỏng hoặc thiết bị.
  • Công cụ kết xuất: Các giải pháp ảnh chụp màn hình phía máy chủ có thể sử dụng Layoutlib – công cụ kết xuất của Android Studio để xem trước – hoặc Đồ hoạ gốc Robolectric (RNG).
    • Các khung dựa trên Layoutlib tập trung vào việc kết xuất các thành phần tĩnh, sử dụng các trạng thái khác nhau để hiển thị các hành vi khác nhau. Các định dạng này thường dễ sử dụng hơn.
    • Các khung tích hợp với RNG có thể sử dụng tất cả các tính năng của Robolectric, cho phép kiểm thử với phạm vi lớn hơn.