1. Trang chủ
  2. » Luận Văn - Báo Cáo

(LUẬN văn THẠC sĩ) phương pháp sinh bộ kiểm thử tự động cho kiểm thử giao diện ứng dụng web 001

63 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 63
Dung lượng 1,86 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU (10)
  • CHƯƠNG 2. CƠ SỞ LÝ THUYẾT (12)
    • 2.1. Khái niệm Web Application (12)
    • 2.2. Các kỹ thuật kiểm thử (12)
      • 2.2.1. Kiểm thử hộp đen (12)
      • 2.2.3. Kiểm thử hộp xám (15)
      • 2.2.4. Kiểm thử dựa trên mô hình (16)
      • 2.2.5. Kiểm thử sử dụng máy hữu hạn trạng thái (18)
    • 2.3. Các mức kiểm thử (20)
      • 2.3.1. Kiểm thử đơn vị (21)
      • 2.3.2. Kiểm thử tích hợp (21)
      • 2.3.3. Kiểm thử hệ thống (22)
      • 2.3.4. Kiểm thử chấp nhận (22)
    • 2.4. BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB (22)
      • 2.4.1. Tổng quan về Selenium (23)
      • 2.4.2. Selenium-RC (Remote Control) (23)
      • 2.4.3. Selenium 2 (Selenium – Webdriver) (24)
      • 2.4.4. Một số Selenium-Webdriver API (24)
  • 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 (27)
    • 3.1. Mục tiêu của phương pháp nghiên cứu (27)
    • 3.2. Tổng quan (27)
    • 3.3. Tạo các ca kiểm thử cho ứng dụng Web (28)
      • 3.3.1. Xây dựng mô hình máy hữu hạn trạng thái (28)
      • 3.3.2. Xây dựng mô hình đồ thị cho máy hữu hạn trạng thái (36)
      • 3.3.3. Thực hiện việc tạo ra các ca kiểm thử (39)
      • 3.3.4. Thuật toán sinh ca kiểm thử (39)
  • CHƯƠNG 4. THỰC NGHIỆM (41)
    • 4.1. Phương pháp thực hiện (41)
    • 4.2. Xây dựng công cụ kiểm thử tự động (41)
      • 4.2.1. Mô tả công cụ kiểm thử (42)
      • 4.2.2 Xây dựng ứng dụng Web (43)
      • 4.2.3. Xây dựng máy hữu hạn trạng thái cho ứng dụng Web (47)
    • 4.3. Kết quả thử nghiệm chương trình (50)
    • 4.4. Thảo luận (53)
  • CHƯƠNG 5. KẾT LUẬN (54)
  • PHỤ LỤC (56)
  • TÀI LIỆU THAM KHẢO (0)

Nội dung

GIỚI THIỆU

Ngày nay, sự phát triển của Internet đã làm tăng nhu cầu cộng tác trực tuyến, biến việc sử dụng các dịch vụ trực tuyến thành một phần thiết yếu trong cuộc sống Xu hướng này yêu cầu các ứng dụng không chỉ là những hệ thống độc lập trên một máy, mà còn phải linh hoạt và hỗ trợ người dùng trong công việc của họ.

Trong bối cảnh "mọi lúc, mọi nơi", sự phát triển của các ứng dụng Web đã trở thành xu hướng tất yếu trong ngành công nghiệp phần mềm Các ứng dụng này đang được ứng dụng rộng rãi, và doanh nghiệp cũng như cá nhân ngày càng phụ thuộc vào chúng để đáp ứng nhu cầu thực tế Điều này đã dẫn đến việc đảm bảo an toàn và chất lượng sản phẩm phần mềm ứng dụng Web trở nên cấp thiết hơn bao giờ hết Tuy nhiên, việc đảm bảo chất lượng phần mềm hiện nay vẫn là một thách thức lớn, tiêu tốn hơn 50% công sức và chi phí của các doanh nghiệp phần mềm.

Kiểm thử là phương pháp quan trọng để đảm bảo chất lượng sản phẩm phần mềm, đặc biệt là ứng dụng Web Tuy nhiên, nhiều công ty gặp khó khăn và tốn kém trong quá trình kiểm thử ứng dụng Web, ngay cả khi họ thuê những chuyên gia kiểm thử có kinh nghiệm Các phương pháp kiểm thử hiện tại thường thực hiện thủ công, dẫn đến việc không phát hiện hết các lỗi Kiểm thử thủ công cũng có thể trở nên tẻ nhạt và mất thời gian, đặc biệt khi phải thực hiện các bài kiểm tra hồi quy Hệ quả là nhiều ứng dụng Web vẫn tồn tại lỗi sau khi được triển khai cho khách hàng.

Kiểm thử tương tác giao diện người dùng trong ứng dụng Web là một thách thức lớn, thường thực hiện thủ công để đảm bảo rằng các thay đổi trạng thái trên màn hình phù hợp với thiết kế Mục tiêu chính của kiểm thử này là xác minh tính tuân thủ của cài đặt theo thiết kế giao diện Các kỹ thuật kiểm thử tự động đã được phát triển như một giải pháp tiềm năng để phát hiện lỗi bằng cách tự động tạo ra và thực hiện các ca kiểm thử, giúp tiết kiệm thời gian và chi phí Tự động kiểm thử, thực hiện bởi chương trình máy tính, giúp tránh những lỗi không được phát hiện qua kiểm thử thủ công Để đảm bảo độ chính xác, các công cụ kiểm thử tự động thường dựa trên các phương pháp như kiểm thử hộp đen và hộp trắng Tuy nhiên, chi phí cao của các công cụ này khiến nhiều công ty khó khăn trong việc đầu tư.

Luận văn này nghiên cứu các phương pháp kiểm thử dựa trên mô hình để đảm bảo cài đặt đúng theo thiết kế ban đầu Đầu tiên, mô hình máy hữu hạn trạng thái được áp dụng cho giao diện ứng dụng Web, từ đó tạo ra các bộ kiểm thử và xây dựng đồ thị có hướng biểu diễn các trường hợp kiểm thử Dựa trên đồ thị này, các trường hợp kiểm thử cho sản phẩm sẽ được hình thành theo các nhánh Mục tiêu của luận văn là đề xuất phương pháp xây dựng kiểm thử tự động cho giao diện ứng dụng Web, kèm theo phát triển công cụ kiểm thử tự động để chứng minh tính hiệu quả của phương pháp.

