Kiểm thử trong Android Studio

Android Studio được thiết kế để đơn giản hoá quá trình kiểm thử. Android Studio chứa nhiều tính năng giúp đơn giản hoá quá cách tạo lập, chạy và phân tích các chương trình kiểm thử. Bạn có thể thiết lập các chương trình kiểm thử chạy trên máy cục bộ hoặc các chương trình kiểm thử đo lường (instrumented test) chạy trên một thiết bị nào đó. Bạn có thể dễ dàng chạy một hoặc một nhóm các chương trình kiểm thử nào đó trên một hoặc nhiều thiết bị. Kết quả kiểm thử sẽ được xuất hiện trực tiếp trong Android Studio.

Hình 1. Tổng quan kết quả kiểm thử trong Android Studio.

Trang này cung cấp thông tin về cách quản lý các chương trình kiểm thử trong Android Studio. Để tìm hiểu thêm về các cách viết các chương trình kiểm thử tự động cho Android, hãy xem bài viết Kiểm thử ứng dụng trên Android.

Loại và vị trí các chương trình kiểm thử

Vị trí chứa các chương trình kiểm thử phụ thuộc vào loại chương trình kiểm thử bạn đang viết. Các dự án Android có thư mục mã nguồn mặc định cho chương trình kiểm thử đơn vị cục bộ (local unit tests) và kiểm thử đo lường (instrumentation test).

Kiểm thử đơn vị cục bộ được đặt ở module-name/src/test/java/. Đây là các chương trình kiểm thử chạy trên Máy ảo Java (JVM) cục bộ trên máy của bạn. Hãy sử dụng những chương trình kiểm thử này để giảm thiểu thời gian thực thi trong trường hợp chương trình kiểm thử của bạn không có các phần phụ thuộc khung ứng dụng Android, hoặc khi bạn nhân đôi kiểm thử cho các phần phụ thuộc khung ứng dụng Android. Để biết thêm thông tin về cách viết các chương trình kiểm thử đơn vị cục bộ, hãy xem bài viết Tạo kiểm thử đơn vị cục bộ.

Các chương trình kiểm thử đo lường được đặt tại $module-name/src/androidTest/java/. Các chương trình này chạy trên một thiết bị phần cứng hoặc trình mô phỏng. Chúng có quyền truy cập vào API Instrumentation, cho phép bạn truy cập các thông tin, chẳng hạn như lớp Context, trên ứng dụng bạn đang kiểm thử, đồng thời cho phép bạn kiểm soát ứng dụng đang kiểm thử dựa trên mã kiểm thử của bạn. Các chương trình kiểm thử đo lường được đóng gói thành một tệp APK riêng, vì vậy, các chương trình này có tệp AndroidManifest.xml riêng. Tệp này sẽ được tạo tự động nhưng bạn có thể tự tạo phiên bản cho riêng mình tại $module-name/src/androidTest/AndroidManifest.xml, phiên bản này sẽ được hợp nhất với tệp kê khai được tạo trước đó. Hãy sử dụng những chương trình kiểm thử đo lường khi bạn viết các bộ thử nghiệm chức năng trên giao diện người dùng để tự động hoá các hoạt động tương tác của người dùng, hoặc khi chương trình kiểm thử của bạn có các phần phụ thuộc Android nhưng bạn không thể dùng nhân đôi kiểm thử cho chúng. Để biết thêm thông tin về cách viết các chương trình kiểm thử đo lường, hãy xem bài viết Xây dựng kiểm thử đo lườngTự động hoá quy trình kiểm thử giao diện người dùng.

Bạn có thể đặt các bài kiểm thử vào những thư mục dành riêng cho các biến thể bản dựng, chỉ dùng để kiểm thử các biến thể bản dựng cụ thể. Ví dụ, bạn có thể đặt một số bài kiểm thử đơn vị cục bộ tại $module-name/src/testMyFlavor/java/ để bài kiểm thử nhắm đúng vào ứng dụng được tạo ra bởi mã nguồn của phiên bản này. Để biết thêm thông tin về cách tạo các bài kiểm thử được điều chỉnh này, hãy xem chi tiết tại Tạo kiểm thử đo lường cho một biến thể bản dựng.

