1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver

78 37 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

Tiêu đề Kiểm Thử Chức Năng Website Với Selenium Webdriver
Tác giả Hoàng Tấn Phát
Người hướng dẫn Giảng viên hướng dẫn: Hà Nội
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2016
Thành phố Hà Nội
Định dạng
Số trang 78
Dung lượng 3,38 MB

Cấu trúc

  • Phần 1 PHẦN MỞ ĐẦU (6)
    • I. Tổng quan về kiểm thử phần mềm (6)
  • Phần 2 Nội dung (12)
  • Chương I. Tổng quan về Selenium (12)
    • 1. Giới thiệu chung về Selenium (12)
    • 2. Các thành phần của Selenium (13)
    • 3. Cài đặt Selenium Webdriver (16)
    • CHƯƠNG 2:............................................................................................................. 18 (18)
      • I. TÀI LIỆU KHẢO SÁT, XÁC ĐỊNH YÊU CẦU CỦA HỆ THỐNG (18)
        • 1. Khảo sát hiện trạng (18)
        • 2. Giới thiệu website (19)
        • 3. Đối tượng sử dụng và chức năng của website (21)
        • 4. Thiết kế hệ thống (0)
    • CHƯƠNG 3: KIỂM THỬ TỰ ĐỘNG WEBSITE (29)
      • I. Kế hoạch kiểm thử (29)
      • II. Chiến lược kiểm thử (29)
        • 1. Các loại hình kiểm thử (0)
        • 2. Phương pháp kiểm thử (30)
      • III. Cụ thể (0)
        • 1. chức năng đăng nhập (0)
        • 2. Chức năng đăng ký (35)
        • 3. Ứng dụng web (39)
        • 4. Xây dựng test case đăng nhập (40)
        • 5. Xây dựng test case đăng ký (42)
        • 6. Thực hiện test bằng selenium webdriver (53)
        • 7. Báo cáo kết quả (68)
      • IV: Kiểm thử hiệu năng web bán sách (69)
      • A. Tìm hiểu cộng cụ Jmeter (69)
      • B. Tiến hành kiểm thử hiệu năng cụ thể (71)
  • KẾT LUẬN (0)
  • Tài liệu tham khảo (78)

Nội dung

PHẦN MỞ ĐẦU

Tổng quan về kiểm thử phần mềm

1.Khái niệm kiểm thử phần mềm

Kiểm thử phần mềm là quá trình đánh giá một hệ thống phần mềm nhằm xác định tính chính xác của nó so với các yêu cầu đã được xác định và kiểm tra khả năng hoạt động trong môi trường dự kiến.

Kiểm thử phần mềm nhằm xác định liệu sản phẩm có đáp ứng nhu cầu của khách hàng và phù hợp với yêu cầu đã được chỉ định, đồng thời đảm bảo chất lượng và độ chính xác của ứng dụng.

2.Các cấp độ kiểm thử phần mềm

A unit is the smallest testable component of software, including functions, procedures, classes, or methods.

Unit testing involves validating the functionality of individual code components, typically at the function level In an object-oriented environment, unit testing is often applied at the class level, focusing on the smallest units of code, including constructor and destructor functions.

Kiểm thử đơn vị, thường do lập trình viên thực hiện, là một bước quan trọng cần được tiến hành sớm trong quá trình viết mã và xuyên suốt vòng đời phát triển phần mềm Mỗi hàm có thể trải qua nhiều kiểm thử để đảm bảo phát hiện các trường hợp và nhánh khác nhau trong mã nguồn.

Kiểm thử đơn vị, giống như các mức kiểm thử khác, cần phải chuẩn bị các ca kiểm thử hoặc kịch bản cụ thể Những tài liệu này bao gồm dữ liệu đầu vào, các bước thực hiện và kết quả mong muốn Các ca kiểm thử và kịch bản này sẽ được lưu trữ để sử dụng trong tương lai.

Kiểm thử tích hợp (Integration Test) kết hợp các thành phần của ứng dụng và thực hiện kiểm tra như một hệ thống hoàn chỉnh Trong khi kiểm thử đơn vị (Unit Test) chỉ tập trung vào việc kiểm tra các thành phần riêng lẻ, kiểm thử tích hợp lại chú trọng vào việc kiểm tra sự giao tiếp và tương tác giữa các thành phần này.

6 download by : skknchat@gmail.com

 Integration Test có 2 mục tiêu chính:

• Phát hiện lỗi giao tiếp xảy ra giữa các Unit.

Tích hợp các đơn vị riêng lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng tạo thành một hệ thống hoàn chỉnh (system) là bước quan trọng chuẩn bị cho việc kiểm thử ở cấp độ hệ thống (System Test).

 Có 4 loại kiểm thử trong Integration Test:

Kiểm thử cấu trúc, hay còn gọi là Kiểm thử White Box, là phương pháp kiểm tra nhằm đảm bảo rằng các thành phần nội tại của chương trình hoạt động chính xác Phương pháp này tập trung vào việc kiểm tra các lệnh và nhánh bên trong, giúp xác định tính đúng đắn của cấu trúc chương trình.

Kiểm thử chức năng (Functional Test) là một phương pháp kiểm tra tương tự như Black Box Test, tập trung vào việc đánh giá các chức năng của chương trình mà không xem xét cấu trúc bên trong Phương pháp này chỉ khảo sát các chức năng của phần mềm dựa trên các yêu cầu kỹ thuật đã được xác định.

• Kiểm thử hiệu năng (Performance Test): kiểm thử việc vận hành của hệ thống.

• Kiểm thử khả năng chịu tải (Stress Test): kiểm thử các giới hạn của hệ thống.

Kiểm thử hệ thống (ST) là quá trình kiểm nghiệm toàn diện nhằm xác minh các thành phần của hệ thống được tích hợp chính xác Mục tiêu chính của kiểm thử hệ thống là đảm bảo rằng toàn bộ hệ thống hoạt động đúng theo mong đợi của khách hàng.

