- 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 soá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
quán để 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 hoà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 toá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 yê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 toà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 hoà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 yê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 hoàn toà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 toà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 hoàn toà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ã hoá 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 toá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í 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 [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
- Xem thêm -