Kiểm thử phần mềm là hoạt động nhằm tìm kiếm, phát hiện các lỗi của phần mềm được kiểm thử về thiết kế, mã nguồn, chức năng, dữ liệu, bảo mật, thân thiện với người dùng, tài liệu kèm the
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
- -
KỸ THUẬT KIỂM THỬ CÁC ỨNG DỤNG WEB
LUẬN VĂN THẠC SĨ
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
- -
NGUYỄN THỊ NGỌC HƯƠNG
KỸ THUẬT KIỂM THỬ CÁC ỨNG DỤNG WEB
Ngành : Công nghệ thông tin
Chuyên ngành : Hệ thống thông tin
Mã số : 60 48 05
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Ngọc Bình
Hà nội – 2011
Trang 3MỤC LỤC
LỜI CAM ĐOAN 1
BẢNG KÝ HIỆU 6
BẢNG CÁC HÌNH VẼ 8
DANH MỤC CÁC BẢNG 10
MỞ ĐẦU 12
CHƯƠNG 1:CÁC KHÁI NIỆM,PHƯƠNG PHÁP VÀ CHIẾN LƯỢC KIỂM THỬ PHẦN MỀM, SO SÁNH KIỂM THỬ WEB VÀ KIỂM THỬ PHẦN MỀM 14
1.1 Đặt vấn đề 14
1.2 Các khái niệm cơ bản về kiểm thử phần mềm 14
1.2.1 Khái niệm kiểm thử phần mềm? 14
1.2.2 Mục đích của kiểm thử 14
1.3 Điều kiện kiểm thử 15
1.3.1 Điều kiện liên quan đến ứng dụng 15
1.3.2 Điều kiện liên quan đến môi trường 15
1.4 Các giai đoạn kiểm thử phần mềm[18] 16
1.4.1 Kiểm thử đơn vị (Unit Test) 16
1.4.2 Kiểm thử tích hợp(Integration test) 16
1.4.3 Kiểm thử hệ thống(System Test) 16
1.4.4 Kiểm thử chấp nhận sản phẩm-Acceptance test 17
1.4.5 Kiểm thử hồi quy-Regression Testing 17
1.5 Các phương pháp kiểm thử 18
1.5.1 Kiểm thử tĩnh - Static testing 18
1.5.2 Kiểm thử động – Dynamic testing[12] 18
1.6 Các chiến lược kiểm thử 18
1.6.1 Kiểm thử hộp đen (Black-Box Testing) 18
1.6.2 Kiểm thử hộp trắng- White box testing 18
1.6.3 Kiểm thử hộp xám-Gray box testing 19
1.7 So sánh giữa kiểm thử Web và kiểm thử phần mềm 19
1.7.1 Khái niệm kiểm thử Website[16] 20
1.7.2 So sánh sự khác nhau giữa các mô hình ứng dụng 20
1.7.3 So sánh sự khác nhau giữa phần cứng và phần mềm 22
1.7.4 Sự khác nhau giữa các hệ thống khách chủ truyền thống và Web 24
1.7.5 Các điều khiển giao diện người dùng[13] 27
1.7.6 Các ứng dụng trên trình chủ 29
1.7.7 Các vấn đề về khả năng tương tác[8] 31
Trang 4CHƯƠNG 2: TỔNG QUAN VỀ KỸ THUẬT, NGUYÊN TẮC CƠ BẢN CỦA VIỆC LẬP KẾ HOẠCH KIỂM THỬ VÀ CÁC THÀNH PHẦN ỨNG DỤNG
WEB 33
2.1 Tổng quan về kiểm thử các ứng dụng Web 33
2.2 Kiến trúc ứng dụng phân tán 33
2.2.1 Hệ thống khách –chủ truyền thống 33
2.2.2 Hệ thống khách- chủ trên Web 34
2.3 Kiến trúc thành phần của ứng dụng Web[8] 37
2.3.1 Những thành phần phía trình chủ 37
2.3.2 Những thành phần dịch vụ cơ bản của ứng dụng 37
2.3.3 Những chương trình dựa trên mở rộng của trình chủ Web[6] 39
2.3.4 Những thành phần dịch vụ của ứng dụng khác 41
2.3.5 Thành phần truyền thông 44
2.4 Nguyên tắc cơ bản để lập kế hoạch kiểm thử 44
2.4.1 Kế hoạch kiểm thử 44
2.4.2 Tài liệu kế hoạch kiểm thử 44
2.4.3 Các mẫu kế hoạch kểm thử (test plan templates) 45
CHƯƠNG 3: TRÌNH BÀY CÁC KIỂU KIỂM THỬ TRONG KIỂM THỬ ỨNG DỤNG WEB VÀ CÁCH ỨNG DỤNG 46
3.1 Kỹ thuật Kiểm thử giao diện người dùng 46
3.1.1 Kỹ thuật Kiểm thử thiết kế giao diện người dùng 46
3.1.2 Kỹ thuật kiểm thử khả năng sử dụng và truy cập 62
3.1.3 Các vấn đề cần xem xét của kiểm thử 63
3.2 Kỹ thuật kiểm thử chức năng: 64
3.2.1 Kiểm thử đơn giản chấp nhận chức năng 64
3.2.2 Kiểm thử chức năng hướng tác vụ 65
3.2.3 Kỹ thuật kiểm thử lỗi ép buộc 66
3.2.4 Kỹ thuật kiểm thử điều kiện biên và phân tích lớp tương đương 66
3.2.5 Kỹ thuật kiểm thử dạng khám phá 66
3.3 Kỹ thuật kiểm thử phía trình chủ 67
3.3.1 Kỹ thuật sử dụng các tệp log 67
3.3.2 Kỹ thuật sử dụng các công cụ giám sát 68
3.3.3 Kỹ thuật tạo các giao diện kiểm thử và các trình điều khiển kiểm thử 71
3.3.4 Kỹ thuật thiết lập lại trình chủ 72
3.3.5 Kỹ thuật sử dụng script trong kiểm thử trình chủ 72
3.4 Sử dụng script để kiểm thử 72
3.4.1 Kỹ thuật quản trị hệ thống 72
3.4.2 Kỹ thuật kiểm thử trực tiếp trình chủ 72
3.4.3 Kỹ thuật làm việc với ứng dụng độc lập với giao diện 73
3.4.4 Kỹ thuật xem xét dữ liệu: (các tệp log và các báo cáo) 73
3.4.5 Kỹ thuật sử dụng script để hiểu rõ kết quả kiểm thử 73
3.5 Kỹ thuật kiểm thử cơ sở dữ liệu 73
3.5.1 Các phương pháp kiểm thử hộp trắng 74
3.5.2 Các phương pháp kiểm thử hộp đen 75
3.6 Kỹ thuật kiểm thử trợ giúp 76
3.6.1 Các phương pháp kiểm thử 76
3.6.2 Những vấn đề cần xem xét về kiểm thử trợ giúp 76
3.7 Kỹ thuật kiểm thử cài đặt 78
Trang 53.7.1 Các tiện ích kiểm thử chương trình cài đặt, xóa cài đặt 78
3.7.2 Những vấn đề cần xem xét về kiểm thử 78
3.8 Kỹ thuật kiểm thử khả năng tương thích và cấu hình 82
3.8.1 So sánh kiểm thử cấu hình với kiểm thử khả năng tương thích 82
3.8.2 Các vấn đề của kiểm thử cấu hình và khả năng tương thích 82
3.8.3 Các vấn đề cần xem xét về kiểm thử 83
3.9 Kỹ thuật kiểm thử bảo mật Web 85
3.9.1 Kiểm thử yêu cầu và thiết kế 86
3.9.2 Kiểm thử mã nguồn ứng dụng[9] 86
3.9.3 Kiểm thử mã nguồn của hãng thứ ba 86
3.9.4 Kiểm thử xâm nhập (Penetration testing) 87
3.9.5 Kiểm thử sự bảo vệ người sử dụng qua các thiết lập của trình duyệt[14] 88
3.10 Kỹ thuật kiểm thử hiệu năng 88
3.10.1 Kỹ thuật tạo dữ liệu thử 89
3.10.2 Kỹ thuật thiết lập môi trường kiểm thử 89
3.10.3 Kỹ thuật thiết lập các tham số của bộ kiểm thử 89
CHƯƠNG 4: ÁP DỤNG KIỂM THỬ TRÊN ỨNG DỤNG WEB CỤ THỂ, ĐÁNH GIÁ VÀ ĐỀ XUẤT 91
4.1 Kế hoạch kiểm thử Website Hand-made Flower Shop 91
4.2 Mô phỏng 2 Use Case cụ thể 101
4.3 Thực hiện kiểm thử 107
4.3.1 Kiểm thử bằng tay 107
4.3.2 Kiểm thử tự động bằng tool 111
PHỤ LỤC 114
A Các công cụ kiểm thử Web 116
A.1 Browershots 116
A.2 Superpreview 116
A.3 Cross brower testing 116
A.4 Spoon brower sandbox 116
A.5 Browerseal 116
A.6 IE tester 116
A.7 Watchfire linkbot pro 117
A.8 Parasoft web king 117
A.9 Macromedia homsite 117
A.10 Xenu‘s link sleuth 117
A.11 Dr.watson 117
A.12 Reasoning illuma 117
A.13 Test center 118
B Các công cụ kiểm thử hiệu năng và kiểm thử tải Web 118
B.1 Empirix eload 118
B.2 Compuware qacenter performancedition 118
B.3 XML load testing 118
B.4 Mecury interactive application performance management 119
B.5 Segue silkperformers 119
B.6 Loadtesting.com portent 119
Trang 6KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 114 TÀI LIỆU THAM KHẢO 122
Trang 7CPU Central Processing Unit Bộ xử lý trung tâm 1.7.1
UI User Interface Giao diện người dùng 1.7.1
LAN Local area network Mạng nội bộ 1.7.3
Giao diện đơn tài liếu 1.7.4
MDI Multiple document
interface
Giao diện đa tài liệu 1.7.4
CORBA Common Object Request
1.7.6
DLL Dynamic link library Thư viện liên kết động 1.7.5
PDA Personal Digital Assistant Các thiết bị số cầm tay 2.2.2
SDK Soffware Development Kit Bộ công cụ phát triển
phần mềm
2.2.2 JVM Java Virtual Machine Máy ảo Java 2.2.2
FPT File Transfer Protocol Giao thức truyền tập tin 2.3.2
HTTP Hypertext Transfer Giao thức truyền tải siêu 2.3.2
Trang 8Management System quan hệ
SQL Struct Query Language Ngôn ngữ truy vấn có cấu
ASP Active Server Page Ngôn ngữ máy chủ
ASP(công nghệ Microsoft)
Trang 91 Hình 1.1 Cấu hình hai máy Mục 1.3.2
2 Hình 1.2 Sơ đồ tranh chấp tài nguyên Mục 1.3.2
3 Hình 1.3 Cấu trúc kiểm thử hộp đen Mục 1.6.1
16 Hình 1.13 Hai thể hiện của một ứng dụng Mục 1.7.4
17 Hình 1.14 Nhiều cửa sổ của ứng dụng Mục 1.7.4
18 Hình 1.15 dụng giao diện đa tài liệu Mục 1.7.4
19 Hình 1.16 Ứng dụng giao diện đơn tài liệu Mục 1.7.4
20 Hình 1.17 Khả năng tương tác Mục 1.7.7
21 Hình 2.1 Hệ thống thin-client Mục 2.2.1
22 Hình 2.2 Hệ thống thick-client Mục 2.2.1
23 Hình 2.3 Hệ thống Web ba tầng Mục 2.2.2
24 Hình 2.4 Ứng dụng thin-client trên Web Mục 2.2.2
25 Hình 2.5 Ứng dụng thick-client trên Web Mục 2.2.2
26 Hình 3.1 Phép ẩn dụ dựa trên tài liệu Mục 3.1.1
27 Hình 3.2 Phép ẩn dụ dựa trên thiết bị Mục 3.1.1
28 Hình 3.3 Lựa chọn qua nút radio Mục 3.1.1
29 Hình 3.4 Lựa chọn qua trình đơn kéo xuống Mục 3.1.1
Trang 10cuộn
31 Hình 3.6 Các điều khiển HTML bao gồm một trình
đơn kéo xuống
Mục 3.1.1
32 Hình 3.7 Các liên kết đồ họa, liên kết văn bản khi di
chuyển chuột qua và trường văn bản
Mục 3.1.1
33 Hình 3.8 Đoạn mã HTML cho liên kết đồ họa, liên
kết văn bản khi di chuyển chuột qua va liên kết văn bản
Mục 3.1.1
34 Hình 3.9 Bảng, mẫu, và khung mô phỏng các điều
khiển giao diện trong Windows
Mục 3.1.1
35 Hình 3.10 Thông điệp lỗi dựa trên trình duyệt Mục 3.1.1
36 Hình 3.11 minh họa phản hồi phía trình chủ Mục 3.1.1
37 Hình 3.12 Không tương thích của trình duyệt- Trình
40 Hình 3.15 (System Monitor Utility )có thể ghi lại
việc sử dụng tài nguyên hệ thống
Mục 3.1.3
41 Hình 3.16 Windows Performance Monitor- ghi nhận
các loại hoạt động phần cứng khác nhau
Mục 3.3.1
42 Hình 3.17 Window Event Viewer – Tiện ích ghi
nhận thông tin log
Mục 3.3.1
43 Hình 3.18 Windows System Information- cho biết tài
nguyên phần cứng và môi trường phần mềm
Mục 3.3.1
44 Hình 3.19 Terminal System Information- cho phép
xem thông tin hệ thống
Mục 3.3.1
45 Hình 3.20 Windows Task Manager- Xem ứng dụng
hiện tại và tiến trình đang chạy, số liệu đo lường sử dụng CPU và bộ nhớ
Trang 1111 Bảng 4.1 Danh sách các tài liệu đã có của dự án (có
thể thêm/bớt các lọai tài liệu cho phù hợp)
16 Bảng 4.6 Kiểm thử Giai đoạn 1 Mục 4.1
17 Bảng 4.7 Kiểm thử giai đoạn 2 Mục 4.1
18 Bảng 4.8 Các công cụ sau sẽ được dùng cho dự án Mục 4.1
19 Bảng 4.9 Môi trường kiểm thử Mục 4.1
22 Bảng 4.12 Các mốc thời gian kiểm thử - giai đoạn 1 Mục 4.1
23 Bảng 4.13 Các mốc thời gian kiểm thử - giai đoạn 2 Mục 4.1
24 Bảng 4.14 Ca sử dụng cho tác nhân người dùng Mục 4.2
Trang 1226 Bảng 4.16 Các ca kiểm thử cho người dùng internet
Trang 13MỞ ĐẦU
Cùng với sự phát triển nhanh chóng của công nghệ thông tin nói chung và công nghệ phần mềm nói riêng, việc phát triển phần mềm ngày càng được hỗ trợ bởi nhiều công cụ tiên tiến, từ đó giúp cho việc phát triển phần mềm đỡ vất vả và có tính hiệu quả cao Nhưng, do tính phức tạp của phần mềm và những giới hạn về thời gian và chi phí, cho dù các hoạt động đảm bảo chất lượng phần mềm nói chung và kiểm thử nói riêng ngày càng chặt chẽ và khoa học vẫn không đảm bảo được các sản phẩm phần mềm đang được ứng dụng là không bị lỗi Lỗi phần mềm tiềm ẩn luôn là một vấn đề khó chịu và gây những thiệt hại lớn Chính vì vậy, chúng ta cần quan tâm tới vấn đề kiểm thử phần mềm như một vấn đề sống còn của sản phẩm phần mềm
Những năm gần đây, các tổ chức phát triển phần mềm tại Việt Nam đã bắt đầu nghiên cứu và quan tâm hơn đến lĩnh vực kiểm thử phần mềm Tuy nhiên, vấn đề kiểm thử phần mềm tại nước ta chưa được phát triển Nước ta đang trong quá trình xây dựng một ngành công nghiệp phần mềm thì vấn đề kiểm thử phần mềm phải được đặt lên hàng đầu, nếu không, xác suất triển khai phần mềm thất bại là rất cao Ngoài ra, các công ty phát triển phần mềm lớn và uy tín luôn đặt ra đòi hỏi là phần mềm phải có tài liệu kiểm thử đi kèm thì mới được chấp nhận
Lĩnh vực Web rất có tiềm năng mang lại lợi nhuận cao trong các dự án kinh doanh.Tuy nhiên, thách thức chính mà chúng ta gặp phải trong kiểm thử các ứng dụng web là nắm bắt được các công nghệ liên quan để làm chủ tốt hơn môi trường Chúng ta cần hiểu sự ảnh hưởng của các công nghệ Web đối với sự tương tác giữa các thành phần phần mềm, cũng như xem các hệ thống Web là một khối thống nhất Kiểm thử viên cũng cần phải biết làm thế nào để thực hiện kiểm thử các ứng dụng Web Điều này đòi hỏi kiểm thử viên phải hiểu biết các loại kiểm thử, các vấn đề của kiểm thử, các loại lỗi phần mềm thường gặp và các rủi ro về chất lượng đặc trưng đối với các ứng dụng Web Như vậy chỉ có những hiểu biết vững chắc về kiểm thử phần mềm và những kiến thức thấu đáo về các công nghệ Web, chúng ta mới có thể kiểm thử tốt các
hệ thống Web Trong giới hạn luận văn, tôi tập chung trình bày tổng quan về kiểm thử phần mềm và kiểm thử các ứng dụng Web, các phương pháp kiểm thử có thể ứng dụng trong kiểm thử úng dụng web, các công cụ kiểm thử và cách ứng dụng Cấu trúc luận văn gồm các phần như sau:
Phần mở đầu: Nội dung phần mở đầu chỉ ra vai trò và tầm quan trọng của
kiểm thử phần mềm nói chung và kiểm thử Web nói riêng trên thế giới và Việt Nam
Trang 14Chương 1: Trình bày các khái niệm, phương pháp và chiến lược kiểm thử phần
mềm, so sánh kiểm thử ứng dụng Web và kiểm thử phần mềm
Chương 2:Tổng quan về ứng dụng Web và các nền tảng kỹ thuật cũng như các
nguyên tắc cơ bản của lập kế hoạch kiểm thử
Chương 3: Trình bày các kiểu kiểm thử, các công cụ kiểm thử có thể ứng dụng
trong kiểm thử ứng dụng Web và cách ứng dụng
Chương 4: Áp dụng kiểm thử trên ứng dụng Web cụ thể, đánh giá và đề xuất
Trang 15CHƯƠNG 1:CÁC KHÁI NIỆM,PHƯƠNG PHÁP
VÀ CHIẾN LƯỢC KIỂM THỬ PHẦN MỀM, SO SÁNH KIỂM THỬ WEB VÀ KIỂM THỬ PHẦN MỀM
1.1 Đặt vấn đề
Kiểm thử mềm là một quy trình bắt buộc trong phát triển phần mềm Các kỹ thuật kiểm thử áp dụng cho kiểm thử phần mềm là các kỹ thuật kiểm thử cơ bản như: kiểm thử chức năng (functionality test), kiểm thử ép buộc lỗi(forced-error test), phân tích điều kiện biên (boundary condition) và phân tích lớp tương đương (equivalence class analysis),v.v
1.2 Các khái niệm cơ bản về kiểm thử phần mềm
1.2.1 Khái niệm kiểm thử phần mềm?
Kiểm thử phần mềm là hoạt động nhằm tìm kiếm, phát hiện các lỗi của phần mềm được kiểm thử về thiết kế, mã nguồn, chức năng, dữ liệu, bảo mật, thân thiện với người dùng, tài liệu kèm theo, môi trường hoạt động, tốc độ hoạt động, khả năng tải của hệ thống, thường được chia thành các nhóm là nhóm thuộc về chức năng, nhóm không thuộc chức năng, nhóm thuộc về cấu trúc và nhóm liên quan đến các thay đổi [16]
Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi
[14]
Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất lượng của sản phẩm hay dịch vụ phần mềm ấy Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau [15]
1.2.2 Mục đích của kiểm thử
Phát hiện lỗi
Một trường hợp kiểm thử tốt là trường hợp có nhiều khả năng tìm thấy các lỗi chưa từng bị phát hiện bao giờ
Một kiểm thử thành công là kiểm thử phát hiện ra lỗi chưa tìm thấy
Thiết kế các ca kiểm thử để tìm kiếm các lỗi/khuyết tật
Trang 161.3 Điều kiện kiểm thử
Điều kiện kiểm thử là các nhân tố quan trọng trong kiểm thử ứng dụng Web Điều kiện kiểm thử là các tình huống trong đó các ứng dụng cần được kiểm thử hoạt động Có hai loại điều kiện kiểm thử được mô tả dưới đây
1.3.1 Điều kiện liên quan đến ứng dụng
Điều kiện liên quan đến ứng dụng bao gồm việc chạy cùng một bộ kiểm thử từ vựng(trong MSWord) trong chế độ Normal View và sau đó chạy lại trong chế dộ Page View Nếu một phép thử sinh ra lỗi, phép thử khác không sinh ra lỗi,thì bạn có thể kết luận có một điều kiện liên quan đến ứng dụng sinh ra lỗi
1.3.2 Điều kiện liên quan đến môi trường
Khi một lỗi sinh ra bởi các điều kiện bên ngoài ứng dụng cần được kiểm thử, các điều kiện được xem là liên quan đến môi trường.Môi trường tĩnh (lỗi về khả năng tương thích và cấu hình):Một môi trường hoạt động trong đó khả năng không tương thích có thể tồn tại, bất kể các điều kiện biến đổi như tốc độ xử lý và dung lượng bộ nhớ
Hình 1.1 Cấu hình hai máy [8]
Môi trường động(RAM, không gian đĩa, bộ nhớ, băng thông mạng…).Một môi trường trong đó các thành phần tương thích khác có thể tạo ra lỗi liên quan đến bộ nhớ hay các điều kiện về độ trễ
Trang 17Hình 1.2 Sơ đồ tranh chấp tài nguyên [8]
1.4 Các giai đoạn kiểm thử phần mềm[18]
1.4.1 Kiểm thử đơn vị (Unit Test)
Các phương pháp thiết kế phần mềm đều chia phần mềm thành những mô- đun hoặc thành các chương trình nhỏ có các dữ liệu vào và kết quả riêng Chúng ta gọi các mô-đun hay chương trình đó là các đơn vị phần mềm Trên các đơn vị này chúng ta sẽ tiến hành kiểm thử đơn vị
Một khi đơn vị phần mềm đã được mã hoá, nghĩa là lập trình và hồ sơ kiểm thử đơn vị tương ứng đã được hoàn thành thì kiểm thử đơn vị có thể được tiến hành
Thực hiện các trường hợp kiểm thử đã được mô tả Nếu có lỗi xảy ra cần phải chỉnh sửa lại đơn vị phần mềm Thực hiện kiểm thử đơn vị lại Nếu tất cả các trường hợp đã được kiểm thử hết và thành công thì kiểm thử đơn vị sẽ kết thúc
1.4.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 của kiểm thử đơn vị kiểm tra các thành phần
và đơn vị 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.4.3 Kiểm thử hệ thống(System Test)
Mục đích kiểm thử hệ thống là kiểm thử 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 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
Trang 18kiể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
1.4.4 Kiểm thử chấp nhận sản phẩm-Acceptance test
Thông thường, sau giai đoạn kiểm thử hệ thống là kiểm thử chấp nhận sản phẩm, được khách hàng thực hiện (hoặc ủy quyền cho một nhóm thứ ba thực hiện) Mục đích của kiểm thử chấp nhận sản phẩm là để chứng minh phần mềm thỏa mãn tất
cả yêu cầu của khách hàng và khách hàng chấp nhận sản phẩm (và trả tiền thanh toán hợp đồng)
Kiểm thử chấp nhận sản phẩm có ý nghĩa hết sức quan trọng, mặc dù trong hầu hết mọi trường hợp, các phép kiểm thử của kiểm thử hệ thống và kiểm thử chấp nhận sản phẩm gần như tương tự, nhưng bản chất và cách thức thực hiện lại rất khác biệt
Đối với những sản phẩm dành bán rộng rãi trên thị trường cho nhiều người sử
dụng, thông thường sẽ thông qua hai loại kiểm thử gọi là kiểm thử Alpha – Alpha
Test và kiểm thử Beta – Beta Test Với Alpha Test, người dùng kiểm thử phần mềm
ngay tại nơi phát triển phần mềm, lập trình viên sẽ ghi nhận các lỗi hoặc phản hồi, và lên kế hoạch sửa chữa Với Beta Test, phần mềm sẽ được gửi tới cho người dùng để kiểm thử ngay trong môi trường thực, lỗi hoặc phản hồi cũng sẽ gửi ngược lại cho lập trình viên để sửa chữa
Thực tế cho thấy, nếu khách hàng không quan tâm và không tham gia vào quá trình phát triển phần mềm thì kết quả kiểm thử chấp nhận sản phẩm sẽ sai lệch rất lớn, mặc dù phần mềm đã trải qua tất cả các kiểm thử trước đó Sự sai lệch này liên quan đến việc hiểu sai yêu cầu cũng như sự mong chờ của khách hàng Ví dụ đôi khi một phần mềm xuất sắc vượt qua các phép kiểm thử về chức năng thực hiện bởi nhóm thực hiện dự án, nhưng khách hàng khi kiểm thử sau cùng vẫn thất vọng vì bố cục màn hình nghèo nàn, thao tác không tự nhiên, không theo tập quán sử dụng của khách hàng v.v
Gắn liền với giai đoạn kiểm thử chấp nhận sản phẩm 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 thử chặt chẽ
1.4.5 Kiểm thử hồi quy-Regression Testing
Kiểm thử hồi quy là kiểm thử kiểm tra lại các phần mềm đã được kiểm tra trước đó Kiểm tra để phát hiện các hoạt động của phần mềm không bị thay dổi trừ khi
có các yêu cầu thay đổi
Trang 191.5 Các phương pháp kiểm thử
1.5.1 Kiểm thử tĩnh - Static testing
Quy về việc kiểm tra một số thứ mà nó không phải đang chạy, đang kiểm tra, đang xem lại Đây là phương pháp kiểm thử phần mềm cần phải duyệt lại các yêu cầu
và các đặc tả bằng tay bằng cách sử dụng giấy, bút để kiểm tra logic, các chi tiết mà không cần chạy chương trình
Cũng có thể tự động hóa kiểm thử tĩnh bằng cách thực hiện kiểm tra toàn bộ các chương trình được phân tích bằng cách sử dụng một trình thông dịch hoặc biên dịch
để xác nhận tính hợp lệ của chương trình
1.5.2 Kiểm thử động – Dynamic testing[12]
Là quá trình kiểm thử, chạy và sử dụng phần mềm Dùng máy để kiểm tra và chạy chương trình để kiểm tra lỗi của chương trình Kiểm tra các hoạt động của câu lệnh.Chúng ta tiến hành biên dịch và chạy chương trình sau đó nhập các giá trị đầu vào
và kiểm tra xem dữ liệu đầu ra có đúng không Có bốn phương pháp kiểm thử động đó
là kiểm thử đơn vị – Unit Tests, Kiểm thử tích hợp – Intergration Tests, Kiểm thử hệ thống – System Tests, và Kiểm thử chấp nhận sản phẩm – Acceptance Tests
1.6 Các chiến lược kiểm thử
Các kỹ thuật kiểm thử phần mềm có thể được chia thành 3 loại: Kỹ thuật kiểm thử hộp đen (black-box testing), kỹ thuật kiểm thử hộp trắng (White-box testing), kỹ thuật kiểm thử hộp xám (Gray-box testing)
1.6.1 Kiểm thử hộp đen (Black-Box Testing)
Kỹ thuật kiểm thử hộp đen (black-box testing): Là kỹ thuật kiểm thử giao diện,
nó kiểm thử dựa trên giao diện của phần mềm đã có hay còn được gọi là kiểm thử mù (Blind testing) [1]
Hình 1.3: Kiểm thử hộp đen
1.6.2 Kiểm thử hộp trắng- White box testing
BLACK BOX
Trang 20tập trung vào cấu trúc chương trình để tìm ra các lỗi bên trong chương trình (Theo
IEEE 1990) Kiểm thử hộp trắng là kiểm thử cấu trúc, kiểm thử hộp rõ ràng(clear box
testing), kiểm thử hộp kính(glass box testing) (Theo Beizer 1995)
Hình 1.4 : Kiểm thử hộp trắng
1.6.3 Kiểm thử hộp xám-Gray box testing
Kiểm thử hộp xám là sự kết hợp giữa kiểm thử hộp đen và kiểm thử hộp trắng Mục đích của việc kiểm thử này là tìm ra những nhược điểm có liên quan tới lỗi thiết kế, hoặc lỗi thi hành của hệ thống
Hình 1.5: Kiểm thử hộp xám 1.7 So sánh giữa kiểm thử Web và kiểm thử phần mềm
Công nghệ Web đòi hỏi những phương pháp phân tích lỗi và kiểm thử mới, giả sử bạn đã có kinh nghiệm kiểm thử trong môi trường truyền thống Để thực hiện hiệu quả việc kiểm thử Web, chúng ta cần hiểu sự khác nhau về kiến trúc và công nghệ giữa kiểm thử truyền thống và kiểm thử Web
Khác với phần mềm, những ứng dụng dựa trên website cần sự kiểm thử tích cực, vì chúng luôn hoạt động như một hệ thống đa người dùng với sự hạn chế về dải thông Cần triển khai một số kiểm thử như: Sự tích hợp, khả năng chịu tải, sự linh động và khả năng thích ứng, độ nét và khả năng thích ứng chéo với trình duyệt Bạn cũng cần tiến hành kỹ lưỡng cả về kiểm thử tự động và điều khiển Ví dụ như việc kiểm thử đồ họa tải nhanh và tính toán thời gian tải rất quan trọng cho bất cứ website nào
Có những công cụ kiểm thử lý tưởng đảm bảo chất lượng Sau khi hoàn tất kiểm thử, thì nên tiến hành kiểm thử beta cần thiết cho các website và những ứng dụng dựa trên web Khi website đã tải lên, việc kiểm thử cuối cùng mới được kiểm soát
printf(“i=%d”,i);
GRAY BOX
Trang 211.7.1 Khái niệm kiểm thử Website[16]
Kiểm thử website là một thành phần trong kiểm thử phần mềm tập trung vào các ứng dụng web
Kiểm thử website là một trong những thành phần đang phát triển nhanh nhất của kiểm thử phần mềm
1.7.2 So sánh sự khác nhau giữa các mô hình ứng dụng
Đối với hệ thống máy tính thông thường, bao gồm phần cứng và phần mềm, có thể nhận đầu vào từ người dùng, sau đó lưu trữ đâu đó, hoặc trong bộ nhớ trong như RAM (Random Access Memory) hay bộ nhớ ngoài như đĩa cứng Hệ thống có thể thực thi các câu lệnh tính toán của phần mềm bởi bộ xử
lý trung tâm (CPU-Central Processing Unit) Cuối cùng hệ thống có thể trả về các đầu ra cho người dùng Hình 1.6 mô tả tương tác giữa con người và máy tính Thông qua giao diện người dùng (UI-User Interface), người dùng tương tác với ứng dụng bởi nhập các đầu vào và nhận các đầu ra từ nhiều dạng giao diện khác nhau[13]
trên các đầu cuối (terminal)
chỉ đơn giản là hiển thị các
chuỗi văn bản từ máy tính
lớn Rất ít các xử lý hay
tính toán cũng được thực
-Hệ thống sẽ xử lý tất cả các từ giao diện qua các luật xử lý cho đến hệ thống tệp-trên một máy tính đơn
- Các ứng dụng trên máy tính cá nhân có thể hỗ trợ giao diện văn bản hoặc giao diện đồ họa Các ứng dụng giao diện đồ họa cũng hỗ trợ các sự kiện
- Hệ thống khách-chủ, không chỉ trình khách hoặc trình chủ có thể thực hiện các xử lý, mà các xử lý phía trình chủ còn có thể được thực hiện trên nhiều máy tính chủ (máy chủ ứng dụng, máy chủ Web, máy chủ cơ sở dữ liệu)
Trang 22-Hệ thống mạng kết nối
các đầu cuối với các máy
tính lớn Các giao diện trên
đầu cuối là dạng văn bản
Người dùng gửi dữ liệu
hay lệnh điều khiển đến hệ
thống qua bàn phím
và thả…
- Hệ thống mạng không cần thiết cho một máy tính
cá nhân để bàn
-Hệ thống mạng là cần thiết và ít nhất hai máy tính để hoạt động: một máy tính khách và một máy tính chủ Máy chủ trả lời dữ liệu yêu cầu
từ máy tính khách Đối với phần lớn các ứng dụng Web, một trình duyệt Web hoạt động như một chương trình giao diện trên máy tính khách
Hình 1.7 Các hệ thống máy tính lớn [13]
Trang 23Hình 1.8 Các hệ thống máy tính cá nhân để bàn
Hình 1.9 mô tả các xử lý vào ra và xử lý lô-gíc được thực hiện bởi máy chủ ứng dụng (máy chủ ở giữa), trong khi máy chủ cơ sở dữ liệu (máy chủ ở bên phải) xử lý lưu trữ dữ liệu Đường thẳng nét đứt chỉ ra rằng các xử lý có thể được thực hiện phía trình khách hoặc trình chủ
-Hệ thống Web bao gồm nhiều trình khách và trình chủ, bao gồm các
Trang 24-Vấn đề tương thích khó khăn hơn và rất khó để quản lý trong môi trường này
Phía trình chủ của hệ thống Web có thể hỗ trợ tập hợp các phần cứng
và phần mềm -Vấn đề về khả năng tương thích và cấu hình phức tạp hơn
Hình 1.10 Môi trường phần cứng và phần mềm được điều khiển [13]
Hình 1.11: Một hệ thống khách –chủ trên mạng LAN [8]
Trang 251.7.4 Sự khác nhau giữa các hệ thống khách chủ truyền thống và Web
Bảng 1.3 So sánh Các ứng dụng phía trình khách
Hệ thống khách chủ truyền thống Hệ thống khách chủ Web
-Hầu hết các hệ thống khách-chủ là các
ứng dụng hướng truy cập dữ liệu Một
trình khách cho phép người dùng, thông
qua giao diện, gửi dữ liệu vào, nhận kết
quả ra và tương tác xử lý bên trong (ví
dụ: gửi một lệnh truy vấn)
- Trình khách hoạt động trong môi
trường hệ điều hành Mỗi hệ điều hành
- Trình khách Web hoạt động trong môi trường trình duyệt Web Các trình duyệt Web bao gồm phần mềm gắn liền với hệ điều hành chuyên biệt chạy trên máy khách Trình duyệt cho phép hiển thị thông tin trang Web viết bằng ngôn ngữ đánh dấu siêu văn bản HTML và các nội dung động Nhiều trình duyệt phổ biến
hỗ trợ các nội dung động như Java applet, ActiveX, Flash, Ajax, web servies, ngôn ngữ đánh dấu mở rộng XML, CSS (cascading style sheet), HTML động (DHTML), các tính năng bảo mật…Để thực hiện điều này, những nhà sản xuất trình duyệt phải tạo ra các động cơ và các bộ thông dịch để dịch và định dạng nội dung HTML Trong khi tạo ra các phần mềm này, các trình duyệt cũng trình bày các vấn đề về khả năng không tương thích
Trang 26Hình 1.12 Các trình khách truyền thống và trình khách Web
Bảng 1.4 So sánh xử lý sự kiện
Hệ thống khách chủ truyền thống Hệ thống khách chủ Web
-Mô hướng sự kiện và giao diện đồ họa,
đầu vào được điều khiển bởi các sự
kiện.Sự kiện là các hành động thực hiện
bởi người dùng, chẳng hạn như di
chuyển hay nhấp chuột, hoặc dữ liệu
vào từ bàn phím Phụ thuộc vào loại sự
kiện áp dụng cho đối tượng giao diện,
một vài hàm hay thủ tục của ứng dụng
sẽ được thực thi Trong môi trường
hướng sự kiện, loại thủ tục này được gọi
phức tạp hơn bởi vì nó đòi hỏi nhiều
công sức hơn để thực hiện kiểm thử
nhiều kết hợp và chuỗi các sự kiện
-Các điều khiển HTML chuẩn, chẳng hạn như siêu liên kết, chỉ giới hạn các
sự kiện nhấp đơn chuột Các ứng dụng trên trình duyệt hỗ trợ rất hạn chế các sự kiện từ bàn phím Bạn có thể duyệt trong một trang sử dụng các phím Tab
và Shift-Tab -Mô hình yêu cầu và nhập dữ liệu một chiều Trình chủ không nhận dữ liệu hay các lệnh cho đến khi người dùng nhấp chuột trên một nút, như nút Submit để nhập dữ liệu hoặc người dùng yêu cầu
dữ liệu từ trình chủ bởi nhấp chuột trên một liên kết Nếu người dùng đóng trình duyệt nhưng không nhấp chuột trên nút
Trang 27khác nhau để ghi dữ liệu hoặc thoát khỏi ứng dụng,
dữ liệu sẽ không được ghi lại và người dùng vẫn còn được xem như đang kết
dụng đơn tài liệu (SDI- single
document interface) (Hình 1.16) Kiểm
thử trong các ứng dụng giao diện đa tài
liệu cần được lưu ý hơn, bởi vì chúng
có thể không quản lý tốt các sự kiện và
dữ liệu thuộc vào nhiều cửa sổ Các ca
người dùng khác nhau Hình 1.14 minh
họa hai thể hiện của trình duyệt
- Giao diện trình duyệt Web được xem
là phẳng bởi vì nó chỉ có thể hiển thị một trạng thái tại mỗi thời điểm, không
có cấu trúc thứ bậc đối với các trang Web, tuy nhiên, người dùng có thể dễ dàng nhảy đến nhiều liên kết và nhanh chóng mất dấu vết của vị trí ban đầu
Trang 28
Hình 1.14 Nhiều cửa sổ của ứng dụng
Hình 1.15 Ứng dụng giao diện đa tài liệu
Hình 1.16 Ứng dụng giao diện đơn tài liệu
1.7.5 Các điều khiển giao diện người dùng[13]
Về bản chất, một trang HTML được hiển thị bởi một trình duyệt Web gồm
Trang 29văn bản, siêu liên kết, hình ảnh, khung, bảng , mẫu, và các văn bản trợ giúp (thuộc tính ALT) Các ứng dụng trên trình duyệt cơ bản không hỗ trợ các hộp thoại, các thanh công cụ, thanh trạng thái và các điều khiển giao diện khác Có thể sử dụng Java applet, điều khiển ActiveX, scripts, CSS hay các ứng dụng hỗ trợ khác để có được các tính năng cao hơn các tính năng cơ bản Tuy nhiên, sẽ
có vấn đề về khả năng tương thích giữa các trình duyệt khác nhau
Hệ thống Web:Mô hình máy tính cá nhân trong các hệ thống Web phức tạp
lên rất nhiều (Hình 1.20) Ngoài cách thách thức về kiểm thử bởi có nhiều máy tính và thiết bị di động, phía trình chủ của hệ thống Web còn bao gồm nhiều loại phần cứng khác nhau, nhiều phần mềm trên nhiều hệ điều hành, các dịch vụ, các gói trình chủ, và các gói trình chủ, các cơ sở dữ liệu
Pha trộn phần cứng:Các hệ thống Web với sự pha trộn nhiều loại phần
cứng khác nhau, môi trường có thể trở nên rất khó kiểm soát Các hệ thống Web có thể sử dụng máy tính trên nhiều nền tảng khác nhau, như UNIX, Linux, Windows, Macintosh Một hệ thống Web có thể bao gồm trình chủ UNIX, được sử dụng kết hợp với các trình chủ khác là Linux, Windows, hay Macintosh Các hệ thống Web
có thể bao gồm hỗn hợp các mô hình trên cùng một nền tảng (phía trình chủ và trình khách) Sự pha trộn phần cứng như thế là thách thức đối với kiểm thử bởi vì các máy tính khác nhau trong cùng hệ thống có thể sử dụng các hệ điều hành khác nhau, các bộ vi xử lý khác nhau, các kênh khác nhau, giao diện vào/ra khác nhau.v.v Mỗi sự kết hợp đều có thể gây ra những vấn đề riêng
Pha trộn phần mềm: Theo minh họa Hình 1.17, các hệ thống Web có thể
bao gồm nhiều hệ điều hành, trình chủ Web, trình chủ ứng dụng, các phần mềm trung gian (giữa hệ điều hành và ứng dụng), các trình chủ thương mại điện tử, các trình chủ cơ sở dữ liệu, các hệ thống hoạch định tài nguyên doanh nghiệp (ERP), tường lửa (firewall) và các trình duyệt Đội ngũ phát triển ứng dụng thường làm chủ được môi trường mà trong đó ứng dụng của họ được cài đặt Sản xuất phần mềm cho các hệ thống máy tính lớn, phát triển ứng dụng được cắt xén cho phù hợp với hệ thống chuyên biệt Hiện nay, đối với hệ thống Web, phần mềm thường được thiết kế để chạy trên sự kết hợp khá đa dạng giữa các phần cứng và các hệ điều hành và khả năng không tương thích của phần mềm là luôn luôn tồn tại Ví dụ: Các ứng dụng khác nhau có thể không chia sẻ cùng một phiên bản của một trình chủ cơ
sở dữ liệu Trên nền Microsoft, một thư viện liên kết động (DLL-dynamic link library) thiếu hay không tương thích cũng là một ví dụ Thư viện liên kết động là các thành phần phần mềm có thể tồn tại trên cả phía trình chủ và trình khách mà các hàm của nó có thể được gọi bởi nhiều chương trình tùy theo yêu cầu.Một vấn
đề nữa là luôn tồn tại khi sử dụng đồng thời phần mềm từ nhiều nhà sản xuất là khi ứng dụng thực hiện nâng cấp định kỳ (phía trình khách hoặc trình chủ), có khả năng việc nâng cấp sẽ không tương thích với phần mềm tồn tại trước đó
Một phần mềm hệ thống Web có thể bao gồm sự kết hợp bất kỳ của các
Trang 30 Nhiều gói phần mềm
Nhiều thành phần phần mềm
Nhiều mô hình và loại máy chủ
Nhiều phiên bản và loại trình duyệt
1.7.6 Các ứng dụng trên trình chủ
Bảng 1.6 So sánh các ứng dụng trên trình chủ và các ứng dụng trên trình khách Các ứng dụng trên trình chủ Ứng dụng trình khách
-Các ứng dụng trên trình chủ là các
chương trình không có giao diện để người
dùng cuối của hệ thống tương tác
biết khi nào nó bị hỏng hóc, cái gì xảy ra
truớc đó, ai hoặc bao nhiêu người dùng
đang kết nối ở thời điểm nó bị hỏng
hóc=> Khó kiểm thử, cần cách tốt hơn để
lưu vết những gì đã xảy ra với các ứng
dụng phía trình chủ.( event logging)
-Các ứng dụng trên trình khách là các chương trình có giao diện để người dùng cuối tương tác
- Trình khách tương tác với các ứng dụng trên trình chủ để truy cập các chức năng và dữ liệu qua các giao thức truyền thông, giao diện chương trình ứng dụng (API) và các chuẩn giao diện khác
-Người dùng phải tự khởi động ứng dụng trên trình khách và tương tác với
nó qua giao diện -Khi một hỏng hóc gây ra bởi một lỗi phía trình khách hay ứng dụng trên máy tính để bàn, người dùng hoặc kiểm thử viên có thể cung cấp các thông tin cần thiết để hỗ trợ tái tạo hoặc phân tích hỏng hóc bởi vì ứng dụng luôn ở trước mặt họ
Kỹ thuật event logging:Một trong những kỹ thuật được sử dụng để cải tiến khả
năng tái tạo hỏng hóc là ghi nhận sự kiện (event logging) Với cách này, các ứng dụng trên trình chủ có thể ghi lại các hoạt động vào một tệp, tệp này thông thường không được xem bởi người dùng cuối Khi một ứng dụng sử dụng ghi nhận sự kiện, các thông tin được ghi nhận có thể được đọc một cách tin cậy Các hệ điều hành thường có các tiện ích hỗ trợ ghi nhận sự kiện Ví dụ: Microsoft Windows 2008 có Event Viewer, có thể cho phép người dùng theo dõi các sự kiện được ghi nhận bởi ba thành phần rất hữu ích đối với kiểm thử (Application , Security và System) Thành phần ứng dụng cho phép bạn ghi lại các sự kiện sinh ra bởi một ứng dụng chuyên biệt Ví dụ, bạn có thể muốn có tệp ghi nhận các sự kiện để đọc và ghi lỗi sinh ra bởi ứng dụng của bạn Thành phần ứng dụng sẽ cho phép chúng ta làm điều đó Bạn có thể tạo ra và thêm vào các khả năng ghi nhận sự kiện cho ứng dụng cần kiểm thử của bạn để dễ dàng thực hiện phân tích lỗi và gỡ rối, các thành viên phát triển và kiểm thử viên có thể tìm thấy nhiều thông tin hữu ích trong đó
Các cấu hình của trình chủ phân tán [8]:Phần mềm trình chủ có thể được
Trang 31một số cấu hình mà ứng dụng cần được kiểm thử hỗ trợ Tất cả các kết hợp có thể nên phải được thực hiện Đặc biệt, đối với các ứng dụng trình chủ thương mại, kiểm thử nên thực thi trên mỗi cấu hình để đảm bảo rằng các tính năng của ứng dụng không bị ảnh hưởng Trên thực tế, điều này có thể không thực hiện được bởi vì các ràng buộc về thời gian và nguồn tài nguyên
Mô hình hai máy Trình chủ Web
trên WINDOWS
Trình chủ cơ sở dữ liệu trên
WINDOWS Trình chủ ứng
dụng trên WINDOWS
Mô hình ba máy Trình chủ Web
trên WINDOWS
Trình chủ Web trên WINDOWS
Trình chủ cơ sở
dữ liệu trên UNIX Trình chủ ứng
dụng trên WINDOWS
Trình chủ ứng dụng trên WINDOWS
Mô hình một
máy
Trình chủ Web trên UNIX Trình chủ ứng dụng trên UNIX
Mô hình hai máy Trình chủ Web
trên UNIX
Trình chủ cơ sở dữ liệu trên UNIX Trình chủ ứng
dụng trên UNIX
Mô hình ba máy Trình chủ Web
trên WINDOWS
Trình chủ Web trên WINDOWS
Trình chủ cơ sở
dữ liệu trên WINDOWS Trình chủ ứng
dụng trên WINDOWS
Trình chủ ứng dụng trên WINDOWS
Trang 32Mạng:Mạng cho phép kết nối các hệ thống Web Mạng kết nối các trình
khách với các trình chủ, các trình chủ với các trình chủ Điều này dẫn đến các vấn
đề mới về kiểm thử, bao gồm độ tin cậy, khả năng truy cập, hiệu năng, bảo mật, cấu hình, khả năng tương thích
Thừa kế lỗi: Các ứng dụng Web dựa trên các đối tượng hay thành phần đã
tồn tại Tuy nhiên, các hệ thống được tạo ra gần đây thừa kế không chỉ các tính năng mà còn các lỗi đã tồn tại trong các đối tượng gốc.Một trong những lợi ích quan trọng của lập trình hướng đối tượng và lập trình dựa trên thành phần là tính tái sử dụng Thay vì viết mã nguồn từ đầu, một lập trình viên có thể lợi dụng các chức năng đã được tạo ra bởi các lập trình viên khác (Với việc sử dụng giao diện lập trình ứng dụng API) bởi việc tích hợp các chức năng đó vào ứng dụng của lập trình viên Thực vậy, mã nguồn được tái sử dụng, loại bỏ việc viết lại các mã nguồn đã tồn tại Mô hình này nhằm đẩy nhanh thời gian phát triển, giảm số lượng
mã nguồn cần viết, và duy trì tính nhất quán giữa các ứng dụng
Truy cập dữ liệu bên trong (back-end data accessing): Dữ liệu trong một hệ
thống Web thường phân tán (dữ liệu được lưu trữ trên nhiều máy tính) Có nhiều phương pháp lưu trữ dữ liệu trên một trình chủ Ví dụ: Dữ liệu có thể được lưu trong tệp phẳng (flat file) trong cơ sở dữ liệu phi quan hệ (relational database), trong cơ sở
dữ liệu quan hệ (relation database) hoặc trong cơ sở dữ liệu hướng đối tượng oriented database) Trong các hệ thống Web điển hình, các cơ sở dữ liệu quan hệ thường được sử dụng vì thế thao tác và truy cập dữ liệu có hiệu quả hơn so với cơ sở
(object-dữ liệu tệp phẳng Trong hệ thống cơ sở (object-dữ liệu tệp phẳng, khi câu truy vấn được thực hiện, kết quả của câu truy vấn được ghi vào các tệp trên cá thiết bị lưu trữ Ứng dụng sau đó mở, đọc và thao tác dữ liệu từ các tệp này và tạo ra các báo cáo Để truy cập được dữ liệu, ứng dụng cần phải biết chính xác các tệp tin được lưu trữ ở đâu và tên của chúng Bảo mật truy cập thường được thực hiện ở mức ứng dụng và mức tệp Ngược lại, một cơ sở dữ liệu, như cơ sở dữ liệu quan hệ, lưu trữ dữ liệu trong các bản ghi Thông qua động cơ (engine) của cơ sở dữ liệu, các ứng dụng truy cập dữ liệu sử dụng một tập các bản ghi mà không cần biết các tệp dữ liệu vật lý được lưu trữ ở đâu hoặc tên của chúng Dữ liệu trong cơ sở dữ liệu quan hệ được truy cập qua tên của cơ
sở dữ liệu (hạn chế các lỗi với tên tệp) và tên bảng Các tệp cơ sở dữ liệu quan hệ có thể được lưu trữ trên nhiều máy chủ Các hệ thống Web được sử dụng cơ sở dữ liệu quan hệ có thể thực hiện bảo mật ở mức ứng dụng trình chủ, mức cơ sở dữ liệu trình chủ, cũng như ở mức bảng hay mức quyền người dùng Tất cả những điều trên cho thấy, kiểm thử truy cập dữ liệu bên trong là một thách thức lớn cho các kiểm thử viên phương pháp hộp đen vì họ không nhìn thấy các hoạt động bên trong Việc tái tạo lỗi khó khăn hơn và bao phủ kiểm thử cũng phức tạp hơn
1.7.7 Các vấn đề về khả năng tương tác[8]
Khả năng tương tác là khả năng một hệ thống hay các thành phần bên trong
Trang 33một hệ thống tương tác và hoạt động với các hệ thống khác hay các thành phần khác Điều này thường gặp khi tích hợp một số API, các chuẩn giao thức truyền thông hay các công nghệ chuyển đổi giao diện như CORBA (Common Object Request Broker Architecture) hay DCOM (Distributed Common Object Model)
Có rất nhiều sự phụ thuộc về khả năng tương tác của phần cứng và phần mềm liên quan đến các hệ thống Web, như thế rất cần thiết là lập tiến trình kế hoạch kiểm thử của chúng ta cần phải bao gồm nghiên cứu thiết kế kiến trúc của hệ thống
Hình 1.17 Khả năng tương tác
Các vấn đề về khả năng tương tác – có thể là thông tin bị mất hay bị hiểu sai trong giao tiếp giữa các thành phần Hình 1.18 chỉ ra một hệ thống Web đơn giản bao gồm ba máy chủ và một máy khách Trong ví dụ này, trình khách yêu cầu các bản ghi cơ sở dữ liệu từ phía trình chủ Sau đó, trình chủ ứng dụng truy vấn trình chủ cơ sở dữ liệu
Trang 34CHƯƠNG 2: TỔNG QUAN VỀ KỸ THUẬT, NGUYÊN TẮC CƠ BẢN CỦA VIỆC LẬP KẾ HOẠCH KIỂM THỬ
VÀ CÁC THÀNH PHẦN ỨNG DỤNG WEB
2.1 Tổng quan về kiểm thử các ứng dụng Web
Kiểm thử các ứng dụng Web phức tạp hơn kiểm thử phần mềm vì các công nghệ trong môi trường Web phức tạp hơn và chú trọng hơn đến tính bảo mật hiệu năng, là điểm khác biệt so với kiểm thử dựa trên chức năng (feature-based testing) Sự hiểu biết cơ bản về các phương pháp kiểm thử kết hợp với chuyên môn về các công nghệ Web cho phép các nhân viên kiểm thử các ứng dụng Web một cách hiệu quả Những nền tảng kiến thức đó cho phép các nhân viên kiểm thử phân tích chương trình
từ góc độ lập trình viên Điều này rất quan trọng trong việc xác định chiến lược kiểm thử và xác định nguyên nhân gây ra lỗi Bên cạnh đó, phân tích mối liên hệ giữa các thành phần Web giúp các nhân viên kiểm thử có cái nhìn về sự tương tác của sản phẩm
từ góc độ của nhiều lập trình viên độc lập, điều này đối lập với chỉ từ góc độ của một lập trình viên độc lập
2.2 Kiến trúc ứng dụng phân tán
Kiến trúc phân tán có cấu trúc các thành phần được nhóm lại thành các cụm dịch vụ liên quan Kiến trúc phân tán được sử dụng cho cả hệ thống khách chủ truyền thống và hệ thống khách chủ trên internet
2.2.1 Hệ thống khách –chủ truyền thống
Một ứng dụng truy cập cơ sở dữ liệu đặc trưng gồm bốn thành phần:
Mã nguồn giao diện người dùng
Mã nguồn xử lý
Mã nguồn dịch vụ truy cập dữ liệu
Lưu trữ dữ liệu
Hệ thống thin-client và thick –client [7]
Hệ thống thin-client: Hầu hết các công việc được thực hiện ở phía trình chủ
Trong hệ thống này (Hình 2.1), giao diện người dùng thực thi trên máy khách trong khi tất cả các thành phần khác thực thi trên máy chủ
Trang 35Hình 2.1: Hệ thống thin-client
Hệ thống thick-client: Hầu hết các công việc được thực hiện ở phía trình khách
Trong hệ thống thick-client (Hình 2.2), hầu hết các xử lý được thực hiện ở phía máy khách, ứng dụng ở máy khách thực hiện xử lý dữ liệu và áp dụng các luật xử lý logic vào dữ liệu Máy chủ có trách nhiệm cung cấp các chức năng truy cập dữ liệu và lưu trữ dữ liệu
Hình 2.2: Hệ thống thick-client
2.2.2 Hệ thống khách- chủ trên Web
Các thành phần của một hệ thống khách chủ trên Web có thể được nhóm thành
ba tầng liên quan nhau:[8]
Các thành phần dịch vụ người dùng (máy khách)
Các thành phần dịch vụ xử lý (máy chủ)
Các thành phần dịch vụ dữ liệu (máy chủ)
Các vấn đề cần xem xét trong khi thiết kế các hệ thống này là các vấn đề về xử
lý, hiệu năng, khả năng mở rộng và bảo trì hệ thống
Trang 36Hình 2.3: Hệ thống Web ba tầng [8]
Hệ thống thin-client trên Web: Trong mô hình này, máy chủ chịu trách nhiệm
thực thi tất cả các dịch vụ Sau khi thu nhận và xử lý dữ liệu, chỉ một trang HTML đơn giản được trả về cho máy khách Mỗi mô hình này, phải có một chiến lược kiểm thử khác nhau
Hình 2.4: Ứng dụng thin-client trên Web Chiến lược kiểm thử trên hệ thống thin-client: Vấn đề không tương thích ít
liên quan hơn Tuy nhiên vấn đề hiệu năng nên được xem xét ở phía máy chủ, là nơi các yêu cầu được xử lý, và trên mạng, là nơi quá trình truyền dữ liệu diễn ra Như vậy,
mô hình thin-client được thiết kế để giải quyết các vấn đề không tương thích cũng như vấn đề giới hạn về khả năng xử lý ở phía máy khách (mô hình thin-client tập trung công việc xử lý ở phía máy chủ) Các cập nhật được thực hiện ngay lập tức, bởi vì các cập nhật chỉ cần được thực hiện ở phía trình chủ.[7]
Ví dụ: Các thiết bị số cầm tay (PDA-Personal Digital Assistant) không có thể thực
hiện nhiều xử lý vì có bộ nhớ nhỏ Do đó, mô hình thin-client rất phù hợp đối với các
Trang 37thiết bị PDA vì hầu hết các thao tác xử lý đều được thực hiện ở phía trình chủ và trả kết quả cuối cùng về lại cho phía trình khách
Hệ thống thick-client trên Web: Máy khách sử dụng các thành phần như các
điều khiển ActiveX và Java applet để xử lý dữ liệu, chúng được cài đặt và thực thi trên máy khách
Hình 2.5: Ứng dụng thick-client trên Web Chiến lược kiểm thử trên hệ thống thick-client: Tập trung vào kiểm thử hiệu
năng và kiểm thử khả năng tương thích Nếu các java applet được sử dụng, các applet này sẽ được gửi tới trình duyệt mỗi khi có yêu cầu (trừ trường hợp cùng một applet được dùng trong cùng một thể hiện của trình duyệt) Nếu applet có kích thước lớn đến vài trăm kilo-byte, thì nó sẽ chiếm một lượng lớn băng thông để tải về với khoảng thời gian phản hồi đáng kể Về mặt lý thuyết, các Java applet được thiết kế không phụ thuộc nền/ hệ điều hành, nhưng chúng nên được kiểm thử trên nhiều trình duyệt khác nhau vì chúng có thể được tạo ra từ nhiều phiên bản khác nhau của bộ công cụ phát triển phần mềm (SDK-software development kit) Mỗi SDK cung cấp một chức năng khác nhau Hơn nữa, các applet cần phải được dịch bởi một máy ảo Java (JVM- Java virtual machine) Các trình duyệt khác nhau, trên các nền khác nhau, và với các phiên bản đều có các máy ảo khác nhau được cài đặt sẵn, mà chúng có thể chứa các lỗi về khả năng không tương thích Đối với các điều khiển ActiveX, tác động về hiệu năng mạng chỉ xảy ra một lần Tuy nhiên, có thể xuất hiện những lỗi không tương thích với các trình duyệt khác với Internet Explorer và trên các hệ điều hành khác với Microsoft Windows Như vậy, mô hình thick-client rất phù hợp để cải thiện hiệu năng với các ứng dụng trên máy tính để bàn(hệ điều hành cung cấp nhiều khả năng xử lý) cho phép nhiều công việc xử lý được thực hiện trên máy[7]
Trang 382.3 Kiến trúc thành phần của ứng dụng Web[8]
2.3.1 Những thành phần phía trình chủ
Máy chủ là một máy cung cấp các dịch vụ cho một máy tính khác sử dụng, là máy tính có thể chứa cùng lúc nhiều trình chủ (chương trình phần mềm) Các trình chủ này cũng có thể được cài đặt trên nhiều máy tính(mô hình nhiều máy chủ).Do vậy, kiểm thử có thể khác nhau, phụ thuộc vào số lượng và sự cài đặt các trình chủ và các thành phần phần mềm khác được kết hợp với hệ thống
Phần mềm: Hệ thống Web thường có một vài trình chủ kèm theo ở bên trong
(back-end) của chúng, cho phép người dùng truy cập được từ máy khách (thông qua trình duyệt) và lấy được các dịch vụ họ cần (nội dung trang Web hoặc các bản ghi trong cơ sở dữ liệu)
Phần cứng: Cấu hình các đặc điểm để phân biệt chất lượng của máy chủ thì
tương tự các đặc điểm để so sánh các máy tính với nhau như: hiệu năng cao, khả năng
mở rộng, và độ tin cậy
Hệ điều hành của máy chủ: Phải cần đủ mạnh hơn các hệ điều hành ở các
máy trạm Ví dụ, các hệ điều hành Win95 và Win98 không thể đảm bảo độ tin cậy hay hiệu năng được yêu cầu bởi hầu hết máy chủ Các hệ điều hành như UNIX, Windows
NT và Windows 2000 Advanced Server cung cấp các tính năng bảo mật và các công
cụ quản trị hiệu quả, ngoài ra chúng còn có thể đáp ứng được khả năng mở rộng và độ tin cậy được yêu cầu bởi các máy chủ
2.3.2 Những thành phần dịch vụ cơ bản của ứng dụng
Trình chủ Web: còn gọi là trình chủ HTTP, lưu trữ các trang Web hoặc các tệp
tin HTML và các nội dung liên quan của chúng Trình chủ Web làm cho nội dung của chúng có thể sử dụng được bởi các máy khách và là loại trình chủ cơ bản của hệ thống Web Có nhiều công ty phần mềm phát triển trình chủ Web như: Novel, Netscape, Microsoft, Sun Microsystem và một số khác Trình chủ Web cũng đáp ứng các thành phần công nghệ cao như Java Serverlet, các điều khiển ActiveX và các bộ kết nối cơ
sở dữ liệu bên trong(back-end) Trình chủ Web có thể làm việc với các giao thức như FPT và Gopher để chuyển dữ liệu ngược về cho người dùng[8]
Trình chủ cơ sở dữ liệu: Hoạt động như các kho dữ liệu cho các ứng dụng
Web Hầu hết các hệ thống Web sử dụng các trình chủ cơ sở dữ liệu quan hệ (RDBMS-relational database management server)
Các công ty sản xuất trình chủ cơ sở dữ liệu đáng chú ý gồm Microsoft, Oracle
và Sybase Ngôn ngữ truy vấn có cấu trúc (SQL-Structured Query Language) là ngôn
Trang 39ngữ được sử dụng trong các trình chủ quản trị cơ sở dữ liệu quan hệ (RDBM-relational database management)
Trình chủ ứng dụng: Là thuật ngữ dùng để nói đến một tập các thành phần mà
chúng mở rộng các dịch vụ cho các thành phần khác (ví dụ ASP,PHP) hoặc các thành phần ứng dụng tích hợp Ứng dụng Web hỗ trợ người dùng bằng cách cung cấp các truy cập đến dữ liệu được lưu trữ trên trình chủ cơ sở dữ liệu Ứng dụng Web phối hợp các chức năng của trình chủ Web và trình chủ cơ sở dữ liệu để người dùng có thể truy cập nội dung cơ sở dữ liệu thông qua giao diện trình duyệt Web
Ngôn ngữ đánh dấu: Các trang Web được tạo ra bằng ngôn ngữ đánh dấu
chuẩn HTML (Hypertext Markup Language) Ngôn ngữ XML(eXtensible Markup Language) cũng là ngôn ngữ đánh dấu cung cấp một cách chuẩn để mô tả định dạng
dữ liệu một cách linh động và cho phép các hệ thống hỗ trợ XML có thể trao đổi với các hệ thống khác bằng cách chia sẻ định dạng được mô tả và dữ liệu của nó XML định nghĩa ra các nguyên tắc cho cấu trúc và định dạng dữ liệu Nó được sử dụng để làm cho việc tạo và thông dịch dữ liệu được trở nên dễ dàng, và để đảm bảo rằng các
hệ thống Web hỗ trợ XML khác sẽ không bị nhập nhằng khi thông dịch và sử dụng dữ liệu đó Cả XML và HTML chứa các ký hiệu đánh dấu để mô tả sự biểu diễn và sự tương tác trên nội dung của trang Web hay tệp dữ liệu Nhưng HTML định dạng cho
dữ liệu của bạn xuất hiện như thế nào, còn XML thì định nghĩa dữ liệu của bạn là cái
gì
XML với SOAP: Đây là giao thức truy cập đối tượng đơn giản (SOAP-Simple
Object Access Protocol) cho phép các ứng dụng phần mềm khác nhau thực thi trên các máy tính khác nhau với các hệ điều hành khác nhau có thể gọi và truyền thông tin với nhau SOAP nguồn gốc được sử dụng cho môi trường không tập trung và phân tán Giao thức này sử dụng kết hợp giữa giao thức HTTP/HTTPS (được sử dụng rộng rãi bởi nhiều hệ điều hành) và XML (cơ chế để mô tả định dạng dữ liệu và dữ liêu) làm cho việc trao đổi thông tin trở nên dễ dàng hơn Vì SOAP dùng HTTP để truyền dữ liệu, nên các yêu cầu sẽ dễ dàng vượt qua tường lửa(firewall) mà ở đó tường lửa sẽ sàng lọc các yêu cầu trừ các yêu cầu HTTP
Kết nối Web đến cơ sở dữ liệu: Cái hay của các ứng dụng truy cập cơ sở dữ
liệu đó là chúng cho phép tương tác giữa người dùng và dữ liệu Giao tiếp giữa các người dùng, các trình chủ Web, và các trình chủ cơ sở dữ liệu được đơn giản hóa nhờ các mở rộng hay mô hình script
Dữ liệu được lưu trữ trong cơ sở dữ liệu Ở phía ngoài, dữ liệu được trình bày
Trang 40dụng Web Có một vài phương pháp có thể sử dụng để tạo ra kết nối đó Phổ biến nhất
là chương trình sử dụng CGI (Common Gateway Interface) với các mã lệnh SQL được nhúng vào, các chương trình dựa trên mở rộng của trình chủ Web, và các script dựa trên mở rộng của trình chủ Web
Common Gateway(CGI):CGI là một giao thức giao tiếp chuẩn mà trình chủ
Web có thể dùng để chuyển yêu cầu của người dùng đến một ứng dụng khác và sau đó gửi phản hồi của ứng dụng ngược lại về cho người dùng Các ứng dụng CGI thường được cài đặt bằng PERL (Practical Extraction and Reporting Language), cho dù chúng
có thể được viết bới các ngôn ngữ lập trình khác như C, C++, và Visual Basic Chương trình CGI được viết, nó được đặt trong một thư mục trình chủ Web (bin) Những quản trị viên của trình chủ Web xác định thư mục nào là thư mục bin của CGI Chương trinh CGI phải được đặt trong đúng thư mục của nó để nó có thể thực thi đúng đắn Tính năng bảo mật này cho phép chúng ta có thể dễ dàng theo dõi các chương trình CGI và ngăn chặn những kẻ từ bên ngoài phá hoại các chương trình CGI Sau khi một chương trình CGI được đặt trong thư mục bin, một liên kết đến thư mục bin được nhúng vào trong URL trên trang Web Khi người dùng nhấp chuột vào kiên kết này, chương trình CGI được thực hiện Chương trình CGI kết nối với cơ sở dữ liệu và yêu cầu thông tin mà người dùng yêu cầu Cơ sở dữ liệu gửi thông tin đến chương trình CGI Chương trình CGI nhận thông tin này và chuyển nó sang một định danh khác mà người dùng có thể hiểu được
Điều trở ngại chính của các script CGI là chúng chạy như những tệp tin thực thi trên trình chủ Web Mỗi lần một người dùng tạo ra một yêu cầu với trình chủ cơ sở dữ liệu bằng cách gọi một script CGI, một lượng nhỏ tài nguyên hệ thống bị tiêu tốn Mặc dù sự ảnh hưởng đến mạng khi chỉ thực thi một script CGI là không đáng kể, nhưng nếu 1000 người dùng cùng lúc thực thi một script CGI thì hiệu ứng của 1000 tiến trình cùng một lúc thực thi trên trình chủ Web sẽ chắc chắn mang lại những hậu quả tai hại cho hệ thống và tài nguyên
2.3.3 Những chương trình dựa trên mở rộng của trình chủ Web[6]
Cũng có phương pháp hiệu quả hơn là chức năng kết nối Web với cơ sở dữ liệu được tích hợp vào các hàm thư viện của trình chủ Web Các API của trình chủ Netscape, và các API của Microsoft Internet thường được biết đến như NSAPI/ISAPI
có thể được sử dụng bới các ứng dụng Các hàm thư viện cung cấp nhiều loại chức năng khác nhau, bao gồm cả khả năng kết nối Web đến cơ sở dữ liệu Các ứng dụng NSAPI/ISAPI có thể là các DLL chạy trên cùng không gian bộ nhớ như phần mềm trình chủ Web Trình chủ Nescape sử dụng NSAPI; Microsoft Information Server sử dụng ISAPI Cả hai đều cung cấp giải pháp tương tự nhau; chúng là các API cung cấp các hàm trong định dạng DLL Các API này có thể được thực thi bởi chính phần mềm