Hướng dẫn kiểm thử và tự động hóa trên Android (Phần 2).

Bài này là phần tiếp nối của bài: https://viblo.asia/nguyen.thi.hong.nhung/posts/MdZkAQbRkox

Test tích hợp ( Integration test)

Trong liên kết test, các module unit test sẽ được kết hợp kiểm tra. Trong Android. Liên kết test thường bao gồm các kiểm tre sự liên kết với các thành phần Android, bao gồm test các thiết bị, test hoạt động, vv Các loại test liên kết trên Android Có rất nhiều khung nền test được sử dụng để tiến hành test liên kết trên Android như là Troyd, Roloeletric, Robotium

Test hệ thống (Operational tests)

Điều hành còn được gọi là test chức năng hoặc là test sự chấp nhận. Đây là các loại test cấp độ cao với thiết kế để check sẹ hoàn thành và chính xác của ứng dụng Trong Android, Fitnesse là nguồn mở giúp cho việc tiến hành test điều hành dễ dàng cho các ứng dụng mục tiêu

System tests

Trong test hệ thống, hệ thống được test toàn bộ và có sự kiên kết giữa các thành phần, phần mềm và phần cứng được check Trong Android, test hệ thongs thường bao gồm

  • GUI test
  • Test khả năng sử dụng
  • Test sự hoàn thành
  • Test khả năng chịu đựng Trong danh sách trên, việc test ự hoàn thành là cần được chú ý nhất. Bạn có thể sử dụng dụng cụ như là Traceview để tiến hành việc test hoàn thành trên Android. Các dụng cụ có thể giúp debug các ứng dụng của bạn và các profile của việc hoàn thành

Test Android tự động

Vì Android phân mảnh, việc test trên vố số các thiết bị là vô cùng cần thiết., Tuy nhiên lại tốn kém. Test tự động có thể giúp bạn tiết kiệm chi phí Lợi ích của Test android tự động

  • Giảm thời gian cho việc thực hiện test case
  • Tăng hiệu suất của các chương trình phát triển
  • Phát hiện bug sớm, tiết kiệm chi phí duy trì phần mềm
  • Nhanh chóng tìm ra và sửa bug trên thực hiện
  • Đảm bảo chất lượng phần mềm Khung nền test android (android framework)
  1. Trong những tiêu chuẩn của khung nền test cho các ứng dụng android là Android testing framework. Đây là khung nền test dễ sử dụng và có hiệu quả cao được liên kết với các công cụ Android SDK. 1 Gói ứng dụng là ứng dụng mục tiêu cần được test.
  2. Instrumentation test runner là một runner test case thực hiện các test case trên các ứng dụng mục tiêu. Nó bao gồm: 2a, Test tool: Các công cụ SDK cho việc xây dựng test. Nó được liên kết trong Eclipse IDE hoặc chạy các dòng yêu cầu 2b, Monkey Runner: Một công cụ cung cấp API cho chưng trình viết điều khiển một thiết bị Android và mô phỏng outside của Android code
  3. Gói test được tổ chức trong các chương trình test. Gói test bao gồm các tên quy ước. Nếu ứng dụng của test có tên gói "com.mydomain.myapp" thì gói test có thể là "com.mydomain.myapp.test". Gói test bao gồm chủ đề chính 3a, Lớp test case bao gồm phương pháp test để tiến hành trên các ứng dụng mục tiêu 3b, Các chủ đề Mock bao gồm các dữ liệu mock sẽ được sử dụng như input mẫu cho test case