Khi tạo một dự án mới hoặc thêm một mô-đun ứng dụng nào đó, Android Studio sẽ tạo các nhóm tài nguyên kiểm thử được liệt kê trước đó và kèm theo một tệp kiểm thử mẫu trong mỗi nhóm tài nguyên Bạn có thể nhìn thấy điều đó trong cửa sổ Dự án như trong hình 2.

Hình 2. Bạn có thể thấy các mục (1) kiểm thử đo lường và (2) kiểm thử máy ảo cục bộ trong dự án khi ở chế độ xem Dự án (bên trái) hoặc Android (bên phải).

Tạo chương trình kiểm thử

Bạn có thể trực tiếp thêm một bài kiểm thử mới cho một lớp hoặc một phương thức cụ thể trực tiếp từ mã nguồn bằng cách làm theo các bước sau:

  1. Mở tệp nguồn có chứa đoạn mã mà bạn muốn kiểm thử.
  2. Đặt con trỏ vào tên lớp hoặc phương thức mà bạn muốn kiểm thử, sau đó nhấn tổ hợp phím Control+Shift+T (Command+Shift+T đối với macOS).
  3. Trong cửa sổ vừa xuất hiện, hãy nhấp vào Create New Test… (Tạo kiểm thử mới…)
  4. Trong hộp thoại Create Test (Tạo kiểm thử), hãy chọn JUnit4, chỉnh sửa các trường và phương thức bạn muốn tạo, rồi nhấp vào OK.
  5. Trong hộp thoại Choose Destination Directory (Chọn thư mục đích), hãy nhấp vào nhóm tài nguyên tương ứng với loại kiểm thử bạn muốn tạo: androidTest cho kiểm thử đo lường hoặc kiểm thử cho kiểm thử đơn vị cục bộ. Sau đó, hãy nhấp vào OK.

Ngoài ra, bạn có thể tạo một tệp kiểm thử tổng quát trong nhóm tài nguyên kiểm thử thích hợp theo hướng dẫn dưới đây:

  1. Trong cửa sổ Project (Dự án) ở bên trái, hãy nhấp vào trình đơn thả xuống rồi chọn chế độ xem Android.
  2. Nhấp chuột phải vào thư mục java rồi chọn New (Mới) > Java Class (Lớp Java) hoặc New (Mới) > Kotlin Class/File (Lớp/Tệp Kotlin). Ngoài ra, bạn có thể chọn thư mục java rồi dùng phím tắt Control+N (Command+N đối với macOS).
  3. Trong hộp thoại Choose Destination Directory (Chọn thư mục đích), hãy nhấp vào nhóm tài nguyên tương ứng với loại kiểm thử bạn muốn tạo: androidTest cho kiểm thử đo lường hoặc kiểm thử cho kiểm thử đơn vị cục bộ. Sau đó, hãy nhấp vào OK.
  4. Đặt tên tệp rồi nhấp vào OK.

Nếu ứng dụng của bạn không biên dịch sau khi thêm bài kiểm thử, hãy đảm bảo bạn đã cài đặt phần phụ thuộc thư viện kiểm thử phù hợp. Hãy xem nội dung Tạo kiểm thử cục bộTạo kiểm thử đo lường để biết các phần phụ thuộc chính xác.

Chạy chương trình kiểm thử

Trước khi chạy bất kỳ chương trình kiểm thử nào, hãy đảm bảo dự án của bạn được đồng bộ hoá hoàn toàn với Gradle bằng cách nhấp vào biểu tượng Sync Project (Đồng bộ hoá dự án) trên thanh công cụ. Bạn có thể chạy chương trình kiểm thử theo nhiều mức độ chi tiết:

  • Để chạy tất cả chương trình kiểm thử trong một thư mục hoặc tệp, hãy mở cửa sổ Project (Dự án) rồi thực hiện một trong các thao tác sau:

    • Nhấp chuột phải vào một thư mục hoặc tệp rồi nhấp vào biểu tượng Run (Chạy) .
    • Chọn thư mục hoặc tệp rồi sử dụng phím tắt Control+Shift+R.
  • Để chạy tất cả chương trình kiểm thử trong một lớp hoặc một phương thức cụ thể, hãy mở tệp kiểm thử trong Code Editor (Trình soạn thảo mã) rồi thực hiện một trong các thao tác sau:

    • Nhấn vào biểu tượng Chạy chương trình kiểm thử trên thanh định hướng.
    • Nhấp chuột phải vào lớp hoặc phương thức kiểm thử rồi nhấp vào Chạy .
    • Chọn lớp hoặc phương thức kiểm thử rồi dùng phím tắt Control+Shift+R.

