1. Trang chủ
  2. » Giáo Dục - Đào Tạo

PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID

50 478 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 50
Dung lượng 1,59 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 2

ĐẠ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

Trang 3

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ế

Trang 4

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)

Trang 5

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ế

Trang 6

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

4.1 Instrument framework (IF) 11

4.2 Kiến trúc kiểm thử trên Android 12

5 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

2.1 Docs 16

2.2 Repository 16

2.3 Tools 17

3 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

4 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

Trang 7

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 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

2 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

3 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

4 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

Trang 8

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

Trang 9

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

Trang 10

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

Trang 11

Danh sách các từ viết tắt

CTS Compatibility Test Suite CDD Compatibility Defination Document IDE Integrated Development Environment API Application Programming Interface

AAPT Asset Package Tool

Trang 12

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

Trang 13

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

Trang 14

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

Trang 15

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

Trang 16

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

Trang 17

đó 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

Trang 18

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></ 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à <instrumentation> 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)

Trang 19

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,

Trang 20

- 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

Trang 21

CHƯƠNG 3: GIỚI THIỆU VỀ CTS

1 Giới thiệu về Compatibility Test Suite (CTS)

Hệ điều hành Android được phát triển bởi Google từ năm 2008 và đã phát hành

12 phiên bản tính đến tháng 10 năm 2016 Tính đến năm 2014 đã có hơn 1 tỉ 3 thiết bị

sử dụng hệ điều hành Android được đưa ra thị trường Mỗi chiếc điện thoại sử dụng Android trước khi đến với tay người dùng phải vượt qua tất cả các ca kiểm thử sự tương thích của phần cứng và phần mềm thông qua bộ các ca kiểm thử của Google phát hành song song với từng phiên bản hệ điều hành Android Quá trình bao gồm các bước sau:

Hình 3.1 : Qui trình đạt được Google’s certification

Để hỗ trợ nhà sản xuất kiểm thử bộ các ca kiểm thử này trên các sản phẩm của

họ, Google đã đưa ra một phương thức CTS (Compatibility test suite) Compatibility Test Suite [2] là một phương thức nhằm hỗ trợ chạy các ca kiểm thử nhanh và chính xác nhất Nếu thiết bị thỏa mãn được bộ các ca kiểm thử này thì Google mới cấp phép cho sử dụng hê điều hành của họ Mỗi phiên bản mới của hê điều hành Android được phát hành Google đều đưa ra ra một bộ kiểm thử bao gồm các API mới của phiên bản Android đó

Bảng 3.1 : Bảng các ca kiểm thử cho các phiên bản Android

Phiên bản Android Phiên bản CTS Số ca kiểm thử

Trang 22

Quá trình kiểm thử sẽ được mô phỏng đơn giản theo mô hình sau:

Hình 3.2 : Phương thức sử dụng CTS

Phương thức kiểm thử này gồm bốn bước cơ bản:

- Bước 1: Tải và cài đặt CTS trên máy tính

- Bước 2: Kết nối thiết bị cần kiểm thử với máy tính qua dây cáp USB

- Bước 3: Thực thi CTS Toàn bộ ca kiểm thử sẽ được đẩy qua thiết bị và sẽ được thực thi trên thiết bị sau đó kết quả sẽ được trả về và lưu trữ trên máy tính

- Bước 4: Kiểm tra kết quả của các ca kiểm thử

2 Nguyên lý và cách thức làm việc của CTS [3]

Hình 3.3 : Cấu trúc của CTS

Trang 23

Phương pháp CTS gồm 3 phần chính Repository, Tools, Docs

2.1 Docs

Phần này bao gồm các tài liệu của Google giới thiệu về hệ điều hành Android tương ứng với phiên bản đó Các API được sử dụng trong từng phiên bản của hệ điều hành này bao gồm tên API, các tham số của nó và miêu tả chi tiết hoạt động của API

đó

2.2 Repository