Kiểm thử hệ thống (System Test) bắt đầu khi tất cả các thành phần của phần mềm đã được tích hợp thành công Loại kiểm tra này thường tốn nhiều thời gian và công sức, và có thể yêu cầu các thiết bị, phần mềm hoặc phần cứng đặc thù, đặc biệt là đối với các ứng dụng thời gian thực, hệ thống phân tán hoặc hệ thống nhúng Trong quá trình kiểm thử hệ thống, các kiểm tra viên tìm kiếm lỗi nhưng chủ yếu tập trung vào việc đánh giá hiệu suất, độ tin cậy và các yêu cầu chất lượng của toàn bộ hệ thống Sự khác biệt chính giữa kiểm thử tích hợp (Integration Test) và kiểm thử hệ thống là kiểm thử hệ thống chú trọng vào hành vi và lỗi trên toàn bộ hệ thống, trong khi kiểm thử tích hợp tập trung vào sự tương tác giữa các thành phần khi hoạt động cùng nhau Trước khi thực hiện kiểm thử hệ thống, cần phải thực hiện kiểm thử đơn vị (Unit Test) và kiểm thử tích hợp để đảm bảo rằng tất cả các đơn vị và sự tương tác của chúng hoạt động chính xác.

 Kiểm thử hệ thống thường có các loại kiểm thử sau:

Kiểm tra chức năng (Functional Test): bảo đảm các hành vi của hệ thống thỏa mãn đúng yêu cầu thiết kế.

7 download by : skknchat@gmail.com

Kiểm tra khả năng vận hành (Performance Test) là quá trình quan trọng nhằm tối ưu hóa việc phân bổ tài nguyên hệ thống, chẳng hạn như bộ nhớ, để đạt được các chỉ tiêu như thời gian xử lý và khả năng đáp ứng câu truy vấn.

Kiểm tra khả năng chịu tải, hay còn gọi là Stress Test và Load Test, là quy trình đảm bảo hệ thống hoạt động hiệu quả dưới áp lực cao, chẳng hạn như khi có nhiều người truy cập đồng thời Stress Test tập trung vào việc xác định các trạng thái tới hạn, các "điểm chết" và những tình huống bất thường có thể xảy ra trong quá trình vận hành.

Kiểm tra cấu hình (Configuration Test)

Kiểm tra khả năng bảo mật (Security Test): bảo đảm tính toàn vẹn, bảo mật của dữ liệu và của hệ thống.

Kiểm tra khả năng phục hồi (Recovery Test) là quy trình đảm bảo hệ thống có thể khôi phục lại trạng thái ổn định trước đó sau khi xảy ra sự cố mất tài nguyên hoặc dữ liệu Điều này đặc biệt quan trọng đối với các hệ thống giao dịch, như ngân hàng trực tuyến, nhằm bảo vệ thông tin và duy trì sự tin cậy cho người dùng.

Tổng quan về Selenium

Giới thiệu chung về Selenium

In the realm of automated testing, there are numerous well-known commercial testing tools such as Selenium, QuickTest Professional, WinRunner, Rational Robot, SilkTest, and JTest Among these, Selenium stands out for its comprehensive features that exemplify the capabilities of an effective automated testing tool.

Selenium (viết tắt là SE) là một trong những công cụ kiểm thử phần mềm tự động mã nguồn mở mạnh mẽ nhất hiện nay, đặc biệt dành cho việc kiểm thử ứng dụng Web.

Selenium là công cụ kiểm thử phần mềm tự động được phát triển bởi ThoughtWorks từ năm 2004, ban đầu mang tên JavaScriptTestRunner Năm 2007, Jason Huggins, một trong những tác giả, rời ThoughtWorks để gia nhập nhóm Selenium tại Google, từ đó phát triển Selenium trở thành công cụ như hiện nay.

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 Nó cung cấp nhiều loại thử nghiệm chức năng, đáp ứng nhu cầu kiểm tra của các ứng dụng web Các hoạt động của Selenium rất linh hoạt, cho phép tùy chọn vị trí các thành phần UI và so sánh kết quả thử nghiệm với hành vi thực tế của ứng dụng.

Hỗ trợ các trường hợp mà việc execute test lặp đi lặp lại

12 download by : skknchat@gmail.com

Hỗ trợ các trường hợp execute test một ma trận thử nghiệm lớn Có thể thực hiện execute test song song

Có thể thực hiện execute test mà không cần người giám sát

Cải thiện độ chính xác, giảm tối đa các lỗi do con người tạo ra Tiết kiệm thời gian và tiền bạc

Các đặc điểm của Selenium

Selenium nổi bật với tính năng mã nguồn mở, cho phép người dùng sử dụng mà không cần lo lắng về chi phí bản quyền hay thời hạn sử dụng, điều này tạo lợi thế lớn so với các công cụ kiểm thử khác.

Selenium, với mã nguồn mở, có một cộng đồng hỗ trợ mạnh mẽ, đặc biệt do Google phát triển, mang đến sự hỗ trợ miễn phí cho người dùng Tuy nhiên, sự phong phú của cộng đồng cũng có thể trở thành điểm yếu, khi một vấn đề có thể nhận được nhiều giải pháp, trong đó không phải tất cả đều hiệu quả Hơn nữa, người dùng không thể yêu cầu hỗ trợ theo thời gian cụ thể, điều này có thể gây khó khăn trong quá trình giải quyết vấn đề.

 Selenium hỗ trợ nhiều ngôn ngữ lập trình C#, Java, Python, PHP và

Selenium còn có thể kết hợp với một số công cụ kiểm thử khác như Junit,

Selenium cho phép chạy trên nhiều hệ điều hành khác nhau mà không cần chỉnh sửa script nhiều Tuy nhiên, điều này chủ yếu phụ thuộc vào khả năng viết script của người dùng.

Chạy test case ở chế độ nền cho phép chúng ta thực hiện các tác vụ khác trên cùng một máy tính trong khi vẫn thực thi test script Điều này giúp tiết kiệm tài nguyên máy móc, tối ưu hóa hiệu suất làm việc trong quá trình kiểm thử.

Selenium chỉ hỗ trợ tương tác với trình duyệt và không hỗ trợ làm việc với các ứng dụng Windows, bao gồm cả hộp thoại Windows như Download/Upload, ngoại trừ thông báo từ trình duyệt Do đó, để xử lý các tình huống cần tương tác với hệ thống hoặc ứng dụng bên thứ ba, chúng ta cần sử dụng thêm các thư viện khác như AutoIt hoặc Coded UI.

Các thành phần của Selenium

Selenium gồm 4 thành phần chính , mỗi thành phần đều đóng một vai trò cụ thể trong việc hỗ trợ kiểm thử Web :

13 download by : skknchat@gmail.com

Hình 1.1.1 Các Thành phần của Selenium

Selen-IDE là một công cụ phát triển tích hợp dành cho việc tạo ra các trường hợp thử nghiệm Selenium, hoạt động như một tiện ích mở rộng trên trình duyệt Firefox Nó cung cấp giao diện thân thiện giúp người dùng dễ dàng phát triển và chạy các trường hợp kiểm thử cá nhân cũng như bộ kiểm tra toàn bộ Tính năng ghi lại của Selenium-IDE cho phép lưu trữ các thao tác của người dùng dưới dạng kịch bản tái sử dụng Ngoài ra, nó còn tích hợp menu ngữ cảnh khi nhấn chuột phải, cho phép người dùng chọn và xác minh các vị trí đã chọn Selenium-IDE cũng hỗ trợ chỉnh sửa toàn diện các trường hợp thử nghiệm, mang lại độ chính xác và kiểm soát cao hơn.

Mặc dù Selen-IDE chỉ là một tiện ích mở rộng cho Firefox, nhưng các bài kiểm tra được tạo ra trong Selen-IDE có thể được chạy trên các trình duyệt khác Điều này có thể thực hiện được thông qua Selenium-RC, nơi bạn chỉ cần chỉ định tên của bộ ứng dụng thử nghiệm trên dòng lệnh.

WebDriver là một công cụ để kiểm thử tự động các ứng dụng web.

WebDriver, thường được gọi là Selenium 2.0, sử dụng một framework khác biệt so với Selenium RC, vốn dựa vào Javascript Selenium-Core nhúng trong trình duyệt Khác với Selenium RC cần một máy chủ trung gian, WebDriver tương tác trực tiếp với các trình duyệt, mang lại hiệu suất và tính linh hoạt cao hơn.

 Kiểm thử đa trình duyệt, bao gồm cải thiện chức năng cho trình duyệt mà không được hỗ trợ tốt bởi Selenium RC (Selenium 1.0).

 Điều khiển nhiều frame, nhiều cửa sổ trình duyệt, nhiều popup và alert.

 Điều hướng trang phức hợp.

14 download by : skknchat@gmail.com

 Điều hướng người dùng nâng cao như kéo-thả (drag-and-drop)

Selenium RC là dự án chính của Selenium trước khi sự ra đời của Selenium WebDriver (Selenium 2.0), nhưng hiện tại Selenium RC hầu như không còn được sử dụng do WebDriver cung cấp nhiều tính năng mạnh mẽ hơn Tuy nhiên, người dùng vẫn có thể tiếp tục phát triển các script sử dụng Selenium RC.

Selenium RC cho phép các nhà phát triển tự động hóa kiểm tra 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 logic thử nghiệm Khi một ứng dụng trả về tậ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 kết quả đó, nhờ vào khả năng gọi lệnh Selenium để thực hiện kiểm tra cho mỗi mục.

Selen-RC cho phép sử dụng ngôn ngữ lập trình bậc cao để phát triển các trường hợp thử nghiệm, từ đó tích hợp thử nghiệm tự động vào dự án xây dựng môi trường tự động.

Selenium RC cho phép tự động hóa kiểm thử giao diện ứng dụng Web bằng nhiều ngôn ngữ lập trình như Java, C#, Perl, Python và PHP Điều này giúp tạo ra các ca kiểm thử phức tạp, bao gồm khả năng đọc và viết tập tin, truy vấn cơ sở dữ liệu, và gửi email kết quả kiểm thử Việc sử dụng Selenium RC với ngôn ngữ lập trình bậc cao còn hỗ trợ tích hợp kiểm thử tự động vào dự án xây dựng môi trường tự động.

Selenium Grid cho phép người dùng thực thi kiểm thử song song trên nhiều máy tính khác nhau với nhiều trình duyệt khác nhau.

Selenium Grid cho phép thực hiện kiểm thử phân tán hiệu quả, sử dụng cùng một mã nguồn, giúp loại bỏ nhu cầu phải hard code trên tất cả các máy tính tham gia vào quá trình kiểm thử.

Selenium Grid bao gồm 2 thành phần chính là Hub và Nodes:

Hub là máy chủ server, nơi lưu trữ mã nguồn cứng và gửi lệnh điều khiển đến các máy khác trong mô hình thực thi kiểm thử Lưu ý rằng Hub chỉ có thể được thiết lập duy nhất trên một máy tính.

Nodes là các phiên bản Selenium được kết nối với Hub để thực hiện các kịch bản kiểm thử Trong một mô hình Grid, có thể có nhiều Nodes, và chúng có thể được thiết lập trên nhiều máy tính khác nhau với các trình duyệt đa dạng.

15 download by : skknchat@gmail.com

Cài đặt Selenium Webdriver

Bước 1 Download và cài đặt Java Development Kit (JDK)

Link download : http://www.oracle.com/technetwork/java/javase/downloads/index.html

Cài đặt bình thường, click Next, Install cho đến khi hoàn tất.

Bước 2 Download và cài đặt Eclipse IDE

To download Eclipse, visit [http://www.eclipse.org/downloads/](http://www.eclipse.org/downloads/) and choose the appropriate version (32/64-bit) based on your system I recommend downloading the Eclipse IDE for Java Developers, as it meets all necessary requirements for development tasks Additionally, proceed to download the Selenium Java Client Driver as the next step.

Link download: http://seleniumhq.org/download/

Giải nén và lưu trữ vào một thư mục cố định, nên chọn vị trí khác ngoài ổ C để dễ dàng tái sử dụng khi cài đặt lại hệ thống Bạn cũng có thể đặt trực tiếp vào trong Project để đảm bảo rằng khi cài lại máy hoặc di chuyển sang hệ thống khác, vẫn có thể hoạt động bình thường.

Chạy eclipse.exe từ bước 2 đã tải về

Set workspace (nơi lưu trữ dự án của bạn) vào bất kì thư mục nào khác ổ

C Mục đích để nếu cài đặt lại hệ thống eclipse sẽ tự động load lại các dự án bạn đang làm việc từ workspace Ví dụ: D:\Workspace 64BIT (Đổi lại đường dẫn workspace trong eclipse: File -> Switch Workspace)

Tạo mới Project: File -> New -> Java Project -> [Đặt tên Project] ->

Tạo mới Package: Right click vào Project ->New -> Package -> [Đặt tên

Tạo mới Class: Right click vào Package -> New -> Class -> [Đặt tên

Bước 5.Thêm Selenium Java Client Driver (.jar) vào trong Project

Right click vào tên Project -> Properties -> Java Build Path -> Libraries

Chọn tất cả những file có định dạng là jar trong thư mục [selenium- java-2.47.1] -> OK

Bước 6 Thêm TestNG plugin vào Eclipse

Chọn Help -> Install New Software

Nhập TestNG vào textbox Name và http://beust.com/eclipse vào textbox Location -> click OK

Click vào TestNG và nhấn Next button

To complete the installation, click "I accept the terms of the license agreement" and then press the Finish button If a Security Warning pop-up appears, click OK to proceed Finally, click Yes to restart Eclipse.

Sau khi khởi động xong, cần kiểm tra TestNG đã được cài đặt thành công: Window -> Preferences

16 download by : skknchat@gmail.com

TestNG plugin đã được tích hợp thành công vào Eclipse

Tích hợp thành công testNG plugin vào Eclip

17 download by : skknchat@gmail.com

18

I TÀI LIỆU KHẢO SÁT, XÁC ĐỊNH YÊU CẦU CỦA HỆ THỐNG.

Thương mại điện tử đang phát triển mạnh mẽ trong thời đại ngày nay, bao gồm tất cả các phương pháp kinh doanh và quản trị thông qua các kênh điện tử Internet và các kỹ thuật, giao thức liên quan đóng vai trò quan trọng, trong khi công nghệ thông tin được xem là điều kiện tiên quyết cho sự phát triển này.

Thương mại điện tử mang lại lợi ích lớn nhất là tiết kiệm chi phí cho các bên giao dịch, giúp giao dịch diễn ra nhanh chóng hơn so với phương thức truyền thống như fax hay thư điện tử Chi phí cho các giao dịch qua internet rất thấp, cho phép doanh nghiệp gửi thư tiếp thị đến hàng loạt khách hàng với chi phí tương đương như gửi cho một khách hàng Thương mại điện tử cũng giúp các bên giao dịch không bị giới hạn bởi không gian địa lý, từ thành phố đến nông thôn hay giữa các quốc gia, tiết kiệm chi phí đi lại và thời gian gặp mặt Người tiêu dùng có thể dễ dàng đặt hàng và mua sắm nhiều loại hàng hóa dịch vụ ngay tại nhà một cách nhanh chóng.

Trong các website thương mại điện tử, đặc biệt là các trang bán hàng, người chủ cửa hàng giữ vai trò quan trọng nhất, có quyền truy cập thông tin về tình hình thu nhập và mọi thay đổi trên trang web Nếu chủ cửa hàng đồng thời là quản trị viên, tất cả nội dung trên website sẽ do chính họ cập nhật Ngược lại, nếu thuê nhân viên quản trị, chủ cửa hàng sẽ cung cấp thông tin cần thiết hoặc cấp quyền hạn cho người quản lý đó.

18 download by : skknchat@gmail.com

Nhân viên giao dịch có nhiệm vụ theo dõi số lượng đơn đặt hàng trong ngày và trong tuần, đồng thời ghi nhận số lượng đơn đã được xử lý Họ cần cung cấp báo cáo cho chủ cửa hàng bất cứ lúc nào khi có yêu cầu.

Người đứng đầu có quyền truy cập tất cả thông tin, trong khi nhân viên và khách hàng chỉ có thể xem những thông tin được cấp trên cho phép.

Website bán sách online sử dụng công nghệ PHP-MySQL, cho phép khách hàng truy cập để xem, lựa chọn và mua sách trực tuyến Người dùng có thể dễ dàng mua sách online và theo dõi các tin tức liên quan.

19 download by : skknchat@gmail.com

20 download by : skknchat@gmail.com

Giỏ hang và thanh toán

3 Đối tượng sử dụng và chức năng của website Đối tượng sử dụng:

21 download by : skknchat@gmail.com

Chức năng hệ thống:  Khách hàng:

Tìm kiếm sản phẩm - Đặt mua sản phẩm -

 Admin: ngoài những chức năng như khách hàng còn thêm -

- Quản lý loại sản phẩm -

4 Phân tích thiết kế hệ thống:

Tên trường Kiểu dữ liệu Ghi chú

Cus _id Int(11) Mã khách hàng

Cus_user varchar(20) Tên đăng nhập

Cus_password Varchar(50) Mật khẩu

Cus_fullname Nvarchar(100 Họ tên khách hàng

Cus_date Varchar(15) Ngày sinh

Cus_phone Int(15) Số điện thoại

Cus_address Varchar(200) Địa chỉ

Cus_email Varchar(100) Địa chỉ email

22 download by : skknchat@gmail.com

Tên trường Kiểu dữ liệu Ghi chú

User_id Int(11) Mã người dùng

User_name Varchar(20) Tên đăng nhập

User_password Varchar(50) Mật khẩu

User_fullname Varchar(100) Họ tên người dùng

User_address Varchar(200) Địa chỉ

User_phone Varchar(12) Số điện thoại

User_email Varchar(100) Địa chỉ email người dùng

Tên trường Kiểu dữ liệu Ghi chú

Listbook_id Int(11) Mã danh mục sách

Listbook_name Nvarchar(200 Tên danh mục sách

Tên trường Kiểu dữ liệu Ghi chú

Book_id Int(11) Mã Sách

Listbook_id Int(11) Mã Danh Mục Sách

Book_name Nvarchar(200) Tên sách

Book_image Varchar(1000) Đường dẫn ảnh sách

Book_author Nvarchar(200) Tên tác giả

23 download by : skknchat@gmail.com

Book_price Int(11) Giá bán

Book_advertise Varchar(500) Quảng cáo

Book_introduct Varchar(5000) Giới thiệu

Tên trường Kiểu dữ liệu Ghi chú

Order_id Int(11) Mã hóa đơn

Cus_id Int(11) Mã khách hàng

Order_date Nvarchar(15) Ngày tháng

Order_name Nvarchar(100) Tên hóa đơn

Order_note Nvarchar(1000 Ghi chú

Order_phone Int(15) Số điện thoại

Order_address Varchar(500) Địa chỉ

Order_email varchar(1000) Địa chỉ email

Tên trường Kiểu dữ liệu Ghi chú

Detail_id Int(11) Mã chi tiết hóa đơn

Order_id Int(11) Mã hóa đơn

Book_id Int(11) Mã Sách

Detail_image Varchar(500) Đường dẫn ảnh

Detail_name Varchar(100) Tên hóa đơn

24 download by : skknchat@gmail.com

Detail_author Varchar(100) Tác giả

Detail_price Int(200) Giá bán

Detail_number Int(10) Số lượng

Detail_sumprice Int(20) Tổng giá

Tên trường Kiểu dữ liệu Ghi chú

Pro_id Int(11) Mã sản phẩm

Tên trường Kiểu dữ liệu Ghi chú

News_id Int(11) Mã tin

News_image Varchar(500) Đường dẫn ảnh

News_name Varchar(200) Tên tin

News_date Varchar(30) Ngày tháng

News_author Varchar(100) Tác giả

News_advertise Varchar(1000) Quảng cáo

News_introduct Varchar(5000) Giới thiệu

25 download by : skknchat@gmail.com

Tên trường Kiểu dữ liệu Ghi chú

Help_id Int(11) Mã danh mục hỗ trợ

Help_name Varchar(500) Tên danh mục hỗ trợ

Tên trường Kiểu dữ liệu Ghi chú

Web_id Int(11) Mã trang web liên kết

Web _name Varchar(500) Tên trang web liên kết

Web_link Varchar(1000) Địa chỉ web liên kết

4.2 Một số mô hình thực thể quan hệ riêng

26 download by : skknchat@gmail.com

4.3 Mô hình thực thể liên kết

27 download by : skknchat@gmail.com

28 download by : skknchat@gmail.com

KIỂM THỬ TỰ ĐỘNG WEBSITE

Nhiệm vụ Ngày bắt đầu Ngày kết thúc Thực hiện

II Chiến lược kiểm thử 1 Các loại hình kiểm thử

Mục đích của việc kiểm tra chức năng là đảm bảo rằng các yêu cầu kiểm thử có thể được theo dõi trực tiếp trong các chức năng và quy tắc nghiệp vụ.

Mục tiêu của kiểu kiểm tra này là xác minh tính chính xác của dữ liệu, quy trình và báo cáo, đồng thời đảm bảo việc tuân thủ đúng các quy tắc nghiệp vụ.

Mục đích test: Đảm bảo mục tiêu test đúng đắn của chức năng, bao gồm định hướng, dữ liệu đầu vào, xử lý và dữ liệu nhận được

Cách thực hiện: Thực hiện mỗi đơn vị, chu trình đơn vị hoặc chức năng, sử dụng dữ liệu hợp lệ và không hợp lệ để kiểm tra:

- Kết quả mong đợi với dữ

29 download by : skknchat@gmail.com liệu hợp lệ.

- Lỗi thích hợp hoặc thông báo hiển thị khi dữ liệu không hợp lệ.

- Mỗi qui tắc nghiệp vụ đều được áp dụng đúng Điều kiện hoàn thành: - Toàn bộ kế hoạch test đã được thực hiện.

- Toàn bộ các lỗi phát hiện ra đã được ghi nhận.

Chú ý Xác định hoặc mô tả các vấn đề

(nội bộ hoặc bên ngoài) ảnh hưởng đến việc test chức năng

Kỹ thuật kiểm thử hộp đen xem chương trình như một "hộp đen", trong đó người kiểm thử chỉ tập trung vào dữ liệu đầu vào và đầu ra mà không quan tâm đến cấu trúc bên trong Mục tiêu của phương pháp này là phát hiện các trường hợp mà chương trình không tuân theo các đặc tả đã định Kiểm thử hộp đen có ưu điểm là đánh giá phần mềm một cách khách quan, cho phép người kiểm thử không cần hiểu mã lệnh vẫn có thể phát hiện lỗi mà nhà phát triển có thể bỏ sót Tuy nhiên, nhược điểm của nó là thăm dò mù, vì người kiểm thử không nắm rõ cách chương trình được xây dựng, dẫn đến việc cần viết nhiều trường hợp kiểm thử trong khi có thể chỉ cần một ca kiểm thử duy nhất để kiểm tra hiệu quả.

Kỹ thuật kiểm thử hộp trắng, hay còn gọi là kiểm thử cấu trúc, cho phép khảo sát kiến trúc bên trong của chương trình Đây là một chiến lược quan trọng trong ba loại kiểm thử cơ bản, bao gồm kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hồi quy Mục tiêu chính của kiểm thử hộp trắng là đảm bảo bao phủ tối đa các câu lệnh, điểm quyết định và các nhánh trong mã nguồn.

30 download by : skknchat@gmail.com

31 download by : skknchat@gmail.com

III Ứng dụng kiểm thử trên Web 1 chức năng đăng nhập

32 download by : skknchat@gmail.com

1.2 Đồ thị lưu trình Độ phức tạp của chu trình: C=7

33 download by : skknchat@gmail.com

1.3 Đồ thị dòng Độ pức tạp C!-16+2=7

34 download by : skknchat@gmail.com

35 download by : skknchat@gmail.com

36 download by : skknchat@gmail.com Độ phức tạp của chu trình: C

37 download by : skknchat@gmail.com

2.3 Đồ thị dòng Độ phức tạp C = 49-32+2

38 download by : skknchat@gmail.com

Màn hình đăng nhập gồm các thành phần:

- Textbox Tài khoản và mật khẩu cho phép người dùng nhập dữ liệu

- Button Đăng nhập và Đăng ký cho phép người dùng click chọn

39 download by : skknchat@gmail.com

Màn hình đăng ký gồm các thành phần:

- Textbox Tài khoản,mật khẩu,họ và tên,ngày sinh,số điện thoại ,địa chỉ và email cho phép người dùng nhập dữ liệu

- Button Đăng ký cho phép người dùng click chọn

4 Xây dựng test case đăng nhập

Mô tả: các trường bắt buộc nhập không được bỏ trống

- Tài khoản nhập đúng là khi tồn tại trong csdl

- Mật khẩu nhập đúng là khi tồn tại trong csdl

 Sử dụng phương pháp bảng quyết định ta có

Conditi Mật nul T nul F F T T l l ons khẩu

Vui vẻ, sôi động và đầy năng lượng, không khí tràn ngập niềm vui Những âm thanh vui tươi, rộn ràng khiến mọi người cảm thấy phấn khởi Hãy tận hưởng từng khoảnh khắc và hòa mình vào không gian đầy màu sắc này.

Hành động là yếu tố quan trọng trong việc xây dựng thói quen và đạt được mục tiêu Để duy trì động lực, bạn cần xác định rõ ràng các bước cần thực hiện và kiên trì thực hiện chúng Việc tập trung vào những nhiệm vụ nhỏ nhưng có ý nghĩa sẽ giúp bạn tiến bộ từng ngày Hãy chắc chắn rằng bạn theo dõi sự tiến bộ của mình để có thể điều chỉnh kế hoạch khi cần thiết.

40 download by : skknchat@gmail.com kh ẩu

Hiện Lo Lo Lo Lo Lo Lo Ho form gin gin gin gin gin gin me pag e

Test case Đầu vào Đầu ra mong đợi

1 Tài khoản :null Thông báo:Vui lòng nhập tên

Mật khẩu:null đăng nhập và mật khẩu

2 Tài khoản:null Thông báo: Vui lòng nhập tên đăng nhập

3 Mật khẩu:null Thông báo : Vui lòng nhập mật khẩu

4 Tài khoản:nhập sai Thông báo : Sai tên đăng

Mật khẩu:nhập sai nhập hoặc mật khẩu

5 Tài khoản:nhập sai Thông báo : Sai tên đăng

Mật khẩu:nhập đúng nhập hoặc mật khẩu

6 Tài khoản: nhập đúng Thông báo : Sai tên đăng

Mật khẩu :nhập sai nhập hoặc mật khẩu

7 Tài khoản: nhập đúng Thông báo : Chào user full

Mật khẩu : nhập đúng name

5 Xây dựng test case đăng ký

- Các trường bắt buộc nhập không được bỏ trống

41 download by : skknchat@gmail.com

- Tài khoản không chứa các kí tự đặc biệt là duy nhất và phải lớn hơn 6 kí tự,nhỏ hơn 20 kí tự

- Mật khẩu phải lớn hơn 6 kí tự,nhỏ hơn 20 kí tự

- Số điện thoại là số và từ 10-12 kí tự và đúng định dạng 09,08,02,016[2-9]

- Email phải đúng định dạng xxx@xxx.xxx không chứa kí tự đặc biệt và là duy nhất

 Áp dụng phương pháp phân vùng tương đương:

- Tài khoản phải chứa [6,20] ký tự chỉ gồm chữ và số: thực hiện nhập vào 5,21ký tự,rỗng

- Mật khẩu phải chứa [6,20] kí tự:thực hiện nhập vào 5,21 kí tự,rỗng

- Nhập lại mật khẩu phải giống mật khẩu

- Số điện thoại phải từ [10,12] ký tự số ,đúng định dạng 09,08,02,016[2-9] : thực hiện nhập vào 9, 13 ký tự số,rỗng.

- Họ và tên không được rỗng

- Địa chỉ không được rỗng

- Ngày sinh không được bỏ trống và đúng

Các lớp tương đương Tài khoản

- Tài khoản 20 không hợp lệ

- Tài khoản rỗng không hợp lệ

- Tài khoản có kí tự không phải số hoặc chữkhông hợp lệ

- Mật khẩu 20 không hợp lệ

- Mật khẩu rỗng không hợp lệ

- Họ và tên không rỗng hợp lệ

- Họ và tên rỗngkhông hợp lệ

42 download by : skknchat@gmail.com

- Số điện thoại > && <  hợp lệ

- Số điện thoại 12  không hợp lệ

- Số điện thoại chứa kí tự không phải số không hợp lệ

- Số điện thoại rỗng không hợp lệ

- Ngày [1-30] và tháng 4,6,9,11  hợp lệ

- Ngày[1-28] và tháng 2 năm không nhuận  hợp lệ

- Ngày[1-29] và tháng 2 năm nhuận  hợp lệ

- Ngày 31 và tháng 4,6,9,11  không hợp lệ

- Ngày 29 và tháng 2 năm không nhuận  không hợp lệ

- Ngày 30,31 và tháng 2 năm nhuận  không hợp lệ

- Ngày sinh bỏ trống   không hợp lệ

- Local-Part là chữ hoặc số hoặc các kí tự(+ - ) và kí tự nối là @ và server name có dạng xxx.xxx  hợp lệ

- bỏ trống email  không hợp lệ

- Thiếu Local-Part   không hợp lệ

- Thiếu server name  không hợp lệ

- Local-Part chứa kí tự không phải chữ hoặc số  không hợp lệ

- Server name sai định dạng xxx.xxx  không hợp lệ

 Áp dụng phương pháp phân vùng tương đương: Điều kiện đầu vào Các lớp tương Các lớp tương đương đương hợp lệ không hợp lệ

- có kí tự không phải số hoặc chữ:

+ khoảng trắng + kí tự đặc biệt + chữ

43 download by : skknchat@gmail.com

3 số đầu:016[2-9] - Chứa kí tự không phải số:

+ khoảng trắng + kí tự đặc biệt +chữ

Họ và tên Không trống Bỏ trống Địa chỉ Không trống Bỏ trống

Ngày sinh - Ngày [1-30] và - Ngày 31 và tháng : tháng [4,6,9,11]

- Ngày[1-29] và +11 tháng 2 năm nhuận

- Ngày 29 tháng 2 năm không nhuận

Email Local-Part là chữ -bỏ trống email hoặc số hoặc các kí

-Thiếu Local-Part tự(+ - ) và kí tự nối

-Thiếu server name server name có

-Local-Part chứa kí tự

44 download by : skknchat@gmail.com dạng xxx.xxx không phải chữ hoặc số:

+ khoảng trắng +kí tự đặc biệt

-Server name sai định dạng xxx.xxx:

+ thiếu + thiếu com + chứa khoảng trắng +chứa kí tự đặc biệt + thiếu com

+thiếu domain trong server name

Các ca kiểm thử : Từ mô tả và bảng phân vùng tương đương ta có

Test case Đầu vào Đầu ra mong đợi

1 Bỏ trống tất cả các Hiển thị thông báo trường nhập tất cả các trường

2 Tất cả các trường Hiển thị thông báo hợp lệ đăng ký thành công

3 Tài khoản nhỏ hơn 6 Thông báo độ dài ký tự tên đăng nhập không hợp lệ

4 Tài khoản lớn hơn Thông báo độ dài

20 ký tự tên đăng nhập không

45 download by : skknchat@gmail.com hợp lệ

5 Tài khoản đã tồn tại Thông báo tên đăng nhập đã tồn tại

6 Tài khoản có kí tự Thông báo tên đăng đặc biệt nhập không hợp lệ

7 Tài khoản có khoảng Thông báo tên đăng trắng nhập không hợp lệ

8 Tài khoản bỏ trống Thông báo vui lòng nhập tất cả các trường

9 Mật khẩu < 6 kí tự Thông báo độ dài mật khẩu không hợp lệ

10 Mật khẩu >20 kí tự Thông báo độ dài mật khẩu không hợp lệ

11 Bỏ trống mật khẩu Thông báo vui lòng nhập tất cả các trường

12 Bỏ trống họ và tên Thông báo vui lòng nhập tất cả các trường

13 Chọn ngày > 28 Thông báo ngày sinh tháng 2 năm không không hợp lệ nhuận

14 Chọn ngày > 29 Thông báo ngày sinh tháng 2 năm nhuận không hợp lệ

15 Chọn ngày 31 các Thông báo ngày sinh tháng 4 không hợp lệ

16 Chọn ngày 31 các Thông báo ngày sinh

46 download by : skknchat@gmail.com tháng 6 không hợp lệ

17 Chọn ngày 31 các Thông báo ngày sinh tháng 9 không hợp lệ

18 Chọn ngày 31 các Thông báo ngày sinh tháng 11 không hợp lệ

19 Bỏ trống ngày sinh Thông báo vui lòng nhập tất cả các trường

20 Nhập số điện thoại Thông báo số điện

12 kí tự số thoại không hợp lệ

22 Nhập số điện thoại Thông báo số điện có chữ thoại không hợp lệ

23 Nhập số điện thoại Thông báo số điện có kí tự đặc biệt thoại không hợp lệ

24 Nhập số điện thoại Thông báo số điện có khoảng trắng thoại không hợp lệ

25 Nhập số điện thoại Thông báo số điện sai đầu số thoại không hợp lệ

26 Bỏ trống số điện Thông báo số điện thoại thoại không hợp lệ

27 Bỏ trống địa chỉ Thông báo vui lòng nhập tất cả các trường

28 Bỏ trống địa chỉ Thông báo vui lòng email nhập tất cả các trường

29 Email không đúng Thông báo địa chỉ định dạng email không hợp lệ xxx@xxx.xxx

47 download by : skknchat@gmail.com

30 Email không có kí tự Thông báo địa chỉ nối @ email không hợp lệ

31 Email không có Thông báo địa chỉ server name email không hợp lệ

32 Email không có Thông báo địa chỉ domain email không hợp lệ

33 Email không có dấu Thông báo địa chỉ

34 Email không có com Thông báo địa chỉ email không hợp lệ

Local- Part Thông báo địa chỉ email email không hợp lệ

36 Local-Part email có Thông báo địa chỉ kí tự đặc biệt trừ các email không hợp lệ kí tự + -

37 Local-Part email có Thông báo địa chỉ khoảng trắng email không hợp lệ

38 Domain name chứa Thông báo địa chỉ kí tự đặc biệt email không hợp lệ

39 Email đã tồn tại Thông báo địa chỉ email đã tồn tại

48 download by : skknchat@gmail.com

6 Thực hiện test bằng selenium webdriver

6.1 Viết các kịch bản Đăng Nhập hệ thống website :

Các kịch bản Đăng Nhập bằng Selenium Webdriver

Kiểm thử với công cụ Selenium sử dụng chú thích @Test để đánh dấu các phương thức dưới đây là các testcase Sau khi thực hiện, Eclipse cung cấp hai đầu ra: một là trong cửa sổ Console và hai là trong cửa sổ TestNG Results.

49 download by : skknchat@gmail.com

Kết quả trong cửa sổ Console

50 download by : skknchat@gmail.com

Kết quả trong cửa sổ TestNGResutls

51 download by : skknchat@gmail.com

6.2 Viết các kịch bản Đăng Ký hệ thống website :

Các kịch bản Đăng Ký bằng Selenium Webdriver

52 download by : skknchat@gmail.com

Kết quả trong cửa sổ Console

Kết quả trong cửa sổ TestNGResutls

53 download by : skknchat@gmail.com

54 download by : skknchat@gmail.com

55 download by : skknchat@gmail.com

56 download by : skknchat@gmail.com

57 download by : skknchat@gmail.com

58 download by : skknchat@gmail.com

59 download by : skknchat@gmail.com

60 download by : skknchat@gmail.com

61 download by : skknchat@gmail.com

62 download by : skknchat@gmail.com

63 download by : skknchat@gmail.com

STT Module code Pas Fail Number s of test cases

64 download by : skknchat@gmail.com Đã test: 100%

IV: Kiểm thử hiệu năng web bán sách

A Tìm hiểu cộng cụ Jmeter

JMeter là công cụ mạnh mẽ dùng để đo lường độ tải và hiệu suất của các hệ thống, cho phép kiểm tra hiệu năng trên cả nguồn tĩnh và nguồn động Nó hỗ trợ kiểm tra tải cho nhiều loại máy chủ khác nhau, bao gồm Web HTTP, HTTPS, SOAP, cũng như các cơ sở dữ liệu thông qua JDBC, LDAP, JMS, và các giao thức email như SMTP(S), POP3(S) và IMAP(S).

JMeter là một công cụ mã nguồn mở được phát triển bằng ngôn ngữ Java Được sáng lập bởi Stefano Mazzocchi, JMeter đã được Apache cải tiến với giao diện đồ họa thân thiện hơn và khả năng kiểm thử chức năng hiệu quả.

- Giao diện đơn giản, trực quan dễ sử dụng

- Có thể kiểm thử nhiều kiểu server: Web - HTTP, HTTPS, SOAP, Database

- JDBC, LDAP, JMS, Mail - POP3,…

Công cụ này là một ứng dụng độc lập, có khả năng hoạt động trên nhiều hệ điều hành khác nhau Đối với Linux, người dùng chỉ cần thực hiện bằng một shell script, trong khi trên Windows, chỉ cần chạy một file bat để khởi động.

- Đa luồng, giúp xử lý tạo nhiều request cùng một khoảng thời gian, xử lý các dữ liệu thu được một cách hiệu quả.

- Đặc tính mở rộng, có rất nhiều plugin được chia trẻ rộng rãi và miễn phí

- Một công cụ tự động để kiểm thử hiệu năng và tính năng của ứng dụng.

Cách thức hoạt động của hệ thống này là giả lập một nhóm người dùng gửi yêu cầu đến máy chủ, sau đó nhận và xử lý các phản hồi từ máy chủ Kết quả được trình bày cho người dùng dưới dạng bảng biểu, đồ thị hoặc cây, giúp người dùng dễ dàng nắm bắt thông tin.

- Tải jmeter tại trang : http://jmeter.apache.org/download_jmeter.cgi, chọn download và tìm đến mục Binaries

65 download by : skknchat@gmail.com

- Giải nén vào bin chạy file ApacheJMeter.

66 download by : skknchat@gmail.com

B Tiến hành kiểm thử hiệu năng cụ thể

1 Giả lập nhiều user truy cập vào trang web

Mở jmeter ,đặt tên cho Test Plan testtruycap.

Chuột phải vào Test Plan –> Add –> Threads(users) –> Thread Group

Cửa sổ Thread Group hiện ra với các mục quan trọng :

67 download by : skknchat@gmail.com

Name : tên của thread group.

Number of Threads(users) : số lượng thread user mà ta muốn giả lập.

Ramp-Up Period: cho biết thời gian để JMeter tạo ra tất cả những thread cần thiết.

Loop Count : số lần các thread được tạo thực hiện , nếu chọn forever sẽ thực hiện mãi mãi cho tới khi người dùng dừng lại bằng tay.

Tạo request đến server : 1 thread(tương ứng 1 user) có thể tạo nhiều request http gửi lên server.

Chuột phải vào Thread group –> add –> sample –> http request Default

68 download by : skknchat@gmail.com

Cửa sổ Http Request Default Cửa sổ Http Request Default:

Protocol: giao thức được sử dụng HTTP hoặc HTTPS(bỏ trống mặc định là http)

Server Name or IP: điền vào domain hoặc IP của trang web cần kiểm tra Port Number: chỉ ra port của web, để trống sẽ là port mặc định 80

Method: phương thức để gửi các HTTP request, các phương thức ở đây bao gồm GET, POST, PUSH, HEAD,…

Path: đường dẫn nguồn để xử lý các Request

Parameters: biểu diễn danh sách các thông số gửi cùng request, ta có thể thêm hoặc xóa các thông số này.

69 download by : skknchat@gmail.com

Truy cập vào trang chủ Đăng nhập vào hệ thống

70 download by : skknchat@gmail.com

Tiến hành chạy và thu được kết quả :

2.1 Xem kết quả tổng hợp của tất các thread (Chuột phải vào Thread Group –> Add -> Listener –> Summary Report)

Average : thời gian trung bình xử lý các request min : thời gian nhỏ nhất xử lý request max : thời gian nhỏ nhất xử lý request

Std.Dev: độ lệch tiêu chuẩn mô tả mức độ phân tán của một tập dữ liệu đã được lập thành bảng tần số

Error : phần trăm bị lỗi của các request(lỗi kết nối hoặc lỗi cho đầu ra không mong muốn) thoughput : số request/s của server kb/s = (avg.bytes*thoughput)/1024

Kết quả tổng hợp của thread truy cập trang chủ

71 download by : skknchat@gmail.com

Kết quả tổng hợp của thread login

2.2 Xem kết quả của từng request trong kịch bản(Chuột phải Thread Group –> Add –> Listener –> View Results Tree)

Kết quả trong thread truy cập trang chủ

72 download by : skknchat@gmail.com

Kết quả trong thread login

73 download by : skknchat@gmail.com

Ngày đăng: 04/05/2022, 12:33

HÌNH ẢNH LIÊN QUAN

Hình 1.1.1 Các Thành phần của Selenium - báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver
Hình 1.1.1 Các Thành phần của Selenium (Trang 14)
Bảng tbl_user Tên trường User_id User_name User_password User_fullname User_address User_phone User_email User_avatar Bảng tbl_listbook Tên trường Listbook_id Listbook_name Bảng tbl_book Tên trường Book_id Listbook_id Book_name Book_image Book_author 23 - báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver
Bảng tbl _user Tên trường User_id User_name User_password User_fullname User_address User_phone User_email User_avatar Bảng tbl_listbook Tên trường Listbook_id Listbook_name Bảng tbl_book Tên trường Book_id Listbook_id Book_name Book_image Book_author 23 (Trang 24)
4.3 Mô hình thực thể liên kết - báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver
4.3 Mô hình thực thể liên kết (Trang 28)
Màn hình đăng nhập gồm các thành phần: - báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver
n hình đăng nhập gồm các thành phần: (Trang 40)
3. Ứng dụng web - báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver
3. Ứng dụng web (Trang 40)
Các ca kiểm thử : Từ mô tả và bảng phân vùng tương đương ta có - báo cáo kiểm thử phần mềm đề tài kiểm thử chức năng website với selenium webdriver
c ca kiểm thử : Từ mô tả và bảng phân vùng tương đương ta có (Trang 49)
w