0

GIỚI THIỆU VỀ ANDROID TESTING

GIỚI THIỆU VỀ ANDROID TESTING

Nhóm thực hiện seminar: QA Nhóm I - Seminar II - 2015 Nhóm bao gồm các thành viên:

Nguyễn Thành Đạt

Nguyễn Thị Hồng Nhung

Nguyễn Thị Thanh Hải

Nguyễn Thị Huyền Châm

Nguyễn Thị Hương Quỳnh

Bài seminar của chúng tôi bao gồm các phần sau:

  1. Khái quát về kiểm thử trên Android

  2. Android Testing Framework

a. Giới thiệu về kiến trúc của Android Testing Framework

b. Ưu nhược điểm của việc sử dụng Android Testing Framework

  1. Hướng dẫn cài đặt project testing

a.Hướng dẫn cài đặt project testing cho một ứng dụng Android

b. Một vài phương thức đặc biệt

c.Demo

  1. Kết luận

  2. Tham khảo

I. Khái quát về kiểm thử trên Android

  1. Khái quát
  • Với sự phát triển nhanh chóng của Internet cộng với trào lưu mạng xã hội bùng nổ điện thoại thông minh đang ngày càng được sử dụng nhiều, nhằm đáp ứng nhu cầu giải trí đa dạng của người dùng

  • Từ một chiếc điện thoại thông thường chỉ được cài đặt sẵn vài ba ứng dụng của nhà sản xuất thì nay với các thiết bị chạy các hệ điều hành nhúng (Android, iOS,...) ta có thể dễ dàng đáp ứng được các nhu cầu của người dùng bằng cách cài thêm các phần mềm bên thứ ba mà không gây ra trở ngại nào

  • Càng ngày các yêu cầu của người dùng đối với phần mềm ngày càng cao. Phần mềm không chỉ phải thực hiện chính xác các tác vụ, hiệu quả mà còn phải dễ dàng sử dụng, có thiết kế đẹp mắt và tương thích với hệ sinh thái trên các hệ điều hành của thiết bị thông minh

→ Yêu cầu kiểm thử phần mềm trên các thiết bị thông minh là cần thiết

  1. Các yếu tố ảnh hưởng đến hoạt động của phần mềm trên thiết bị thông minh
  • Sử dụng nhiều các dịch vụ giải trí như kết nối mạng, nghe nhạc, xem phim … thời lượng pin bị rút ngắn đi nhiều. Tránh sử dụng điện thoại đến mức hết sạch pin và máy tự động tắt. Điều này sẽ làm tổn hại tới khả năng và hiệu suất hoạt động của điện thoại

  • Các ứng dụng luôn luôn tiêu thụ tài nguyên khi chúng kết nối mạng. Vì vậy người dùng nên tắt kết nối mạng của thiết bị đi trong một vài giờ

  • Bộ xử lý 2GHz trở lên có khả năng xử lý mọi tác vụ hệ thống và tăng tốc phần cứng đa phương tiện ở tốc độ xung nhịp cao với mức tiêu thụ điện năng thấp. Bộ xử lý còn kết hợp với phần mềm để giải mã video độ nét cao và giúp lướt web nhanh và mượt mà hơn

  • Bộ nhớ RAM trên máy giúp điện thoại có khả năng chạy đồng thời nhiều ứng dụng. Các dòng ĐT cao cấp được trang bị 2GB RAM trở lên, có thể chạy nhiều ứng dụng đồng thời mà không làm ảnh hưởng đến hiệu suất hoạt động

  • Hầu hết các thiết bị di động đều hạn chế như tốc độ xử lí của CPU, không gian lưu trữ,...vì vậy vấn đề tiết kiệm tài nguyên hệ thống của các ứng dụng cũng rất cần được xem trọng

  1. Lựa chọn thiết bị thông minh để kiểm thử
  • Hiện nay có rất nhiều các hãng sản xuất ra các thiết bị thông minh chạy Android, với vô số các kích cỡ màn mình khác nhau. Các đội ngũ kiểm thử rất khó và gần như không thể có đủ tất cả các thiết bị và kiểm thử trên tất cả các thiết bị cũng sẽ mất rất nhiều công sức

  • Chính vì vậy, chúng ta nên lựa chọn các thiết bị phổ biến mà có đông đảo người sử dụng và các thiết bị tiêu biểu của mỗi hãng sản xuất cũng như phân khúc của các thiết bị:

    • Thiết bị cao cấp: Samsung Galaxy S6, Sony Xperia Z3, LG G4, HTC One M9…

    • Thiết bị tầm trung: Samsung Galaxy A5, LG G3, HTC Desire 816…

    • Thiết bị giá rẻ: Samsung Galaxy E5, HTC Desire 320, Sony Xperia M2…

  • Ngoài ra, phụ thuộc vào yêu cầu của phần mềm cũng như thị trường phát hành mà chúng ta sẽ sử dụng các thiết bị phù hợp với yêu cầu hay phổ biến trên thị trường đó để đảm bảo sự chính xác và phù hợp với thực tế khi kiểm thử phần mềm