Bài luận văn được tổ chức thành các chương như sau: Chương 2 trình bày cơ sở lý thuyết về kiểm thử phần mềm, bao gồm các khái niệm cơ bản, kiểm thử dựa trên mô hình và máy hữu hạn trạng thái Chương 3 hướng dẫn cách sinh bộ kiểm thử từ máy hữu hạn trạng thái Chương 4 xây dựng chương trình thực nghiệm sử dụng công cụ Selenium và Webdriver để nghiên cứu các trường hợp sinh ca kiểm thử Cuối cùng, chương 5 tóm tắt kết quả đạt được, đưa ra kết luận, nêu rõ những hạn chế và hướng nghiên cứu phát triển trong tương lai.

CƠ SỞ LÝ THUYẾT

Khái niệm Web Application

Các ứng dụng Web giao tiếp với máy khách thông qua các giao thức như HTTP, WSDL hoặc SOAP Sự phổ biến của World Wide Web đã thúc đẩy sự phát triển ngày càng nhiều của các ứng dụng này Trình duyệt Web mở ra cơ hội cho các nhà phát triển khai thác khả năng của trình duyệt, giúp giảm bớt sự phụ thuộc vào các hệ điều hành và nền tảng phần cứng khác nhau.

Hiện nay, các ứng dụng web đang phát triển đa dạng, bao gồm trang web hẹn hò, thương mại điện tử, ngân hàng trực tuyến và đặt vé máy bay.

Các kỹ thuật kiểm thử

Hiện nay, có nhiều phương pháp kiểm thử phần mềm, mỗi phương pháp đều có những ưu điểm và nhược điểm riêng Bài viết này sẽ giới thiệu một số phương thức kiểm thử phổ biến như kiểm thử hộp đen, kiểm thử hộp trắng, kiểm thử hộp xám và kiểm thử sử dụng máy hữu hạn trạng thái.

Kiểm thử hộp đen, hay kiểm thử chức năng, là phương pháp đánh giá phần mềm mà không cần hiểu rõ cấu trúc và hành vi bên trong Các kiểm thử viên chỉ cần biết yêu cầu chức năng của phần mềm mà không cần biết cách thức thực hiện Phương pháp này bao gồm nhiều kỹ thuật như phân vùng tương đương, phân tích giá trị biên, kiểm thử tất cả các cặp, bảng chuyển đổi trạng thái, kiểm thử bảng quyết định, kiểm thử chéo, kiểm thử dựa trên mô hình, sử dụng ca kiểm thử, thăm dò kiểm thử và kiểm thử theo đặc điểm kỹ thuật.

Kiểm thử dựa trên đặc điểm kỹ thuật nhằm kiểm tra chức năng phần mềm theo yêu cầu ứng dụng Mức độ kiểm thử yêu cầu ca kiểm thử kỹ lưỡng từ các kiểm thử viên, giúp xác minh dễ dàng các giá trị đầu vào và đầu ra.

2 https://www.vietcombank.com.vn/ibanking/

3 http://www.vietnamairlines.com/wps/portal/vn/site/book_your_trip/

Các ca kiểm thử có thể tương đồng hoặc khác biệt so với giá trị kỳ vọng được xác định trong một ca kiểm thử cụ thể Những ca kiểm thử này được thiết kế dựa trên các thông số kỹ thuật và yêu cầu đề xuất, tức là tất cả những chức năng mà ứng dụng cần thực hiện.

Nó được sử dụng để mô tả chi tiết phần mềm, bao gồm các thông số kỹ thuật, yêu cầu và thiết kế phát sinh từ quá trình kiểm thử Các kiểm thử này có thể thuộc loại chức năng hoặc phi chức năng.

Mô hình kiểm thử hộp đen được mô tả trong Hình 2.1 cho thấy các loại đầu vào khác nhau, bao gồm đầu vào ngẫu nhiên trong phạm vi cho phép, kiểm tra các trường hợp ranh giới, đầu vào là số không, các giá trị rỗng, và các giá trị không hợp lệ hoặc nằm ngoài phạm vi dự kiến.

Hình 2.1 Kiểm thử hộp đen

Kiểm thử dựa trên đặc điểm kỹ thuật là cần thiết để đảm bảo chức năng chính xác, nhưng không đủ để bảo vệ chống lại các tình huống phức tạp hoặc có độ rủi ro cao Kỹ thuật kiểm thử hộp đen có lợi thế là không yêu cầu kiến thức lập trình, cho phép các kiểm thử viên tiến hành kiểm thử ở nhiều khu vực và chức năng khác nhau của phần mềm mà không cần liên hệ với lập trình viên Tuy nhiên, kiểm thử hộp đen cũng có nhược điểm, giống như “đi bộ trong một mê cung tối tăm mà không có đèn pin”, vì kiểm thử viên không kiểm thử mã nguồn và có thể chỉ kiểm thử được tính năng trong một vài trường hợp, không đảm bảo kiểm thử toàn bộ hoạt động của chương trình.

Phương pháp kiểm thử phần mềm này phù hợp với tất cả các cấp độ kiểm thử, bao gồm đơn vị, tích hợp, hệ thống và chấp nhận Mặc dù không thể thực hiện đầy đủ các kiểm thử ở các cấp độ cao hơn, nhưng phương pháp này mang lại lợi thế đáng kể trong việc kiểm thử từng đơn vị.

Kiểm thử hộp trắng, hay còn gọi là kiểm thử cấu trúc, là quá trình thiết kế các ca kiểm thử nhằm phát hiện lỗi, sai sót và khiếm khuyết trong phần mềm để đảm bảo chất lượng Kỹ thuật này cho phép khảo sát cấu trúc bên trong của chương trình, dựa trên dữ liệu kiểm thử và kiểm tra tính lôgic Kiểm thử viên sẽ truy cập vào cấu trúc dữ liệu, giải thuật và mã lệnh thực hiện bên trong chương trình để thực hiện kiểm thử hiệu quả.

Mục đích của kiểm thử phần mềm là đảm bảo hệ thống hoạt động tốt trước các tấn công độc hại và ngăn ngừa thất bại Kiểm thử hộp trắng dựa trên hiểu biết về các thành phần của hệ thống, bao gồm phân tích dòng dữ liệu, điều khiển dòng, và mã thực hành Phương pháp này giúp kiểm tra các hành động của phần mềm không được định hướng trước, xác định tính hợp lệ của việc triển khai mã và thiết kế, cũng như xác nhận tính năng bảo mật để giảm thiểu rủi ro từ các lỗ hổng có thể bị khai thác.

Kiểm thử hộp trắng yêu cầu truy cập vào mã nguồn và có thể thực hiện ở bất kỳ giai đoạn nào trong vòng đời phần mềm, sau khi mã lệnh được phát triển Thực hiện kiểm thử hộp trắng trong giai đoạn kiểm thử đơn vị là một hành động tốt, giúp đảm bảo chất lượng và hiệu suất của phần mềm.

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ụ