Các kiểm thử đo lường của bạn sẽ chạy trên một thiết bị thực hoặc trình mô phỏng. Để tìm hiểu thêm về cách thiết lập trên các thiết bị thực tế, hãy xem nội dung Chạy ứng dụng trên thiết bị phần cứng. Để tìm hiểu thêm về cách thiết lập trình mô phỏng, hãy xem nội dung Chạy ứng dụng trên Trình mô phỏng Android.

Định cấu hình để chạy các chương trình kiểm thử

Theo mặc định, các kiểm thử của bạn sẽ chạy với cấu hình mặc định của Android Studio. Nếu cần thay đổi một số chế độ cài đặt khi chạy chương trình, chẳng hạn như trình chạy công cụ đo lường và các tuỳ chọn triển khai, bạn có thể chỉnh sửa cấu hình chạy trong hộp thoại Cấu hình chạy/gỡ lỗi (Run/Debug Configurations) (nhấp vào Chạy > Chỉnh sửa cấu hình (Run > Edit Configurations)).

Trình chạy kiểm thử Gradle hợp nhất

Trình bổ trợ Android cho Gradle 7.1.0 và Android Studio Bumblebee trở lên sử dụng hoạt động triển khai riêng của Gradle đối với trình chạy kiểm thử được đo lường cho Android để chạy các hoạt động kiểm thử được đo lường. Bằng cách sử dụng cùng một trình chạy kiểm thử, các kết quả có thể nhất quán cho dù bạn chạy bằng AGP từ dòng lệnh, chẳng hạn như trên máy chủ tích hợp liên tục hay từ Android Studio.

Hình 3. Trình chạy kiểm thử Gradle hợp nhất

Các phiên bản cũ của Android Studio sử dụng trình chạy kiểm thử đo lường cho Android dựa trên IntelliJ thay vì trình chạy kiểm thử được đo lường cho Android của Gradle. Vì vậy, nếu không sử dụng Android Studio phiên bản mới nhất, tuỳ thuộc vào việc bạn chạy chương trình kiểm thử bằng Android Studio hay bằng dòng lệnh với Plugin Gradle, thì bạn có thể thấy các kết quả kiểm thử khác nhau, chẳng hạn như chương trình kiểm thử cho kết quả đạt trên một trình chạy này nhưng lại cho kết quả không đạt trên một trình chạy khác.

Hình 4. Các trình chạy kiểm thử riêng biệt trong các phiên bản trên Android Studio cũ

Nếu bạn đã lưu cấu hình kiểm thử được đo lường vào dự án của mình, thì các cấu hình này sẽ sử dụng Gradle để chạy hoạt động kiểm thử trên thiết bị đã kết nối. Bạn có thể tạo một cấu hình mới cho hoạt động kiểm thử được đo lường bằng cách sử dụng thao tác định hướng bên cạnh lớp hoặc phương thức kiểm thử, như minh hoạ dưới đây.

Hình 5. Chạy chương trình kiểm thử bằng thao tác định hướng

Khi chạy các chương trình kiểm thử được đo lường của mình, bạn có thể xác nhận rằng Android Studio đang sử dụng trình chạy kiểm thử của Gradle bằng cách kiểm tra đầu ra kiểm thử trong Ma trận thử nghiệm cho đầu ra tác vụ của Gradle.

Tắt trình chạy kiểm thử Gradle hợp nhất

Theo mặc định, Android Studio Bumblebee sử dụng Gradle để chạy các chương trình kiểm thử đo lường của mình. Nếu đang gặp vấn đề, bạn có thể vô hiệu hoá hành vi này như sau:

  1. Chọn File (Tệp) > Settings (Cài đặt) > Build, Execution, Deployment (Xây dựng, Thực thi, Triển khai) > Testing (Kiểm thử) (hoặc Android Studio > Preferences (Tuỳ chọn) > Build, Execution, Deployment (Xây dựng, Thực thi, Triển khai) > Testing (Kiểm thử) đối với MacOS.)
  2. Bỏ đánh dấu trên ô bên cạnh Chạy kiểm thử được đo lường của Android bằng Gradle (Run Android instrumented tests using Gradle) rồi nhấp vào OK.

Khi chạy các chương trình kiểm thử bên ngoài Android Studio, bạn cũng có thể quay lại các thao tác cũ bằng cách làm theo một trong các cách dưới đây:

  • Sử dụng tham số dòng lệnh sau: -Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
  • Thêm tham số sau đây vào tệp gradle.properties của dự án: android.experimental.androidTest.useUnifiedTestPlatform=false

Để giải quyết các vấn đề mà bạn có thể gặp phải, hãy báo cáo lỗi.

Chạy song trên nhiều thiết bị

Các chương trình kiểm thử đo lường theo mặc định sẽ chạy trên một thiết bị thực hoặc trình mô phỏng. Nếu muốn biết các chương trình kiểm thử của bạn hoạt động như thế nào trên một nhóm nhiều thiết bị, bạn có thể chọn nhiều thiết bị hơn bằng cách làm theo các bước sau:

  1. Trước khi chạy chương trình kiểm thử của bạn, hãy mở trình đơn trình đơn thả xuống cho thiết bị đích. rồi chọn Select Multiple Devices… (Chọn nhiều thiết bị…).

    Hình 6. Chọn nhiều thiết bị trên trình đơn thả xuống.

  2. Chọn thiết bị bạn muốn rồi nhấp vào OK.

  3. Đảm bảo văn bản trên trình đơn thả xuống mục tiêu đã đổi thành Multiple Devices (Nhiều thiết bị) rồi nhấp vào Run (Chạy) .

  4. Cửa sổ công cụ Test Matrix (Ma trận kiểm thử) sẽ cho thấy kết quả kiểm thử cho từng cấu hình thiết bị đã chọn.

    Hình 7. Kết quả kiểm thử trong cửa sổ công cụ Test Matrix (Ma trận kiểm thử).

  5. Bạn có thể nhấp vào một bài kiểm thử cụ thể để kiểm tra kết quả trong ngăn kết quả. Bạn cũng có thể sắp xếp các bài kiểm thử bằng cách nhấp vào các cột khác nhau.

Chạy với Phòng kiểm thử Firebase (Firebase Test Lab)

Bằng cách sử dụng Firebase Test Lab (Phòng kiểm thử Firebase), bạn có thể đồng thời kiểm thử ứng dụng của mình trên nhiều thiết bị Android và các cấu hình thiết bị phổ biến (tổ hợp của ngôn ngữ, hướng màn hình, kích thước màn hình và phiên bản hệ thống). Các chương trình kiểm thử này chạy trên thiết bị thực và ảo trong các trung tâm dữ liệu từ xa của Google. Kết quả kiểm thử cung cấp nhật ký kiểm thử và bao gồm thông tin chi tiết về bất kỳ lỗi nào trong ứng dụng.

Để bắt đầu sử dụng Phòng kiểm thử Firebase, bạn cần thực hiện những tác vụ sau:

  1. Tạo một Tài khoản Google nếu bạn chưa có tài khoản.
  2. Trong bảng điều khiển của Firebase, hãy nhấp vào Create New Project (Tạo dự án mới).