Các lớp test case Android

  1. Test case bao gồm phương pháp JUnit để chạy JUnit test
  2. Test suite được sử dụng để chạy test case
  3. Instrumentation test suite là test suite sử dụng các công cụ đo đạc trước khi chạy test
  4. Instrumentation test runner là test case runner thực hiện test case trên các ứng dụng mục tiêu
  5. Android test case mở rộng test case JUnit. Nó bao gồm phương pháp thâm nhập các nguồn như Activity Context
  6. Application test case kiểm tra các lớp úng dụng trong việc kiểm soát môi trường
  7. Instrumentation test case kiểm tra các đặc điểm phổ biến hoặc các hành vi của ứng dụng mục tiêu, ví dụ như kiểm tra output UI của ứng dụng
  8. Activity test case dự trên các lớp test hỗ trợ trên Application Activities
  9. Provider test case lớp để test cho một mình Contentprovider
  10. Service Test case được sử dụng để test các lớp Service trong môi trường test. Nó cũng hỗ trợ cho vòng đời dịch vụ
  11. Singe lauch activity test case được sử dụng để test 1 hành động đơn lẻ với Instrumetation test case
  12. Activity Unit test case được sử dụng để test 1 hành động độc lập
  13. Activity Instrumentation Test case 2 mở rộng lớp test case JUnit. Nó kết nối bạn với ứng dụng mục tiêu với instrumentation. Với lớp này, bạn có thể truy cập vào các thành phần GUI ứng dụng và gửi các sự kiện GUI tới GUI( bàn phím hoặc cảm ứng) Dưới đây là một ví dụ của ActivityInstrumentationTestCase. Nó kiểm tra sự điều hành UI của ứng dụng máy tính, check việc đúng cảu Output UI Ví dụ về ActivityInstrumentationTestCase2 testing

Khung nền Robotium test (Robotium testing framework)

Tiêu chuẩn khung nền test Android có những giới hạn sau:

  • Không thể sử dụng để giả quyết các vấn đề
  • Việc chạy các ứng ụng chậm
  • Test case phức tạp và khó để thực hiện Robotium framework là lựa chọn tốt hơn để tiến hành test trên ứng dụng Android Robotium là khung nền nguồn mở và được xem xét là một khung nền mở roongjcuar Android. Sử dụng Robotium, Dev có thể viết các robust tự động GUI test case cho ứng dụng Android. Tuy nhiên, Dev có thể viết các chức năng, hệ thống và các kịch bản test có thể chấp nhận, là cầu nối giũa các hoạt động Android Các đặc điểm cải tiến của Robotium

Nhược điểm của Robotium testing framework

  • Khá rắc rối khi test UI với Robotium
  • Robotium chỉ cho phép debug trong test case, bạn không thể debug chương trình chính khi chạy test được
  • Robotium còn thiếu tương đối nhiều action. Ví dụ không thể tương tác với NotificationBar, hoặc mình không biết có cách nào để làm việc với picker và slider. (Date and Time Picker có sẵn hàm)

Các lớp Robotium test case

Robotium sử dụng các lớp (com.jayway.android.robotium.solo) cho việc test. Lớp này hỗ trợ test case và là cầu nối giữa các hoạt động. Solo được kiên kết với ActivityInstrumentationTestCase2

Tester có thể viết test case mà không cần sự hiểu biết về thiết kế ứng dụng ( black box testing) sử dụng lớp Robotium test case. Nó là đặc trưng nổi bật để so sánh các lớp test case Android Để sử dụng Robotium trong các chương trình test Android, bạn cần thực hiện theo các bước sau: Các lớp Roboelectric Test Case

Hệ điều hành của Roboeletric

Như được chỉ ra ở trên, Roboeletric có thể thực thiện các hành động sau: Đăng ký và tạo lớp Shadow Chặn việc load các lớp Android Sử dụng javaassist để ghi đè vào các phần của lớp Android Bind Shadow hướng đến các lớp Android Điều này cho phép code trong test đưuoc thực h iện mà k cần môi trường Android

Các loại khung nền (framework) test khác

Bên cạnh các khung nền test mà được đề cập bên trên, có rất nhiều khung nền test khác như là:

  • Calculon a Java DSL dành cho Android Activity Testing chạy trên Dalvik Virtual Machine
  • Android Mock, một khung nền test cho việc đối mặt với các mock trên Dalvik VM
  • Roboguide, chặn độc lập trong ứng dụng Android
  • Android Junit Report, 1 phần mềm test đo đạc dành cho Android tạo nên XML báo cáo cho sự liên kết với các dụng cụ khác

Thực hành tốt nhất cho test Android

  • Dev nên tạo nên các test case khi mà viết code
  • Toàn bộ test case nên được lưu trữ trong phiên bản kiểm soát toàn bộ với nguồn code
  • Sử dụng liên kết liên tục và chạy test mỗi khi code thay đổi
  • Tránh sử dụng mô phỏng và thiết bị nguồn