Phần này gồm 3 phần: Test case, Plans và Result

Phần 1: Testcases - Trong thư mục testcase có chứa các tệp apk( nội dung các ca

kiểm thử) và tệp xml (tên các ca kiểm thử) Hai tệp này được đặt tên giống nhau Danh sách các ca kiểm thử được liệt kê theo tệp xml như sau:

Hình 3.4 : Danh sách các ca kiểm thử

Tệp apk (android application package) là bộ cài đặt ứng dụng trên hệ điều hành android Khi build các ca kiểm thử tương ứng sẽ được tệp này Nó chính là file nén ZIP dự trên định dạng JAR sử dụng phần mở rộng là *.apk

Hai tệp xml và apk được đặt tên giống nhau và đặt trong thư mục cts\repository\testcases”

“.\android-Hình 3.5 : Danh sách các tệp xml và apk Phần 2: Plans - Việc gọi các ca kiểm thử (.xml) tương ứng với nội dung ca kiểm thử

(.apk) sẽ được thực thi nhờ vào một tệp tin “plan” trong thư mục cts\repository\plans” Nó khai báo tên gói “package”của tệp tin apk cần được kiểm thử

Trang 24

“.\android-Hình 3.6 : Danh sách các pakage trong Plan Phần 3: Results - Chứa kết quả sau khi kiểm thử ở thiết bị dưới dạng xml Các ca

kiểm thử sau khi được thực thi trên thiết bị kiểm thử sẽ trả về kết quả tương ứng Các

kết quả này sẽ được lưu trữ trong thư mục “.\android-cts\repository\results”

Bảng 3.2: Câu lệnh hỗ trợ kiểm thử trong CTS

1 run cts plan <test_plan_name> Kiểm thử một plan

2 run cts package <package_name> Kiểm thử một package

3 run cts class <class_name> Kiểm thử một class

Trang 25

3 Cài đặt phương pháp CTS

3.1 Môi trường vật lý trên thiết bị kiểm thử

Wifi: Tùy theo nhu cầu của ứng dụng chạy ta yêu cầu phải kết nối wifi hay

không Thiết bị được kiểm thử (Device Under Test –DUT) có thể là điện thoại di động, đồng hồ thông minh sẽ kết nối wifi phục vụ cho việc kiểm thử để đảm bảo các ca kiểm thử được thực thi trong môi trường chuẩn và cho kết quả chính xác Một số testcase sẽ được kiểm thử bằng môi trường mạng di động nên việc sử dụng dữ liệu di động từ thẻ sim cũng sẽ được yêu cầu

Bluetooth: Nếu thiết bị test hỗ trợ bluetooth và yêu cầu phải được kết nối với

bluetooth trong các ca kiểm thử thì phải đặt ít nhất ba điểm phát bluetooth trong bán kính năm mét

Thẻ sim: Thiết bị cần được lắp sim nếu nó hỗ trợ tính năng SIM

Thẻ nhớ: Thiết bị cần lắp thẻ nhớ nếu phần cứng hỗ trợ khe thẻ nhớ

3.2 Cài đặt môi trường máy tinh

ADB và AAPT: Trước khi chạy CTS phải đảm bảo được cả Android Debug Bridge (adb) và Asset Package Tool (AAPT) được cài đặt trong đường dẫn hệ thống máy tính

Java Development Kit (JDK): Cần cài đặt chính xác phiên bản của java development kit:

- CTS 5.0 and later: Java 7

- CTS 4.4 and earlier: Java 6 Tải và đọc hướng dẫn sử dụng công cụ CTS của Google tại địa chỉ trang web: https://source.android.com/compatibility/downloads.html

3.3 Cài đặt trên thiết bị kiểm thử

Trước khi chạy CTS phải khôi phục cài đặt gốc của thiết bị bằng cách truy cập

thiết bị vào phần Cài đặt > Sao lưu và cài đăt > Khôi phục và cài đặt