Trong lập trình, mỗi đơn vị phần mềm có thể có một số lượng đường thi hành rất lớn; ví dụ, một hàm với kích thước 1000*1000*1000 có thể tạo ra 1 tỷ lệnh gọi khác nhau Đối với một chương trình với 32 câu lệnh if else, số đường thi hành có thể lên tới 4 tỷ Mục tiêu của kiểm thử phần mềm là đảm bảo tất cả các đường thi hành này đều hoạt động chính xác Tuy nhiên, việc đạt được mục tiêu này đòi hỏi rất nhiều công sức và thời gian, ngay cả với 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

Sơ đồ luồng điều khiển trong hình 2.3 mô tả quy trình thực hiện một đoạn mã lệnh Bắt đầu từ điểm khởi đầu, luồng điều khiển sẽ di chuyển đến khối lệnh xử lý tại điểm (1) Tiếp theo, luồng điều khiển sẽ đến điểm quyết định (2), nơi có hai hướng đi khác nhau cho luồng điều khiển.

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, có năm nút quyết định nhị phân, dẫn đến độ phức tạp C = 1 + 1 = 2 Đồ thị này bao gồm hai đường độc lập tuyến tính trong luồng điều khiển Kiểm thử viên có thể tạo ra hai ca kiểm thử cho đoạn mã này.

Hình 2.3 Sơ đồ luồng điều khiển được tạo ra từ chương trình

Kiểm thử hộp xám yêu cầu truy cập vào cấu trúc dữ liệu và thuật toán nội bộ để thiết kế các ca kiểm thử, nhưng vẫn thực hiện ở mức người sử dụng hoặc mức hộp đen Việc xử lý dữ liệu đầu vào và định dạng dữ liệu đầu ra trở nên không rõ ràng, giống như một "hộp xám", vì đầu vào và đầu ra nằm bên ngoài "hộp đen" của hệ thống được kiểm tra Sự khác biệt này rất quan trọng trong việc quản lý kiểm thử tích hợp giữa hai mô-đun mã lệnh do hai chuyên viên thiết kế khác nhau viết, trong đó chỉ giao diện được kiểm thử Kiểm thử hộp xám cũng có thể bao gồm thiết kế đối chiếu để quyết định các yếu tố như 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

Các mức kiểm thử

Kiểm thử phần mềm thường được phân loại theo vị trí trong quá trình phát triển hoặc mức độ đặc hiệu của chúng Theo hướng dẫn SWEBOK, các cấp độ kiểm thử chính bao gồm kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hệ thống, mỗi loại có mục tiêu kiểm thử riêng biệt mà không liên quan đến một quy trình cụ thể nào Các mức độ kiểm thử khác cũng được phân loại dựa trên mục tiêu kiểm thử của chúng.

Result Student.aspx select_khoahoc

Kiểm thử đơn vị, hay còn gọi là kiểm thử thành phần, là quá trình kiểm tra chức năng của từng phần mã, thường ở mức độ chức năng và lớp trong môi trường hướng đối tượng Các kiểm thử này, bao gồm hàm dựng và hàm hủy, thường do các nhà phát triển viết trong quá trình phát triển mã (kiểu hộp trắng) để đảm bảo rằng từng hàm hoạt động đúng như mong đợi Mỗi hàm có thể được kiểm thử nhiều lần, giúp phát hiện các trường hợp góc và nhánh trong mã lệnh Mặc dù kiểm thử đơn vị không thể đảm bảo toàn bộ chức năng của phần mềm, nhưng nó giúp xác nhận rằng các khối kiến trúc của phần mềm hoạt động độc lập và hiệu quả.

Kiểm thử đơn vị là một quá trình quan trọng trong phát triển phần mềm, giúp phát hiện lỗi và giảm thiểu rủi ro, thời gian và chi phí Được thực hiện bởi kỹ sư hoặc nhà phát triển trong giai đoạn xây dựng, kiểm thử đơn vị không chỉ đảm bảo chất lượng mà còn nâng cao nó, nhằm loại bỏ lỗi cấu trúc trước khi mã hóa Chiến lược này góp phần nâng cao chất lượng và hiệu quả của phần mềm trong quá trình quản lý và phát triển.

Kiểm thử đơn vị trong phát triển phần mềm có thể bao gồm nhiều hoạt động như 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, tùy thuộc vào kỳ vọng của tổ chức.

Kiểm thử tích hợp là một phương pháp kiểm thử phần mềm nhằm xác minh các giao diện giữa các thành phần trong thiết kế Các thành phần này có thể được tích hợp theo từng giai đoạn hoặc cùng lúc Phương pháp này thường được xem là thực hành tốt hơn vì giúp nhanh chóng xác định và khắc phục các vấn đề về giao diện.

Kiểm thử tích hợp giúp phát hiện các khiếm khuyết trong giao diện và tương tá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ử dần dần theo từ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, cho đến khi phần mềm hoạt động như một hệ thống hoàn chỉnh.

Kiểm thử hệ thống là quá trình xác minh xem hệ thống tích hợp có đáp ứng đầy đủ các yêu cầu hay không Nó cũng đảm bảo rằng phần mềm hoạt động như mong đợi, không bị lỗi hay hỏng hóc trong môi trường hoạt động, và không gặp sự cố khi tương tác với các tiến trình khác Điều này bao gồm việc đảm bảo bộ nhớ chia sẻ không bị hỏng, nguồn tài nguyên không bị dư thừa hoặc chiếm dụng quá mức, và hoạt động song song giữa các tiến trình diễn ra một cách ổn định.

Kiểm thử chấp nhận là trách nhiệm của khách hàng hoặc người sử dụng hệ thống, với mục tiêu xác nhận sự tin tưởng vào các chức năng và đặc điểm của hệ thống Mặc dù không tập trung vào việc tìm kiếm lỗi, kiểm thử chấp nhận đánh giá sự sẵn sàng của hệ thống để triển khai và sử dụng Nó không nhất thiết là giai đoạn kiểm thử cuối cùng, vì có thể có các kiểm thử tích hợp hệ thống lớn hơn được thực hiện sau khi hoàn thành kiểm thử chấp nhận.

Hợp đồng và quy định chấp nhận thử nghiệm là yếu tố quan trọng trong việc kiểm tra nghiệm thu hợp đồng nâng cấp và phát triển phần mềm Các tiêu chí chấp nhận cần được xác định rõ ràng để đảm bảo tính hợp lệ của thỏa thuận Điều lệ kiểm thử chấp nhận phải tuân thủ các quy định của chính phủ, pháp luật và các tiêu chuẩn an toàn hiện hành.