Android Studio cung cấp các công cụ tích hợp cho phép bạn định cấu hình cách bạn muốn triển khai kiểm thử của mình với Phòng kiểm thử Firebase. Sau khi đã tạo một dự án Firebase, bạn có thể tạo một cấu hình kiểm thử và chạy các chương trình kiểm thử đó:

  1. Nhấp vào Run (Chạy) > Edit Configurations (Chỉnh sửa cấu hình) trên thanh trình đơn chính.
  2. Nhấp vào Add New Configuration (Thêm cấu hình mới) rồi chọn Android Instrumented Tests (Kiểm thử đo lường trên Android).
  3. Nhập hoặc chọn các thông tin chi tiết về bài kiểm thử, chẳng hạn như tên bài kiểm thử, loại mô-đun, loại kiểm thử và lớp kiểm thử.
  4. Trên trình đơn Target (Target) thả xuống, dưới mục Deployment Target Options (Tuỳ chọn mục tiêu triển khai), hãy chọn Firebase Test Lab Device Matrix (Ma trận thiết bị cho phòng kiểm thử Firebase).
  5. Nếu bạn chưa đăng nhập, hãy nhấp vào ign in with Google (Đăng nhập bằng Google) rồi cấp quyền cho Android Studio truy cập vào tài khoản của bạn.
  6. Bên cạnh Cloud Project (Dự án trên đám mây), hãy chọn dự án Firebase của bạn trong danh sách.
  7. Bên cạnh Matrix configuration (Cấu hình ma trận), hãy chọn một trong các cấu hình mặc định từ trình đơn thả xuống hoặc tạo cấu hình của riêng bạn bằng cách nhấn Open Dialog (Mở hộp thoại) . Bạn có thể tuỳ chọn: một hoặc nhiều thiết bị, phiên bản Android, ngôn ngữ và hướng màn hình để kiểm thử ứng dụng của mình. Phòng kiểm thử Firebase sẽ thử nghiệm ứng dụng của bạn theo mọi tổ hợp dựa trên lựa chọn của bạn khi tạo kết quả kiểm thử.
  8. Nhấp vào OK trong hộp thoại Run/Debug Configurations (Cấu hình chạy/gỡ lỗi) để thoát.
  9. Chạy chương trình kiểm thử của bạn bằng cách nhấp vào Run (Chạy) .

Hình 8. Tạo cấu hình kiểm thử cho Firebase Test Lab (Phòng kiểm thử Firebase).

Phân tích kết quả kiểm thử

Khi Phòng kiểm thử Firebase hoàn tất việc chạy chương trình kiểm thử của bạn, cửa sổ Run (Chạy) sẽ mở ra để hiển thị kết quả, như minh hoạ như hình 9. Bạn có thể cần phải nhấp vào Show Passed (Hiển thị chương trình kiểm thử đã đạt) để xem tất cả chương trình kiểm thử đã được thực thi.

Hình 9. Kết quả của các bài kiểm thử đo lường bằng Firebase Test Lab (Phòng kiểm thử Firebase).

Bạn cũng có thể phân tích các bài kiểm thử của mình trên trang web bằng cách truy cập đường liên kết hiển thị ở phần đầu của nhật ký thực thi kiểm thử trong cửa sổ Run (Chạy).

Xem phạm vi kiểm thử

Công cụ quản lý phạm vi kiểm thử có sẵn cho kiểm thử đơn vị cục bộ để theo dõi tỷ lệ và vùng của mã ứng dụng mà bài kiểm thử đơn vị của bạn đã bao trùm. Sử dụng công cụ quản lý phạm vi kiểm thử để xác định xem bạn đã kiểm thử đầy đủ các phần tử, lớp, phương thức và đoạn mã tạo nên ứng dụng của bạn hay chưa.

Để chạy kiểm thử với phạm vi phù hợp, hãy thực hiện các bước tương tự được mô tả trong Run tests (Chạy kiểm thử), chỉ thay vì nhấp vào Run (Chạy) , hãy nhấp vào Run test-name with coverage (Chạy tên-kiểm-thử với mức độ sử dụng phù hợp) . Trong cửa sổ Project (Dự án), tuỳ chọn này có thể bị ẩn sau thẻ More Run/Debug (Cấu hình chạy/gỡ lỗi khác). Bạn cũng có thể tạo cấu hình cho phạm vi cài đặt trong hộp thoại Run/Debug Configurations (Cấu hình chạy/gỡ lỗi) dưới thẻ Code Coverage (Mức độ sử dụng mã).

