Hướng dẫn hoàn chỉnh cho Android Testing
1. Tại sao kiểm thử Android? Android là hệ điều hành lớn nhất thế giới. Đồng thời Android cũng là hệ điều hành phân mảnh. Có hàng tá các thiết bị và các phiên bản Android mà ứng dụng của bạn cần phải tương thích với chúng. Nó không quan trọng việc bạn đầu tư bao nhiêu thời gian vào thiết ...
1. Tại sao kiểm thử Android?
Android là hệ điều hành lớn nhất thế giới. Đồng thời Android cũng là hệ điều hành phân mảnh. Có hàng tá các thiết bị và các phiên bản Android mà ứng dụng của bạn cần phải tương thích với chúng.
Nó không quan trọng việc bạn đầu tư bao nhiêu thời gian vào thiết kế và thực hiện, sai lầm là điều không thể tránh khỏi, và lỗi sẽ xuất hiện.
2. Những lầm trưởng trong Android testing.
Nhiều doanh nghiệp phát triển chiến lược Android testing dựa trên quan niệm sai lầm thường thấy. Trong phần này chúng ta cùng xem xét một vài lầm trưởng phổ biến và thực tế trong quá trình Android testting gặp phải.
_Ứng dụng bị treo trong quá trình sử dụng trên thiết bị thực tế. _
Lầm tưởng 1: Tất cả các thiết bị Android đều giống nhau ... thử nghiệm trên giả lập là đủ.
Hãy bắt đầu với một ví dụ đơn giản: Một ứng dụng hoạt động hoàn hảo trên thiết bị giả lập nhưng trên một số thiết bị thực tế, nó bị treo trong quá trình thực hiện.
Thiết bị giả lập không đủ để thực hiện test điện thoại di động. Bạn phải thử nghiệm ứng dụng của mình trên các thiết bị thực tế.
Lầm tưởng 2: Thực hiện test trên một số thiết bị phổ biến là đủ.
Trên các thiết bị khác nhau, ứng dụng của bạn trông khác nhau, vì mỗi thiết bị có phần cứng, kích cỡ màn hình, bộ nhớ khác nhau, vv . Bạn phải thử nghiệm ứng dụng trên các thiết bị khác nhau, phiên bản hệ điều hành khác nhau, địa điểm khác nhau và tốc độ mạng khác nhau…
Lầm tưởng 3: Test thăm dò ngay trước khi ra mắt sản phẩm là đủ.
-
Nói chung trong tất cả các thử nghiệm, chúng ta đều thiết kế các trường hợp kiểm thử sau đó thực hiện chúng. Nhưng trong kiểm thử thăm dò, kiểm thử thiết kế và thực hiện sẽ thực hiện cùng nhau.
-
Trong thử nghiệm thăm dò, không có kế hoạch và không có chuẩn bị, sau đó Tester sẽ test những gì mà họ cho là cần thiết. Một số chức năng sẽ được test liên tục, trong khi một số chức năng sẽ không được kiểm tra hoàn toàn.
Sai lầm 4: Nếu có một số lỗi trong ứng dụng, người dùng sẽ hiểu.
-
Nếu ứng dụng không hoạt động và có lỗi xảy ra thì người dùng sẽ gỡ bỏ ứng dụng đó.
-
vấn đề chất lượng là lý do đầu tiên để " bad review" trong Google Play. Nó ảnh hưởng đến danh tiếng của bạn và bạn mất đi sự tin tưởng của khách hàng.
3. Chiến lược Android testing.
Một chiến lược android testing chuẩn nên bao gồm những điều sau đây:
Unit Test
Integration Test
Operational Test
System Test
3.1 Unit test.
Unit tests bao gồm tập hợp các một hoặc nhiều chương trình được thiết kế để unit tests thành phần của source code, như là một method hoặc một class.
Android platform có thể tích hợp với JUnit 3.0 framework. Nó là open source framework cho unit test tự động. Android testing Framework là công cụ mạnh mẽ cho các nhà phát triển để viết các chương trình unit test có hiệu quả.
Bổ sung cho Unit test là Unit test giao diện người dùng (UI). Mục tiêu của quá trình này là tất cả các thử nghiệm liên quan tới giao diện người dùng.
kiểm tra giao diện người dùng đảm bảo rằng ứng dụng của bạn có giao diện chính xác để đáp ứng với chuỗi các hành động mà người dùng sẽ thực hiện trên thiết bị.
Những hành động sử dụng giao diện người dùng thông thường trên ứng dụng.
Cách phổ biến để test hiệu suất UI trên thiết bị Android là Instrumentation. Một trong những công cụ tốt nhất để tiến hành test UI trên Android là Robotium.
3.2 Integration tests.
Trong Integration tests, tất cả các tiêu chuẩn unit test phải đựo được kết hợp và xác minh. Integration tests thường liên quan đến việc kiểm tra các phần tích hợp như thế nào với với hệ điều hành Android giống như quá trình Service testing. Kiểm tra hoạt động, kiểm tra Content Provider,...
Các kiểu integration test trên Android
3.3 Operational tests.
-
Operational cũng được gọi là Functional Tests hay Acceptation Tests. Chúng là những thử nghiệm mức độ cao được thiết kế để kiểm tra tính đầy đủ và chính xác của ứng dụng.
-
Trong Android, Fitnesse là open-source framework tạo điều kiện cho việc tiến hành kiểm tra các hoạt động về mục tiêu của ứng dụng trở nên dễ dàng hơn.
3.4 System tests.
Trong System testing, hệ thống được kiểm tra tổng thể và kiểm tra sự tương tác giữa các thành phần, phần mềm và phần cứng.
Trong Android, System testing thường bao gồm:
GUI tests
Usability tests
Performance tests
Stress tests
Trong danh sách trên, Performance tests được tập trung test hơn. Bạn có thể sử dụng các tool như Traceview để thực hiện Performance tests trên Android. Tool này có thể giúp bạn debug của app.
4. Android testing tự động
Android là hệ điều hành phân mảnh vì thế cần test trên nhiều thiết bị khác nhau. Tuy nhiên việc này sẽ tiêu tốn khá nhiều chi phí, Android testing tự động có thể giúp giảm bớt chi phí phát sinh.
Lợi ích của Android testing tự động
-
Giảm thời gian thực hiện.
-
Tăng năng suất của quá trình phát triển.
-
Phát hiện lỗi sớm, tiết kiệm chi phí bảo trì.
-
Nhanh chóng phát hiện và sữa chữa các lỗi trong quá trình thực hiện.
-
Đảm bao chất lượng phần mềm.
Cùng nghiên cứu 3 framework sau:
-
Android Testing framework
-
Robotium Testing framework
-
Roboelectric Testing framework
5. Android testing framework.
Một trong những framework để kiểm tra tiêu chuẩn cho các ứng dụng Android là Android testing framework. Đây là một framework kiểm tra mạnh mẽ và dễ sử dụng, nó cũng được tích hợp với các công cụ SDK Android.
Kiến trúc Android testing framework
-
Application package is target ứng dụng cần được kiểm tra.
-
InstrumentationTestRunner là trình chạy các testcase, cái mà thực hiện các testcase trên target ứng dụng. Nó bao gồm:
2a) Test tool: Một công cụ SDK để xây dựng thử nghiệm. Chúng được tích hợp trong Eclipse IDE hoặc chạy như dòng lệnh.
2b) MonkeyRunner: Một công cụ cung cấp các API để viết các chương trình điều khiển thiết bị Android hoặc giả lập bên ngoài của code Android.
- Test package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối. Nếu ứng dụng đang thử nghiệm có package name là "com.mydomain.myapp" thì package nên là "com.mydomain.myapp.test". Test package gồm 2 đối tượng sau:
3a) Lớp testcase: Bao gồm các phương pjaps thực hiện trên taget ứng dụng
3b) Đối tượng giả: Bao gồm các dữ liệu giả sẽ được sử dụng như là mẫu đầu vào của testcases.
6. Android Test Case Classes.
-
Testcase bao gồm JUnit methods để chạy JUnit test.
-
TestSuite được sử dụng để chạy thiết lập các testcase.
-
InstrumentationTestSuite là một TestSuite nhúng Instrumentation vào Instrumentation testcase trước khi chạy chúng.
-
InstrumentationTestRunner là những testcase được chạy để thực hiện các kiểm tra các trường hợp trên target của ứng dụng.
-
AndroidTestCase mở rộng JUnit TestCase. Nó chứa các phương pháp để truy cập tài nguyên giống như Activity Context.
-
ApplicationTest xác minh các classes ứng dụng trong một môi trường có kiểm soát.
-
InstrumentationTestCase xác minh một tính năng cụ thể hoặc hành vi trên Target ứng dụng, ví dụ, xác minh giao diện người dùng của ứng dụng.
-
ActivityTestCase là class cơ sở hỗ trợ kiểm tra các hoạt động ứng dụng.
-
ProviderTestCase là class để kiểm tra ContentProvider đơn.
-
ServiceTestCase được sử dụng để kiểm tra các Service classes trong môi trường thử nghiệm. Nó cũng hỗ trợ vòng đời của dịch vụ.
-
SingeLauchActivityTestCase được sử dụng để kiểm tra single Activity cùng với mỗi InstrumentationTestCase.
-
ActivityUnitTestCase <Activity> được sử dụng để kiểm tra hoạt động single isolated.
-
ActivityInstrumentationTestCase2<Activity> mở rộng JUnit TestCase class. Nó kết nối bạn đến target application cùng với instrumentation. Với Class này, bạn có thể truy cập vào các thành phần giao diện của ứng dụng và send sự kiện UI (sự kiện tổ hợp phím hay cảm ứng) đến giao diện người dùng.
Dưới đây là một ví dụ về ActivityInstrumentationTestCase. Nó kiểm tra các hoạt động giao diện người dùng của ứng dụng tính toán, kiểm tra tính đúng đắn của kết quả đầu ra giao diện người dùng.
Bài viết được dịch lại từ nguồn: http://www.guru99.com/mobile-testing.html