Professional Documents
Culture Documents
Bảo đảm chất lượng phần mềm - Giới thiệu selenium
Bảo đảm chất lượng phần mềm - Giới thiệu selenium
Bảo đảm chất lượng phần mềm - Giới thiệu selenium
Không may là người kiểm thử sử dụng Selenium Core phải cài đặt toàn bộ ứng dụng được thử
nghiệm và máy chủ web trên các máy tính cục bộ của họ do những hạn chế của** chính sách
nguồn gốc** giống nhau áp đặt. Vì vậy, một kỹ sư khác của ThoughtWork, Paul Hammant, đã
quyết định tạo ra một máy chủ sẽ hoạt động như một proxy HTTP để "lừa" trình duyệt tin rằng
Selenium Core và ứng dụng web được thử nghiệm đến từ cùng một tên miền. Hệ thống này được
gọi là Selenium Remote Control hay Selenium 1.
Shinya Kasatani của Nhật Bản đã tạo ra** Selenium IDE**, một phần mở rộng của Firefox có
thể tự động hoá trình duyệt thông qua tính năng ghi lại và phát lại. Ông đã đưa ra ý tưởng này để
tăng tốc độ trong việc tạo ra các trường hợp thử nghiệm. Ông đã tặng Selenium IDE cho dự án
Selenium vào năm 2006.
Sự ra đời của WebDriver
Simon Stewart đã tạo ra WebDriver khoảng năm 2006 khi các trình duyệt và các ứng dụng web
đang trở nên mạnh hơn và hạn chế hơn với các chương trình JavaScript như Selenium Core. Đây
là khung thử nghiệm nền tảng đầu tiên có thể điều khiển trình duyệt từ cấp hệ điều hành.
Bạn có thể kết hợp với nhiều ngôn ngữ lập trình như: Java,.Net, Python, Ruby một cách
dễ dàng.
Selenium sẽ giả cho các thao tác người dùng ở trên web page và các web element.
Script được base dựa theo HTML nên rất dễ học và việc ứng dụng cũng sẽ rất nhanh.
Bạn có thể tạo ra một bộ test suite có chứa nhiều test case khác.
Bạn có thể run các test suite thông qua Selenium IDE hoặc Selenium command line
Selenium API sẽ hỗ trợ rất nhiều cho các loại trình duyệt, do vậy mà sẽ rất dễ dàng khi
test ứng dụng web với nhiều loại trình duyệt khác nhau.
Selenium là một bộ công cụ chuyên dụng trong kiểm thử tự động open source dành cho các ứng
dụng web, cũng như hỗ trợ hoạt động trên các trình duyệt có nền tảng khác nhau như Mac,
Linux, Windows,..Với Selenium thì bạn hoàn toàn có thể viết các test script bằng nhiều ngôn
ngữ lập trình khác nhau như: Java, PHP, C#, Ruby hoặc Python.
Selenium được sử dụng để có thể automate cho các thao tác với trình duyệt hoặc dễ hiểu hơn là
nó hỗ trợ giả lập lại các tương tác nằm trên trình duyệt tương tự như một người dùng thực thụ.
Chính vì thế, bạn có thể lập trình để có thể bật tự động các trình duyệt, để open một link, input
cho dữ liệu, upload, download dữ liệu từ web page hoặc thậm chí thông tin của trang.
Ngoài ra, bạn còn có thể sử dụng để tùy biến tận dụng tối đa sức mạnh của nó. Ngoài các mục
đích sử dụng trong kiểm thử thì bạn hoàn toàn có thể xây dựng một project để automate các công
việc mang lại cảm giác nhàm chán vì phải lặp đi lặp lại một thao tác.
Các thành phần của Selenium là gì?
Selenium là một trong những khái niệm chung để miêu tả một phần mềm chuyên dụng trong
automation. Mà ở đó, mỗi loại trong nó sẽ đáp ứng được các yêu cầu testing khác nhau. Còn về
cơ bản thì Selenium bao gồm 4 thành phần chính là:
Selenium IDE (IDE là từ viết tắt của Integrated Developer Environment): là một plug-in
nằm trên trình duyệt Fire-fox, ta có thể sử dụng để record và play lại các thao tác đó dựa
theo một quy trình hay một test case nào đó.
Selenium RC: Selenium Remote Control, Selenium server sẽ khởi chạy và tương tác với
các trình duyệt web.
WebDriver: Selenium WebDriver có nhiệm vụ gửi lệnh khởi chạy rồi thực hiện tương tác
trực tiếp với các trình duyệt mà không cần thông qua bất cứ server như Selenium RC.
Selenium Grid: Selenium Hub được sử dụng để khởi chạy nhiều các test thông qua các
máy cũng như các trình duyệt khác nhau tại cùng một thời điểm nhất định.
Selenium team đã quyết định gộp Selenium RC và WebDriver lại với nhau để có thể khởi tạo ra
các Selenium 2 với các tính năng mạnh mẽ hơn và hiện nay thì hầu hết các Selenium Project đều
sử dụng chúng.
Selenium IDE:
Selenium IDE (Môi trường phát triển tích hợp) chủ yếu là một công cụ ghi / chạy mà một nhà
phát triển trường hợp thử nghiệm sử dụng để phát triển các trường hợp thử nghiệm Selenium.
Selenium IDE là một công cụ dễ sử dụng từ Selenium Test Suite và thậm chí có thể được sử
dụng bởi những người mới phát triển các trường hợp thử nghiệm tự động cho các ứng dụng web
của họ. Người ta không yêu cầu bất kỳ thiết lập đặc biệt nào để bắt đầu với Selenium IDE. Bạn
chỉ cần thêm tiện ích mở rộng của trình duyệt cụ thể của mình. Selenium IDE cung cấp cho bạn
GUI (Giao diện người dùng đồ họa) để dễ dàng ghi lại các tương tác của bạn với trang web.
Selenium IDE cho phép người dùng hoặc nhà phát triển trường hợp thử nghiệm tạo các trường
hợp thử nghiệm và bộ thử nghiệm và chỉnh sửa nó sau theo yêu cầu của họ. Môi trường phát
triển cũng cung cấp khả năng chuyển đổi các trường hợp kiểm thử sang các ngôn ngữ lập trình
khác nhau, giúp người dùng dễ dàng hơn và không bắt buộc phải biết một ngôn ngữ lập trình cụ
thể.
Selenium WebDriver (gọi tắt là WebDriver) là một automation framework dành cho web,
với WebDriver bạn có thể thực hiện các phiên kiểm thử của mình trên các trình duyệt
khác nhau mà không cần chỉ giới hạn trên Firefox hay Chrome.
WebDriver sẽ cung cấp công cụ hỗ trợ bạn tốt hơn trong việc coding để tạo test scripts.
Bạn có thể sử dụng ngay các phương thức điều kiện như if-then-other, switch-case, hoặc
vòng lặp như do-while...
WebDriver hỗ trợ nhiều ngôn ngữ lập trình khác nhau như Java, .Net, PHP, Python, Perl,
Ruby. Không nhất thiết bạn phải am hiểu tất cả các ngôn ngữ trên nhưng để sử dụng
WebDriver một cách hiệu quả hơn, bạn nên biết ít nhất một trong số những ngôn ngữ
trên.
1. Mã nguồn mở
Selenium WebDriver được các tester trên thế giới ưa thích vì nó là một phần mềm mã nguồn mở
(open-source). Điều này đồng nghĩa với việc bạn không cần phải tốn tiền khi sử dụng. Điều đó sẽ
giúp giảm thiểu chi phí cho cả quá trình test.
Selenium WebDriver hỗ trợ gần hết các ngôn ngữ lập trình phổ biến hiện nay (C#, Java, Python,
Ruby, Perl,…). Do đó, người dùng không cần phải học thêm một ngôn ngữ lập trình mới để làm
việc với công cụ này. Bạn hoàn toàn có thể viết các đoạn script một cách hiệu quả bằng chính
ngôn ngữ lập trình đang là thế mạnh của mình.
Xét về độ thân thiện với người dùng, Selenium WebDriver vượt trội so với các thành phần khác
của Selenium. Những câu lệnh của nó khá dễ nhớ và tiện dụng. Selenium cũng cung cấp cho
người dùng nhiều tài liệu hướng dẫn cần thiết. Cộng đồng sử dụng công cụ này cũng rất lớn, nên
bạn sẽ không gặp khó khăn nếu có vấn đề cần thắc mắc.
Selenium WebDriver tận dụng khá tốt khả năng hỗ trợ tự động hóa của các trình duyệt web. Mỗi
trình duyệt web khác nhau sẽ có một công cụ hỗ trợ khác nhau dành cho nó như ChromeDriver
của Chrome hay Selenium FirefoxDriver của Firefox. Do đó, tốc độ thực thi của Selenium
WebDriver sẽ nhanh hơn nhiều nếu so với các công cụ khác trong bộ Selenium.
Đúng như tên gọi, giới hạn của Selenium Webdriver là chỉ hoạt động trên nền tảng website. Bạn
không thể tìm cách để mở rộng công cụ này cho các nền tảng ứng dụng của Windows. Hạn chế
này sẽ khiến bạn rắc rối trong một vài trường hợp, chẳng hạn như khi phải kiểm tra tốc độ kết
nối với ứng dụng Windows.
Một trong những xu hướng hiện nay là thực hiện test tự động mà không cần đến code. Điều này
giúp một người không cần có kiến thức chuyên môn vẫn có thể thao tác thông qua các công cụ
hỗ trợ.
Tuy nhiên, Selenium Webdriver lại đi ngược với điều đó. Để sử dụng tốt công cụ này, tester phải
có kiến thức về một ngôn ngữ lập trình nhất định. Đồng thời, bạn phải có kinh nghiệm sử dụng
các công cụ test tự động trước đó.
Selenium Webdriver không cung cấp giải pháp để hỗ trợ kỹ thuật cho người dùng. Khi gặp vấn
đề, bạn có thể dễ dàng nhận được sự trợ giúp từ cộng đồng sử dụng công cụ này. Nhưng xét cho
cùng họ cũng chỉ là những người dùng giống như bạn, chứ không phải là sự hỗ trợ trực tiếp từ
phía người tạo ra sản phẩm. Do đó, sẽ có nhiều khó khăn nếu vấn đề của bạn là một vấn đề mới,
chưa có cách giải quyết.
Là công cụ dùng để test, nhưng Selenium Webdriver lại không có sẵn chức năng lập báo cáo tự
động. Nó khiến cho việc khắc phục sự cố và sửa lỗi trở nên khó khăn hơn, mất nhiều thời gian
hơn. Người dùng phải thông qua các công cụ của bên thứ ba để thực hiện báo cáo. Chẳng hạn
như TestNG, JUnit hay Allure.
Tóm lại, Selenium Webdriver là một công cụ tuyệt vời để thực hiện test tự động trên nền tảng
web. Tuy nhiên, bạn cần hiểu rõ Selenium Webdriver là gì, và cân nhắc những ưu, nhược điểm
của nó để có thể tối ưu công việc của mình.
2. V Í DỤ : KI ỂM TR A C HỨ C NĂ N G LOGI N
Ta cần phải xác định được vị trí của các element: [Username], [Password] và
[Submit Button] và nói cho Webdriver biết vị trí của từng thằng.
Hành động đối 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.
Viết câu lệnh 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 vẫn ở lại page Login … Với thao
tác bình thường, ta rất dễ có thể kiểm tra được xem Login như thế là Fail hay Pass
nhưng với automation, 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.
3. KHI RU N SC RI PT, ĐI ỀU GÌ SẼ X ẢY R A ?
Khi viết xong script, mình muốn chạy để xem thử có bao nhiêu testcase fail hay pass. Khi chạy,
Selenium 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ẽ được thực thi.