Kiểm thử Alpha và Beta là hai giai đoạn quan trọng trong quy trình phát triển phần mềm, giúp các nhà phát triển thu thập phản hồi từ khách hàng tiềm năng trước khi sản phẩm được ra mắt thương mại Thử nghiệm Alpha diễn ra tại địa điểm của tổ chức phát triển, trong khi thử nghiệm Beta được thực hiện bởi khách hàng hoặc người dùng tại các vị trí riêng của họ.

BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB

THỬ GIAO DIỆN ỨNG DỤNG WEB

Selenium là bộ công cụ mạnh mẽ hỗ trợ phát triển nhanh chóng các thử nghiệm tự động hóa cho ứng dụng Web, cung cấp nhiều thử nghiệm chức năng đáp ứng nhu cầu kiểm tra Với tính linh hoạt cao, Selenium cho phép tùy chỉnh vị trí các thành phần giao diện và so sánh kết quả thử nghiệm dự kiến với hành vi thực tế của ứng dụng.

Selenium, được phát triển bởi Jason Huggin vào năm 2004, là một thư viện Javascript cho phép tương tác và kiểm thử tự động trên các trang web Thư viện này đã trở thành nền tảng cho Selenium – Core, dẫn đến sự ra đời của Selenium Remote Control (RC) và Selenium IDE Selenium RC đánh dấu một bước đột phá quan trọng, cho phép kiểm soát trình duyệt thông qua các ngôn ngữ lập trình, điều mà trước đây chưa từng có sản phẩm nào làm được.

Năm 2006, Stimon Stewart, một kỹ sư tại Google, khởi đầu dự án Webdriver nhằm phát triển công cụ kiểm tra trực tiếp với trình duyệt Ông mong muốn sử dụng phương pháp tự nhiên cho trình duyệt và hệ điều hành, nhằm vượt qua những hạn chế của Javascript Sandbox.

Năm 2008, Selenium và Webdriver đã kết hợp, tạo ra một công cụ mạnh mẽ cho tự động hóa kiểm thử Selenium sở hữu cộng đồng lớn và hỗ trợ thương mại, trong khi Webdriver được xem là công cụ của tương lai Sự kết hợp này mang lại nhiều tính năng hữu ích cho người dùng, nâng cao hiệu quả trong quá trình kiểm thử tự động.

Selenium-RC cho phép các nhà phát triển tự động hóa kiểm thử bằng cách sử dụng ngôn ngữ lập trình, mang lại tính linh hoạt và khả năng mở rộng trong việc phát triển lôgic thử nghiệm Khi ứng dụng trả về một tập hợp kết quả kiểm tra, chương trình thử nghiệm tự động có thể lặp lại và chạy thử nghiệm trên từng phần tử trong tập hợp đó Các ngôn ngữ lập trình được sử dụng để xử lý tập hợp kết quả và gọi lệnh Selenium để thực hiện kiểm thử trên từng mục.

Selenium-RC cung cấp một API và thư viện cho các ngôn ngữ lập trình như HTML, Java, C#, Perl, PHP, Python và Ruby Việc sử dụng Selenium-RC với ngôn ngữ lập trình bậc cao giúp phát triển các trường hợp thử nghiệm, đồng thời cho phép tích hợp tự động hóa thử nghiệm vào dự án xây dựng môi trường tự động.

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 định hướ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ự linh hoạt tối đa trong việc kiểm thử Ngoài ra, Selenium 2 vẫn chạy Selenium RC 1 của giao 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ƣợng này được coi như đại diện một trình duyệt trong chương trình

Từ đây, đối tượng ffdriver sẽ có khả năng điều khiển trình duyệt Firefox Sau khi thực hiện lệnh này, trình duyệt sẽ được khởi động một cách tự độ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ột trang 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 có thể được định vị bằng nhiều phương pháp mà Selenium hỗ trợ, và mỗi thành phần sẽ được ánh xạ qua một đối tượng WebElement.

Webdriver sử dụng phương thức findElement để xác định vị trí của các phần tử trên trang web Có nhiều phương pháp để định vị các phần tử này, trong đó một số cách phổ biến bao gồm việc sử dụng ID, tên, lớp, hoặc XPath.

WebElement element = driver.findElement(By.id("id_value"));

// Cheddar

// Gouda

List cheeses driver.findElements(By.className("cheese"));

WebElement frame = driver.findElement(By.tagName("iframe"));

//

WebElement cheese = driver.findElement(By.name("cheese"));

Theo Link Text // cheese>

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 xác định các thành phần trên một website và ánh xạ chúng với các WebElement, chúng ta có thể thay đổi giá trị hoặc thực hiện các thao tác chuột và 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

Webdriver hỗ trợ di chuyển giữa các cửa sổ và frame trong các ứng dụng Web có nhiều cửa sổ Để chuyển đổi giữa các cửa sổ, bạn có thể sử dụng phương thức driver.switchTo().window("windowName");, và để chuyển đổi giữa các frame, sử dụng driver.switchTo().frame("frameName");.

Sau khi trình duyệt truy cập một trang web và thực hiện các sự kiện chuyển đổi, chúng ta có thể sử dụng phương thức navigate() để quay lại trang trước đó hoặc chuyển đến trang đã truy cập trước đó Ví dụ, có thể sử dụng cú pháp driver.navigate().to("http://www.example.com") để truy cập một trang cụ thể, hoặc sử dụng driver.navigate().forward() và driver.navigate().back() để điều hướng tới trang tiếp theo hoặc quay lại trang trước đó.

Webdriver 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"); driver.manage().addCookie(cookie);

// You can delete cookies in 3 ways // By name driver.manage().deleteCookieNamed("CookieName");

// By Cookie driver.manage().deleteCookie(loadedCookie);

// Or all of them driver.manage().deleteAllCookies();

Chúng ta đã khám phá thư viện Selenium và một số API Webdriver phổ biến, cho phép chúng ta tạo mã tự động hóa cho các ca kiểm thử Các ca kiểm thử này sẽ được trình bày chi tiết trong các chương tiếp theo.

PHƯƠNG PHÁP SINH BỘ KIỂM THỬ TỰ ĐỘNG CHO KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB

Mục tiêu của phương pháp nghiên cứu

Phương pháp nghiên cứu này nhằm tạo ra các đường kiểm thử tự động cho kiểm thử giao diện ứng dụng Web thông qua tiếp cận dựa trên mô hình Bằng cách sử dụng bản thiết kế của ứng dụng, một máy hữu hạn trạng thái được xây dựng cho mỗi trang Thuật toán phát triển sau đó sẽ duyệt qua các đỉnh và cạnh của mô hình, đảm bảo mọi trạng thái và chuyển đổi đều được bao phủ Cuối cùng, các đường kiểm thử được ánh xạ thành chuỗi lệnh sử dụng Selenium và Webdriver để thực hiện kiểm thử tự động.

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 là giao diện đăng nhập cho website, yêu cầu người dùng nhập tên đăng nhập và mật khẩu Người dùng có quyền quản trị hoặc giáo vụ sẽ truy cập vào trang nhập thông tin và kết quả học tập của học viên, trong khi người dùng có quyền học viên sẽ xem thông tin và kết quả học tập của chính mình Nút “Reset” sẽ xóa trắng các trường nhập liệu, trong khi nút “Đăng nhập” dẫn đến trang tiếp theo dựa trên quyền hạn của tài khoản.

Trang hiển thị thông tin học viên cho phép người dùng nhập tên vào ô tìm kiếm và nhấn nút tìm kiếm Kết quả sẽ hiển thị danh sách học viên phù hợp với tiêu chí tìm kiếm Người dùng có thể nhấp vào liên kết để xem trang kết quả học tập của từng học viên Nếu không có học viên nào khớp với 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 cung cấp ô nhập để người dùng tìm kiếm tên học viên cụ thể Ngoài ra, trang còn có danh sách thả xuống cho phép lựa chọn khóa học, giúp người dùng dễ dàng tìm kiếm kết quả học tập theo tiêu chí đã chọn Sau khi hoàn tất, người dùng chỉ cần nhấp vào nút tìm kiếm để xem kết quả.

Trang nhập kết quả học tập cho phép người dùng dễ dàng nhập điểm thi cho từng học viên Người dùng có thể chọn học viên, lớp học và môn thi thông qua ba danh sách thả xuống Ngoài ra, có ô nhập điểm cho học viên và điều khiển ngày tháng để chọn ngày thi.

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ện nhƣ 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ây dự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ày vớ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ủa người dùng) Sau đó bảng này được sử dụng như là một hướng dẫn để tạo ra các má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 trong trang login.aspx Các trạng thái trong trang này bao gồm:

 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

Bảng 3.1 hiển thị trạng thái chuyển đổi, trong đó dòng đầu tiên đại diện cho trạng thái kết thúc và cột đầu tiên là trạng thái bắt đầu Các trạng thái chuyển đổi còn lại được liệt kê, với các giá trị bên trong bảng thể hiện các thao tác của người dùng khi chuyển từ trạng thái này sang trạng thái khác.

Bảng 3.1 Bảng chuyển trạng thái trang login.aspx

The login process involves a user interface where individuals can enter their username and password If there are errors during login, users can reset their username or password through designated fields The system also allows for the deletion of usernames and passwords if necessary Overall, the main focus is on ensuring a smooth user experience while addressing authentication issues effectively.

Tiếp theo là bảng chuyển trạng thái của trang studentInformation.aspx Các trạng thái trong trang đƣợc biểu diễn trong bảng 3.2 bao gồm:

 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

Cá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

StudentInformation.aspx s_StudentInfor studentName f_main error s_StudentInfor - t_studentName - t_submit studentName - - t_submit - f_main - - - - error - - - -

Sau đó là bảng chuyển trạng thái trang resultStudent.aspx Các trạng thái trong trang đƣợc biểu diễn trong bảng 3.3 bao gồm:

 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

Các thao tác trong trang đƣợc biểu diễn trong bảng 3.3 gồm:

 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

Bảng 3.3 Bảng chuyển trạng thái trang resultStudent.aspx

Result Student.aspx s_Result Student

Name Khoahoc Student+K hoaHoc F_main error s_ResultStudent - t_StdName select_ khoahoc - - t_submit

- - - select_ khoahoc - t_submit Student+KhoaHo c - del_StdName del_khoahoc - t_submit -

Tiếp đến là bảng chuyển trạng thái trang Addmark.aspx Các trạng thái trong trang đƣợc biểu diễn trong bảng 3.4 bao gồm:

 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,

 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,

 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ọc viê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,

Trạng thái tồn tại của thông tin bao gồm lớp học, tên học viên, môn học, điểm thi và ngày thi được xác định khi người dùng chọn tên lớp, tên học viên, tên môn học, nhập điểm thi và chọn ngày thi tương ứng.

 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

ExamDa te studentN ame+ subject+ mark studentN ame+ subject+

Subje ct +mark + Exam Date

Class+stude ntName+ subject+ mark+Exam Date

Name select_s ubject t_mark Text select

To submit class details, select the appropriate name and subject, and enter the date Ensure to include the student's name and select the relevant class Afterward, submit the subject and mark by choosing the correct class for accurate record-keeping.

ExamDate del_da te - - - - - - - - select_ class - - - - - - - - t_su bmit

TIEU LUAN MOI download : skknchat@gmail.com

25 ntName - me ss - - - - - - - ubject mark ate - - - - - bmit

Class+ subject - del_su bject - - - - - - - - Select_n ame - - - - - - - t_su bmit

Class+ mark - del_ma rk - - - - - - - - - Select_n ame - - - - - - t_su bmit

ExamDate - del_dat e - - - - - - - - - - Select_n ame - - - - - t_su bmit

- - - - - - - - - - - - - - - - Select_subje ct - t_su bmit studentName

TIEU LUAN MOI download : skknchat@gmail.com

Class+stude ntName+ subject+ mark+Exam

TIEU LUAN MOI download : skknchat@gmail.com

Cuối cùng là bảng chuyển trạng thái trang logout.aspx Các trạng thái trong trang đƣợc biểu diễn trong bảng 3.5 bao gồm:

 S_end: trạng thái ban đầu,

 f_login: trạng thái đăng xuất thành công

Các thao tác trong trang đƣợc biểu diễn trong bảng 3.2 gồm:

 t_login_link: trạng thái khi chuyển liên kết về trang login.aspx

Bảng 3.5 Bảng chuyển trạng thái trang logout.aspx

Logout.aspx s_end F_login s_end - t_login_link

3.3.2 Xây dựng mô hình đồ thị cho máy hữu hạn trạng thái

Tiếp theo, chúng ta sẽ tạo máy trạng thái cho từng trang web bằng công cụ trực quan GraphViz Mỗi trang web sẽ tương ứng với một máy hữu hạn trạng thái riêng biệt.

Hình 3.1 Máy hữu hạn trạng thái cho trang login.aspx

S_index passwdSt errorSt usr+passSt usrnam eSt default. aspx Reset

Hình 3.2 Máy hữu hạn trạng thái cho trang studentInformation.aspx

Hình 3.3 Máy hữu hạn trạng thái cho trang ResultStudent.aspx del_Name del_khoahoc t_stdnameText select_khoahoc t_stdNameText

Information.aspx StudentName errorSt S_StudentInfo

Hình3.4 Máy hữu hạn trạng thái cho trang addMark.aspx

TIEU LUAN MOI download : skknchat@gmail.com

Hình3.5 Máy hữu hạn trạng thái cho trang logout.aspx

3.3.3 Thực hiện việc tạo ra các ca kiểm thử

Sau khi xây dựng các máy hữu hạn trạng thái cho các trang web, chúng ta sẽ phát triển các ca kiểm thử bằng ngôn ngữ Java Quá trình này bao gồm việc tạo danh sách tất cả các bước chuyển trạng thái, bao gồm thao tác của người dùng và các trạng thái chuyển màn hình, từ đó hình thành danh sách các đường kiểm thử Tiếp theo, chúng ta sẽ chuyển đổi các đường kiểm thử này thành các lệnh Webdriver, tương ứng với các trạng thái chuyển đổi mà người dùng có thể thực hiện trên giao diện của ứng dụng web.

3.3.4 Thuật toán sinh ca kiểm thử

Thuật toán được phát triển nhằm di chuyển qua mô hình máy trạng thái, đảm bảo rằng tất cả các trạng thái và chuyển đổi đều được bao phủ Thuật toán sinh ca kiểm thử đảm bảo đáp ứng đầy đủ các yêu cầu cần thiết.

 Độ phức tạp không lớn, thời gian chạy nhanh

 Đảm bảo tất cả các đỉnh và các cạnh của đồ thị đều phải đƣợc duyệt qua

Kết quả trả về bao gồm nhiều đường kiểm thử độc lập, mỗi đường bắt đầu từ trạng thái khởi đầu của máy hữu hạn và kết thúc tại một trạng thái cụ thể, giữa các trạng thái là những bộ chuyển tiếp.

Thuật toán này là sự phát triển của thuật toán duyệt đồ thị theo chiều sâu, trong đó tất cả các đỉnh của đồ thị được duyệt qua Sau khi hoàn tất quá trình duyệt, những cạnh chưa được duyệt sẽ được thêm vào phần đường kiểm thử đã duyệt trước đó, từ đó tạo ra những đường kiểm thử mới.

Thuật toán duyệt đồ thị theo chiều sâu (DFS) được mô tả trong Hình 3.5, sử dụng hai tham số đầu vào: độ sâu của đỉnh và đường kiểm thử Đầu ra của thuật toán là một đường kiểm thử, cụ thể là t_login_link start S_end Login.aspx Các bước chi tiết của thuật toán bao gồm việc lưu lại đường kiểm thử khi quay lui, giúp xác định các đường đi khả thi trong đồ thị.

 Dòng 1: là tên hàm với hai tham số truyền vào Tham số thứ nhất là độ sâu, tham số thứ hai đường đi

 Dòng 2: khai báo một biến theo dõi quay lui và nhận giá trị là true nếu quay lui

 Dòng 3: duyệt qua tất cả các đỉnh chƣa đƣợc duyệt

 Dòng 4: kiểm tra những đỉnh nào chƣa duyệt và cạnh nào chƣa duyệt

 Dòng 5: gán biến quay lui là false

 Dòng 6: thông báo đỉnh đã đƣợc duyệt qua

 Dòng 7: thông báo cạnh đã đƣợc duyệt qua

 Dòng 8: thêm đỉnh vào mảng lưu đường kiểm thử tạm thời

 Dòng 9: gọi đệ qui lại hàm và hàm đệ qui này sẽ dừng khi tất cả các cạnh và các đỉnh của đồ thị đã đƣợc duyệt

 Dòng 10: bỏ đỉnh ra khỏi mảng lưu đường kiểm thử tạm thời

 Dòng 11-12: nếu biến thông báo quay lui là true thì thêm mảng vào PATH

 Dòng 13: khởi tạo lại mảng lưu đường kiểm thử tạm thời

Hình 3.6 Thuật toán duyệt đồ thị theo chiều sâu

1 Depth_First_Search: int i, path PATH{

4 if (đỉnh chƣa duyệt và cạnh chƣa duyệt){

6 Thông báo đỉnh đã duyệt qua;

7 Thông báo cạnh đã duyệt qua;

8 Thêm đỉnh vào mảng lưu đường kiểm thử tạm thời;

THỰC NGHIỆM

Phương pháp thực hiện

Đầu tiên, từ bản thiết kế của ứng dụng Web, chúng ta tiến hành xây dựng các trang Web Dựa vào thiết kế này, chúng ta xác định bảng các phần tử HTML, trạng thái, sự kiện và trạng thái chuyển của từng trang, sau đó nhập dữ liệu vào tệp tin Excel Những tệp tin này sẽ được sử dụng làm đầu vào cho chương trình kiểm thử, từ đó chúng ta có thể chạy chương trình để xác định xem các trang Web trong ứng dụng có được kiểm thử thành công hay không.

Xây dựng công cụ kiểm thử tự động

Trước khi xây dựng chương trình, chúng ta sẽ có một số khái niệm như sau:

 State: là trạng thái tại một thời điểm của Webpage Mỗi state là sự tập hợp của các trạng thái của từng thành phần trong một Webpage

 Event: là một hoạt động mà người dùng hay selenium tương tác lên Webpage Các event có thể là sendkey, addtext, click hay submit

Transition là quá trình chuyển đổi từ trạng thái này sang trạng thái khác thông qua một sự kiện Nếu xem state machine như một đồ thị có hướng, thì các trạng thái sẽ tương ứng với các đỉnh, trong khi các chuyển đổi sẽ là các cạnh của đồ thị đó.

Để kiểm tra trạng thái của trang web, chúng ta cần định nghĩa các phần tử HTML, vì mỗi phần tử này cho phép Selenium tương tác với trang web thông qua các phương thức đi kèm.

Để xây dựng bài toán, cần thực hiện bốn thành phần chính Đầu tiên, xây dựng cấu trúc máy trạng thái, bao gồm các biểu diễn trạng thái, sự kiện, phần tử HTML và trạng thái chuyển Thứ hai, phát triển các hàm kiểm tra trạng thái và thực thi sự kiện, là phương thức của các đối tượng trạng thái và sự kiện Thứ ba, áp dụng thuật toán và cấu trúc dữ liệu để tạo đồ thị từ máy trạng thái, từ đó duyệt đồ thị để xác định các đường kiểm thử Cuối cùng, thiết lập cơ chế lưu trữ kiểm tra và thực hiện các đường kiểm thử.

Hình 4.1 Sơ đồ xây dựng bài toán

4.2.1 Mô tả công cụ kiểm thử

Chương trình được phát triển bằng ngôn ngữ Java, với giao diện chính như mô tả trong hình 4.2 Giao diện này bao gồm một ô nhập để người dùng nhập địa chỉ URL của ứng dụng Web cần kiểm thử, cùng với bốn ô chọn tệp cho phép người dùng lựa chọn các tệp Excel tương ứng với bốn khái niệm: các phần tử HTML, trạng thái, sự kiện và trạng thái chuyển Sau khi hoàn tất, người kiểm thử chỉ cần nhấp vào nút để tiếp tục.

Sơ đồ (state machine) diễn tả sự biến đổi trạng thái liên tiếp của trang html khi thực hiện các event

Duyệt đồ thị, sinh ra dãy các trạng thái-event Bao trùm toàn bộ đồ thị

Dãy các trạng thái và event liên tiếp Kết quả gồm nhiều dãy

Duyệt các dãy state-event để thực thi event và kiểm tra state

Hàm kiểm tra state tương ứng

Mô tả các state của trang html

Hàm thực thi một event

Mô tả các event tác động lên trang html

Hiển thị kết quả của quá trình chạy

6 nút “Kiểm thử” toàn bộ các trang Web của ứng dụng Web sẽ đƣợc kiểm thử và cho ra kết quả tại ô hiển thị ở phía dưới

Hình 4.2 Giao diện chính của chương trình

4.2.2 Xây dựng ứng dụng Web

Dựa vào mô tả của bản thiết kế chúng ra xây dựng một ứng dụng Web gồm năm trang tương ứng như sau:

Trang Login.aspx yêu cầu người dùng nhập tên đăng nhập và mật khẩu để truy cập vào các trang khác của ứng dụng Người dùng có quyền quản trị hoặc giáo vụ sẽ được phép vào trang nhập thông tin và kết quả học tập của học viên, trong khi người dùng có quyền học viên sẽ chỉ có thể xem thông tin và kết quả học tập của mình Nút "Reset" sẽ xóa sạch các trường nhập liệu, còn nút "Đăng nhập" sẽ dẫn người dùng đến trang tiếp theo dựa trên quyền hạn của tài khoản.

Hình 4.3 Giao diện trang Login.aspx

Trang studentInformation.aspx cho phép người dùng nhập tên học viên vào ô nhập và tìm kiếm thông tin Sau khi nhấp nút tìm kiếm, danh sách học viên phù hợp sẽ hiển thị Nếu người dùng nhấp vào liên kết trong danh sách, họ sẽ được chuyển đến trang result.aspx Nếu không có học viên nào phù hợp với tiêu chí tìm kiếm, một thông báo sẽ được hiển thị.

Hình 4.4 Giao diện trang studentInformation.aspx

Trang hiển thị kết quả học tập trong Hình 4.5 cho phép người dùng nhập tên học viên để tìm kiếm kết quả Người dùng cũng có thể chọn khóa học từ danh sách thả xuống để thu hẹp tìm kiếm Sau khi thiết lập các tiêu chí tìm kiếm, người dùng chỉ cần nhấp vào nút tìm kiếm để xem kết quả học tập.

Hình 4.5 Giao diện trang resultStudent.aspx

Giao diện trang nhập điểm thi của học viên, như mô tả trong Hình 4.6, cho phép người dùng dễ dàng nhập điểm thi cho từng môn học của học viên Trang này bao gồm ba danh sách thả xuống để chọn học viên, lớp học và môn thi Ngoài ra, còn có ô nhập điểm cho học viên và điều khiển ngày tháng để chọn ngày thi.

Hình 4.6 Giao diện trang addMark.aspx

Cuối cùng hình 4.7 là giao diện trang đăng xuất khỏi ứng dụng: trong trang có một đường liên kết cho phép người dùng quay lại trang đăng nhập

Hình 4.7 Giao diện trang logout.aspx

4.2.3 Xây dựng máy hữu hạn trạng thái cho ứng dụng Web Để thuận tiện cho việc cài đặt chương trình đề tài này sẽ biểu diễn các máy hữu hạn trạng thái dưới dạng bảng trên tệp excel Từ một trang Web chúng ta sinh ra bốn bảng tương ứng với bốn định nghĩa là các phần tử html, các trạng thái, các sự kiện và các bảng chuyển trạng thái Đầu tiên chúng ta sẽ xây dựng máy hữu hạn trạng thái cho trang login.aspx

Bảng 4.1 Các phần tử html trang login.aspx

Id Tên phần tử html Kiểu phần tử Giá trị mặc định

Bảng 4.2 Bảng trạng thái trang login.aspx

Passwd null def _ _ _ def _ _ usr+pass def def _ _ _ def _ _

Bảng 4.3 Bảng sự kiện trang login.aspx

Tên sự kiện Phần tử html Thao tác t_reset 3 click t_usrname 0 addtext t_passwd 1 addtext del_usrname 0 deltext del_passwd 1 deltext t_submit 2 click t_prev 4 click

Bảng 4.4 Bảng biểu diễn trạng thái chuyển trang login.aspx

The login process involves entering a username and password on the Login.aspx page Users can reset their username or password if they encounter an error during login The system provides options to submit the username or password reset requests Additionally, there are functionalities to delete usernames and passwords as needed.

Tiếp theo chúng ta xây dựng máy hữu hạn trạng thái cho trang studentInformation.asxp

Bảng 4.5 Các phần tử html trang studentInformation.aspx

Id Tên phần tử html Kiểu phần tử Giá trị mặc định

Bảng 4.6 Bảng trạng thái trang studentInformation.aspx

Tên trạng thái 0 1 s_StudentInfor def null t_studentName null def f_main _ _ error _ _

Bảng 4.7 Bảng sự kiện trang studentInformation.aspx

Tên sự kiện Phần tử html Thao tác t_studentName 0 addtext t_submit 1 click

Bảng 4.8 Bảng biểu diễn trạng thái chuyển trang studentInformation.aspx

StudentInformation.aspx s_StudentInfor studentName f_main error s_StudentInfor - t_studentName - t_submit studentName - - t_submit - f_main - - - - error - - - -

Tiếp theo là máy hữu hạn trạng thái cho trang resultStudent.aspx

Bảng 4.9 Các phần tử html trang resultStudent.aspx id Tên thẻ HTML Kiểu Giá trị mặc định

0 txtStudentName Textbox - Ô nhập cho tên sinh viên

1 ddlKhoaHoc dropdownlist Chọn khóa học Danh sách chọn khóa học

2 btnSubmit button - Nút gửi dữ liệu

3 title_index title index Tiêu đề trang

4 title_error title error Tiêu đề trang khi bị lỗi

5 title_main title main Tiêu đề trang thành công

Bảng 4.10 Bảng trạng thái trang resultStudent.aspx

KhoaHoc Null value _ _ _ value stdName+KhoaHoc value value _ _ _ value

Bảng 4.11 Bảng sự kiện trang resultStudent.aspx

Tên sự kiện Định danh

Thao tác Mô tả t_stdName 0 addtext Nhập dữ liệu văn bản vào ô nhập

Select_khoahoc 1 Select Chọn khóa học del_stdName 0 Deltext Xóa dữ liệu trong ô nhập del_khoahoc 1 Noselect Bỏ chọn khóa học t_submit 2 Click Gửi dữ liệu lên server

Bảng 4.12 Bảng biểu diễn trạng thái chuyển trang resultStudent.aspx

Result Student.aspx s_Result Student

Name Khoahoc Student+K hoaHoc F_main error s_ResultStudent - t_StdName select_ khoahoc - - t_submit

- - - select_ khoahoc - t_submit Student+KhoaHoc - del_StdName del_khoahoc - t_submit -

Máy hữu hạn trạng thái cho trang đăng xuất không chứa bất kỳ phần tử HTML nào Các trạng thái, sự kiện và chuyển trạng thái được trình bày chi tiết trong các bảng 4.13, 4.14 và 4.15.

Bảng 4.13 Bảng trạng thái trang logout.aspx

Tên trạng thái 0 1 t_login_link - -

Bảng 4.14 Bảng sự kiện trang logout.aspx

Tên sự kiện Phần tử html Thao tác t_login_link - click vào liên kết

Bảng 4.15 Bảng biểu diễn trạng thái chuyển trang logout.aspx

Logout.aspx s_end F_login s_end - t_login_link

Kết quả thử nghiệm chương trình

Sau khi tích hợp các phần tử HTML, trạng thái, sự kiện và trạng thái chuyển vào chương trình thực nghiệm, kết quả thu được cho trang login.aspx cho thấy rằng thuật toán đã hoạt động hiệu quả với mười một đường kiểm thử.

Tổng số các phần tử html: 8 Tổng số trạng thái: 6

Tổng số sự kiện: 7 Tổng số trạng thái chuyển: 15 Tổng số ca kiểm thử: 11 Chương trình đọc tệp thành công

Test path 1: S_index*t_passwd=passwd Test path 2: S_index*t_submit=error Test path 3: S_index*t_passwd=passwd*t_reset=S_index Test path 4: S_index*t_passwd=passwd*t_usrname=usr+pass

Test path 5: S_index*t_reset = S_index*t_usrname = usrname*t_reset S_index

Test path 6: S_index*t_reset = S_index*t_usrname = usrname*t_submit error

Test path 7: S_index*t_passwd = passwd*t_usrname = usr+pass*t_reset S_index

Test path 8: S_index*t_passwd = passwd*t_usrname usr+pass*del_passwd = usrname

Test path 9: S_index*t_reset = S_index*t_usrname = usrname*t_passwd usr+pass*t_submit = F_main

Test path 10: S_index*t_reset = S_index*t_usrname = usrname*t_submit error*t_prev = S_index

Test path 11: S_index*t_reset = S_index*t_usrname = usrname*t_passwd usr+pass*del_usrname = passwd*t_submit=error

Tiếp theo là kết quả của trang thông tin học viên ta thu được hai đường kiểm thử:

Tổng số các phần tử html: 2 Tổng số trạng thái: 4

Tổng số sự kiện: 2 Tổng số trạng thái chuyển: 3

Tổng số ca kiểm thử: 2

Khi người dùng nhập tên học viên vào ô nhập và nhấn nút Submit, hệ thống sẽ chuyển hướng đến trang thông tin của học viên đó, cho thấy ca kiểm thử đã thành công.

Trong kiểm thử đường dẫn 2, khi người dùng từ trạng thái ban đầu nhấn nút submit, hệ thống chuyển sang trạng thái lỗi với biến S_ StudentInfo * Submit = errorSt Ca kiểm thử này được coi là thành công Đối với trang resultStudent.aspx, sau khi thực hiện thuật toán, chúng tôi đã thu được kết quả với năm đường kiểm thử.

Tổng số các phần tử html: 6 Tổng số trạng thái: 7

Tổng số sự kiện: 5 Tổng số trạng thái chuyển: 10 Tổng số ca kiểm thử: 5

Test path 1: s_ResultStudent * select_khoahoc = KhoaHoc * t_stdnameText

Khi người dùng chọn khóa học và tên học viên tương ứng, nhấn nút "Submit", trang kết quả học tập của học viên sẽ hiển thị Đây là một ca kiểm thử thành công.

In Test Path 2, the user selects a course and clicks the submit button, which leads to an error state This indicates a successful test case.

Đường kiểm tra 3: S_ResultStudent * t_StdNameText = StudentName * select_khoahoc = StudentName + Khoahoc * Submit = resultStudent.aspx Người dùng bắt đầu từ trạng thái ban đầu, chọn tên học viên, tiếp theo là chọn khóa học và nhấn nút submit để hiển thị kết quả học tập Kết quả kiểm thử thành công.

Đường kiểm tra 4: S_ResultStudent * t_StdNameText = StudentName * Submit errorSt Người dùng từ trạng thái ban đầu chọn tên học viên và khi nhấn nút submit, hệ thống hiển thị trạng thái lỗi Kết quả của ca kiểm thử không thành công.

Test path 5: _ResultStudent * Submit = errorSt Người dùng từ trạng thái ban đầu bấm nút submit thì ra trạng thái lỗi Ca kiểm thử thành công

Cuối cùng là kết quả kết quả của trang đăng xuất ta thu được một đường kiểm thử:

Tổng số các phần tử html: 0 Tổng số trạng thái: 1

Tổng số sự kiện: 1 Tổng số trạng thái chuyển: 1 Tổng số ca kiểm thử: 1

Khi người dùng nhấp vào liên kết trang đăng nhập, hệ thống sẽ chuyển hướng họ đến trang login.aspx từ trạng thái ban đầu.

Ca kiểm thử thành công

Thảo luận

Để kiểm tra tính đúng đắn của chương trình kiểm thử, chúng tôi đã tạo ra một lỗi trên trang kết quả học tập nhằm xem liệu chương trình có phát hiện lỗi hay không Kết quả sau khi chạy chương trình kiểm thử tự động cho thấy có năm ca kiểm thử, trong đó một ca không thành công và bốn ca thành công Kiểm thử thủ công cũng xác nhận một ca không thành công Sau khi hiệu chỉnh trang kết quả của ứng dụng Web và chạy lại chương trình kiểm thử, cả năm ca đều thành công, chứng minh tính đúng đắn của chương trình tự động kiểm thử.

Ngày đăng: 17/12/2023, 02:10

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w