Hướng dẫn kiểm thử tự động cho Android (continuous integration testing)
Nguồn : http://travis-ci.org http://developer.android.com/training/testing/start/index.html Nội dung Giới thiệu Android testing và Continuous Integration service (gọi tắt là CI) Viết testcase đơn giản để chạy thử Tích hợp với một CI service (cụ thể là Travis-CI) và chạy. 1. Giới ...
Nguồn:
- http://travis-ci.org
- http://developer.android.com/training/testing/start/index.html
Nội dung
- Giới thiệu Android testing và Continuous Integration service (gọi tắt là CI)
- Viết testcase đơn giản để chạy thử
- 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ư 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 .
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.