Tự động hoá quy trình kiểm thử giao diện người dùng
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Việc kiểm thử hoạt động tương tác của người dùng giúp đảm bảo rằng người dùng không gặp phải kết quả không mong muốn hoặc có trải nghiệm không tốt khi tương tác với ứng dụng của bạn. Bạn nên tạo thói quen tạo kiểm thử giao diện người dùng (UI) nếu cần xác minh rằng giao diện người dùng của ứng dụng đang hoạt động chính xác.
Một phương pháp kiểm thử giao diện người dùng là yêu cầu người kiểm thử thực hiện một loạt thao tác của người dùng trên ứng dụng mục tiêu và xác minh rằng ứng dụng đó hoạt động đúng cách. Tuy nhiên, phương pháp thủ công này có thể tốn nhiều thời gian và dễ xảy ra lỗi. Một phương pháp hiệu quả hơn là viết các chương trình kiểm thử giao diện người dùng để các thao tác của người dùng được thực hiện theo cách tự động. Phương pháp tự động cho phép bạn chạy các chương trình kiểm thử một cách nhanh chóng và đáng tin cậy theo cách có thể lặp lại.
Kiểm thử giao diện người dùng sẽ khởi chạy một ứng dụng (hoặc một phần của ứng dụng), sau đó mô phỏng các hoạt động tương tác của người dùng và cuối cùng kiểm tra xem ứng dụng có phản ứng đúng cách hay không. Đây là các kiểm thử tích hợp có thể trải dài từ việc xác minh hành vi của một thành phần nhỏ đến kiểm thử điều hướng lớn xuyên suốt toàn bộ luồng người dùng. Các API này rất hữu ích để kiểm tra sự hồi quy và xác minh khả năng tương thích với nhiều cấp độ API và thiết bị thực.
Chạy kiểm thử giao diện người dùng
Để chạy kiểm thử giao diện người dùng được đo lường bằng Android Studio, bạn triển khai mã kiểm thử trong một thư mục kiểm thử Android riêng – src/androidTest/java. Trình bổ trợ Android cho Gradle sẽ tạo một ứng dụng kiểm thử dựa trên mã kiểm thử của bạn, sau đó tải ứng dụng kiểm thử trên cùng một thiết bị với ứng dụng mục tiêu. Trong mã kiểm thử, bạn có thể sử dụng các khung kiểm thử giao diện người dùng để mô phỏng hoạt động tương tác của người dùng trên ứng dụng mục tiêu, nhằm thực hiện các nhiệm vụ kiểm thử bao gồm các trường hợp sử dụng cụ thể.
Bạn cũng có thể sử dụng Robolectric để chạy các chương trình kiểm thử giao diện người dùng trên JVM.
Cấu trúc và thiết lập kiểm thử
Cấu trúc của ứng dụng phải cho phép các chương trình kiểm thử thay thế một số phần của ứng dụng để kiểm thử gấp đôi và bạn nên sử dụng các thư viện cung cấp tiện ích để hỗ trợ kiểm thử. Ví dụ: bạn có thể thay thế mô-đun kho lưu trữ dữ liệu bằng phiên bản trong bộ nhớ của mô-đun đó để cung cấp dữ liệu giả, có tính xác định cho quá trình kiểm thử.
Hình 3: Kiểm thử giao diện người dùng bằng cách thay thế các phần phụ thuộc bằng phần phụ thuộc giả.
Bạn nên sử dụng phương pháp chèn phần phụ thuộc để thay thế các phần phụ thuộc. Bạn có thể tạo hệ thống của riêng mình theo cách thủ công, nhưng bạn nên sử dụng khung DI như Hilt cho việc này.
Tại sao nên kiểm thử giao diện người dùng một cách tự động?
Một ứng dụng Android có thể nhắm đến hàng nghìn thiết bị khác nhau trên nhiều cấp độ API và kiểu dáng. Ngoài ra, mức độ tuỳ chỉnh cao mà hệ điều hành mang lại cho người dùng có nghĩa là ứng dụng của bạn có thể hiển thị không chính xác hoặc thậm chí gặp sự cố trên một số thiết bị.
Tính năng kiểm thử giao diện người dùng cho phép bạn kiểm thử khả năng tương thích, xác minh hành vi của ứng dụng trong nhiều ngữ cảnh. Bạn nên chạy kiểm thử giao diện người dùng trên các thiết bị khác nhau theo những cách sau:
Cấp độ API: 21, 25 và 30.
Ngôn ngữ: Tiếng Anh, tiếng Ả Rập và tiếng Trung.
Hướng: Dọc, ngang.
Hơn nữa, ứng dụng nên kiểm tra hành vi ngoài điện thoại. Bạn nên kiểm thử trên máy tính bảng, thiết bị có thể gập lại và các thiết bị khác. Đọc thêm về kiểm thử nhiều kích thước màn hình.
Các loại kiểm thử giao diện người dùng
Phần này trình bày hai loại kiểm thử giao diện người dùng:
Kiểm thử hành vi phân tích hệ phân cấp giao diện người dùng để đưa ra các câu nhận định về các thuộc tính của phần tử giao diện người dùng.
Kiểm thử ảnh chụp màn hình chụp ảnh màn hình giao diện người dùng và so sánh ảnh chụp màn hình đó với hình ảnh đã được phê duyệt trước đó.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Automate UI tests\n\nTesting user interactions helps ensure users don't encounter unexpected results\nor have a poor experience when interacting with your app. You should get into\nthe habit of creating user interface (UI) tests if you need to verify that the\nUI of your app is functioning correctly.\n\nOne approach to UI testing is to have a human tester perform a set of user\noperations on the target app and verify that it is behaving correctly. However,\nthis manual approach can be time-consuming and error-prone. A more efficient\napproach is to write your UI tests such that user actions are performed in an\nautomated way. The automated approach lets you run your tests quickly and\nreliably in a repeatable manner.\n\nUI tests launch an app (or part of it), then simulate user interactions, and\nfinally check that the app reacted appropriately. They are integration tests\nthat can range from verifying the behavior of a small component to a large\nnavigation test that traverses a whole user flow. They are useful to check for\nregressions and to verify compatibility with different API levels and physical\ndevices.\n\nRun UI tests\n------------\n\n- To run [instrumented](/training/testing/instrumented-tests) UI tests using Android Studio, you implement your test code in a separate Android test folder - `src/androidTest/java`. The [Android Gradle Plugin](/studio/releases/gradle-plugin) builds a test app based on your test code, then loads the test app on the same device as the target app. In your test code, you can use UI testing frameworks to simulate user interactions on the target app, in order to perform testing tasks that cover specific usage scenarios.\n- You can also use [Robolectric](/training/testing/local-tests/robolectric#ui-testing) to run UI tests on the JVM.\n\nArchitecture and test setup\n---------------------------\n\nThe architecture of your app should let tests replace parts of it for [testing\ndoubles](/training/testing/fundamentals/test-doubles) and you should use libraries that provide utilities to help with\ntesting. For example, you can replace a data repository module with an in-memory\nversion of it that provides fake, deterministic data to the test.\n\n\u003cbr /\u003e\n\n**Figure 3**: Testing a UI by replacing its dependencies with fakes.\n\n\u003cbr /\u003e\n\nThe recommended approach to replace dependencies is dependency injection. You\ncan create your own system [manually](/training/dependency-injection/manual) but we recommend using a DI framework\nlike [Hilt](/training/dependency-injection/hilt-android) for this.\n\nWhy test UIs automatically?\n---------------------------\n\nAn Android app can target thousands of different devices across many API levels\nand form factors, and the high level of customization that the OS brings to the\nuser means your app could be rendered incorrectly or even crash on some devices.\n\nUI testing lets you do *compatibility testing*, verifying the behavior of an app\nin different contexts. You might want to run your UI tests on devices that vary\nin the following ways:\n\n- **API level**: 21, 25, and 30.\n- **Locale**: English, Arabic, and Chinese.\n- **Orientation**: Portrait, landscape.\n\nMoreover, apps should check the behavior beyond phones. You should test on\ntablets, foldables, and other devices. Read more about [testing different screen\nsizes](/training/testing/different-screens).\n\nTypes of UI Tests\n-----------------\n\nThis section covers two types of UI tests:\n\n- [Behavior tests](/training/testing/ui-tests/behavior) analyze the UI hierarchy to make assertions on the properties of the UI elements.\n- [Screenshot tests](/training/testing/ui-tests/screenshot) take screenshots of a UI and compares them with a previously-approved images."]]