II.Android Testing Framework

  1. Giới thiệu về kiến trúc của Android Testing Framework
  • Một trong những framework chuẩn cho việc kiểm thử ứng dụng Android đó là Android testing framework. Nó là một framework rất mạnh và dễ sử dụng cho việc kiểm thử và cũng như được tích hợp tốt với bộ công cụ Android SDK

  • Được mở rộng từ JUnit framework chuẩn với nhiều tính năng phù hợp với các chiến lược kiểm thử. Những tính năng này bao gồm:

    • Bổ sung các class Android mở rộng từ JUnit framework cho phép truy cập vào các đối tượng hệ thống trong Android

    • Instrumentation framework cho phép kiểm soát và kiểm tra ứng dụng. IF điều khiển ứng dụng kiểm thử và cho phép gắn các đối tượng thay thế giả lập (Mock object) vào ứng dụng để chạy

    • Các đối tượng giả lập (Mock) được sử dụng phổ biến trong hệ thống Android

    • Các công cụ cho phép thực hiện các test riêng lẻ hay chạy cả một dãy các lệnh test mà có thể không cần đến Instrumentation framework (IF)

    • Hỗ trợ quản lí test và các project test trong ADT plugin của Eclipse và cả chế độ dòng lệnh command line của hệ điều hành

    Kiến trúc Android Testing Framework: Selection_023.png

Chú thích:

  • Application Package: Là ứng dụng mà sẽ cần phải kiểm thử

  • InstrumentationTestRunner: Làm nhiệm vụ trung gian trong việc chạy các testcase để kiểm tra ứng dụng. Android Instrumentation là một tập các phương thức điều khiển trong hệ thống Android. Các điều khiển này độc lập với vòng đời của ứng dụng và chúng cũng kiểm soát cách Android tải ứng dụng để chạy. Thông thường Android framework không cung cấp cách để gọi trực tiếp các hàm callback trong vòng đời của một ứng dụng như onCreate(), onResume(),... nhưng với instrumentation ta có thể gọi các hàm này thông qua các phương thức như getActivity(), activity.finish(),...Nó bao gồm:

    • Test tools: Là một công cụng SDK để chạy các lệnh kiểm tra. Chúng được tích hợp trong Eclipse IDE hoặc chạy trong command line
    • MonkeyRunner: Là một công cụ với ngôn ngữ là Python mà cung cấp các API để viết các chương trình để điều khiển môi trường của các thiết bị Android hoặc máy ảo bên ngoài các đoạn code của ứng dụng. Monkey là một công cụ dòng lệnh để kiểm thử khả năng chịu tải của ứng dụng thông qua công cụ ADB của Android
  • Test package: được tổ chức trong một project kiểm thử. Package này tuân theo quy ước đặt tên. Nếu một ứng dụng có tên package là "com.mydomain.myapp" thì package của project kiểm thử sẽ là "com.mydomain.myapp.test" .Test package bao gồm 2 phần dưới đây:

    • Test case classes: bao gồm các phương thức kiểm thử để chạy trên ứng dụng cần kiểm tra. Android cung cấp một vài class kế thừa từ class TestCase và Assert của Junit framework như ApplicationTestCase, InstrumentationTestCase…
    • Mock objects: bao gồm các dữ liệu đầu vào sẽ được sử dụng cho các test case. Để chống sự phụ thuộc (dependency injection) trong kiểm thử, Android cung cấp các class để tạo các đối tượng hệ thống giả lập như MockContext, MockContentProvider…
  1. Ưu nhược điểm của Junit Testing Framework cho Android

a. Ưu điểm:

  • Dựa trên nền tảng của JUnit test nên quen thuộc và dễ học

  • Được phát triển cho mục đích test các thành phần trong ứng dụng nên dễ cài đặt

  • Tốc độ chạy test nhanh

  • Hệ thống thư viện và support phong phú

  • Framework và tool được hỗ trợ bởi Google, tương thích với tất cả các phiên bản Android, được cập nhật thường xuyên

b. Nhược điểm:

  • Mỗi framework chỉ hỗ trợ test một phần của ứng dụng nên có thể phải sử dụng kết hợp nhiều framework

  • Không test được giao diện

  • Chủ yếu dùng unit test

  • Không bắt được thao tác vật lý

  • Cần kiến thức về lập trình

  1. Cài đặt project testing

Các bước cài đặt project:

  • Bước 1: Tạo một project Android sử dụng để kiểm thử

  • Chọn Menu → File → New Project → Android Application Project

  • Sau đó nhấn Next -> Finish button để completed tạo project Selection_024.png

  • Bước 2: Tạo một Project Test

  • Làm tương tự như bước 1 thì hiển thị dialog sau: Selection_025.png

  • Sau đó Nhấn Next button => Select target screen hiển thị

  • Chọn project vừa tạo xong ở trên Selection_026.png

  • Bước 3: Tạo test case

  • Từ TemperatureConverterTest project chọn File → New → JUnit Test case => hộp thoại sẽ xuất hiện như sau: Selection_027.png

  • Sau khi nhấn Next, eclipse sẽ xuất hiện hộp thoại cho phép chọn các method và class tương ứng với các project mà ta đã chọn

  • Sau khi chọn xong ta sẽ thấy màn hình code như sau

  • Một vài phương thức đặc biệt: Selection_028.png

  • Demo: Test case cho phép chia: 1/2 ; 1/3 ; 4/-2 ; 1/0 ; 0/0

report_201511_1.JPG

report_201511_2.JPG

Tổng kết

  • Bài viết đưa ra cái nhìn tổng quan về unit test sử dụng Android Junit Framework

  • Lưu ý một số phương thức đặc biệt cần dùng khi viết test case như: Setup(), tearDown(), assertEquals(), assertFalse(), assertTrue()

  • Để khách phục các nhược điểm của Android Junit Framework cần sử dụng:

    • UI Automator cho kiểm thử tự động Android

    • Robotium Android Testing tool cho kiểm thử giao diện(user interface)

Tham khảo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí