Tải bản đầy đủ (.pdf) (85 trang)

Ứng dụng robotium để kiểm thử các chương trình trên android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.36 MB, 85 trang )

..

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
--------------------------------------

NGUYỄN VĂN NAM

ỨNG DỤNG ROBOTIUM ĐỂ KIỂM THỬ CÁC
CHƯƠNG TRÌNH TRÊN ANDROID

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Đà Nẵng - Năm 2017


ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
--------------------------------------

NGUYỄN VĂN NAM

ỨNG DỤNG ROBOTIUM ĐỂ KIỂM THỬ CÁC
CHƯƠNG TRÌNH TRÊN ANDROID

Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60.48.01.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học:


PGS. TS. NGUYỄN THANH BÌNH

Đà Nẵng - Năm 2017


- i-

LỜI CAM ĐOAN
Tơi xin cam đoan:
Đây là cơng trình nghiên cứu của riêng tôi. Các số liệu, kết quả nêu
trong luận văn là trung thực và chưa từng được ai cơng bố trong bất kỳ cơng
trình nào khác.
Tác giả luận văn ký và ghi rõ họ tên

NGUYỄN VĂN NAM


- ii-

MỤC LỤC
LỜI CAM ĐOAN ...................................................................................................... i
MỤC LỤC ................................................................................................................. ii
DANH MỤC CÁC BẢNG ..................................................................................... vi
DANH MỤC CÁC HÌNH VẼ ................................................................................ vi
MỞ ĐẦU ....................................................................................................................1
Chương 1
CƠ SỞ LÝ THUYẾT ........................................................................6
1.1. Kiểm thử phần mềm ............................................................................6
1.1.1.
Tổng quan về kiểm thử phần mềm..............................................6

1.1.2.
Quy trình kiểm thử phần mềm ....................................................6
1.1.2.1. Kiểm thử đơn vị (Unit Test) ...................................................7
1.1.2.2. Kiểm thử tích hợp (Integration Test) ......................................7
1.1.2.3. Kiểm thử hệ thống (System Test) ...........................................8
1.1.2.4. Kiểm thử chấp nhận sản phẩm (Acceptance Test) ...............10
1.1.3.
Kỹ thuật kiểm thử phần mềm ....................................................10
1.1.4.
Kỹ thuật kiểm thử chức năng ....................................................10
1.1.5.
Kỹ thuật kiểm thử cấu trúc ........................................................11
1.1.6.
Chiến lược kiểm thử phần mềm ................................................11
1.2. Khái niệm về kiểm thử trên điện thoại thông minh ..........................12
1.2.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 ...............................................................................................13
1.2.2.
Lựa chọn điện thoại thông minh để kiểm thử ...........................13
1.2.3.
Các dạng kiểm thử trên Android ...............................................14
1.2.4.
Nền tảng kiểm thử Android ......................................................16
1.2.4.1. Instrument framework (IF) ...................................................17
1.2.4.2. Kiến trúc kiểm thử ứng dụng trên Android ..........................18
1.2.4.3. Các mục tiêu kiểm thử ..........................................................20
1.2.5.
Các công cụ hỗ trợ kiểm thử Android hiện nay ........................20
1.2.5.1. Nền tảng kiểm thử Android Automator ................................20

1.2.5.2. Nền tảng kiểm thử Robotium ...............................................21
1.2.5.3. Nền tảng kiểm thử Roboelectric ...........................................23
1.2.5.4. UIAutomator Android ..........................................................24
1.2.5.5. Espesso .................................................................................24
1.2.6.
So sánh các framework kiểm thử trên Android hiện nay..........25
Chương 2

GIẢI PHÁP ỨNG DỤNG ROBOTIUM ĐỂ KIỂM THỬ ỨNG
DỤNG TRÊN ANDROID ...............................................................26
2.1. Các vấn đề kiểm thử các ứng dụng trên Android .............................26
2.1.1.
Mô tả vấn đề ..............................................................................26


- iii-

2.1.2.
Hạn chế của việc kiểm thử ứng dụng trên nền tảng Android ...27
2.2. Đề xuất giải pháp cải tiến ..................................................................27
2.2.1.
Phân tích tìm kiếm giải pháp.....................................................27
2.2.2.
Đề xuất giải pháp ......................................................................30
2.2.3.
Xây dựng quy trình kiểm thử ứng dụng di động trên Android .30
2.2.3.1. Mơ tả quy trình .....................................................................30
2.2.3.2. Xây dựng quy trình ...............................................................31
2.3. Ví dụ áp dụng quy trình trên để kiểm thử dự án Android sử dụng
Robotium 33

