ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phan Thị Huế
PHƯƠNG PHÁP VÀ CÔNG CỤ ĐỂ HỖ TRỢ
KIỂM THỬ PHẦN MỀM ANDROID
LUẬN VĂN THẠC SĨ
HÀ NỘI - 2016
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phan Thị Huế
PHƯƠNG PHÁP VÀ CÔNG CỤ ĐỂ HỖ TRỢ
KIỂM THỬ PHẦN MỀM ANDROID
Ngành: Công nghệ thông tin
Chuyên ngành: Kĩ thuật phần mềm
Mã số: 60.48.01.03
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN CHÍNH: PGS.TS. Trương Ninh Thuận
NGƯỜI HƯỚNG DẪN PHỤ: TS. Trịnh Thanh Bình
HÀ NỘI – 2016
Lời cảm ơn
Trước tiên, em xin bày tỏ lòng biết ơn chân thành và sâu sắc tới Thầy giáo
PGS.TS Trương Ninh Thuận và TS Trịnh Thanh Bình đã tận tình chỉ bảo, hướng dẫn,
động viên và giúp đỡ em trong suốt quá trình thực hiện đề tài luận văn.
Em xin gửi lời cảm ơn sâu sắc tới các Thầy Cô trong Khoa Công nghệ thông tin
đã truyền đạt kiến thức quý báu cho em trong hai năm học vừa qua.
Con xin nói lên lòng biết ơn vô hạn đối với Cha Mẹ luôn là nguồn động viên,
chăm sóc và khích lệ con trên mỗi bước đường học vấn.
Cuối cùng, xin chân thành cảm ơn các Anh Chị và Bạn Bè, các thành viên lớp
K19, K20 KTPM đã ủng hộ, giúp đỡ tôi trong suốt thời gian tôi học tập trên giảng
đường và thực hiện đề tài luận văn này.
Tôi xin chân thành cảm ơn!
Hà Nội, ngày 01 tháng 10 năm 2016
Học viên
Phan Thị Huế
PHƯƠNG PHÁP VÀ CÔNG CỤ ĐẺ HỖ TRỢ KIỂM THỬ
PHẦN MỀM ANDROID
Phan Thị Huế
Khóa K20KTPM, ngành công nghệ thông tin.
Tóm tắt Luận văn:
Ngày nay với sự phát triển rộng rãi của hệ điều hành Android trên các dòng điện
thoại thì việc tạo ra các phần mềm, dự án liên quan đến Android càng ngày càng tăng
lên. Do đó các giải pháp hỗ trợ kiểm thử phần mềm Android sẽ rất có ý nghĩa trong
việc kiểm thử chất lượng sản phẩm của các nhà phát triển trước khi đưa đến người
dùng. Theo thống kê của Google Android chiếm 75% thị phần điện thoại thông minh
trên toàn thế giới vào thời điểm quý 3 năm 2012 và sau 2 năm đã có hơn một tỷ máy
được kích hoạt Android. Sự thành công của hệ điều hành này đã dẫn đến “cuộc chiến
điện thoại thông minh” giữa các hãng sản xuất điện thoại. Và bất kỳ một chiếc điện
thoại nào muốn kích hoạt Android đều phải trải qua tất cả các ca kiểm thử của Google.
Các ca kiểm thử đó được Google phát triển và tích hợp trong công cụ CTS
(Compatibility Test Suite) mà các đối tác phải tuân theo.
Với mỗi nền tảng của Android được ra đời, Google cung cấp các bộ API tương
ứng với nền tảng đó. Tương ứng với bộ API này tương ứng là tập các ca kiểm thử
CTS. Mục đích là kiểm tra sự tương thích của các thiết bị Android với nền tảng đó.
Với bộ kiểm thử CTS này Google cũng hỗ trợ các đối tác một công cụ để có thể kiểm
thử nhanh với các thiết bị trước khi ra thị trường nằm trong bộ CTS.
Sau khi nghiên cứu phương pháp CTS Google hỗ trợ các đối tác kiểm thử trên
thiết bị di động chạy Android, luận văn đã áp dụng phương pháp này và xây dựng một
công cụ hỗ trợ kiểm thử trên dự án Android Junit Test và mang lại những lợi ích đáng
kể và có hiệu quả cao so với việc kiểm thử trực tiếp trên IDE (eclipse).
Lời cam đoan
Tôi xin cam đoan phương pháp và công cụ để hỗ trợ kiểm thử phần mềm Andoid
được trình bày trong luận văn này là do tôi thực hiện dưới sự hướng dẫn của PGS.TS
Trương Ninh Thuận và TS Trịnh Thanh Bình.
Tất cả những tham khảo từ các nghiên cứu liên quan đề được nêu nguồn gốc một
các rõ ràng từ danh mục tài liệu tham khảo trong luận văn. Trong luận văn, không có
việc sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về tài
liệu tham khảo.
Hà Nội, ngày 01 tháng 10 năm 2016
Tác giả
Phan Thị Huế
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VỀ LUẬN VĂN VÀ LÝ DO CHỌN ĐỀ TÀI ...................5
1.
Kiểm thử ứng dụng trên hệ điều hành Android .........................................5
2.
Nội dung luận văn ......................................................................................6
3.
Cấu trúc của luận văn ................................................................................7
CHƯƠNG 2: KHÁI QUÁT VỀ KIỂM THỬ ỨNG DỤNG TRÊN ĐIỆN THOẠI
THÔNG MINH................................................................................................................8
1.
Các yếu tố ảnh hưởng đến hoạt động của phần mềm trên điện thoại thông
minh ..........................................................................................................................8
2.
Lựa chọn điện thoại thông minh để kiểm thử ............................................8
3.
Các dạng kiểm thử trên Android. ..............................................................9
4.
Nền tảng kiểm thử Android .....................................................................10
5.
4.1.
Instrument framework (IF) .................................................................11
4.2.
Kiến trúc kiểm thử trên Android ........................................................12
Các mục tiêu kiểm thử .............................................................................13
CHƯƠNG 3: GIỚI THIỆU VỀ CTS.............................................................................14
1.
Giới thiệu về Compatibility Test Suite (CTS) .........................................14
2.
Nguyên lý và cách thức làm việc của CTS [3]. .......................................15
3.
4.
2.1.
Docs ....................................................................................................16
2.2.
Repository...........................................................................................16
2.3.
Tools ...................................................................................................17
Cài đặt phương pháp CTS .......................................................................18
3.1.
Môi trường vật lý trên thiết bị kiểm thử .............................................18
3.2.
Cài đặt môi trường máy tinh ..............................................................18
3.3.
Cài đặt trên thiết bị kiểm thử ..............................................................18
Cách chạy các ca kiểm thử CTS ..............................................................19
4.1.
Sao chép dữ liệu vào thiết bị. .............................................................19
4.2.
Kiểm thử một Plan..............................................................................19
4.3.
Các câu lệnh hỗ trợ tối ưu thời gian kiểm thử. ...................................20
4.4.
Tái kiểm thử trên kết quả cũ. ..............................................................21
4.5.
Báo cáo kết quả ..................................................................................21
CHƯƠNG 4: ỨNG DỤNG CHẠY CTS TRONG KIỂM THỬ ANDROID JUNIT
TEST PROJECT ............................................................................................................23
1.
Phương pháp CTS áp dụng kiểm thử với dự án Android Junit Test .......23
2.
Cách tạo tệp tin .apk và .xml từ Eclipse ..................................................25
2.1.
Tạo tệp tin .apk sử dụng Eclipse ........................................................25
2.2.
Cách tạo tệp tin .xml từ dự án trên Eclipse ........................................26
3.
Quá trình kiểm thử trên thiết bị ...............................................................28
4.
Ưu điểm của công cụ so với kiểm thử trực tiếp trên Eclipse. .................29
CHƯƠNG 5: XÂY DỰNG CÔNG CỤ CTS EXECUTOR..........................................30
1.
2.
3.
4.
Môi trường và các công cụ sử dụng để thực nghiệm...............................30
1.1.
Cấu hình phần cứng ............................................................................30
1.2.
Các phần mềm sử dụng ......................................................................30
Phân tích thiết kế phần mềm....................................................................31
2.1.
Phân tích các ca sử dụng ....................................................................31
2.2.
Biểu đồ trình tự ...................................................................................32
2.3.
Biểu đồ hoạt động ...............................................................................33
Mô tả công cụ hỗ trơ kiểm thử ................................................................34
3.1.
Tổng quan về công cụ ........................................................................34
3.2.
Chi tiết các chức năng ........................................................................35
Xây dựng tập ca kiểm thử thử nghiệm với công cụ CTS Executor. ........40
4.1.
Xây dựng tập các ca kiểm thử ............................................................40
4.2.
Kết quả thực nghiệm với công cụ CTS Executor ...............................40
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ..............................................42
Danh sách hình vẽ
Hình 2.1 : Định dạng file manifest trong Android Junit Test........................................11
Hình 2.2 : Kiến trúc testing framework [1] ..................................................................12
Hình 3.1 : Qui trình đạt được Google’s certification ....................................................14
Hình 3.2 : Phương thức sử dụng CTS ...........................................................................15
Hình 3.3 : Cấu trúc của CTS .........................................................................................15
Hình 3.4 : Danh sách các ca kiểm thử ...........................................................................16
Hình 3.5 : Danh sách các tệp .xml và .apk ....................................................................16
Hình 3.6 : Danh sách các pakage trong Plan .................................................................17
Hình 3.7 : Thư mục kết quả chạy ..................................................................................21
Hình 3.8 : Minh họa cho kết quả chạy bằng phương pháp CTS ...................................22
Hình 3.9 : Chi tiết kết quả chạy của một ca kiểm thử ...................................................22
Hình 4.1 : Xây dựng tệp .apk và .xml từ dự án .............................................................24
Hình 4.2 : Tệp tin .apk được biên dịch từ dự án Android Junit Test.............................24
Hình 4.3 : Nội dung cho tập tin .xml .............................................................................24
Hình 4.4 : Cấu trúc của tệp Plan ....................................................................................25
Hình 4.5 : Kiểm tra trạng thái của thiết bị kiểm thử......................................................25
Hình 4.6 : Xây dựng tệp .apk từ dự án kiểm thử sử dụng Eclipse ................................25
Hình 4.7 : Đường dẫn chứa tệp .apk sau khi build bằng Eclipse ..................................26
Hình 4.8 : Công cụ tạo file .xml từ dự án Android Junit ...............................................26
Hình 4.9 : Test suite diagram ........................................................................................27
Hình 4.10 : Tệp tin .xml sau khi được tạo ra từ dự án kiểm thử ...................................27
Hình 4.11 : Multi USB Port ...........................................................................................28
Hình 4.12 : Quá trình kiểm thử trên thiết bị di động .....................................................28
Hình 5.1: Biểu đồ ca sử dụng khởi động chương trình .................................................31
Hình 5.2: Biểu đồ ca sử dụng khi kết nối điện thoại .....................................................31
Hình 5.3: Biểu đồ ca sử dụng thực hiện chạy chương trình CTS executor ...................32
Hình 5.4: Biểu đồ trình tự khi người dùng kết nối điện thoại .......................................32
Hình 5.5: Biểu đồ trình tự khi chạy chương trình CTS Executor .................................33
Hình 5.6: Biểu đồ hoạt động chạy chương trình CTS Executor ...................................33
1
Hình 5.7: Màn hình CTS Executor ................................................................................34
Hình 5.8 : Cài đặt thư mục các ca kiểm thử và lưu trữ báo cáo kết quả .......................37
Hình 5.9 : Tập các test case dùng trong chương trình kiểm thử....................................38
Hình 5.10 : Kết quả chạy chương trình kiểm thử ..........................................................39
Hình 5.11 : Kết quả kiểm thử xuất dưới file .excel ......................................................39
2
Danh sách bảng biểu
Bảng 3.1 : Bảng minh họa CTS versions cho các phiên bản Android ..........................14
Bảng 3.2: Câu lệnh hỗ trợ kiểm thử trong CTS.............................................................17
Bảng 4.1 : Bảng minh họa ưu điểm của công cụ CTS Executor ...................................29
Bảng 5.1 : Bảng minh họa cấu hình phần cứng để chạy công cụ CTS Executor ..........30
Bảng 5.2 : Danh sách các phân mềm sử dụng ...............................................................30
Bảng 5.4 : Bảng hiển thị icon cho các trạng thái kết nối ...............................................35
Bảng 5.5 : Bảng hiển thị cho các trạng thái của Bluetooth ...........................................35
Bảng 5.6 : Bảng các trạng thái hiển thị của wifi ...........................................................35
Bảng 5.7 : Bảng các trạng thái hiển thị của sim ...........................................................36
Bảng 5.8 : Bảng hiển thị các trạng thái để chạy và dừng chương trình ........................36
Bảng 5.9 : Tập các ca kiểm thử thực nghiệm ................................................................40
Bảng 5.10 : Kết quả thực nghiệm ..................................................................................40
3
Danh sách các từ viết tắt
CTS
CDD
IDE
API
DUT
ADB
AAPT
IF
Compatibility Test Suite
Compatibility Defination Document
Integrated Development Environment
Application Programming Interface
Device Under Test
Androi Debug Bridge
Asset Package Tool
Instrument framework
4
CHƯƠNG 1: GIỚI THIỆU VỀ LUẬN VĂN VÀ LÝ DO CHỌN
ĐỀ TÀI
1. Kiểm thử ứng dụng trên hệ điều hành Android
Với sự phát triển không ngừ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 minh chỉ được cài 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 hệ điều hành nhúng như
Android có thể dễ dàng đáp ứng được nhu cầu của người dùng bằng cách cài thêm
phần mềm bên thứ ba không gây trở ngại nào.
Từ đây lại đặt ra một vấn đề hiển nhiên là kiểm thử các phần mềm chạy trên các
thiết bị di động xem chúng có đáp ứng được các yêu cầu đề ra ban đầu hay không
trước khi phân phát sản phẩm đến tay người tiêu dùng. Có hàng nghìn 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. Một vài
lỗi, sai lầm xuất hiện trong phần mềm Android như sau [1]:
-
Cài đặt ứng dụng bị lỗi.
-
Ứng dụng bị treo khi hoạt động.
-
Màn hình hiển thị ứng dụng có vấn đề.
-
Ứng dụng bị treo khi tài nguyên không khả dụng.
-
Hiển thị lỗi khi ứng dụng ở chế độ màn hình xoay ngang hoặc dọc.
Những lầm tưởng phổ biến và thực tế trong quá trình kiểm thử phần mềm
Andoird thường thấy gồm có [4]:
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à đủ. Điều này hoàn toàn sai lầm, ví dụ 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 kiểm thử trên điện thoại di động. Do đó phải thử nghiệm
ứng dụng trên các thiết bị thực tế.
Lầm tưởng 2: Thực hiện kiểm thử trên một số thiết bị phổ biến là đủ. Điều này
hoàn toàn sai vì các thiết bị khác nhau ứng dụng được hiển thị 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...Phải kiểm thử ứ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 và địa điểm khác nhau, tốc
độ mạng khác nhau...
Lầm tưởng 3: Kiểm kê thăm dò trước khi ra mắt sản phẩm là đủ.
Lầm tưởng 4: Nếu có một số lỗi trong ứng dụng thì người dùng sẽ hiểu, điều này
hoàn toàn sai lầm. 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ì thế vấn đề chất lượng là yếu tố tiên quyết ảnh hưởng đến danh
tiếng và niềm tin của khách hàng.
5
Do đó để có một phần mềm chất lượng trước khi đến tay người dùng cần một
chiến lược kiểm thử chính xác trên nhiều các thiết bị khác nhau, phiên bản hệ điều
hành Android khác nhau gồm có:
-
Kiểm thử đơn vị (Unit test)
-
Kiểm thử tích hợp (Integration test)
-
Kiểm thử hoạt động (Operational test)
-
Kiểm thử hiệu năng (Performance test)
-
Kiểm thử hệ thống (System test)
-
Kiểm thử người dùng hay kiểm thử chấp nhận.
Giảm lược được thời gian kiểm thử và có một kết quả kiểm thử chính xác nhất
thì việc tìm ra các phương pháp và xây dựng công cụ hỗ trợ kiểm thử là rất cần thiết.
Hiện nay trên thị trường việc kiểm thử đơn vị (Unit test) chỉ được thực hiện trực tiếp
trên các môi trường phát triển như Eclipse, Android Studio mà chưa có một công cụ
nào hỗ trợ kiểm thử đơn vị nào thay thế. Đây chính là lý do để em tìm hiểu phương
pháp và xây dựng công cụ để hỗ trợ kiểm thử Android Junit Test.
2. Nội dung luận văn
Luận văn khái quát về kiểm thử trên các thiết bị thông minh sử dụng hệ điều
hành Android và giới thiệu về nền tảng kiểm thử của hệ điều hành này. Sau đó đi sâu
vào nghiên cứu phương pháp kiểm thử CTS do Google đề xuất để kiểm tra sự tương
thích của Android với các thiết bị sử dụng hệ điều hành này. Từ phương pháp nghiên
cứu đã xây dựng cách tiếp cận kiểm thử một dự án Android Junit Test, đồng thời xây
dựng công cụ hỗ trợ kiểm thử các phần mềm Android Junit trên các thiết bị di dộng
thực tế. Công cụ đã mang lại những ưu điểm đáng kể so với việc kiểm thử trực tiếp
hiện nay trên các môi trường phát triển như Eclipse hay Android Studio. Nó mang đến
một giao diện thân thiện với người dùng và hỗ trợ nhưng tính năng trực quan. Luận
văn cũng đưa ra việc thử nghiệm công cụ CTS Executor trên dự án Android Junit Test
thực tế Knox custom API Test để so sánh với việc kiểm thử trực tiếp dự án này trên
Eclipse. Qua thực nghiệm đã chỉ ra những ưu điểm công cụ CTS Executor mang lại
cũng như chỉ ra những hướng phát triển thêm của luận văn trong tương lai.
6
3. Cấu trúc của luận văn
Nội dung của luận văn được chia thành các chương như sau:
Chương 1: Giới thiệu về luận văn và lý do chọn đề tài.
Chương 2: Khái quát về kiểm thử ứng dụng trên điện thoại thông minh sử dụng
hệ điều hành Android.
Chương 3: Luận văn trình bày phương pháp kiểm thử CTS của Google hỗ trợ
các đối tác kiểm thử thiết bị di động sử dụng nền tảng Android trước khi ra thị
trường.
Chương 4: Luận văn trình bày cách thức áp dụng phương pháp CTS để xây
dựng công cụ hỗ trợ và phát triển phẩm mềm Android Junit test.
Chương 5: Luận văn trình bày thực nghiệm trong việc áp dụng công cụ để
kiểm thử một dự án Android Junit Test thực tế so với kiểm thử trực tiếp trên
môi trường phát triển Eclipse.
Chương 6: Tóm lược kết quả đạt được của luận văn và định hướng phát triển
trong tương lai.
7
CHƯƠNG 2: KHÁI QUÁT VỀ KIỂM THỬ ỨNG DỤNG TRÊN
ĐIỆN THOẠI THÔNG MINH
Đã qua rồi cái thời điện thoại chỉ sử dụng để gọi và nghe, máy tính chỉ giới hạn
dùng trong một số các lĩnh vực. Giờ đây với sự phát triển không ngừng của internet và
trào lưu mạng xã hội bùng nổ từ một chiếc điện thoại thông thường chỉ được cài sẵn
một vài ứng dụng của nhà sản xuất thì nay những thiết bị chạy các hệ điều hành nhúng
như Andoird, iOS...Đặc biệt Android là hệ điều hành mã nguồn mở do Google phát
hành cho phép nhà phát triển tạo ra các phần mềm vô cùng đa dạng và phong phú để
đáp ứng nhu cầu sử dụng và giải trí của người dùng. Và các phần mềm đó cần phải
kiểm thử có đáp ứng được các yêu cầu đề ra hay không.Trong chương này luận văn sẽ
đi vào tìm hiểu khái quát về kiểm thử phần mềm trên hệ điều hành Android [1]:
1. Các yếu tố ảnh hưởng đến hoạt động của phần mềm trên điện thoại thông
minh
Tuổi thọ của pin: Bình thường một chiếc điện thoại có thời lượng pin đủ dùng
trong nhiều ngày nhưng với những chiếc điện thoại thông minh do sử dụng rất nhiều
các dịch vụ giải trí như kết nối mạng, nghe nhạc, xem phim... nên thời lượng pin bị rút
ngắn đi rất nhiều thường xuyên phải nạp điện. Vì vậy khi phát triển phần mềm trên
điện thoại thông minh cần tính toán đến dung lượng pin khi phần mềm đó hoạt động.
Kết nối mạng: Các ứng dụng trên điện thoại luôn tiêu thụ tài nguyên khi chúng
kết nối mạng. Bản chất của di động là vị trí luôn thay đổi người dùng có thể ngắt kết
nối mạng ở những vùng không hỗ trợ. Phần mềm phát triển phải thiết kế có khả năng
hoạt động ngay cả khi không có kết nối mạng (offline) chẳng hạn như gửi thư điện tử
hay viết tin nhắn và ngay sau khi mạng được kết nối thì thư và tin nhắn mà người dùng
đã soạn thảo trước đó được gửi tự động.
Phần cứng khác nhau: Sự khác nhau giữa các thiết bị và phần mềm cài trên
từng thiết bị này, bao gồm kích cỡ màn hình, chipset, bộ nhớ trong, bộ nhớ ngoài, và
những cảm biến được hỗ trợ, GPS, bàn phím và đầu vào của thiết bị. Lý tưởng nhất
phần mềm phát triển có thể hoạt động trên mọi thiết bị phần cứng và nền tảng khác
nhau.
Giới hạn về tài nguyên: Hầu hết các thiết bị di động đều có tài nguyên 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.
2. Lựa chọn điện thoại thông minh để kiểm thử
Hầu hết các đội kiểm thử đều không có đủ tất cả mọi mẫu điện thoại cần thiết nên
trên mỗi nền tảng ta có thể chọn ra các thiết bị di động tiêu biểu để kiểm thử.
Chọn đúng thiết bị cần kiểm thử, vì mỗi thiết bị đều có những tính năng đặc thù
riêng ví dụ như iOS thì chỉ có năm mẫu có màn hình kích thước khác nhau là iPad (9.7
8
inches), iPad Mini (7.9 inches), iPhone 4S (3.5 inches) và iPhone 5 (4.0 inches) trong
khi Android thì có tới hơn 10 nhà sản xuất phần cứng như Samsung, Sony, HTC,
Google, LG... với hàng trăm mẫu màn hình kích thước khác nhau. Nắm bắt được các
kiến thức cơ bản của môi trường lập trình SDK để từ đó ta có thể tạo được các máy ảo
(Emulator) phù hợp để kiểm thử. Nhưng việc kiểm thử trên máy ảo khác xa hoàn toàn
với việc kiểm thử trên các thiết bị thực tế. Đây là một trong những sai lầm quan trọng
của việc kiểm thử trên các thiết bị di động. Để đảm bảo ứng dụng hoạt động tốt trên
các thiết bị thật thì nên kiểm thử trên một số các thiết bị như sau:
Các thiết bị phổ biển bao gồm: Iphone 5s của Apple, Nokia N73
Các thiết bị Android phổ biến: Samsung Galaxy Nexus chạy Android 4.0
Các thiết bị ít phổ biến: Sony Xperia Z1, 2
3. Các dạng kiểm thử trên Android.
Kiểm thử đơn vị (Unit testing): Được khuyến nghị nên sử dụng cho các đơn vị
mã nhỏ (API). Một đơn vị mã nhỏ có thể có một vài phương thức riêng lẻ hay phương
thức quan hệ trong một tệp chương trình. Kiểm thử đơn vị chỉ kiểm tra một phần nhỏ
của chương trình để xem chúng hoạt động có đúng không. Với Android, kiểm thử đơn
vị được tạo và chạy như một phần của qui trình phát triển phần mềm. Kiểm thử đơn vị
được viết bởi lập trình viên phát triển phần mềm đó. Các lập trình viên nên phân lập
các thành phần để kiểm thử và phải có khả năng tái kiểm thử. Đó chính là lý do tại sao
kiểm thử đơn vị và các đối tượng giả lập thường đặt cùng nhau.
Kiểm thử tích hợp: Khi kiểm thử đơn bị đã thành công thì kiểm thử tích hợp sẽ
giúp ta kiểm thử được cả ứng dụng khi kết hợp các modul với nhau. Như đã đề cập ở
bên trên kiểm thử đơn vị đã đủ linh hoạt để thay thế các loại kiểm thử khác, bao gồm
cả kiểm thử tích hợp. Bởi kiểm thử tích hợp sẽ cần nhiều mã hơn nên mất nhiều thời
gian, nhất là với các thiết bị di động tài nguyên luôn hạn hẹp. Để khắc phục ta có thể
chạy các công việc tốn thời gian một cách bất đồng bộ và chỉ kiểm thử tích hợp khi
kiểm thử đơn vị đã thành công.
Kiểm thử hoạt động (Activity): Activity là khái niệm đồng nhất và cũng là
thành phần quan trọng nhất trong ứng dụng Android. Một activity là một thành phần
rời rạc và liên kết chia sẻ dữ liệu với các thành phần khác trong Android thông qua
giao diện và các nguồn chạy ngầm. Android SDK cũng bao gồm các nền tảng cho
phép kiểm thử tự động các Activity. Thông thường Andoird Activity cần tích hợp với
hệ thống để thực thi được. Các Activity cần ActivityManager cung cấp vòng đời và
truy cập vào các tài nguyên, hệ thống file và cơ sở dữ liệu. Tương tự Service và
ContentProvider, tất cả các thành phần này được Android testing framework hỗ trợ
cho việc kiểm thử dễ dàng.
Kiểm thử hiệu năng: Quá trình kiểm thử này sẽ đo hiệu năng của các thành
phần trong hệ thống bằng cách lặp đi lặp lại việc gọi một chức năng hay một API nào
9
đó. Kiêm thử hiệu nặng được thực hiện để xác định hệ thống hoặc hệ thống con thực
hiện một khối lượng công việc cụ thể nhanh như thế nào. Nó cũng có thể dùng để xác
nhận và xác minh những thuộc tính chất lượng khác của hệ thống như khả năng mở
rộng, độ tin cậy và sử dụng tài nguyên. Một hệ thống được cho là kiểm tra hiệu năng
tốt phải đảm bảo các yếu tố như liệu có đáp ứng đủ cho người dùng một cách nhanh
chóng, liệu việc xử lý dữ liệu có đáp ứng được yêu cầu của người dùng, khả năng chịu
tải và hơn thế nữa. Ngoài ra liệu có xử lý được số lượng giao dịch lớn cùng một thời
điểm.
Kiểm thử hệ thống: Ứng dụng kiểm thử hệ thống là kiểm thử toàn bộ ứng dụng.
Một vài nền tảng bao gồm cả việc kiểm thử cả chương trình nhỏ chạy ngầm bên dưới.
Có một số các phần mềm kiểm thử tự động có thể sinh ra các tác tử (Agent) chạy
ngầm trên thiết bị di động để tạo ra các test scrip kiểm thử một cách tự động. Các tác
tử này có một vài dạng như chạy trên thiết bị và cho phép chúng tương tác với ứng
dụng hay chạy trên các ứng dụng riêng lẻ. Kiểm thử hệ thống cũng đo đặc tính hiệu
năng của các thành phần lặp lại nhiều lần để có thể tối ưu hóa phần mềm.
Kiểm thử giao diện: Là một quá trình rất quan trọng trong kiểm thử trên điện
thoại thông minh. Một ứng dụng lý tưởng là có thể hoạt động trên mọi phần cứng và
mọi nền tảng. Các thao tác như cuộn (scroll), kéo (drag), xoay màn hình (rotate),
(chọn) click, (giữ lâu) long click, chạm (touch)... Mọi ứng dụng cần phải được kiểm
tra xem có thể hoạt động tốt trên thiết bị đó hay chưa.
Kiểm thử cài đặt: Sau khi đóng gói phần mềm cần cài đặt việc kiểm thử có
thành công không trước khi bàn giao cho khách hàng.
4. Nền tảng kiểm thử Android
Nền tảng kiểm thử của Android cung cấp rất tiện dụng được mở rộng từ nền tảng
kiểm thử của Junit 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 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.
Các đối tượng giả lập (Mock) được sử dụng phổ biến trong hệ thống
Android để kiểm tra khả năng chịu tải của các ứng dụng.
Các công cụ cho phép thực hiện kiểm thử riêng lẻ hay chạy cả một dãy
các lệnh kiểm thử mà có thể không cần đến Instrumentation framework
(IF).
Hỗ trợ quản lí kiểm thử trong ADT plugin của Eclipse và cả chế độ dòng
lệnh của hệ điều hành.
10
4.1.
Instrument framework (IF)
Instrumentation framework là một phần cơ bản của nền tảng kiểm thử trong
Android. 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. Ví dụ ta có thể tạo một đối tượng giả lập
Context trước khi ứng dụng bắt đầu và cho phép ứng dụng sử dụng nó. Tất cả mọi
tương tác giữa ứng dụng và môi trường xung quanh có thể sử dụng phương pháp tiếp
cận này. Ta cũng có thể tách riêng ứng dụng của chúng ta trong một môi trường giới
hạn để lấy về kết quả, hoặc các dữ liệu được lưu trữ và không thay đổi như Content
Provider, cơ sở dữ liệu hay thậm chí là hệ thống các tệp tin.
Một dự án Android thường có một dự án kiểm thử tương ứng với tên kết thúc
bằng “Test”. Bên trong một dự án kiểm thử file AndroidManifest.xml khai báo thẻ cho
biết IF là instrumentation>. Ví dụ: giả sử dự án Android có file
manifest có dạng sau:
Hình 2. 1 : Định dạng file manifest trong Android Junit Test
Nhìn ví dụ này có thể thấy ngay rằng trong thẻ khai báo IF là
với thuộc tính name là trình chạy kiểm thử test runner, class mặc định của Android
testing API (android.test.runner), ta cũng có thể tùy biến class này bằng cách kế thừa
từ class InstrumentationTestRunner, thuộc tính targetPackage chỉ ra package của ứng
dụng mà ta muốn kiểm thử (trong ví dụ là AddressContacts).
11
4.2.
Kiến trúc kiểm thử trên Android
Hình 2. 2 : Kiến trúc testing framework [1]
Trong kiến trúc này InstrumentationTestRunner làm nhiệm vụ trung gian trong
việc chạy các các ca kiểm thử. Các thành phần chính trong kiến trúc này:
-
Application package: chứa toàn bộ ứng dụng để kiểm thử.
-
Test projects: chứa các mã nguồn, file manifest và những file khác dùng để
kiểm thử ứng dụng. Ta có thể sử dụng Eclipse để tạo ra dự án kiểm thử này.
-
Testing API: Nơi chứa các ca kiểm thử đã được cài đặt.
-
Junit: có thể sử dụng các class Junit testcase để kiểm thử đơn vị.
-
Instrumentation: Android Instrumentation là một tập các phương thức điều
khiển trong hệ thống Andoird. 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(),...
-
Test case classes: Android cung cấp một vài class kế thừa từ lớp TestCase và
Assert của Junit framework như Application TestCase, Instrumentation
TestCase,...
-
Mock Object: để chống sự phụ thuộc (dependency injection) trong kiểm thử,
Adroid cung cấp các class để tạo các đối tượng hệ thống giả lập như
MockContext, MockContentProvider,...
12
-
MonkeyRunner: những API để thực thi trong môi trường với ngôn ngữ là
Python.
-
Monkey: 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 hệ điều hành Android.
5. Các mục tiêu kiểm thử
Trong suốt quá trình phát triển phần mềm, các ca kiểm thử sẽ hướng đến các thiết
bị khác nhau. Từ đơn giản, phức tạp và tốc độ kiểm thử trên máy ảo đến trên một thiết
bị thật cụ thể nào đó. Ngoài ra có một vài trường hợp trung gian như chạy kiểm tra
trên một máy ảo cục bộ JVM hay DVM, phụ thuộc vào từng trường hợp. Mỗi trường
hợp đều có ưu và nhược điểm riêng. Máy ảo có lẽ là thiết bị phù hợp nhất mà ta có thể
thay đổi gần như tất cả các tham số cấu hình để mô phỏng các điều kiện khác nhau cho
các ca kiểm thử.
Thiết bị thật dùng để kiểm thử hiệu năng vì trên máy ảo sẽ không thể tính ra
được các thông số trên thiết bị thật sẽ như thế nào. Rendering, filling, và các trường
hợp khác phải được kiểm tra trước khi ứng dụng được chuyển giao cho người dùng
cuối. Tóm lại ứng dụng nên được kiểm tra ở mọi trường hợp, đây là cách tốt nhất để
phát hiện những lỗi trước hơn khi là lỗi được phát hiện bởi khách hàng khi sử dụng.
13
- Xem thêm -