Ngày nay các ứng dụng Web được phát triển khá đa dạng từ trang Web hẹn hò đến các trang thương mại điện tử1, ngân hàng trực tuyến2, đặt vé các hãng hàngkhông3 … Kiểm thử dựa trên đặc điể
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS LÊ THANH HÀ
Hà Nội - 2013
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của tôi dưới sự giúp đỡ rấtlớn của Giảng viên hướng dẫn là Tiến sĩ Lê Thanh Hà, Tiến sĩ Phạm Ngọc Hùng.Những nội dung nghiên cứu và kết quả trong đề tài này hoàn toàn trung thực
Các trích dẫn từ nguồn tài liệu bên ngoài đều được liệt kê rõ ràng ở phầncuối của luận văn
Hà Nội, tháng 12 năm 2013
Học viên
Hà Khánh Toàn
Trang 4LỜI CẢM ƠN
Để có thể hoàn thành đề tài luận văn thạc sĩ một cách hoàn chỉnh, bên cạnh sự
nỗ lực cố gắng của bản thân còn có sự hướng dẫn nhiệt tình của quý Thầy Cô, cũngnhư sự động viên ủng hộ của gia đình và bạn bè trong suốt thời gian học tập,nghiên cứu và thực hiện luận văn thạc sĩ
Xin chân thành bày tỏ lòng biết ơn sâu sắc đến Tiến sĩ Lê Thanh Hà, Tiến sĩPhạm Ngọc Hùng, những người đã dành rất nhiều thời gian và tâm huyết hướngdẫn tôi nghiên cứu và hoàn thành luận văn thạc sĩ Xin gửi lời tri ân nhất đối vớinhững điều mà các Thầy đã dành cho tôi
Xin chân thành bày tỏ lòng biết ơn đến toàn thể quý Thầy Cô trong khoa CôngNghệ Thông Tin Trường Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội đã tậntình truyền đạt những kiến thức quý báu cũng như tạo mọi điều kiện thuận lợi nhấtcho tôi trong suốt quá trình học tập, nghiên cứu và cho đến khi thực hiện đề tài luậnvăn
Cuối cùng, tôi xin chân thành bày tỏ lòng cảm ơn đến Ban lãnh đạo Hệ thốngĐào tạo Lập trình viên Quốc tế Aprotrain-Aptech đã tạo điều kiện cho tôi rất nhiềutrong suốt quá trình làm việc, học tập và thực hiện đề tài luận văn thạc sĩ của mình.Mặc dù tôi đã rất cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt tình vànăng lực của mình Tuy nhiên do trình độ, kinh nghiệm và khả năng chuyên môn cóhạn, chắc chắn luận văn còn nhiều thiếu sót Rất mong nhận được những góp ý củaquý Thầy Cô và các bạn
Hà Nội, tháng 12 năm 2013
Học viên
Hà Khánh Toàn
Trang 5MỤC LỤC
TRANG PHỤ BÌA
LỜI CAM ĐOAN
LỜI CẢM ƠN
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH VẼ
CHƯƠNG 1 GIỚI THIỆU 1
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1 Khái niệm Web Application 3
2.2 Các kỹ thuật kiểm thử 3
2.2.1 Kiểm thử hộp đen 3
2.2.3 Kiểm thử hộp xám 6
2.2.4 Kiểm thử dựa trên mô hình 7
2.2.5 Kiểm thử sử dụng máy hữu hạn trạng thái 9
2.3 Các mức kiểm thử 11
2.3.1 Kiểm thử đơn vị 12
2.3.2 Kiểm thử tích hợp 12
2.3.3 Kiểm thử hệ thống 13
2.3.4 Kiểm thử chấp nhận 13
2.4 BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB 13
2.4.1 Tổng quan về Selenium 14
2.4.2 Selenium-RC (Remote Control) 14
2.4.3 Selenium 2 (Selenium – Webdriver) 15
2.4.4 Một số Selenium-Webdriver API 15
CHƯƠNG 3 PHƯƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB 18
Trang 63.1 Mục tiêu của phương pháp nghiên cứu 18
3.2 Tổng quan 18
3.3 Tạo các ca kiểm thử cho ứng dụng Web 19
3.3.1 Xây dựng mô hình máy hữu hạn trạng thái 19
3.3.2 Xây dựng mô hình đồ thị cho máy hữu hạn trạng thái 27
3.3.3 Thực hiện việc tạo ra các ca kiểm thử 30
3.3.4 Thuật toán sinh ca kiểm thử 30
CHƯƠNG 4 THỰC NGHIỆM 32
4.1 Phương pháp thực hiện 32
4.2 Xây dựng công cụ kiểm thử tự động 32
4.2.1 Mô tả công cụ kiểm thử 33
4.2.2 Xây dựng ứng dụng Web 34
4.2.3 Xây dựng máy hữu hạn trạng thái cho ứng dụng Web 38
4.3 Kết quả thử nghiệm chương trình 41
4.4 Thảo luận 44
CHƯƠNG 5 KẾT LUẬN 45
PHỤ LỤC 47
TÀI LIỆU THAM KHẢO 54
Trang 7DANH MỤC CÁC TỪ VIẾT TẮTViết tắt
Trang 8DANH MỤC CÁC BẢNG
Số hiệubảng2.13.1
3.2
3.33.43.54.14.24.34.44.54.64.7
4.8
4.94.104.11
4.12
Trang 94.144.15
Trang 11CHƯƠNG 1 GIỚI THIỆU
Ngày nay, sự phát triển của Internet đã thúc đẩy nhu cầu cộng tác làm việcqua mạng và sử dụng các dịch vụ trực tuyến dần trở thành một nhu cầu thiết yếutrong cuộc sống của chúng ta Xu hướng này đòi hỏi các ứng dụng không chỉ lànhững hệ thống đơn lẻ trên một máy và chịu sự phụ thuộc vào một nền tảng cố địnhnào nữa, mà chúng phải là những hệ thống linh hoạt giúp người dùng làm việc
“mọi lúc, mọi nơi” Do đó, việc phát triển các ứng dụng Web đang là xu hướng tấtyếu của ngành công nghiệp phần mềm Các ứng dụng Web đang được ứng dụngrộng rãi trong thực tế Càng ngày các doanh nghiệp nói chung và mọi người nóiriêng càng phụ thuộc vào các ứng dụng Web và làm thế nào để các ứng dụng Webđáp ứng được các nhu cầu này Do đó, nhu cầu đảm bảo an toàn chất lượng các sảnphẩm phần mềm ứng dụng Web ngày càng trở nên cấp thiết Việc đảm bảo chấtlượng phần mềm hiện nay đang là một bài toán khó và nó tiêu tốn hơn 50% côngsức và chi phí của các doanh nghiệp phần mềm
Kiểm thử đang được quan tâm như là phương pháp chủ yếu để đảm bảochất lượng của sản phẩm phần mềm ứng dụng Web nói riêng và sản phẩm phầnmềm nói chung Trong thực tế, các công ty gặp nhiều khó khăn, tốn thời gian và chiphí cao cho việc kiểm thử các ứng dụng Web Mặc dù họ có thể thuê những ngườikiểm thử có kỹ năng kiểm thử giỏi, song những sai sót hoặc thiếu sót trong kiểmthử ứng dụng Web là không thể tránh khỏi do các phương pháp kiểm thử ứng dụngWeb thường được thực hiện thủ công Do đó, các phương pháp kiểm thử hiện tạikhông đảm bảo phát hiện ra tất cả các lỗi Ngoài ra, việc kiểm thử thủ công của mộtứng dụng Web có thể tẻ nhạt và tốn thời gian (đôi khi do tương tác người dùng quálớn), đặc biệt là khi thực hiện các bài kiểm thử qui hồi trong ứng dụng Kết quả làcác ứng dụng Web hiện nay tiềm ẩn rất nhiều lỗi sau khi triển khai cho khách hàng
Trong kiểm thử các ứng dụng Web, kiểm thử tương tác giao diện người dùng làmột vấn đề khó và thường được thực hiện thủ công Trong thực tế, chúng ta có mộtthiết kế giao diện người dùng mô tả việc thay đổi trạng thái của màn hình ứng với cáctương tác của người dùng Các thay đổi trạng thái này có thể xảy ra trong một trangWeb hoặc từ trang Web này sang trang Web khác Làm thế nào để đảm bảo rằng việccài đặt tuân thủ đúng theo thiết kế này chính là mục đích chính của kiểm thử tương tácgiao diện người dùng cho các ứng dụng Web Các kỹ thuật kiểm thử tự động đã đượcbiết đến như là các giải pháp tiềm năng để giải quyết vấn đề trên Những kỹ thuật này
có thể phát hiện ra tất cả các lỗi có thể trong ứng dụng bằng cách tạo ra và thực hiện tựđộng các ca kiểm thử Kết quả là, chúng ta có thể tiết kiệm thời gian và chi phí trongkiểm thử Tự động kiểm thử là quá trình thực
Trang 12hiện tự động bởi một chương trình máy tính để tránh các lỗi không được phát hiệnkhi kiểm thử thủ công Để đảm bảo tính chính xác, các công cụ kiểm thử tự độngthường được xây dựng dựa trên các phương pháp kiểm thử như kiểm thử hộp đen,kiểm thử hộp trắng, … Tuy nhiên, các công cụ kiểm thử tự động là rất đắt và nhiềucông ty không thể mua chúng
Luận văn này tập trung nghiên cứu các phương pháp kiểm thử dựa trên môhình nhằm đảm bảo việc cài đặt đúng theo thiết kế ban đầu Đầu tiên sử dụng môhình máy hữu hạn trạng thái cho giao diện ứng dụng Web, sau đó tạo ra các bộkiểm thử từ máy hữu hạn trạng thái, từ đó xây dựng một đồ thị có hướng để biểudiễn các trường hợp kiểm thử Dựa trên đồ thị có hướng, theo các nhánh chúng ta
có thể tạo ra các trường hợp kiểm thử cho sản phẩm Mục đích của luận văn này là
đề xuất một phương pháp cho phép để xây dựng một phương pháp kiểm thử tựđộng cho giao diện các ứng dụng Web Một công cụ kiểm thử tự động hỗ trợ cũng
sẽ được phát triển nhằm minh chứng cho tính hiệu quả của phương pháp này
Các phần tiếp theo của luận văn được tổ chức như sau Chương 2 trình bày
về cơ sở lý thuyết của đề tài Chương này đề cập đến các khái niệm cơ bản củakiểm thử phần mềm, tìm hiểu về kiểm thử dựa trên mô hình, máy hữu hạn trạngthái Tiếp theo, chương 3 đề cập đến cách làm thế nào để sinh được các bộ kiểmthử từ máy hữu hạn trạng thái Sau đó, chương 4 xây dựng chương trình thựcnghiệm dùng công cụ Selenium và Webdriver Nghiên cứu các trường hợp sinh cakiểm thử bằng chương trình thực nghiệm này Cuối cùng, chương 5 tóm tắt các kếtquả đã đạt được, kết luận, những hạn chế và hướng nghiên cứu phát triển trongtương lai
Trang 13CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Khái niệm Web Application
Các ứng dụng Web là các ứng dụng được giao tiếp với các máy khách thôngqua các giao thức Web như HTTP, WSDL hoặc SOAP Với sự phổ biến của WorldWide Web thì việc các ứng dụng Web được phát triển ngày càng nhiều Trình duyệtWeb cung cấp cho các nhà phát triển các cơ hội để khai thác năng lực vốn có củatrình duyệt để giảm bớt gánh nặng phụ thuộc vào các hệ điều hành khác nhau hoặccác nền tảng phần cứng có sẵn cho người dùng
Ngày nay các ứng dụng Web được phát triển khá đa dạng từ trang Web hẹn
hò đến các trang thương mại điện tử1, ngân hàng trực tuyến2, đặt vé các hãng hàngkhông3 …
Kiểm thử dựa trên đặc điểm kỹ thuật nhằm mục đích để kiểm tra các chứcnăng của phần mềm theo các yêu cầu ứng dụng Mức độ kiểm thử thường đòi hỏi
ca kiểm thử kỹ lưỡng được cung cấp bởi các kiểm thử viên, những người mà sau
đó có thể xác minh một cách đơn giản rằng đối với một giá trị đầu vào hoặc đầu ra
1 http://www.alibaba.com
2 https://www.vietcombank.com.vn/ibanking/
3 http://www.vietnamairlines.com/wps/portal/vn/site/book_your_trip/
Trang 14(hoặc cách xử lý) có thể giống hoặc không so với giá trị kỳ vọng được định vị trongmột ca kiểm thử nhất định Các ca kiểm thử được xây dựng quanh các thông số kỹthuật và các yêu cầu đề xuất, tức là những tất cả những gì ứng dụng đó phải làm
Nó được sử dụng để mô tả mở rộng phần mềm bao gồm các thông số kỹ thuật, cácyêu cầu và thiết kế được bắt nguồn trong ca kiểm thử Các kiểm thử này có thể làchức năng hoặc phi chức năng
Hình 2.1 mô tả mô hình của kiểm thử hộp đen với các loại đầu vào nhưngẫu nhiên tạo ra đầu vào trong phạm vi cho phép, trường hợp ranh giới trongphạm vi qui định đầu vào, kiểm tra đầu vào là số không, kiểm tra đầu vào là các giátrị rỗng, đầu vào là các giá trị không hợp lệ hoặc ra khỏi phạm vi dự kiến,
Đầu vào
Hình 2.1 Kiểm thử hộp đen.
Kiểm thử dựa trên đặc điểm kỹ thuật có thể là cần thiết để đảm bảo chứcnăng chính xác, nhưng nó không đủ để bảo vệ chống lại các tình huống phức tạphoặc có độ rủi ro cao Một lợi thế của kỹ thuật kiểm thử hộp đen là không yêu cầunhất thiết phải có kiến thức lập trình Các kiểm thử viên tiến hành kiểm thử ở cáckhu vực và các chức năng khác nhau của phần mềm mà không liên quan đến cáclập trình viên Mặt khác, kiểm thử hộp đen được cho là “đi bộ trong một mê cungtối tăm mà không có đèn pin” Bởi vì họ không kiểm thử mã nguồn và đã có nhiềutình huống các kiểm thử viên chỉ kiểm thử được tính năng trong một vài trườnghợp chứ không kiểm thử được toàn bộ hoạt động của chương trình
Phương pháp kiểm thử này có thể được áp dụng cho tất cả các cấp kiểm thửphần mềm: đơn vị, tích hợp, hệ thống và chấp nhận Nó không thể thực hiện đượctất cả các kiểm thử các cấp độ cao hơn nhưng nó có thể tạo ưu thế tốt khi kiểm thửtừng đơn vị
2.2.2 Kiểm thử hộp trắng
Kiểm thử hộp trắng hay còn được gọi là kiểm thử cấu trúc, quá trình thiết kếcác ca kiểm thử là quá trình xây dựng các phương pháp kiểm thử có thể phát hiệnlỗi, sai sót, khiếm khuyết của phần mềm để xây dựng một phần mềm đạt tiêuchuẩn Kỹ thuật kiểm thử hộp trắng hay kiểm thử hướng lôgic cho phép bạn khảosát cấu trúc bên trong của chương trình Kỹ thuật này xuất phát từ dữ liệu kiểm thửbằng sự kiểm thử tính lôgic của chương trình Kiểm thử viên sẽ truy cập vào cấutrúc dữ liệu và giải thuật bên trong chương trình (và cả mã lệnh thực hiện chúng)
Trang 15Mục đích của bất cứ phương pháp kiểm thử nào cũng là để đảm bảo rằngtình trạng tốt của một hệ thống trên bề mặt của những sự tấn công độc hại hoặc làtránh những sự thất bại của phần mềm thông thường Kiểm thử hộp trắng là sựthực hiện dựa trên hiểu biết về những phần tử của một hệ thống Kiểm thử hộptrắng bao gồm phân tích dòng dữ liệu, điều khiển dòng, dòng thông tin, mã thựchành, ngoại lệ và những lỗi trình bày trong hệ thống để kiểm tra những hành độngcủa phần mềm không được định hướng trước Kiểm thử hộp trắng có thể thực hiện
để xác định tính hợp lệ cho dù việc triển khai thực hiện sau mã nhằm thiết kế, xácnhận tính hợp lệ để triển khai thực hiện chức năng bảo mật và giảm rủi ro việc bịtấn công ở những chỗ mở có thể khai thác được
Kiểm thử hộp trắng yêu cầu truy cập vào mã nguồn mặc dù kiểm thử hộptrắng có thể thực hiện tại bất cứ thời điểm nào trong vòng đời của phần mềm saukhi mã lệnh được phát triển Đó là một hành động tốt để thực hiện kiểm thử hộptrắng trong suốt giai đoạn kiểm thử đơn vị
Hình 2.2 hiển thị một kiểm thử hộp trắng đơn giản Trong hình 2.2, ở Ví dụ
1 chỉ có một đường thi hành nhưng rất dài: dài 1000*1000*1000 = 1 tỷ lệnh gọi
hàm doSomethingWith(i,j,k) khác nhau Ví dụ 2 gồm 32 câu lệnh if else độc lập
nhưng có 2^32 = 4 tỷ đường thi hành khác nhau Như vậy mục tiêu của kiểm thử
là đảm bảo mọi đường thi hành của đơn vị phần mềm cần kiểm thử đều chạy đúng.Tuy nhiên trong thực tế, công sức và thời gian để đạt được mục tiêu trên đây là rấtlớn, ngay cả trên những đơn vị phần mềm nhỏ
Hình 2.2 Một ví dụ về kiểm thử hộp trắng.
Trang 16Trong hình 2.3 hiển thị sơ đồ luồng điều khiển của một đoạn mã lệnh Tạibước đầu tiên, điểm khởi đầu sẽ đi đến khối lệnh xử lý là điểm (1) Sau đó, luồngđiều khiển sẽ đến điểm quyết định (2) Ở vị trí (2), luồng điều khiển có hai hướng
Nó có thể thực hiện đến điểm (3) để tạo ra một nhánh mới là 1 2 3 hoặc điểm
(4) để tạo ra một nhánh khác là 1 2 4 Cả hai nhánh có đều đến điểm (5) và trở về điểm kết thúc
Trong hình 2.3, chúng ta có năm nút quyết định nhị phân trong đồ thị nên có
độ phức tạp C = 1 + 1 = 2 Hai đường độc lập tuyến tính trong đồ thị luồng điềukhiển Kiểm thử viên có thể tạo ra hai ca kiểm thử cho đoạn mã trên là:
dạng dữ liệu đầu ra là không rõ ràng, giống như một chiếc “hộp xám”, bởi vì đầu vào và đầu ra rõ ràng là ở bên ngoài “hộp đen” mà chúng ta vẫn gọi về hệ thống
được kiểm tra Sự khác biệt này đặc biệt quan trọng khi quản lý kiểm thử tích hợp
Trang 17giữa hai mô-đun mã lệnh được viết bởi hai chuyên viên thiết kế khác nhau, trong
đó chỉ giao diện là được đưa ra để kiểm thử Kiểm thử hộp xám có thể cũng baogồm cả thiết kế đối chiếu để quyết định, ví dụ giá trị biên hay thông báo lỗi
2.2.4 Kiểm thử dựa trên mô hình
2.2.4.1 Khái niệm kiểm thử dựa trên mô hình
Kiểm thử dựa trên mô hình [4] là tự động tạo ra các thủ tục kiểm thử phầnmềm sử dụng các mô hình yêu cầu hệ thống và hành vi Mặc dù loại kiểm thử nàyđòi hỏi nhiều nỗ lực đáng kể trong việc xây dựng các mô hình trước, nhưng nócung cấp lợi thế đáng kể so với cách phương pháp kiểm thử phần mềm truyềnthống Các mẫu thiết kế hay mô hình là mô tả đơn giản của hệ thống dựa trên yêucầu hệ thống và chức năng xác định, giúp chúng ta có thể hiểu và dự đoán đượchành vi của hệ thống
2.2.4.2 Các bước thực hiện
Quá trình kiểm thử dựa trên mô hình được bắt đầu bằng việc xác định yêucầu của hệ thống từ đó xây dựng mô hình dựa vào các yêu cầu và chức năng của hệthống [12] Việc xây dựng mô hình còn phải dựa trên các yếu tố dữ liệu đầu vào vàđầu ra Mô hình này được sử dụng để sinh ra các ca kiểm thử Chúng ta có thể biếtkết quả đầu ra mong đợi từ mô hình hoặc từ quy định chuẩn Khi chạy kịch bản vàkết quả thu được sẽ được so sánh với kết quả mong đợi Từ đó, quyết định hànhđộng tiếp theo như sửa đổi mô hình hoặc dừng kiểm thử, …
Các bước để thực hiện kiểm thử dựa trên mô hình như được trình bày ở hình 2.4 bao gồm các bước sau:
Xây dựng mô hình dựa trên các yêu cầu và chức năng của hệ thống
Tạo đầu ra dự kiến từ mô tả bài toán
Chạy kịch bản kiểm thử
So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến
Quyết định hành động tiếp theo (Sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiểm thử, đánh giá chất lượng của phần mềm)
Trang 18Hình 2.4 Các bước thực hiện kiểm thử mô hình
2.2.4.3 Những thuận lợi và khó khăn của kiểm thử dựa trên mô hình
Trong phát triển phần mềm các kiểm thử viên thường thực hiện công việccủa mình bằng phương pháp truyền thống nên thường thiếu thời gian để thực hiệnkiểm thử, hoặc giá thành sản phẩm khi hoàn thành thường cao….[4] Và kiểm thửdựa trên mô hình sẽ khắc phục được một số nhược điểm đó:
Do quá trình sinh ca kiểm thử là tự động vì vậy mà rút ngắn thời gian làm phần mềm, và chất lượng phần mềm tốt hơn
Đặc biệt tuy chi phí lớn cho việc xây dựng mô hình nhưng điều này sẽ được khấu trừ do chi phí bảo dưỡng thấp hơn nhiều khi hệ thống được hoạt động
Quá trình sinh ra các ca kiểm thử được thực hiện một cách tự động nên sinh ra nhiều ca kiểm thử và phát hiện nhiều lỗi
Người kiểm thử phần mềm cần thường xuyên trao đổi với người pháttriển phần mềm trong khi xây dựng mô hình hệ thống vì vậy mà tăng khảnăng giao tiếp trao đổi giữa người phát triển phần mềm, và người kiểm thử
Trang 19 Người kiểm thử sẽ không bị nhàm chán khi phải thực hiện lặp lại nhiềulần một công việc, điều đó làm cho người kiểm thử hài lòng với công việccủa mình.
Sớm phát hiện lỗi và sự không rõ ràng trong đặc điểm kỹ thuật và thiết
kế vì vậy sẽ tăng thời gian giải quyết vấn đề trong kiểm thử
Tự động tạo và kiểm tra các ca kiểm thử trùng nhau hoặc không hữu hiệu
Khi một yêu cầu của hệ thống thay đổi việc thay đổi các ca kiểm thử làrất phức tạp nhưng nó được giải quyết khi mà kiểm thử dựa trên mô hình.Việc thay đổi các ca kiểm thử chỉ việc thay đổi mô hình của hệ thống
Trong kiểm thử dựa trên mô hình công việc quan trọng nhất là xây dựng
mô hình Người kiểm thử phải đầu tư đáng kể cả về thời gian, trí tuệ và tiềnbạc cho việc xây dựng mô hình hệ thống
Giống như các phương pháp kiểm thử khác, việc kiểm thử dựa trên môhình chỉ phát hiện được lỗi của hệ thống mà không thể phát hiện được hệthống còn lỗi hay không
2.2.5 Kiểm thử sử dụng máy hữu hạn trạng thái
Trong kiểm thử phần mềm có nhiều kiểu mô hình được sử dụng như: môhình máy hữu hạn trạng thái [2], ngôn ngữ mô hình hóa thống nhất - UML, vănphạm, Trong nghiên cứu này trình bày về mô hình máy hữu hạn trạng thái
Mô hình máy hữu hạn trạng thái cũng được gọi là ôtômat hữu hạn trạng tháihoặc chỉ đơn giản là một máy trạng thái Nó được sử dụng rộng rãi trong các môhình tính toán với nhiều ứng dụng Một máy hữu hạn trạng thái bao gồm ba thànhphần chính là các trạng thái, các quá trình chuyển đổi, và các hành động Các thànhphần này có thể phân thành hai loại chính là Máy hữu hạn trạng thái chấp nhận -Acceptor Finite State Machine (AFSM) và Bộ chuyển đổi hữu hạn trạng thái -Finite State Transducer (FST) Trong thực tế máy hữu hạn trạng thái đóng một vai
Trang 20trò quan trọng trong nhiều lĩnh vực nhƣ công nghệ điện tử, ngôn ngữ học, lôgic vàđặc biệt là khoa học máy tính Trong khoa học máy tính, máy hữu hạn trạng thái
Trang 21được sử dụng rộng rãi trong các mô hình hóa các hoạt động phần mềm, thiết kế hệthống phần cứng, dịch thuật,… Do đó luận văn áp dụng mô hình này để xây dựngchương trình kiểm thử tự động cho giao diện ứng dụng Web [3].
Máy hữu hạn trạng thái được định nghĩa theo mô hình như sau:
M=(Σ,Q,δ,S,F)Trong đó:
Σ: tập tất cả các sự kiện: tất cả các sự kiện có thể xảy ra trong chương trình,
Q: tập trạng thái: các trạng thái khi chương trình thực hiện,
δ: trạng thái chuyển đổi: được định nghĩa giữa các cặp trạng thái hoặc
sự kiện đến các trạng thái tiếp theo,
S: là trạng thái khởi tạo được khởi tạo khi chương trình bắt đầu thực hiện và
F: là tập kết thúc là tập con của Q
Trong bảng 2.1 hiển thị các trạng thái chuyển đổi[5], dòng đầu tiên là cáctrạng thái cuối, cột đầu tiên là các trạng thái đầu, còn lại là các trạng thái chuyểnđổi Bảng này được chuyển đổi thành đồ thị có hướng được biểu diễn trong hình2.1
Bảng 2.1 Bảng chuyển trạng thái.
ResultStudent.aspxs_ResultStudentStudentNameKhoahoc
Student+
KhoaHocF_mainerror
Trang 22Sau đó bảng này sẽ được chuyển sang đồ thị chuyển trạng thái trong hình 2.5 Hình 2.5 hiển thị mô hình đồ thị máy FSM cũng được gọi là đồ thị có hướng.
Trang 23Hình 2.5 Mô hình đồ thị của máy FSM
Từ mô hình đồ thị của máy hữu hạn trạng thái (Hình 2.5) Chúng ta có thể thấytất cả các đường đi từ đồ thị có hướng Ví dụ một số đường trong đồ thị này là:
1 S_ResultStudent submit errorSt
2 S_ResultStudent select_khoahoc KhoaHoc
t_stdNameText StudentName + KhoaHoc Submit
ResultStudent.aspx
3 S_ResultStudent select_khoahoc submit errorSt
4 S_ResultStudent t_stdNameText StudentName Submit
errorSt
5 S_ResultStudent t_stdNameText StudentName
select_KhoaHoc StudentName + KhoaHoc Submit
ResultStudent.aspx
2.3 Các mức kiểm thử
Kiểm thử thường xuyên được nhóm lại theo vị trí chúng được thêm vàotrong quá trình phát triển phần mềm, hoặc do mức độ đặc hiệu của kiểm thử Cáccấp chính trong quá trình phát triển theo quy định của hướng dẫn SWEBOK là
Trang 24kiểm thử đơn vị [7], kiểm thử tích hợp [11], và kiểm thử hệ thống [8] đƣợc phânbiệt bởi các mục tiêu kiểm thử mà không ám chỉ một mô hình quy trình cụ thể Cácmức độ kiểm thử khác đƣợc phân loại theo mục tiêu kiểm thử.
Trang 252.3.1 Kiểm thử đơn vị
Kiểm thử đơn vị hay còn được gọi là kiểm thử thành phần, đề cập đến việckiểm thử chức năng từng phần của mã, thường ở mức độ chức năng Trong mộtmôi trường hướng về đối tượng thì điều này thường là cấp độ lớp, và các kiểm thửđơn vị tối thiểu bao gồm hàm dựng và hàm hủy Nhiều loại kiểm thử được viết bởicác nhà phát triển như họ làm việc trong mã (kiểu hộp trắng) để đảm bảo rằng từnghàm riêng biệt hoạt động đúng như kỳ vọng Một hàm có thể có nhiều kiểm thử từ
đó giúp nắm bắt được các trường hợp góc hoặc các nhánh trong mã lệnh Kiểm thửđơn vị một mình không thể đảm bảo hết được từng chức năng của từng bộ phậntrong phần phềm nhưng nó được sử dụng để đảm bảo rằng các khối kiến trúc củaphần mềm hoạt động độc lập với nhau
Kiểm thử đơn vị là một quá trình phát triển phần mềm có liên quan đến ứngdụng đồng bộ của một loạt các chiến lược phòng ngừa phát hiện lỗi và để giảmthiểu rủi ro, thời gian và chi phí Nó được thực hiện bởi kỹ sư hay nhà phát triểntrong suốt giai đoạn xây dựng của vòng đời phát triển phần mềm Không chỉ tậptrung vào việc đảm bảo chất lượng truyền thống mà phải gia tăng nó lên vì thếkiểm thử đơn vị có mục đích loại bỏ những lỗi cấu trúc trước khi mã hóa rồi mớithúc đẩy việc quản lý chất lượng Chiến lược này nhằm nâng cao chất lượng cũngnhư hiệu quả của phần mềm trong tiến trình quản lý và phát triển chung
Tùy thuộc vào kỳ vọng của tổ chức phát triển phần mềm, kiểm thử đơn vị cóthể bao gồm phân tích mã tĩnh, phân tích luồng dữ liệu, phân tích dữ liệu, đánh giá
mã cân bằng, phân tích mã bao phủ và các thực hành xác nhận phần mềm khác
2.3.2 Kiểm thử tích hợp
Kiểm thử tích hợp là một hình thức kiểm thử phần mềm nhằm tìm cách xácminh các giao diện giữa các thành phần xung đột của một thiết kế Các thành phầnnày có thể tích hợp theo cách lặp đi lặp lại hoặc tất cả cùng nhau Thông thườngcách thức này được coi là một thực hành tốt hơn vì nó cho phép các vấn đề về giaodiện được định vị một cách nhanh chóng và cố định hơn
Kiểm thử tích hợp làm lộ ra các khiếm khuyết trong các giao diện và tươngtác giữa các thành phần tích hợp Các nhóm thành phần đã được kiểm thử lớn dầntừng bước tương ứng với các thuộc tính của cấu trúc thiết kế đã được tích hợp vàkiểm thử cho đến khi phần mềm hoạt động như một hệ thống
Trang 262.3.3 Kiểm thử hệ thống
Kiểm thử hệ thống giúp xác minh rằng một hệ thống được tích hợp có đápứng đầy đủ các yêu cầu hay không Ngoài ra, kiểm thử phần mềm phải đảm bảorằng các chương trình hoạt động như kỳ vọng, không còn bị phá hủy hay lỗi phầnnào đó trong môi trường hoạt động của nó hoặc không gặp sự cố khi hoạt động vớitiến trình khác (điều này bao gồm bộ nhớ chia sẻ không bị hỏng, nguồn tài nguyênkhông bị dư thừa hay chiếm dụng quá mức và không bị đẩy ra khi hoạt động songsong các tiến trình)
2.3.4 Kiểm thử chấp nhận
Kiểm thử chấp nhận thường là nghĩa vụ của khách hàng hoặc người sửdụng của hệ thống, các chủ sở hữu khác có thể cũng có liên quan Mục tiêu củaKiểm thử chấp nhận là để xác nhận sự tin tưởng trong hệ thống, các đặc điểm chứcnăng hoặc không có chức năng của hệ thống Tìm kiếm lỗi không phải là trọng tâmchính của kiểm thử chấp nhận Kiểm thử chấp nhận có thể đánh giá sự sẵn sàng của
hệ thống để triển khai và sử dụng, mặc dù nó không nhất thiết phải là mức cuốicùng của kiểm thử Ví dụ, một kiểm thử tích hợp có hệ thống trong một phạm vilớn có thể được thực hiện sau khi kiểm thử chấp nhận thực hiện cho một hệ thống
Hợp đồng và quy định chấp nhận thử nghiệm: Kiểm tra nghiệm thu hợp
đồng được thực hiện với các tiêu chí chấp nhận một hợp đồng nâng cấp - phát triểnphần mềm Chuẩn mực chấp nhận phải được xác định để thực hiện một thỏa thuậnhợp đồng Điều lệ kiểm thử chấp nhận được thực hiện trong bất kỳ quy định nàophải căn cứ vào như các quy định của chính phủ, pháp luật hoặc các quy định antoàn
Kiểm thử Alpha và Beta: Các nhà phát triển của thị trường phần mềm
thường muốn nhận được thông tin phản hồi từ khách hàng tiềm năng hoặc kháchhàng trong thị trường của họ trước khi sản phẩm phần mềm được đóng gói thươngmại Thử nghiệm alpha được thực hiện tại địa điểm tổ chức đang phát triển Giaiđoạn thử nghiệm, hoặc trường thử nghiệm, được thực hiện bởi khách hàng hoặckhách hàng tiềm năng tại các địa điểm riêng của họ
2.4 BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM
THỬ GIAO DIỆN ỨNG DỤNG WEB
Selenium là một tập hợp mạnh mẽ các công cụ hỗ trợ phát triển nhanh chóngcủa các thử nghiệm tự động hóa cho các ứng dụng Web [6] Selenium cung cấp mộttập phong phú các thử nghiệm chức năng đặc biệt hướng đến các nhu cầu của các
Trang 27thử nghiệm trong một ứng dụng Web Các hoạt động này là rất linh hoạt, cho phépnhiều tùy chọn cho vị trí các thành phần giao diện và so sánh kết quả thử nghiệm dựkiến sẽ chống lại hành vi ứng dụng thực tế.
2.4.1 Tổng quan về Selenium
Selenium ra đời năm 2004 bởi Jason Huggin Ông đã phát triển một thư việnJavascript điều khiển tương tác với các trang, cho phép chạy lại kiểm thử đối vớinhiều trang Cuối cùng thư viện này đã trở thành Selenium – Core nền tảng của cácchức năng Selenium Remote Control (RC) và Selenium IDE Selenium RC là sựđột phá vì không có sản phẩm nào cho phép bạn kiểm soát một trình duyệt từ mộtngôn ngữ lập trình
Năm 2006, Stimon Stewart là một kỹ sư tại Google bắt đầu làm việc vớimột dự án có tên là Webdriver Ông ấy muốn có một công cụ kiểm tra trực tiếp vớitrình duyệt bằng cách sử dụng phương pháp tự nhiên cho trình duyệt và hệ điềuhành do đó tránh được hạn chế của Javascript Sandbox
Năm 2008 đánh dấu sự kết hợp của Selenium và Webdriver Selenium cócộng đồng lớn và hỗ trợ thương mại nhưng Web Driver là một công cụ của tươnglai Việc kết hợp hai công cụ này cung cấp tập hợp các tính năng chung cho nhiềungười sử dụng và lợi ích trong tự động hóa kiểm thử
2.4.2 Selenium-RC (Remote Control)
Selenium-RC cho phép các nhà phát triển tự động hóa kiểm thử sử dụng mộtngôn ngữ lập trình, nó cho tính linh hoạt tối đa và mở rộng trong việc phát triểnlôgic thử nghiệm Ví dụ, nếu trình ứng dụng trả về một tập kết quả của việc kiểmtra, và nếu chương trình thử nghiệm tự động cần chạy thử nghiệm trên mỗi phần tửtrong tập hợp kết quả, hỗ trợ lặp đi lặp lại Các ngôn ngữ lập trình có thể được sửdụng để chuyển đổi thông qua việc tập hợp kết quả, kêu gọi Selenium lệnh chạy thửnghiệm trên mỗi mục
Selenium-RC cung cấp một API (Application Programming Interface) vàthư viện cho mỗi ngôn ngữ được hỗ trợ: HTML, Java, C #, Perl, PHP, Python, vàRuby Khả năng sử dụng Selenium-RC với một ngôn ngữ lập trình bậc cao để pháttriển các trường hợp thử nghiệm cũng cho phép thử nghiệm tự động được tích hợpvới một dự án xây dựng môi trường tự động
Trang 282.4.3 Selenium 2 (Selenium – Webdriver)
Selenium 2 là hướng tương lai của dự án nó bổ sung mới nhất của công cụSelenium Công cụ này cung cấp những tính năng tuyệt vời, bao gồm API địnhhướng gắn kết hơn và giải quyết các vấn đề tồn tại của các phiên bản trước Nó hỗtrợ các API Webdriver, cùng với công nghệ Selenium 1 API WebDriver cho sự linhhoạt tối đa trong việc kiểm thử Ngoài ra, Selenium 2 vẫn chạy Selenium RC 1 củagiao diện để tương thích ngược
2.4.4 Một số Selenium-Webdriver API
2.4.4.1 Một thể hiện của browser driver
Một browser driver (ví dụ như FirefoxDriver) là một đối tượng, đối tượngnày được coi như đại diện một trình duyệt trong chương trình
WebDriver ffdriver = new FirefoxDriver();
Từ đây, đối tượng ffdriver sẽ có những phương thức từ đó điểu khiển trìnhduyệt ở đây là Firefox Sau khi thực hiện lệnh này, trình duyệt sẽ được khởi động
2.4.4.2 Truy cập một trang Web
Điều đầu tiên chúng ta muốn làm với một Webdriver đó là truy cập vào mộttrang Web, thông thường điều này sẽ được thực hiện qua phương thức:
driver.get("http://www.google.com");
Khi đó trình duyệt sẽ được tự động truy cập vào địa chỉ đã truyền vào
2.4.4.3 Định vị các thành phần trên giao diện Web
Tất cả các thành phần trên giao diện Web đều có thể định vị bằng nhiều cách
mà Selenium hỗ trợ Mỗi một thành phần sẽ được ánh xạ qua một thể hiện củaWebElement
Webdriver sử dụng một phương thức findElement mà tham số của phươngthức này là định nghĩa vị trí của element trên trang Web Có rất nhiều cách để địnhnghĩa vị trí của một element trên Website trong đó có một số cách phổ biến sau:
Theo ID:
// <div id="coolestWidgetEvah"> </div>
WebElement element = driver.findElement(By.id("id_value"));
Theo Class Name:
// <div class="cheese"><span>Cheddar</span></div>
Trang 29// <input name="cheese" type="text"/>
WebElement cheese = driver.findElement(By.name("cheese"));
Theo Link Text
/ <a href="http://www.google.com/search?q=cheese">cheese</a>>
WebElement cheese = driver.findElement(By.linkText("cheese"));
2.4.4.4 Điền các giá trị vào trang Web qua Selenium-Webdriver
Sau khi định vị được các thành phần trên một Website và ánh xạ chúng vớicác WebElement, chúng ta có thể thay đổi giá trị hoặc thực hiện các thao tác chuộtcũng như các thao tác gõ chữ lên WebElement đó thông qua các phương thức
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
/ Enter something to search for
element.sendKeys("Cheese!");
/ Now submit the form
element.submit();
2.4.4.5 Di chuyển giữa các cửa sổ và frame
Một số ứng dụng Web có thể chứa nhiều cửa sổ hoặc frame, Webdriver cungcấp phương thức giúp di chuyển giữa các cửa sổ thông qua tên:
driver.switchTo().window("windowName");
driver.switchTo().frame("frameName");
2.4.4.6 Điều hướng trình duyệt
Sau khi trình duyệt truy cập một trang Web và thực hiện một số sự kiện chuyển sang những trang mới, khi đó chúng ta có thể sử dụng phương thức
Trang 30Webdriver còn cho phép thay đổi cả cookie khi truy cập các trang Web
/ set the cookie This one's valid for the entire domain
Cookie cookie = new Cookie("key", "value");
Trang 31CHƯƠNG 3 PHƯƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB
Ngoài việc phát triển các ứng dụng Web, các công ty chú ý để đảm bảo chấtlượng của sản phẩm Kiểm thử ứng dụng Web được coi là đảm bảo chất lượng sảnphẩm Tuy nhiên các phương pháp kiểm thử tự động mới chỉ được áp dụng đểkiểm thử các mô-đun chương trình Làm thế nào để kiểm thử tự động cho các giaodiện người dùng vẫn đang là bài toán mở và chưa có giải pháp thỏa đáng Đề tàinày tập trung nghiên cứu pha đầu trong quá trình kiểm thử tự động nhằm sinh tựđộng các ca kiểm thử cho kiểm thử tự động giao diện ứng dụng Web Để thực hiệnđiều này bài toán xây dựng công cụ kiểm thử tự động từ máy hữu hạn trạng thái và
tự động tạo ra các ca kiểm thử từ mô hình máy hữu hạn trạng thái
3.1 Mục tiêu của phương pháp nghiên cứu
Mục đích của phương pháp nghiên cứu này là để tạo ra các đường kiểm thử
tự động cho quá trình kiểm thử giao diện một ứng dụng Web, bằng phương pháptiếp cận dựa trên mô hình Điều này được thực hiện bằng cách từ bản thiết kế củamột ứng dụng Web tạo ra một máy hữu hạn trạng thái cho mỗi trang của ứng dụng.Sau đó một thuật toán được phát triển và sử dụng để đi qua các đỉnh và các cạnhcủa mô hình, đảm bảo rằng mỗi trạng thái và chuyển đổi được bao phủ Cuối cùngmỗi đường kiểm thử được ánh xạ tới các chuỗi lệnh sử dụng Selenium, Webdriver
và chạy tự động
3.2 Tổng quan
Giả sử chúng ta có một bản thiết kế một ứng dụng Web gồm có năm trangđược mô tả như sau:
1 Trang đăng nhập: login.aspx,
2 Trang hiển thị thông tin của học viên: studentInformation.aspx,
3 Trang hiển thị kết quả học tập của học viên: resultStudent.aspx,
4 Trang nhập kết quả học tập của học viên: addMark.aspx,
5 Và cuối cùng là trang đăng xuất: logout.aspx
Trang Login.aspx: đây là trang đăng nhập cho Website Người dùng đượcyêu cầu nhập tên đăng nhập và mật khẩu để vào các trang Web khác của ứng dụng.Nếu người dùng có quyền quản trị hoặc quyền giáo vụ sẽ được vào trang nhậpthông tin học viên hoặc trang nhập kết quả học tập của học viên Nếu người dùng
Trang 32có quyền học viên thì sẽ được vào trang hiển thị thông tin học viên đó hoặc đượcvào trang hiển thị kết quả học tập của học viên Nút “Reset” sẽ xóa trắng cáctrường trong khi đó nút “Đăng nhập” sẽ vào trang tiếp theo tùy thuộc theo vai tròcủa tài khoản đó
Trang hiển thị thông tin của học viên: trang này bao gồm có một ô nhập(TextBox) cho phép người dùng nhập tên của học viên và có một nút tìm kiếm chophép người dùng có thể tìm kiếm theo tên học viên được nhập vào ô nhập Khingười dùng nhấp vào nút tìm kiếm một danh sách học viên theo tiêu chí tìm sẽđược hiển thị Trên danh sách học viên có các liên kết cho phép người dùng nhấpvào thì sẽ chuyển người dùng sang trang kết quả học tập của học viên đó Nếukhông có thông tin của học viên nào đúng theo tiêu chí tìm kiếm một thông báo sẽđược hiển thị
Trang hiển thị kết quả học tập của học viên: trang này cũng có một ô nhậpcho phép người dùng tìm kiếm tên của học viên muốn hiển thị kết quả học tập.Trang này cũng có một danh sách thả xuống cho phép người dùng chọn khóa học
để tìm kiếm Sau đó người dùng nhấp vào nút tìm kiếm để tìm kiếm kết quả học tậptheo tiêu chí tìm
Trang nhập kết quả học tập của học viên: cho phép người dùng nhập điểmthi của các môn học cho từng học viên Trên trang này có ba danh sách thả xuốngcho phép người dùng chọn học viên, chọn lớp học, chọn môn thi, có một ô nhậpcho phép người dùng nhập điểm của học viên và một điều khiển ngày tháng chophép người dùng chọn ngày thi
3.3 Tạo các ca kiểm thử cho ứng dụng Web
Các bước để tạo ra các ca kiểm thử cho ứng dụng Web trên được thực hiệnnhư sau:
3.3.1 Xây dựng mô hình máy hữu hạn trạng thái
Để tạo ra máy hữu hạn trạng thái của ứng dụng Web trên chúng ta sẽ xâydựng từng máy hữu hạn trạng thái cho từng trang riêng biệt Để thực hiện điều nàyvới mỗi trang Web chúng ta sẽ tạo một bảng trạng thái, các trạng thái mà trang Web
có thể vào mà chỉ sử dụng các trạng thái chuyển đổi hợp lệ (tức là các thao tác củangười dùng) Sau đó bảng này được sử dụng như là một hướng dẫn để tạo ra cácmáy hữu hạn tương ứng
Đầu tiên chúng ta xác định các trạng thái, các thao tác có thể xảy ra trongtrang login.aspx Các trạng thái trong trang này bao gồm:
Trang 33 S_index: trạng thái ban đầu,
Error: trạng thái khi trang bị lỗi,
F_main: trạng thái khi đăng nhập thành công,
Ursname: trạng thái tồn tại có tên đăng nhập,
Passwd: trạng thái tồn tại có mật khẩu,
Usr+pass: trạng thái có cả tên đăng nhập và mật khẩu
Các thao tác trong trang này gồm:
t_username: tên đăng nhập được nhập vào biểu mẫu,
t_password: mật khẩu được nhập vào biểu mẫu,
t_reset: xóa trắng các trường trên biểu mẫu,
t_submit: gửi dữ liệu để xác thực
Từ đó chúng ta xây dựng được bảng 3.1 [5] Bảng 3.1 hiển thị trạng tháichuyển đổi, trong bảng 3.1 dòng đầu tiên là trạng thái kết thúc, cột đầu tiên là trạngthái bắt đầu còn lại là trạng thái chuyển đổi Các giá trị bên trong bảng là các thaotác thực hiện của người dùng từ một trạng thái này được chuyển sang trạng tháikhác
Bảng 3.1 Bảng chuyển trạng thái trang login.aspx
s_StudentInfor: trạng thái ban đầu,
studentName: trạng thái tồn tại khi có tên học viên được nhập,
f_main: trạng thái khi hiển thị thông tin học viên thành công,
error: trạng thái khi trang bị lỗi
Trang 3421Các thao tác trong trang đƣợc biểu diễn trong bảng 3.2 gồm:
t_studentName: tên học viên đƣợc nhập vào biểu mẫu,
t_submit: trạng thái gửi dữ liệu để xác thực
Bảng 3.2 Bảng chuyển trạng thái trang studentInformation.aspx
s_ ResultStudent: trạng thái ban đầu,
studentName: trạng thái tồn tại khi có tên học viên đƣợc nhập,
Khoahoc: trạng thái tồn tại khi chọn đƣợc khóa học của học viên,
Student+KhoaHoc: trạng thái tồn tại khi cả tên học viên đƣợc nhập và khóa học của học viên đó đƣợc chọn,
f_main: trạng thái khi hiển thị thông tin học viên thành công,
error: trạng thái khi trang bị lỗi
t_ StdName: tên học viên đƣợc nhập vào biểu mẫu,
select_khoahoc: chọn khóa học trong biểu mẫu,
del_StdName: xóa tên học viên đƣợc nhập vào biểu mẫu,
del_khoahoc: bỏ chọn tên học viên,
t_submit: trạng thái gửi dữ liệu để xác thực
Trang 35Bảng 3.3 Bảng chuyển trạng thái trang resultStudent.aspx
S_addMark: trạng thái ban đầu,
class: trạng thái tồn tại khi có tên lớp học đƣợc chọn,
studentName: trạng thái tồn tại khi tên học viên đƣợc nhập,
subject: trạng thái tồn tại khi tên môn học đƣợc chọn,
mark: trạng thái tồn tại khi điểm môn học đƣợc nhập,
ExamDate: trạng thái khi ngày thi đƣợc chọn,
Class+StudentName: trạng thái tồn tại khi tên lớp đƣợc chọn và tên học viên đƣợc chọn,
Class+ subject: trạng thái tồn tại khi tên lớp học đƣợc chọn và tên môn học đƣợc chọn,
Class+ mark: trạng thái tồn tại khi tên lớp học đƣợc chọn và điểmđƣợc nhập,
Class+ ExamDate: trạng thái tồn tại khi tên lớp học đƣợc chọn vàngày thi đƣợc chọn,
Trang 36 Class+ studentName+ subject: trạng thái tồn tại khi tên lớp học đƣợc chọn, tên học viên đƣợc chọn và môn học đƣợc chọn,
Class+ studentName+ mark: trạng thái tồn tại khi tên lớp học đƣợc chọn, tên học viên đƣợc chọn và điểm môn học đƣợc nhập,
Trang 37 Class+ studentName+ ExamDate: trạng thái tồn tại khi tên lớp học
được chọn, tên học viên được chọn và ngày thi được chọn,
studentName+ subject+ mark: trạng thái tồn tại khi tên học viên được chọn, tên môn học được chọn và điểm môn học được nhập,
studentName+ subject+ ExamDate: trạng thái tồn tại khi tên họcviên được chọn, tên môn học được chọn và ngày thi của môn học đóđược chọn,
Subject +mark + ExamDate: trạng thái tồn tại khi tên môn họcđược chọn, điểm môn học được nhập và ngày thi của môn học đóđược chọn,
Class+studentName+ subject+ mark+ExamDate: trạng thái tồn tạikhi tên lớp học được chọn, tên học viên được chọn, tên môn họcđược chọn, điểm thi được nhập và ngày thi của môn đó được chọn,
F_main: trạng thái khi điểm nhập của học viên thành công,
error: trạng thái khi nhập điểm bị lỗi
Các thao tác trong trang được biểu diễn trong bảng 3.4 gồm:
select_class: chọn lớp học trong biểu mẫu,
select_Name: chọn tên học viên trong biểu mẫu,
select_subject: chọn tên môn học trong biểu mẫu,
t_mark: nhập điểm môn học vào biểu mẫu,
select_date: chọn ngày thi của môn học,
t_home: đường liên kết đến trang chủ,
t_submit: trạng thái gửi dữ liệu đến máy chủ,
del_class: bỏ chọn lớp học trọng biểu mẫu,
del_name: bỏ chọn tên học viên trong biểu mẫu,
del_subject: bỏ chọn tên môn học trong biểu mẫu,
del_date: bỏ chọn ngày tháng trong biểu mẫu
Trang 38Bảng 3.4 Bảng chuyển trạng thái trang addMark.aspx