2.3.1.
Tạo dự án kiểm thử ...................................................................33
2.3.2.
Áp dụng quy trình để kiểm thử dự án Android .........................36
2.4. Kết luận .............................................................................................38
Chương 3
CÀI ĐẶT VÀ THỬ NGHIỆM .......................................................39
3.1. Cài đặt giải pháp................................................................................39
3.1.1.
Cài đặt môi trường ....................................................................39
3.1.2.
Viết kịch bản kiểm thử ..............................................................40
3.1.3.
Thực thi kiểm thử ......................................................................42
3.1.4.
Kết quả kiểm thử .......................................................................44
3.2. Kiểm thử ứng dụng quản lý nhân sự .................................................45
3.2.1.
Mô tả ứng dụng .........................................................................45
3.2.2.
Thực thi kiểm thử ......................................................................45
3.2.3.
Đánh giá kết quả .......................................................................47
3.3. Kiểm thử ứng dụng quản lý chi tiêu cá nhân ....................................48
3.3.1.
Mô tả ứng dụng .........................................................................48
3.3.2.
Thực thi kiểm thử ......................................................................49
3.3.3.
Đánh giá kết quả .......................................................................51

3.4. Kiểm thử ứng dụng quản lý sinh viên ...............................................51
3.4.1.
Mô tả ứng dụng .........................................................................51
3.4.2.
Thực thi kiểm thử ......................................................................52
3.4.3.
Đánh giá kết quả .......................................................................54
3.5. Nhận xét đánh giá..............................................................................54
3.6. Kết luận .............................................................................................55
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .............................................................56
TÀI LIỆU THAM KHẢO ......................................................................................58
QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN(Bản sao)………………………….59
PHỤ LỤC

……………………………………………………………………...1


- iv-

ỨNG DỤNG ROBOTIUM ĐỂ KIỂM THỬ CHƯƠNG TRÌNH TRÊN
ANDROID
Học viên: Nguyễn Văn Nam Chuyên ngành: Khoa khọc máy tính
Mã số: 60.48.01 Khóa: K31 Trường Đại học Bách khoa - ĐHĐN
Tóm tắt - Ngày nay, cùng với sự phát triển mạnh mẽ của hệ điều hành Android trên
các dòng điện thoại khác nhau, các dự án phần mềm hoặc ứng dụng liên quan đến nó càng
ngày càng tăng cao. Vậy, vấn đề đặt ra là làm thế nào để đảm bảo được chất lượng của một
sản phẩm phần mềm bất kỳ, đặc biệt là trên Android OS đối với xu hướng phát trển thời
nay? Đối với mơ hình phát triển phần mềm hoàn chỉnh như bây giờ, người ta thấy rằng giai
đoạn kiểm thử chất lượng sản phẩm trước khi đưa đến tay người tiêu dùng có ý nghĩa quan
trọng.

Kiểm thử phần mềm là một hoạt động giữ vai trò rất quan trọng để bảo đảm chất
lượng phần mềm và là hoạt động mang tính sống cịn trong các dự án sản xuất hoặc gia
cơng phần mềm. Vì vậy, kiểm thử phần mềm đã trở thành quy trình bắt buộc trong các dự
án phát triển phần mềm trên thế giới, kể cả ở Việt Nam.
Có rất nhiều giải pháp hỗ trợ kiểm thử chương trình phần mềm trên Android OS
hiện nay, ví dụ như BlueStacks App Player, Android on Intel Architecture, Calablash… Và
sau khi nghiên cứu Framework Robotium dùng hỗ trợ các đối tác kiểm thử chạy trên thiết
bị di động sủ dụng hệ điều hành Android, luận văn đã áp dụng framework này để xây dựng
một quy trình kiểm thử hỗ trợ kiểm thử trên dự án Android. Nó mang lại những lợi ích
đáng kể và có hiệu quả cao hơn so với việc kiểm thử trực tiếp trên IDE (Android Studio).
Từ khóa – kiểm thử phần mềm; kiểm thử phần mềm trên di động; kiểm thử phần mềm
trên android; kiểm thử phần mềm với robotium; kiểm thử phần mềm android với
robotium.


- v-

