• Kéo theo đó là nhu cầu kiểm thử phần mềm để ứng dụng đạt chất lượng tối ưu khi đến tay người sử dụng • Một công cụ hỗ trợ đắc lực cho kiểm thử phần mềm là Selenium- một công cụ mã nguồ
Trang 1Trường đại học Công nghệ giao thông vận tải
Khoa công nghệ thông tin
Bài báo cáo môn: Kiểm thử phần mềm
Đề tài: Tìm hiểu công cụ kiểm thử tự động Selenium IDE
GVHD: Lê Trung Kiên Thực hiện: Nhóm 8-69DCTT23
1
Trang 2Chương 1: Giới thiệu
Chương 2: Cài đặt và sử dụng
Chương 3: Ứng dụng DEMO
Chương 4: Selenium Webdriver
Trang 3Chương 1: Giới thiệu
• Trong giao đoạn bùng nổ công nghệ thông tin như hiện nay, nhu cầu phát triển phần mềm tăng nhanh chóng đặc biệt là các úng dụng web
• Kéo theo đó là nhu cầu kiểm thử phần mềm để ứng dụng đạt chất lượng tối ưu khi đến tay người sử dụng
• Một công cụ hỗ trợ đắc lực cho kiểm thử phần mềm là Selenium- một công cụ mã nguồn mở, gồm nhiều tính năng mạnh mẽ, hỗ trợ các ứng dụng trên nền web, nhiều platfom và các trình duyệt phổ biến
3
Trang 41.1 Lịch sử phát triển
• SELENIUM(SE) là một phần mềm mã nguồn mở, được phát triển bởi Jason Huggins vào năm 2004 và được phát triển bởi Thoughtwork Ông phát triển thư viên Javascript để tự động chạy các test trên nhiều trình duyệt, chính thư viện này đã trở thành Selenium Core tạo cơ sở cho Selenium IDE và Selenium Remote Control(RC)
• Vào năm 2006, một nhân viên của Google tên là Simon Stewart bắt đầu tiếp tục công việc được đặt tên là Webdriver
• Năm 2008, Selenium và webdiver kết hợp, cung cấp 1 tập các tính năng hữu ích cho người sử dụng
Trang 51.2 Giới thiệu chung
• Selenium gồm nhiều công cụ với cách tiếp cận khác nhau để hỗ trợ kiểm thử tự động Một trong những tính năng chính của Selenium là hỗ trợ kiểm thử trên nhiều trình duyệt
• Selenium hỗ trợ kiểm tra hầu hết trên các trình duyệt phổ biến hiện nay như Firefox , Internet Explorer , cũng như các hệ điều hành chủ yếu như Windows , Linux , Mac ,
• Selenium có 4 thành phần:
Selenium IDE: Selenium Integreted Development Environment (IDE)
Selenium RC: Selenium Remote Control (RC)
Selenium Grid: dùng để khởi chay nhiều các test thông qua các máy
Webdriver: gửi lệnh khởi chạy và tương tác trực tiếp tới các trình duyệt
5
Trang 71.3 Selenium IDE
• Ưu điểm: Dễ dàng cài đặt, sử dụng, tiết kiệm thời gian; Không yêu cầu kinh nghiệm lập trình; Có thể convert qua các ngôn ngữ lập trình khác như: HTML, Java, C#, Python, Ruby; Có thể debug, set breakpoint, thêm comment vào script cho dễ đọc; Hỗ trợ biểu thức điều kiện/ vòng lặp
• Nhược điểm: Không hỗ trợ test report (cần cài đặt thêm để hiển thị report); Không cho phép đọc dữ liệu từ file: text (.txt), excel (.xls), csv (cần cài đặt thêm để đọc dữ liệu từ file csv/ xml); Không hỗ trợ database/ mobile testing (việc này là hơi quá với 1 plugin trình duyệt)
7
Trang 91 phiên làm việc mới bằng cách click vào create a project
Trang 102.2 Sử dụng
• Quy trình thực hiện kiểm thử tự động với Selenium IDE
Thiết lập Base URL về trang web muốn kiểm thử
Thực hiện viết các kịch bản kiểm thử (các testcase): Sử dụng các command kết hợp với các Element trên Webpage để tạo ra các hành động tương tác theo các Testcase đã định nghĩa
Thực hiện kiểm thử và ghi nhận các kết quả ->Post bug
• Các câu lệnh của Selenium thường được gọi là Selenese, là tập hợp những commands chạy test của bạn Một chuỗi những commands
là một test script
Trang 122.2 Sử dụng
• Xác định (locating) element: Định vị element trong selenium ide là
xác định các element trên page(textbox, Button, Checkbox, ) để selenium tương tác Nếu việc định vị không chính xác (selenium không tìm thấy) thì Testcase sẽ bị false
• Một số đinh vị trong selenium ide:
1_ID: trên webpage, ID chính là định danh của Element Do đó việc xác
định các Element qua ID thường là cách phổ biến nhất và chính xác nhất khi muốn xác định Elemet Các xác định này sẽ không áp dụng được nếu thẻ không gán ID
Trang 132.2 Sử dụng
2_Name: Xác định Element qua tên cũng là một phương pháp được sử
dụng phổ biến cho độ chính xác cao Cũng giống như việc sử dụng ID, việc xác định Element qua Name cũng sử dụng thuộc tính name của thẻ HTML để xác định Element
3_Link Text: Cách này chỉ áp dụng cho các hyperlink Sử dụng cú pháp
“Link =Text” để xác định một hyperlink trên webpage
13
Trang 142.2 Sử dụng
4_CSS Selectors: là một chuỗi được sử dụng để nhận diện một Element
trong một webpage dựa trên sự kết hợp giữa HTML tag, ID, Class, Attribute
CSS Selectors có nhiều dạng khác nhau, tuy nhiên chúng ta chỉ tập trung vào một số dạng phổ biến sau: tag và ID, tag và class, Tag và attribute (thuộc tính), Tag, Class và attribute, Inner Text
Trang 156_XPath: XPath là ngôn ngữ được sử dụng khi định vị các nút XML
(Extensible Markup Language) Vì HTML có thể được coi là một sự triển khai của XML, nên chúng ta cũng có thể sử dụng XPath trong việc định vị các phần
Trang 162.2 Sử dụng
Tóm lược Cú pháp cho việc sử dụng Locator
Trang 172.2 Sử dụng
• Sử dụng chức năng Record của Selenium IDE
• Demo luôn cho thầy xem
17
Trang 18Chương 3: Ứng dụng demo
3.1 Giới thiệu bài toán
• Pinterest là website chia sẻ ảnh dưới dạng mạng xã hội, được sử dụng khá phổ biến, dùng để post và phân loại dưới dạng các đính kèm
• Pinterest kết nối được với facebook và twitter Được thành lập ban đầu bởi Ben Silbermann, vùng West Des Moines, Iowa, Mỹ, trang web này hiện được quản lý bởi Cold Brew Labs và được tài trợ bởi một nhóm nhỏ doanh nhân và nhà đầu tư Địa chỉ truy cập hiện tại của trang https://www.pinterest.com/
Trang 193.1 Giới thiệu bài toán
• Website https://www.pinterest.com/ có các chức năng:
Hỗ trợ người dùng đăng ký và đăng nhập vào tài khoản Pinterest của mình
Có thể chia sẻ ảnh dưới dạng mạng xã hội
Có thể tạo ra các tập tin theo chủ đề yêu thích
Có thể xem bộ sưu tập của mọi người và kéo về bộ sưu tập của mình
Có thể maketing online về mảng này
• Trong khuôn khổ đề tài, do hạn chế về kinh nghiệm và thời gian tìm hiểu công cụ, em sẽ trình bày quá trình kiểm thử chức năng đăng nhập tài khoản trong website https://www.pinterest.com/
19
Trang 203.2 Kiểm thử chức năng đăng nhập
Demo cho thầy xem
Trang 21Chương 4: Selenium Webdriver
4.1 Giới thiệu chung
• Selenium Webdriver (Se driver) là một phần mềm mã nguồn mở giúp việc thực thi các hành động lên trang web một cách tự động, tất nhiên
là tùy vào mục đích và yêu cầu của người viết Se driver hỗ trợ viết script trên nhiều ngôn ngữ khác nhau: Java, C#, python, PHP…
• Bản chất Se driver là một 1 package trong đó có chứa rất nhiều các class, cung cấp các API hay gọi nôm na là thư viện
21
Trang 224.2 Đặc điểm của Selenium Webdiver
Kiến trúc Selenium Webdiver
WebDriver trực tiếp gọi tới trình duyệt web và toàn bộ kịch bản kiểm thử được thực thi theo cách này WebDriver sử dụng sự hỗ trợ, khả năng của trình duyệt để tự động hóa
Trang 234.2 Đặc điểm của Selenium Webdiver
Ưu điểm:
• Kiến trúc đơn giản:
• Tốc độ:WebDriver là công cụ nhanh nhất trong các công cụ của bộ Se
do tương tác trực tiếp từ hệ điều hành tới trình duyệt
• Khắc phục các hạn chế của Selenium v1 như tải lên tệp, tải xuống, cửa
sổ bật lên và hộp thoại
Nhược điểm:
• Báo cáo kiểm thử chi tiết không thể được tạo ra
• Không thể kiểm tra hình ảnh
23
Trang 244.3 Sử dụng Selenium Webdiver
• Se Diver được sử dụng: Để sử dụng một ngôn ngữ lập trình nhất định trong việc thiết kế test case của bạn, kiểm tra các ứng dụng có nhiều chức năng dựa trên AJAX, thực hiện các kiểm thử trên trình duyệt HtmlUnit, Để tạo kết quả kiểm thử tùy chỉnh
• Để Se driver có thể mô phỏng hành động như click chuột hay điền giá trị, đầu tiên nó phải xác định được vị trí của element (phần tử) trên trang web
mà nó sẽ tương tác (dựa vào css Selector hoặc Xpath)
• Sau khi đã xác định được vị trí, thì sẽ xác định hành động đối với element
đó (thông qua các API được viết sẵn trong các gói thư viện của Webdriver)
• Sau khi hoàn thành 1 list các hành động theo trình tự ( giống như thực hiện với manual test), ta sẽ kiểm tra xem trang web có thực hiện đúng hay không
Trang 254.3 Sử dụng Selenium Webdiver
• driver.get(“URL”):Để điều hướng đến một trang web
• element.sendKeys(“inputtext”):Nhập một số văn bản vào input box
• element.clear(): Xóa nội dung khỏi input box
• driver.switchTo().window(“windowName”):Di chuyển con trỏ chuột
từ cửa sổ này sang cửa sổ khác
• driver.quit(): Thoát driver và đóng tất cả các cửa sổ liên quan đến driver đó
• driver.navigate().forward(): Chuyển hướng đến trang tiếp theo
• driver.close():Đóng trình duyệt hiện tại và các liên kết đến driver
• driver.switchTo().alert():Xử lý alert
25
Trang 264.3 Sử dụng Selenium Webdiver
VD: Kiểm tra chức năng login
• Ta cần phải xác định được vị trí của các element: [Username], [Password] và [Submit Button], với [Username] và [Password] là nhập
dữ liệu, ta sẽ dùng các phương thức nhập dữ liệu Với [Submit Button] thì ta dùng phương thức mô phỏng Click chuột
• Để kiểm tra xem với dữ liệu nhập vào thì login có thành công hay không bằng cách xem nó có chuyển sang page khác hay không… việc này sẽ được check tự động và phải chọn những điểm làm căn cứ để đánh dấu Pass/Fail
• Khi run, Se driver sẽ gọi trực tiếp (direct call) trình duyệt thông qua driver của chính trình duyệt đó Sau đó các hành động trên script sẽ
Trang 274.3 Cách Selenium Webdiver làm việc
• Chi tiết của direct call:
Với mỗi 1 hành động từ script, một HTTP request sẽ được tạo ra
HTTP request đó gửi đến browser driver
Mỗi browser driver sẽ có 1 HTTP server để nhận lấy HTTP request
Sau khi nhận, HTTP server xác định những bước cần thiết để thực thi hành động phản hồi lại request
HTTP server thực thi những bước ở trên như mở trang web, điền thông tin vào thẻ input…
Sau đó, HTTP server trả lại trạng thái thực hiện những hành động cho client, nơi đang run script
27
Trang 28Kết luận
Kiểm thử phần mềm nói chung và kiểm thử trên nền Web nói riêng là một vấn đề hết sức quan trọng đối với các tổ chức phần mềm hiện nay Trong quá trình thực hiện đề tài do thời gian nghiên cứu và kinh nghiệm còn nhiều hạn chế và chưa được chuyên sâu Nhưng qua thời gian nghiên cứu đề tài này không những được tiếp cận với nhiều kiến thức mới hơn mà còn hiểu hơn về ngành Tester