Hướng dẫn kiểm thử tự động cho Android (continuous integration testing)

Nguồn:

Nội dung

  1. Giới thiệu Android testingContinuous Integration service (gọi tắt là CI)
  2. Viết testcase đơn giản để chạy thử
  3. Tích hợp với một CI service (cụ thể là Travis-CI) và chạy.

1. Giới thiệu

Việc viết & chạy test-cases là 1 phần trong quy trình phát triển phẩn mềm. Nếu bạn viết các test-case tốt có thể giúp bạn sớm tìm ra bug và giúp team của bạn làm việc hiệu qủa hơn.

Android đã có rất nhiều thư viện, framework phục vụ cho viết và chạy test. Bạn có thể dùng JUnit4, Robotium cho unit-test, Espresso cho end-to-end test. Ngoài ra còn rất nhiều framework khác như Monkeyrunner, Appium (xem thêm)

Mỗi khi code của bạn thay đổi thì nên chạy test để đảm bảo không gây ảnh hưởng tới các phần khác. Kết qủa của việc chạy test-case cũng cần được thông báo cho thành viên khác để chắc chắn rằng những code mà bạn viết là đúng và có thể review.

Bạn có thể nhìn thấy các biểu tượng như success trên các project của github. Biểu tượng này xuất hiện khi tất cả các test-case đã passed (không có lỗi). Để làm được điều này bạn cần tích hợp một dịch vụ Continuous Integration testing, cụ thể bài này sẽ giới thiệu dịch vụ Travis-CI.

2. Tạo project với test-cases

Source code: https://github.com/khacpv/travis-test.

Trong ví dụ này chứa các test case đơn giản để chạy. Các file cần chú ý:

app/build.gradle

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
testCompile 'junit:junit:4.12'

Android test: ApplicationTest.java

public void testSayHello(){
    assertEquals(true,true);
}
public void testSayBye(){
    assertEquals(false,false);
}

Unit test: ExampleUnitTest.java

@Test
public void addition_isCorrect() throws Exception {
    assertEquals(4, 2 + 2);
}

Cuối cùng trên thư mục project/ bạn chạy với dòng lệnh:

$ gradlew test  // để chạy unit-test
$ gradlew cAT   // để chạy AndroidTest

Nếu tất cả test case đều passed, bạn đã sẵn sàng để tích hợp continuous-intergration testing.

3. Tích hợp Travis-CI

Bạn cần tạo file project/.travis.yml với nội dung:

01. language: android
02. android:
03. components:
04. - tools
05. - platform-tools
06. - build-tools-23.0.2
07. - android-23
08. # Additional components
09. - extra-google-google_play_services
10. - extra-google-m2repository
11. - extra-android-m2repository
12. - addon-google_apis-google-19
13. # if you need to run emulator(s) during your tests
14. - sys-img-armeabi-v7a-android-19
15. - sys-img-x86-android-17
16. env:
17. global:
18. # install timeout: 8 minutes
19. - ADB_INSTALL_TIMEOUT=8
20. before_script:
21. - cd Helloworld
22. - echo no | android create avd --force -n test -t android-19 23. --abi armeabi-v7a
24. - emulator -avd test -no-skin -no-audio -no-window &
25. - android-wait-for-emulator
26. - adb shell input keyevent 82 &
27. script:
28. - ./gradlew test
29. - ./gradlew connectedAndroidTest

Chú ý với dòng 21 là đặt đường dẫn (path) để chạy test là thư mục "/Hellworld".

Đẩy code lên github.

Sau đó đăng nhập với tài khoản github của bạn vào http://travis-ci.org, và kích hoạt project bạn vừa tạo.

Sau này mỗi khi bạn sửa code và push lên github, travis-ci sẽ tự động chạy testcase cho bạn.

Một việc cuối cùng là tích hợp biểu tượng success.

Hãy sửa/tạo file README.md theo hướng dẫn Thêm badges icon

Cụ thể với project mẫu ở trên:

# Build & Testing
[ ! [Build Status] (https://travis-ci.org/khacpv/travis-test.svg?branch=master) ] (https://travis-ci.org/khacpv/travis-test)

Tổng kết

Việc tích hợp Continuous Integration testing khá đơn gỉản. Vấn đề còn lại là khi code bạn cần viết testcase cho nó và giúp các bạn làm việc chuyên nghiệp có quy trình hơn.