ROBOTIUM APPLICATION TO TEST THE SOFTWARE
PROGRAMS ON ANDROID OS
Abstract - Nowadays, along with the rapid development of Android Operating System
(OS) on the various smart phone brands, the number of software projects or applications
related to Android OS is increasing. Thus, the question is how to ensure the quality of any
software products, especially ones on the Android OS against the current trend? For the
completed software development models as currently, the software testing of the product
before releasing the consumer plays an important role.
Software testing is an essential part of the software quality assurance and is a
vital activity in the software production or out-sourcing. Therefore, software testing has
become a required process in software development projects all around the world,
including Viet Nam.
Many software testing support solutions are developed today, such as BlueStacks

App Player, Android on Intel Architecture, Calablash… And after studying the Robotium
Framework, which supports to testing partners to run on mobile devices with Android
OS, this thesis applies this framework to build a testing support process for Android
projects. . It brings some significant benefits and is more effective than directly testing on
the IDE (Android Studio).
Key words – software testing; android testing; mobile testing; android testing with
Robotium; testing android in robotium.


- vi-

DANH MỤC BẢNG
Số hiệu bảng

Tên bảng

Trang

1.1

So sánh các framework kiểm thử Android hiện nay

25

3.1

Thống kê kết quả ca kiểm thử đăng nhập hệ thống.

43


3.2

Thống kê kết quả ca kiểm thử ứng dụng quản lý nhân sự.

47

3.3

Thống kê kết quả ca kiểm thử ứng dụng quản lý thu chi cá

51

nhân.
3.4

Thống kê kết quả ca kiểm thử ứng dụng quản lý sinh viên.

54


- vii-

DANH MỤC CÁC HÌNH VẼ
Số hiệu
hình vẽ
1.1

Tên hình vẽ

Trang


Bốn cấp độ cơ bản của kiểm thử phần mềm

6

1.2

Các bước kiểm thử

12

1.3

Định dạng tệp manifest trong kiểm thử đơn vị Android

18

1.4

Kiến trúc kiểm thử ứng dụng trên Android

18

2.1

Mơ hình hóa qui trình kiểm thử các ứng dụng Android sử
dụng Robotium

28


2.2

Tạo mới dự án Android

30

2.3

Đồng bộ hóa Robotium

32

2.4

Giao diện chương trình máy tính Android

32

2.5

Kịch bản kiểm thử cho chương trình máy tính

33

2.6

Kết quả thực thi kiểm thử chương trình máy tính

35


3.1

Thực thi kiểm thử màn hình đăng nhập hệ thống

39

3.2

Kết quả kiểm thử màn hình đăng nhập hệ thống

40

3.3

Kết quả kiểm thử ca đăng nhập hệ thống

41

3.4

Đăng nhập hệ thống quản lý nhân sự

42

3.5

Kết quả kiểm thử màn hình đăng nhập hệ thống

43


3.6

Màn hình thêm mới nhân viên

43

3.7

Kết quả kiểm thử màn hình thêm mới nhân viên

44

3.8

Màn hình thêm giao dịch

46

3.9

Kết quả kiểm thử màn hình thêm giao dịch

46

3.10

Màn hình quản lý chi tiêu

47


3.11

Kết quả kiểm thử màn hình quản lý chi tiêu

47

3.12

Quản lý sinh viên

49

3.13

Kết quả kiểm thử màn hình quản lý sinh viên

49

3.14

Màn hình thêm sinh viên

50

3.15

Kết quả kiểm thử màn hình thêm sinh viên

50



- 1-

MỞ ĐẦU
Lý do chọn đề tài

1.