Lưu ý: Quá trình này sẽ xóa sạch dữ liệu của người sử dụng thiết bị

- Cài đặt ngôn ngữ trên thiết bị

- Bật dữ liệu di động, định vị của thiết bị

- Kết nối wifi, bluetooth nếu các ca kiểm thử có yêu cầu

- Đảm bảo thiết bị không được bảo mật

- Khởi tạo chế độ USB debugging trên thiết bị bằng cách truy cập vào Cài đặt sau đó chọn cài đặt cho người phát triển và kích hoạt chế độ kết nối USB

Ngày đăng: 06/03/2017, 14:27

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Diego Torres Milano. “Android Application Testing Guide”. June 2011 [2] Compatibility Test Suite: https://source.android.com/compatibility/cts/ Sách, tạp chí
Tiêu đề: “Android Application Testing Guide”
[3] Nimda. “Using Android’s Compatibility Test Suite”. May 2010 Sách, tạp chí
Tiêu đề: “Using Android’s Compatibility Test Suite”
[4] Paul Blundell, Diego Torres Milano. “Learning Android Application Testing”. March 2015 Sách, tạp chí
Tiêu đề: “Learning Android Application Testing”
[5] JunitPlugwithEclipse: https://www.tutorialspoint.com/junit/junit_plug_with_eclipse.htm [6] AndroidTestingTutorial:https://www.tutorialspoint.com/android/android_testing.htm Link
[7] AndroidSDK: http://code.tutsplus.com/tutorials/android-sdk-unit-testing-with-the-junit-testing-framework--mobile-421 Link

HÌNH ẢNH LIÊN QUAN

Hình 2. 2 : Kiến trúc testing framework  [1] - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 2. 2 : Kiến trúc testing framework [1] (Trang 19)
Bảng 3.1 : Bảng các ca kiểm thử cho các phiên bản Android - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Bảng 3.1 Bảng các ca kiểm thử cho các phiên bản Android (Trang 21)
Hình 3.2 : Phương thức sử dụng CTS - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 3.2 Phương thức sử dụng CTS (Trang 22)
Hình 3.3 : Cấu trúc của CTS - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 3.3 Cấu trúc của CTS (Trang 22)
Hình 4.1 : Xây dựng tệp .apk và .xml từ dự án - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 4.1 Xây dựng tệp .apk và .xml từ dự án (Trang 31)
Hình 4.9 : Test suite diagram - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 4.9 Test suite diagram (Trang 34)
Hình 4.12 : Quá trình kiểm thử trên thiết bị di động - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 4.12 Quá trình kiểm thử trên thiết bị di động (Trang 35)
Hình 5.4: Biểu đồ trình tự khi người dùng kết nối điện thoại - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 5.4 Biểu đồ trình tự khi người dùng kết nối điện thoại (Trang 39)
Hình 5.5: Biểu đồ trình tự khi chạy chương trình CTS Executor - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 5.5 Biểu đồ trình tự khi chạy chương trình CTS Executor (Trang 40)
Hình 5.7: Màn hình CTS Executor - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 5.7 Màn hình CTS Executor (Trang 41)
Bảng 5.7 : Bảng hiển thị các trạng thái để chạy và dừng chương trình - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Bảng 5.7 Bảng hiển thị các trạng thái để chạy và dừng chương trình (Trang 43)
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ả - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
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ả (Trang 44)
Hình 5.9 : Tập các test case dùng trong chương trình kiểm thử - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 5.9 Tập các test case dùng trong chương trình kiểm thử (Trang 45)
Hình 5.10 : Kết quả chạy chương trình kiểm thử - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Hình 5.10 Kết quả chạy chương trình kiểm thử (Trang 46)
Bảng 5.9 : Kết quả thực nghiệm - PHƯƠNG PHÁP và CÔNG cụ để hỗ TRỢ KIỂM THỬ PHẦN mềm ANDROID
Bảng 5.9 Kết quả thực nghiệm (Trang 47)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN