Giới thiệu về khái niệm kiểm thử và các kỹ thuật kiểm thử thông thường, và cụ thể là kiểm thử hộp trắng, và kiểm thử hộp đen, dựa trên các kỹ thuật kiểm thử sẽ tập trung tìm hiểu về ứng
Trang 1Nghiên cứu về kiểm thử cho mô hình ứng dụng Web
Nguyễn Việt Anh
Trường Đại học Quốc gia Hà Nội; Trường Đại học Công nghệ Chuyên ngành: Công nghệ phần mềm; Mã số: 60 48 10 Cán bộ hướng dẫn khoa học: PGS.TS Nguyễn Việt Hà
Năm bảo vệ: 2012
Abstract Giới thiệu về khái niệm kiểm thử và các kỹ thuật kiểm thử thông thường, và cụ thể là
kiểm thử hộp trắng, và kiểm thử hộp đen, dựa trên các kỹ thuật kiểm thử sẽ tập trung tìm hiểu về ứng dụng Web, thành phần ứng dụng Web và các kiểm thử đối với ứng dụng Web như: kiểm thử giao diện, kiểm thử chức năng, kiểm thử cơ sở dữ liệu, kiểm thử hiệu năng và kiểm thử với các thiết bị di động Nghiên cứu yêu cầu bài toán về việc xây dựng công cụ kiểm thử tự động các ứng dụng Web; Thông qua việc thực hiện trường hợp kiểm thử đăng nhập vào ứng dụng Web; Công cụ kiểm thử tự động sẽ thực hiện việc đọc các trường hợp đầu vào từ tệp tin Excel, sau khi thực hiện việc kiểm thử chương trình ghi kết quả quá trình kiểm thử ra tệp tin Excel, XML và chụp ảnh màn hình để xem việc kiểm thử là thành công hay thất bại; Và để xây dựng công cụ trên giải pháp đưa ra đó là sử dụng các hàm API được cung cấp bởi công cụ Selenium và WebDriver Thực hiện cài đặt ứng dụng Web và xây dựng các hàm API để thực hiện việc kiểm thử, sau khi thực hiện chương trình đưa ra những kết quả đạt được trong quá trình xây dựng công
cụ kiểm thử ứng dụng Web tự động
Keywords: Kiểm thử phần mềm; Công nghệ thông tin; Web; Phần mềm mã nguồn mở
Content
CHƯƠNG 1 ĐẶT VẤN ĐỀ 1.1 Lý do chọn đề tài
Những năm gần đầy công nghệ thông tin đã và đang đạt được những bước phát triển tích cực, cùng với sự phát triển mạnh mẽ của cơ sở hạ tầng đặc biệt là hệ thống mạng Internet Những ứng dụng Web phổ biến nhờ vào sự có mặt bất cứ nơi đâu của một chương trình Khả năng cập nhật và bảo trì ứng dụng Web mà không phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến của nó Chính nhờ vào sự phổ biến trên mà các ứng dụng Web giờ đây không chỉ là những ứng dụng đơn giản nữa, mà việc xây dựng các ứng dụng Web đã trở nên phức tạp hơn rất nhiều Các ứng dụng Web được dùng để thực hiện bán hàng trực tuyến, đấu giá trực tuyến, quản trị quan hệ khách hàng,
Tuy nhiên để triển khai được các ứng dụng Web thì có rất nhiều vấn đề sẽ phát sinh và ảnh hưởng trực tiếp đến các ứng dụng Web như: Tính bảo mật, hiệu suất, các thành phần của ứng dụng Web, giao diện, chức năng, khả năng tương thích của ứng dụng Web với trình duyệt và hệ điều hành,…
Trang 2Vì vậy, việc tìm hiểu nghiên cứu xây dựng mô hình ứng dụng web tự động không chỉ có ý nghĩa trong việc xây dựng một công cụ kiểm thử tự động mà còn mang tính thực tế cao Do vậy, mà tôi đã
quyết định chọn đề tài: “Nghiên cứu kiểm thử mô hình cho ứng dụng Web” để nghiên cứu
1.2 Mục đích và nội dung nghiên cứu
Trong nội dung của bài luận văn tôi tập trung vào việc nghiên cứu về kỹ thuật kiểm thử Và dựa trên những kiến thức về kỹ thuật kiểm thử sẽ tìm hiểu về kiểm thử ứng dụng Web Cuối cùng là xây dựng công cụ thực hiện việc kiểm thử tự động ứng dụng Web dựa trên công cụ mã nguồn mở Selenium và WebDriver
1.3 Cấu trúc của luận văn
Các phần còn lại của luận văn có cấu trúc như sau:
Chương 2 giới thiệu về khái niệm kiểm thử và các kỹ thuật kiểm thử thông thường, và cụ thể là kiểm thử hộp trắng, và kiểm thử hộp đen
Chương 3 yêu cầu bài toán về việc xây dựng công cụ kiểm thử tự động các ứng dụng Web Thông
qua việc thực hiện trường hợp kiểm thử đăng nhập vào ứng dụng Web
Chương 4 thực hiện cài đặt ứng dụng Web và xây dựng các hàm API để thực hiện việc kiểm thử,
sau khi thực hiện chương trình đưa ra những kết quả đạt được trong quá trình xây dựng công cụ kiểm thử ứng dụng Web tự động
Chương 5 là Kết luận, hướng nghiên cứu
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Các kỹ thuật kiểm thử
2.1.1 Khái niệm kiểm thử
Có rất nhiều các khái niệm khác nhau về thế nào là kiểm thử, tuy nhiên có một khái niệm về kiểm thử của (Glen Myers) được cho là tổng quát nhất: “Việc kiểm thử là quá trình thực thi một chương trình
với mục đích là tìm ra lỗi.” [5]
2.1.2 Vòng đời và quy trình kiểm của việc kiểm thử
Mục đích chính của việc kiểm thử đó là thiết kết một chuỗi các trường hợp kiểm thử mà có khả năng phát hiện được lỗi cao Và để cho việc kiểm thử đạt được kết quả tốt nhất thì cần phải có sự chuẩn bị
về kế hoạch kiểm thử, trải qua các công đoạn khác nhau đồng thời phải có những biện pháp để khắc phục khi phát hiện ra lỗi
2.1.3 Kiểm thử hộp trắng
Kiểm thử hộp trắng (White-Box Testing) hay còn gọi là kiểm thử logic, cho phép kiểm tra cấu trúc bên trúc bên trong của ứng dụng với mục đích đảm bảo rằng tất cả các câu lệnh và điều kiện sẽ được thực thi ít nhất một lần
Kiểm thử hộp trắng đúng nghĩa là kiểm thử hộp trong suốt, vì vậy mà kiểm thử hộp trắng còn được gọi bằng một số tên khác đó là kiểm thử hộp thủy tinh (Glass-Box Testing) hay kiểm thử trong suốt
Trang 3(Clear-Box Testing) Người kiểm thử truy cập vào mã nguồn chương trình để kiểm tra và lấy nó làm cơ
sở cho việc kiểm thử Và việc kiểm thử này dựa trên quá trình thực hiện xây dựng chương trình ứng dụng
Kiểm thử hộp trắng còn là phương pháp kiểm thử dựa vào cấu trúc/mã lệnh của chương trình Phương pháp này cho phép kiểm thử một chương trình (một phần chương trình, hay một hệ thống, một phần của hệ thống) đáp ứng tất cả các giá trị đầu vào bao gồm cả các giá trị không đúng hay không theo
dự kiến của chương trình
Khi nói đến vần đề kiểm thử hộp trắng cần quan tâm đến vấn đề đường dẫn lệnh trong kỹ thuật hay phương pháp này Nếu phải thực hiện tất cả các đường dẫn của đồ thị điều khiển trong chương trình thông quan việc chạy tất cả các trường hợp kiểm thử thì có thể nói rằng chương trình đã được kiểm thử một cách triệt để Tuy nhiên, điều đó là không thể thực hiện được vì số đường dẫn logic khác nhau trong một chương trình là rất lớn
2.1.4 Kiểm thử hộp đen
Kiểm thử hộp đen (Black – Box Testing) hay còn gọi là kiểm thử chức năng, việc thực hiện kiểm
thử này không cần quan tâm đến thiết kế và mã nguồn chương trình Kiểm thử hộp đen chỉ quan tâm đến các chức năng của ứng dụng đã được đề ra Vì vậy kiểm thử loại này chỉ cần dựa vào bản mô tả chức năng của chương trình, xem chương trình có thực sự cung cấp đúng chức năng đã mô tả trong bản chức năng hay không?
Ngoài ra kiểm thử hộp đen còn được hiểu là kiểm thử hướng dữ liệu (data – driven) hay kiểm thử hướng vào ra (input/output driven) Và với khái niệm này thì người kiểm thử coi ứng dụng như một chiếc hộp đen, có nghĩa là không quan tâm đến cấu trúc và hoạt động bên trong của chương trình Kiểm thử hộp đen cho phép các kỹ thuật viên kiểm thử xây dựng các nhóm dữ liệu đầu vào mà sẽ thực thi đầy đủ các yêu cầu chức năng của chương trình
Tuy nhiên, kiểm thử hộp đen không phải là một kỹ thuật thay thế cho kỹ thuật kiểm thử hộp trắng
mà là một phương pháp bổ sung giúp phát hiện các loại lỗi khác nhau của phương pháp kiểm thử hộp trắng
Kiểm thử hộp đen thực hiện các trường hợp kiểm thử để cố gắng tìm ra các loại lỗi sau:
- Thiếu hoặc sai chức năng
- Lỗi cấu trúc dữ liệu hay dữ liệu bên ngoài
- Lỗi giao diện
- Lỗi bắt đầu hay kết thúc chương trình
- Lỗi thực thi chương trình
Hình 2.1 Kiểm thử hộp đen
Trang 42.2 Kiểm thử mô hình ứng dụng Web
2.2.1 Ứng dụng Web là gì?
Trong kỹ thuật phần mềm, một ứng dụng Web hay một Webapp là một trình ứng dụng mà có thể tiếp cận qua web thông qua mạng như Internet
2.2.2 Các thành phần của ứng dựng Web
Nếu chúng ta hiểu được các thành phần bên trong của một ứng dụng Web và sự giao tiếp của các thành phần đó hoạt động với nhau như thế nào thì sẽ giúp cho việc kiểm tử của chúng ta tốt hơn rất nhiều
Hệ thống Client – Server: trên Web được nhóm thành ba tầng liên quan đến nhau: (1) các thành phần dịch vụ phía người dùng, (2) các thành phần dịch vụ xử lý, (3) các thành phần dịch vụ dữ liệu [5]
2.2.3 So sánh kiểm thử Web và kiểm thử truyền thống
Khi thực hiện kiểm thử các ứng dụng Web chúng ta cần quan tâm đến các phương pháp phân tích
và kiểm thử lỗi mới Giả sử như chúng ta đã nắm được hết các kỹ thuật kiểm thử thông thường, vấn đề đặt
ra lúc này là áp dụng các phương pháp hay kỹ thuật đó vào việc kiểm thử ứng dụng Web Và để thực hiện điều này một cách hiệu quả thì bạn cần hiểu được sự khác nhau giữa kiểm thử ứng dụng Web và kiểm thử truyền thống thông thường
a) Mô hình ứng dụng
Đầu tiên chúng ta cần xem xét qua mô hình ứng dụng của hệ thống máy tính so với hệ thống
Client – Server dựa trên hệ thông Web
b) Các ứng dụng phía Client
Trình khách của hệ thống máy khách chủ truyền thống chỉ được thực thi trên các nên tảng chuyên biệt như hệ điều hành Windows, Linux,…
c) Các ứng dụng phía Server
Các ứng dụng được phát triển phía trình chủ khác với ứng dụng trên trình khách ở hai điểm chính sau: Thứ nhất là, 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, người dùng cuối chỉ tương tác với các ứng dụng phía trình khách Thứ hai, các ứng dụng trên trình chủ được thực thi liên tục, nghĩa là khi các ứng dụng trên trình chủ được khởi động thì nó luôn thường trực để cung cấp dịch vụ cho các ứng dụng phía trình khách
2.2.4 Các kiểm thử cho ứng dụng Web
Như các mục đã phân tích ở trên thì chúng ta đã nắm được thế nào là một ứng dụng Web, các thành phần của một ứng dụng Web là gì, và đã có sự so sánh giữa kiểm thử thông thường và kiểm thử ứng dụng Web Vấn đề đặt ra lúc này là để kiểm thử một ứng dụng Web chúng ta cần quan đến những vấn đề gì?
a) Kiểm thử Giao diện người dùng
Vấn đề đầu tiên trong kiểm thử ứng dụng Web chúng ta cần xem xét đến đó là “Kiểm thử Giao diện người dùng” Khi xây dựng một giao diện ứng dụng Web chúng ta phải quan tâm đến tư tưởng của
Trang 5người thiết kế xem mục tiêu thiết kế giao diện đó áp dụng cho lĩnh vực gì, và tư tưởng của người phát triển xem sử dụng công nghệ gì để xây dựng giao diện
b) Kiểm thử Chức năng
Kiểm tra chức năng cũng giống các trường hợp kiểm thử khác là tìm ra lỗi, tuy nhiên kiểm thử chức năng cho phép kiểm thử cho tất cả các liên kết trong trang Web, kết nối cơ sở dữ liệu, cách thức sử dụng trong các trang Web để gửi và nhận thông tin của người sử dụng
c) Kiểm thử phía trình chủ
Khi nói đến mô hình Client – Server xây dựng ứng dụng Web, thì để hiển thị những giao diện người dùng thì đăng sau nó luôn có một hoặc nhiều trình chủ Trình chủ giúp điều khiển mọi hoạt động và hiển thị của ứng dụng Web Hay có thể gọi nó là bộ não của hệ thống Client – Server Thực hiện kiểm thử trình chủ sẽ phức tạp hơn rất nhiều so với các kiểm thử khác Bởi vì các kiểm thử khác bạn có thể tận dụng giao diện của trình khách Còn trình chủ không tận dụng được giao diện của trình khách
d) Kiểm thử Cơ sở dữ liệu
Tất cả các ứng dụng Web truy cập cơ sở dữ liệu đều yêu cầu trình chủ cơ sở dữ liệu, để có thể thiết kế các trường hợp kiểm thử cơ sở dữ liệu và phân tích các lỗi liên quan đến cơ sở dữ liệu, các kiểm thử viên cần hiểu được các khái niệm liên quan đến cơ sở dữ liệu, cách các thành phần của trình chủ Web giao tiếp với các thành phần cơ sở dữ liệu
e) Kiểm thử bảo mật
Đối một ứng dụng Web thì bảo mật là một vấn đề sống còn với ứng dụng đó, vì nếu bảo mật không tốt sẽ làm mất thông tin quan trọng, thậm chí còn mất cả quyền kiểm soát hệ thống ứng dụng Web
đó
f) Kiểm thử hiệu năng
Đối với các ứng dụng Web thương mại điện tử phục vụ cho việc mua bán hàng trực tuyến, điều gì
sẽ xảy ra khi bạn thực hiện giao tác bấm vào “mua hàng”, bạn có tin tưởng rằng sẽ không phải chờ quá lâu hay xử lý nặng nề không
CHƯƠNG 3 BÀI TOÁN VÀ GIẢI PHÁP 3.1 Mô tả yêu cầu bài toán
Trong phạm vi luận văn này, tôi tiến hành xây dựng bộ công cụ kiểm thử tự động các liên kết chức năng của ứng dụng web dựa trên đưa ra các test cases của chung Phạm vi và đối tượng của bài toán
mà tôi giải quyết sẽ tập trung vào giúp cho các nhà phát triển web dễ dàng trong việc thao tác, kiểm tra từng phần hoặc toàn bộ cấu trúc chương trình Ngoài ra, nghiên cứu của tôi còn giúp cho người sử dụng tránh được các lỗi liên quan tới việc sử dụng các chức năng mà ứng dụng web cung cấp, giúp tránh những phiền toái và nâng cao hiệu quả trong công việc
3.2 Giải pháp giải quyết bài toán
Mô hình giải quyết vấn đề được mô tả tại hình 3.1 với các tính năng cụ thể như sau Phần đầu vào của chương trình sẽ là một ứng dụng web với tập hợp các trang web, dữ liệu có liên kết với nhau Dựa
Trang 6vào sự liên kết đó, tôi sẽ đưa ra một bảng các liên kết chi tiết các trạng thái sẽ xảy ra đối với từng chức năng, và sẽ được coi đó là một tệp đầu vào cho một ca kiểm thử cụ thể của chức năng đó
Phần tiếp theo của chương trình là quá trình thực thi của ca kiểm thử trên Quá trình thực thi được
mô tả tại hình 3.2 và được cài trên môi trường WebDriver
Trong phần kết quả, tôi sẽ đưa ra được các chức năng của ứng dụng web đã được kiểm thử thông qua liên kết cụ thể Phần kết quả sẽ chỉ ra được tính chặt chẽ của liên kết, liên kết nào xảy ra lỗi so với đặc tả ca kiểm thử
Hình 3.1 Mô hình giải
quyết bài toán
Hình 3.2 Quá trình thực thi
3.2.1 Đầu vào cho ứng dụng kiểm thử
Thực hiện xây dựng Ứng dụng Web hoặc sử dụng một ứng dụng Web đã tồn tại và thực hiện kiểm thử tự động ứng dụng Web đó Để đơn giản có thể xây dựng một ứng dụng Web mã nguồn mở sử dụng Joomla hoặc các ứng dụng Web là các trang HTML đơn giản
Hình 3.3: Kiểm thử chức năng tạo bài viết
3.2.2 WebDriver
WebDriver được thiết kế để cung cấp một giao diện lập trình đơn giản ngăn ngọn hơn cùng với việc giải quyết những hạn chế trong API của Selenium RC
3.2.3 Giải pháp ghi lại kết quả đầu ra
a) Chụp hình lại kết quả kiểm thử
Trang 7b) Ghi kết quả ra tệp tin XML
c) Ghi kết quả ra tệp tin Excel
CHƯƠNG 4 THỰC NGHIỆM 4.1 Cài đặt môi trường kiểm thử
4.2 Xây dựng chương trình kiểm thử tự động đăng nhập ứng dụng Web
Giao diện trang chủ:
Hình 4.1 Giao diện trang chủ
Giao diện quản trị đăng nhập:
Hình 4.2 Giao diện đăng nhập
Màn hình đăng nhập thành công: Khi nhập tên đăng nhập và mật mã đúng sẽ truy cập được vào ứng
dụng
Trang 8Hình 4.3 Màn hình đăng nhập thành công
Tạo bảng trạng thái cũng chính là đầu vào của công cụ kiểm thử tự động cho đăng nhập:
Hình 4.4 Bảng trạng thái tương ứng
Sử dụng ứng dụng Graphviz để tạo mô hình chuyển trạng thái trực quan:
Hình 4.5 Mô hình trạng thái trực quan
Đoạn lệnh thực hiện việc xây dựng mô hình trạng thái trực quan sử dụng công cụ Graphviz:
4.3 Các bước thực hiện kiểm thử tự động
Từ việc phân tích các trường hợp kiểm thử ở trên, xây dựng chương trình thực hiện việc kiểm thử
tự động
Bước 1: Viết hàm đọc tệp tin Excel Xls_Reader[13] đầu vào mô tả tất cả các trường hợp có thể
xảy ra được mô tả
Bước 2: Viết hàm ghi kết quả ra tệp tin XML, Excel và viết hàm chụp lại tất cả các trường hợp
kiểm thử xảy ra
Trang 9Với hàm ghi kết quả ra tệp tin XML: Với đầu vào là các ca kiểm thử đã được kiểm tra, và mỗi ca
kiểm thử hàm sẽ tự động ghi vào tệp tin XML
Hình 4.6 Quy trình ghi kết quả ra tệp tin XML
4.4 Kết quả thực nghiệm
Sau khi thực chạy chương trình duyệt tất cả các trường hợp kiểm thử khi thực hiện đăng nhập, kết quả thu được cụ thể:
Kết quả ghi ra Excel:
Kết quả được ghi vào tệp tin Excel, ghi lại các trường hợp kiểm thử và trạng thái là thành công hay thất bại
Hình 4.7 Kết quả ghi ra kiểm thử Login ghi ra tệp tin Excel
Trường hợp 1 với việc nhập User name là anhnv, Password là anhnvpwd123, Ngôn ngữ là Vietnamese-VN => Ở cột Results thông báo là đăng nhập thành công
Kết quả ghi ra XML:
Kết quả được ghi nhận vào tệp tin XML, liệt kê tất cả các trường hợp kiểm thử
Trang 10Hình 4.8 Trường hợp đăng nhập không thành công
4.5 Ý nghĩa chương trình kiểm thử tự động
Chương trình kiểm thử tự động ứng dụng Web đã được thực nghiệm với hơn 10 Website khác nhau thỏa mãn cấu trúc của bài toán Và kết quả đạt được đáp ứng với yêu cầu của bài toán Với việc kiểm thử thành công với các ứng dụng Web khác nhau, cho thấy ý nghĩa quan trọng trong việc thực hiện kiểm thử tự động, đồng thời giải quyết được các vấn đề mà kiểm thử thủ công gặp phải như một số kiểm thử bị bỏ qua, không thể ghi nhận được lỗi phát sinh Với việc xây dựng và thực nghiệm thành công chương trình kiểm thử tự động đăng nhập ứng dụng Web, sẽ làm nền tảng để có thể phát hiển một chương trình hoản chỉnh đảm bảo có thể kiểm thử toàn bộ ứng dụng một ứng dụng Web cụ thể
CHƯƠNG 5 KẾT LUẬN
Ngày này với cơ sở hạ tầng về mạng Internet phát triển rất mạnh mẽ, cùng với đó là sự ra đời của hàng hoạt các ứng dụng Web để đáp ứng nhu cầu của người sử trong mọi lĩnh vực của cuộc sống Cùng với sự đa dạng và phức tạp của các ứng dụng Web là đòi hỏi của người dùng ngày một cao hơn như ứng dụng yêu cầu thân thiện hơn, sử dụng nhanh hơn, các chức năng thì thuận tiện với thao tác của người sử dụng, đặc biệt là không có lỗi khi sử dụng
Với đề tài “Nghiên cứu về kiểm thử mô hình ứng dụng Web” nội dung luận văn đã giới thiệu về
kiểm thử và kiểm thử về các thành phần ứng dụng Web Đồng thời tìm hiểu các thành phần của công cụ kiểm thử nguồn mở WebDriver cung cấp các thư viện các hàm API để giúp cho việc xây dựng chương trình kiểm thử tự động ứng dụng Web
Hướng phát triển
Nội dung trong luận văn đã nêu lên được các nội dung của kiểm thử và kiểm thử ứng dụng Web Cùng với đó là đã xây dựng thành công chương trình kiểm thử tự động, tuy nhiên, chương trình chỉ tập trung kiểm thử một số thành phần nhất định của một ứng dụng Web, và chưa mang tình chất tổng qua cho
cả ứng dụng Web Chính vì vậy mà hướng nghiên cứu tiếp theo của tôi sẽ tối ưu hóa chương trình hiện tại
và xây dựng một công cụ kiểm thử đầy đủ để thực hiện việc kiểm thử toàn bộ ứng dụng Web một cách tổng thể không chỉ là kiểm thử chức năng nữa mà còn có thể kiểm thử hiệu năng, kiểm thử giao diện,…