Ngày nay, các phần mềm ngày càng trở lên phức tạp và đồ sộ, việc tạo ra một
sản phẩm phần mềm có thể bán được trên thị trường đòi hỏi sự nỗ lực của hàng
chục, hàng trăm thậm chí hàng ngàn nhân viên. Để tạo ra một sản phẩm thì khơng
phải chỉ do một tổ chức đứng ra làm từ đầu đến cuối, mà địi hỏi sự liên kết, tích
hợp của rất nhiều sản phẩm, thư viện lập trình của nhiều tổ chức khác nhau. Từ đó
địi hỏi việc kiểm thử phần mềm ngày càng trở nên quan trọng và rất phức tạp.
Song song với sự phát triển các cơng nghệ lập trình, các ngơn ngữ lập trình… thì
cơng nghệ và kỹ thuật kiểm thử phần mềm ngày càng phát triển và mang tính khoa
học.
Kiểm thử là một trong những hoạt động quan trọng trong tiến trình phát triển
phần mềm. Nó góp một phần rất lớn trong việc đánh giá chất lượng của một phần
mềm và là qui trình bắt buộc trong các dự án phát triển phần mềm trên thế giới
cũng như trong nước. Có rất nhiều kỹ thuật kiểm thử phần mềm được phát triển.
Trong đó, kiểm thử là một trong những kỹ thuật hỗ trợ việc đánh giá chất lượng
một phần mềm.
Luận văn này tập trung nghiên cứu các vấn đề về kiểm thử các ứng dụng trên
nền tảng Android sử dụng framework robotium, đây là công cụ hỗ trợ rất mạnh
trong việc kiểm thử chức năng các ứng dụng. Khi kiểm thử hệ thống, người kiểm
thử phải làm việc với các chức năng do GUI cung cấp. Các sự kiện khơng mong
đợi, có nhiều cách để nhập và xuất dữ liệu với miền dữ liệu nhập vào rất lớn làm
cho người lập trình viên khó kiểm sốt lỗi.
Lập trình ứng dụng trên điện thoại hiện nay ở Việt Nam rất phổ biến các ứng

dụng trên Android, iOS, Window Phone ngày càng nhiều. Tuy nhiên, các công ty


- 2-

phần mềm gặp nhiều khó khăn trong việc kiểm thử các phần mềm này bởi các lý
do sau:
-

Các kỹ thuật viên kiểm thử chưa có một phương pháp, hay qui trình nhất
qn để kiểm tra tính đúng đắn của các sản phẩm trên điện thoại.

-

Trong quá trình phát triển phần mềm, sản phẩm luôn phải cập nhật liên tục.
Mỗi lần phiên bản mới được phát hành người kiểm thử phải tiến hành kiểm
thử hồi quy tất cả các thành phần, để tránh không bị xung đột.

-

Miền dữ liệu nhập vào cho các thành phần quá lớn, nhiều ràng buộc.

-

Các sự kiện xảy ra không mong đợi.

-

Giao diện phải nhất quán theo chuẩn, điều này tạo cho phần mềm có tính
khả dụng.


-

Việc kiểm thử các ứng dụng trên điện thoại di động chạy trên hệ điều hành
Android hiện vẫn còn chưa hồn chỉnh. Đã có rất nhiều cơng cụ giúp giải
quyết kiểm thử cho các ứng dụng trên nền tảng Android, tuy nhiên vẫn chưa
phải là giải quyết được tất cả.

Vì lý do trên tơi đề xuất chọn đề tài luận văn cao học:
“Ứng dụng Robotium để kiểm thử các chương trình trên Android”

Mục đích và ý nghĩa đề tài

2.

Mục đích
Với những lý do được nêu ở trên, đề tài sẽ hướng đến việc nghiên cứu về công
cụ Robotium để kiểm thử các ứng dụng di động trên nền tảng Android. Từ đó giải
quyết được bài tốn chi phí, khó khăn khi kiểm thử tự động các ứng dụng trên nền
tảng Android một cách hiệu quả và nhanh chóng.

Ý nghĩa khoa học
-

Nắm vững và vận dụng tốt kỹ thuật kiểm thử tự động dựa trên công cụ
Robotium.

-

Đề xuất được giải pháp kiểm thử chức năng, kiểm thử giao diện trên nền

tảng Android một cách tự động và hiệu quả, tiết kiệm chi phí.


- 3-

-

Kết quả có thể làm tài liệu tham khảo cho các kiểm thử viên của các đơn vị
phát triển phần mềm, hoặc các học viên – sinh viên trong việc nghiên cứu
kiểm thử phần mềm trên di động.

Ý nghĩa thực tiễn

3.

Đề tài mang ý nghĩa thực tiễn rất lớn trong thời kì ứng dụng di động ngày
càng phổ biến và đóng vai trị khơng thể thiếu trong đời sống hằng ngày. Nó giúp
cho các nhà phát triển phần mềm biết được khả năng của ứng dụng, điều chỉnh một
cách hợp lý cũng như kịp thời đưa ra những phương án giải quyết phù hợp cho các
vấn đề liên quan. Giúp đảm bảo tính tin cậy của ứng dụng và tránh những rủi ro
đáng tiếc trong quá trình sử dụng phần mềm.

Mục tiêu và nhiệm vụ

4.

Mục tiêu
Mục tiêu của đề tài là nghiên cứu sử dụng framework Robotium vào việc kiểm
thử tự động các chức năng của ứng dụng trên điện thoại. Để thực hiện được mục
tiêu này thì cần đạt được những mục tiêu cụ thể sau:

-

Nắm vững các kỹ thuật kiểm thử chức năng các ứng dụng trên di động chạy
hệ điều hành Android.

-

Nắm vững cách sử dụng thư viện Robotium để phát triển các kỹ thuật kiểm
thử.

-

Tìm hiểu và đề xuất được giải pháp giải quyết bài toán kiểm thử chức năng
trên ứng dụng điện thoại một cách hiệu quả.

Nhiệm vụ
Để đạt được những mục tiêu trên thì nhiệm vụ đặt ra của đề tài là:
-

Nghiên cứu sử dụng cơng cụ Robotium.

-

Nghiên cứu, phân tích và cài đặt giải pháp kiểm thử ứng dụng sử dụng công
cụ Robotium để kiểm thử.


- 4-

-


Xây dựng giải pháp và ứng dụng kiểm thử tự động các ứng dụng phần mềm
điện thoại trên nền tảng Android.

-

Đánh giá kết quả theo yêu cầu của đề tài.

Đối tượng và phạm vi nghiên cứu

5.
-

Kỹ thuật kiểm thử ứng dụng trên Android.

-

Cơng cụ hỗ trợ tự động hóa trong kiểm thử Robotium.

-

Quy trình kiểm thử phần mềm trên nền tảng Android.

Phương pháp nghiên cứu

6.
-

Thu nhập và phân tích các tài liệu và thông tin liên quan đến đề tài.


-

Thảo luận, lựa chọn phương hướng giải quyết vấn đề.

-

Xây dựng quy trình kiểm thử.

-

Kiểm tra, thử nghiệm và đánh giá kết quả.

Ý nghĩa khoa học và thực tiễn

7.
-

Kết quả nghiên cứu có thể làm tài liệu tham khảo cho các đơn vị phát triển
phần mềm đang cần tiến hành kiểm thử các chương trình trên Android có sử
dụng giao diện đồ họa.

-

Phần nghiên cứu lý thuyết: sẽ cung cấp một cách nhìn tổng quát về quá trình
kiểm thử phần mềm, các loại kiểm thử phần mềm và công cụ hỗ trợ việc
kiểm thử.

-

Phần thực nghiệm: cung cấp một quy trình kiểm thử tự động cho các ứng

dụng trên Android sử dụng công cụ Robotium để nâng cao hiệu quả công
việc cho nhân viên kiểm thử.


- 5-

8.

Cấu trúc luận văn
Chương 1: Cơ sở lý thuyết
Trình bày các khái niệm về kiểm thử ứng dụng phần mềm, các thành phần cơ

bản và các loại kiểm thử phần mềm được sử dụng phổ biến hiện nay.
Chương 2: Giải pháp ứng dụng công cụ Robotium để kiểm thử ứng dụng di
động trên Android.
Chương này trình bày các vấn đề còn tồn tại trong kiểm thử ứng dụng
Android, sau đó đề xuất quy trình ứng dụng Robotium để kiểm thử phần mềm trên
điện thoại di động Android.
Chương 3: Cài đặt và thử nghiệm
Trong chương này chúng ta sẽ áp dụng qui trình đã đề xuất ở chương 2 để
tiến hành kiểm thử một vài ứng dụng Android thực tế và dựa vào kết quả đạt được
để đưa ra kết luận.


- 6-

CƠ SỞ LÝ THUYẾT
Chương này trình bày các khái niệm về kiểm thử ứng dụng phần mềm, các
thành phần cơ bản và các loại kiểm thử ứng dụng phần mềm được sử dụng phổ
biến hiện nay.


1.1.
1.1.1.

Kiểm thử phần mềm
Tổng quan về kiểm thử phần mềm

Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm để xác định
xem phần mềm có đúng với đặc tả khơng và thực hiện trong môi trường như mong
đợi hay không. [1]
Mục đích của kiểm thử phần mềm là tìm ra lỗi chưa được phát hiện, tìm một
cách sớm nhất và bảo đảm rằng lỗi sẽ được sửa.
Mục tiêu của kiểm thử phần mềm là thiết kế tài liệu kiểm thử một cách có hệ
thống và thực hiện nó sao cho có hiệu quả, nhưng tiết kiệm được thời gian, cơng
sức và chi phí.
1.1.2.

Quy trình kiểm thử phần mềm

Cấp độ kiểm thử phần mềm được thể hiện như hình dưới đây.

Hình 1.1. Bốn cấp độ cơ bản của kiểm thử phần mềm [1].


- 7-

1.1.2.1.

Kiểm thử đơn vị (Unit Test)


Một đơn vị (Unit) là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm thử
được, ví dụ: các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương
thức (Method) [2].
Kiểm thử đơn vị thường do lập trình viên thực hiện. Cơng đoạn này cần được
thực hiện càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ phát
triển phần mềm [2].
Mục đích của kiểm thử đơn vị là bảo đảm thông tin được xử lý và kết xuất
(khỏi Unit) là chính xác, trong mối tương quan với dữ liệu nhập và chức năng xử lý
của Unit. Điều này thường đòi hỏi tất cả các nhánh bên trong Unit đều phải được
kiểm tra để phát hiện nhánh phát sinh lỗi [2].
Cũng như các mức kiểm thử khác, kiểm thử đơn vị cũng đòi hỏi phải chuẩn bị
trước các ca kiểm thử (hay trường hợp kiểm thử) (test case) hoặc kịch bản (test
script), trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệu mong muốn
sẽ xuất ra. Các test case và test script được giữ lại để sử dụng sau này.
1.1.2.2.

Kiểm thử tích hợp (Integration Test)

Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử như
một ứng dụng đã hoàn thành. Trong khi kiểm thử đơn vị kiểm tra các thành phần
và Unit riêng lẻ thì kiểm thử tích hợp kết hợp chúng lại với nhau và kiểm tra sự
giao tiếp giữa chúng [1].
Kiểm thử tích hợp có hai mục tiêu chính là:
 Phát hiện lỗi giao tiếp xảy ra giữa các Unit.
 Tích hợp các Unit đơn lẻ thành các hệ thống con (gọi là subsystem) và
cuối cùng là nguyên hệ thống hoàn chỉnh chuẩn bị cho kiểm thử ở mức hệ
thống (system test).
Có 4 loại kiểm thử trong kiểm thử tích hợp như sau:



- 8-

 Kiểm thử cấu trúc (Structure test): Kiểm thử nhằm bảo đảm các thành
phần bên trong của một chương trình chạy đúng, chú trọng đến hoạt động
của các thành phần cấu trúc nội tại của chương trình, chẳng hạn các lệnh
và nhánh bên trong.
 Kiểm thử chức năng (Functional test): Kiểm thử chỉ chú trọng đến chức
năng của chương trình, khơng quan tâm đến cấu trúc bên trong, chỉ khảo
sát chức năng của chương trình theo yêu cầu kỹ thuật.
 Kiểm thử hiệu năng (Performance test): Kiểm thử việc vận hành của hệ
thống.
 Kiểm thử khả năng chịu tải (Stress test): Kiểm thử các giới hạn của hệ
thống.
1.1.2.3.

Kiểm thử hệ thống (System Test)

Mục đích của kiểm thử hệ thống là kiểm thử xem thiết kế và toàn bộ hệ thống
(sau khi tích hợp) có thỏa mãn u cầu đặt ra hay không.
Kiểm thử hệ thống kiểm tra cả các hành vi chức năng của phần mềm lẫn các
yêu cầu về chất lượng như độ tin cậy, tính tiện lợi khi sử dụng, hiệu năng và bảo
mật.
Kiểm thử hệ thống bắt đầu khi tất cả các bộ phận của phần mềm đã được tích
hợp thành cơng. Thơng thường loại kiểm thử này tốn rất nhiều công sức và thời
gian. Trong nhiều trường hợp, việc kiểm thử đòi hỏi một số thiết bị phụ trợ, phần
mềm hoặc phần cứng đặc thù, đặc biệt là các ứng dụng thời gian thực, hệ thống
phân bố, hoặc hệ thống nhúng. Ở mức độ hệ thống, người kiểm thử cũng tìm kiếm
các lỗi, nhưng trọng tâm là đánh giá về hoạt động, thao tác, sự tin cậy và các yêu
cầu khác liên quan đến chất lượng của toàn hệ thống.
Điểm khác nhau then chốt giữa kiểm thử tích hợp và kiểm thử hệ thống là kiểm

thử hệ thống chú trọng các hành vi và lỗi trên tồn hệ thống, cịn kiểm thử tích hợp
chú trọng sự giao tiếp giữa các đơn thể hoặc đối tượng khi chúng làm việc cùng
nhau. Thông thường ta phải thực hiện kiểm thử đơn vị và kiểm thử tích hợp để bảo


- 9-

đảm mọi Unit và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện
kiểm thử hệ thống.
Sau khi hồn thành kiểm thử tích hợp, một hệ thống phần mềm đã được hình
thành cùng với các thành phần đã được kiểm tra đầy đủ. Tại thời điểm này, lập
trình viên hoặc kiểm thử viên (Tester) bắt đầu kiểm thử phần mềm như một hệ
thống hoàn chỉnh. Việc lập kế hoạch cho kiểm thử hệ thống nên bắt đầu từ giai
đoạn hình thành và phân tích các u cầu.
Địi hỏi nhiều cơng sức, thời gian và tính chính xác, khách quan, kiểm thử hệ
thống được thực hiện bởi một nhóm kiểm tra viên hồn tồn độc lập với nhóm phát
triển dự án để đảm bảo tính chính xác và khách quan [1].
Kiểm thử hệ thống thường có các loại kiểm thử sau:
 Kiểm thử chức năng (Functional test): Bảo đảm các hành vi của hệ thống
thỏa mãn đúng yêu cầu thiết kế.
 Kiểm thử khả năng vận hành (Performance test): Bảo đảm tối ưu việc
phân bổ tài nguyên hệ thống (ví dụ bộ nhớ) nhằm đạt các chỉ tiêu như thời
gian xử lý hay đáp ứng câu truy vấn.
 Kiểm thử khả năng chịu tải (Stress test hay Load test): Bảo đảm hệ thống
vận hành đúng dưới áp lực cao (ví dụ nhiều người truy xuất cùng lúc).
Stress test tập trung vào các trạng thái tới hạn, các "điểm chết", các tình
huống bất thường như đang giao dịch thì ngắt kết nối (xuất hiện nhiều
trong test thiết bị như POS, ATM).
 Kiểm thử cấu hình (Configuration test): Đảm bảo hệ thống hoạt động
tương thích với các loại phần cứng khác nhau.

 Kiểm thử khả năng bảo mật (Security test): Bảo đảm tính tồn vẹn, bảo
mật của dữ liệu và của hệ thống.
 Kiểm thử khả năng phục hồi (Recovery test): Bảo đảm hệ thống có khả
năng khơi phục trạng thái ổn định trước đó trong tình huống mất tài


- 10-

nguyên hoặc dữ liệu, đặc biệt quan trọng đối với các hệ thống giao dịch
như ngân hàng trực tuyến.
1.1.2.4.

Kiểm thử chấp nhận sản phẩm (Acceptance Test)

Mục đích của kiểm thử chấp nhận là kiểm thử khả năng chấp nhận cuối cùng để
chắc chắn rằng sản phẩm là phù hợp và thỏa mãn các yêu cầu của khách hàng và
khách hàng chấp nhận sản phẩm.
Trong giai đoạn kiểm thử chấp nhận thì người kiểm tra là khách hàng. Khách
hàng sẽ đánh giá phần mềm với mong đợi theo những thao tác sử dụng quen thuộc
của họ. Việc kiểm tra ở giai đoạn này có ý nghĩa hết sức quan trọng tránh cho việc
hiểu sai yêu cầu cũng như sự mong đợi của khách hàng.
Gắn liền với giai đoạn kiểm thử chấp nhận thường là một nhóm những dịch vụ
và tài liệu đi kèm, phổ biến như hướng dẫn cài đặt, sử dụng, v.v…Tất cả tài liệu đi
kèm phải được cập nhật và kiểm tra chặt chẽ [1].
1.1.3.

Kỹ thuật kiểm thử phần mềm

Mục tiêu của kiểm thử là phải thiết kế các trường hợp kiểm thử có khả năng cao
nhất trong việc phát hiện nhiều lỗi với thời gian và công sức tối thiểu. Do đó có thể

chia các kỹ thuật kiểm thử thành hai loại:
 Kỹ thuật kiểm thử hộp đen (Black – box Testing) hay còn gọi là kỹ thuật
kiểm thử chức năng (Functional Testing).
 Kỹ thuật kiểm thử hộp trắng (White – box Testing) hay còn gọi là kỹ thuật
kiểm thử cấu trúc (Structural Testing).
1.1.4.

Kỹ thuật kiểm thử chức năng