Hình 10. Mức độ sử dụng mã cho một ứng dụng.

Xem kết quả kiểm thử

Khi bạn chạy một hoặc nhiều chương trình kiểm thử với Android Studio, kết quả sẽ xuất hiện trong cửa sổ Run (Chạy). Hình 11 cho thấy một lần chạy kiểm thử thành công.

Hình 11. Kết quả kiểm thử sẽ xuất hiện trong cửa sổ Rụn (Chạy).

Cửa sổ Run (Chạy) cho thấy các bài kiểm thử trong chế độ xem dạng sơ đồ cây ở bên trái, và kết quả cũng như thông báo cho chương trình kiểm thử hiện tại nằm trong ngăn đầu ra bên phải. Sử dụng thanh công cụ, trình đơn theo bối cảnh và biểu tượng trạng thái để quản lý kết quả kiểm thử như sau:

  1. Sử dụng run toolbar (thanh công cụ chạy) để chạy lại chương trình kiểm thử hiện tại, dừng chương trình kiểm thử hiện tại hoặc chạy lại các chương trình kiểm thử lỗi (vốn không được hiển thị vì chỉ các bài kiểm thử đơn vị mới có sẵn chức năng này), tạm dừng xuất kết quả và bỏ luồng chạy.
  2. Sử dụng testing toolbar (thanh công cụ kiểm thử) để lọc và sắp xếp kết quả kiểm thử. Bạn cũng có thể mở rộng hoặc thu gọn các nút, hiển thị phạm vi kiểm thử và nhập hoặc xuất kết quả kiểm thử.
  3. Nhấp vào context menu (trình đơn theo bối cảnh) để theo dõi các kiểm thử đang chạy, hiển thị số liệu thống kê nội tuyến, cuộn đến dấu vết ngăn xếp, mở mã nguồn ở một trường hợp ngoại lệ, tự động cuộn đến mã nguồn và chọn kiểm thử không thành công đầu tiên khi kiểm thử đó chạy xong.
  4. Các biểu tượng trạng thái kiểm thử cho biết nếu một bài kiểm thử đang: có lỗi, đã bị bỏ qua, không thành công, đang diễn ra, đã vượt qua, đã tạm dừng, đã chấm dứt hay chưa chạy.
  5. Hãy nhấp chuột phải vào một dòng trong thành phần hiển thị dạng cây để hiển thị trình đơn bối cảnh cho phép bạn chạy các chương trình kiểm thử ở chế độ gỡ lỗi, mở tệp mã nguồn kiểm thử hoặc chuyển đến dòng trong mã nguồn đang được kiểm thử.

Phân tích các lần kiểm thử thất bại

Khi một hoặc nhiều bài kiểm thử không thành công, cửa sổ kết quả sẽ hiển thị một dấu hiệu cảnh báo và số lần không thành công (ví dụ: "Tests failed: 1" ("kiểm thử không thành công: 1")):

Hình 12. Chi tiết về lần kiểm thử không thành công trong ngăn đầu ra.

Khi bạn nhấp vào bài kiểm thử không thành công trong chế độ xem dạng sơ đồ cây ở bên trái, ngăn đầu ra ở bên phải sẽ hiển thị thông tin chi tiết về kiểm thử đó. Số liệu phân tích này sẽ hiển thị giá trị dự kiến bên cạnh giá trị thực tế để bạn có thể so sánh các giá trị đó. Đường liên kết Click to see difference (Nhấp để xem sự khác biệt) sẽ mở trình xem sự khác biệt để bạn có thể so sánh các kết quả cạnh nhau.

Tìm hiểu thêm

Trang này trình bày các bước cơ bản bạn cần thực hiện khi tạo và chạy kiểm thử đầu tiên với Android Studio. Bạn cũng có thể chọn chạy kiểm thử bằng dòng lệnh. Bạn cũng có thể xem thêm tài liệu về IntelliJ về kiểm thử. Để biết thêm thông tin về cách định cấu hình cho bài kiểm thử của bạn khi tạo một bộ kiểm thử lớn hơn, hãy xem Thiết lập kiểm thử nâng cao.