Trong kỹ thuật kiểm thử chức năng, dữ liệu kiểm thử được xuất phát từ đặc tả
phần mềm bao gồm: đặc tả các yêu cầu (đối với kiểm thử hệ thống), đặc tả thiết kế
(đối với kiểm thử tích hợp) và đặc tả chi tiết mô đun (đối với kiểm thử đơn vị).
Trong kỹ thuật này, kiểm thử viên xem phần mềm như là một hộp đen. Kiểm thử
viên hồn tồn khơng quan tâm cấu trúc và hành vi bên trong của phần mềm
(khơng thể nhìn thấy những gì bên trong hộp đen). Kiểm thử viên chỉ cần quan tâm


- 11-

đến việc tìm các hiện tượng mà phần mềm khơng hành xử theo đúng đặc tả của nó
(kiểm thử viên chỉ biết những gì phần mềm dự kiến thực hiện và những gì dự kiến
khơng thực hiện, mà khơng thể nhìn vào bên trong xem nó hoạt động như thế nào).
Vì thế, dữ liệu kiểm thử sẽ xuất phát từ đặc tả.
Kiểm thử chức năng cố gắng tìm các loại lỗi sau:
-

Các chức năng thiếu hoặc không đúng.

-


Các lỗi giao diện.

-

Các lỗi trong cấu trúc dữ liệu, trong truy cập cơ sở dữ liệu bên ngoài.

-

Các lỗi thi hành.

-

Các lỗi khởi tạo hoặc kết thúc.

1.1.5.

Kỹ thuật kiểm thử cấu trúc

Kỹ thuật kiểm thử cấu trúc dựa trên sự phân tích mã chương trình hoặc một mơ
hình của mã chương trình để xây dựng các phép thử theo các tiêu chuẩn bao phủ.
Kỹ thuật kiểm thử cấu trúc cho phép chúng ta kiểm thử cấu trúc bên trong của
phần mềm, với mục đích kiểm tra tất cả các câu lệnh và điều kiện tồn tại trong
phần mềm đó. Trong kỹ thuật này kiểm thử viên lấy dữ liệu thử xuất phát từ việc
kiểm tra logic của chương trình (khơng quan tâm đến đặc tả) [1].
1.1.6.

Chiến lược kiểm thử phần mềm

Chiến lược kiểm thử phần mềm tích hợp các phương pháp thiết kế trường hợp
kiểm thử phần mềm thành một chuỗi các bước được lập kế hoạch rõ ràng. Chiến

lược kiểm thử là một sự kết hợp của kế hoạch kiểm thử, thiết kế trường hợp kiểm
thử, thực thi kiểm thử, tập hợp kết quả kiểm thử và sự đánh giá kết quả.
Mỗi mức kiểm thử đòi hỏi xác định chiến lược kiểm thử. Các chiến lược kiểm
thử không loại trừ lẫn nhau, chúng có thể được sử dụng đơn lẻ hoặc đồng thời. Lý
tưởng là kiểm thử cho một ứng dụng bao gồm nhiều chiến lược để phát hiện được
hết các lỗi.


- 12-

Sau khi chiến lược đã được xác định, nó được áp dụng để tạo các trường hợp
kiểm thử cụ thể. Kiểm thử được lặp lại cho đến khi không còn lỗi, hoặc đạt được
mức độ chấp nhận [2].
Quan hệ giữa các mức kiểm thử và các giai đoạn trong vịng đời của một phần
mềm có thể được trình bày như sau:
Các giai đoạn phát triển ứng dụng
Phạm vi và mục tiêu

Yêu cầu chức năng/Thiết kế logic

Kiểm thử
Kiểm thử chấp thuận

Kiểm thử hệ thống

Thiết kế vật lý

Kiểm thử tích hợp

Đặc tả mơ hình cấu trúc chương


Kiểm thử đơn vị

Mã hố mơ đun/chương trình
Hình 1.2. Các bước kiểm thử.

1.2.

Khái niệm về kiểm thử 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à


- 13-

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.
1.2.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 tốn đến dung lượng pin khi phần mềm

đó hoạt động [6].
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í ln 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 [6].
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 [6].
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 [6].
1.2.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ử.


- 14-

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 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 của Apple.
 Các thiết bị Android phổ biến: Samsung Galaxy Nexus chạy Android 4.0.


1.2.3.

Các thiết bị ít phổ biến: Sony Xperia Z1, 2.
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 [4].
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



- 15-

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 [4].
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 [4].
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 đó. 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. Ngồi ra liệu có xử lý được số lượng
giao dịch lớn cùng một thời điểm [4].
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



- 16-

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 [4].
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 [4].
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].
1.2.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ử [4].
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.


×