Bảo đảm chất lượng phần mềm - Giới thiệu selenium

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

Tìm hiểu về bugtracking và ưu nhược điểm của nó

Selenium là gì? Ưu và nhược điểm của nó là gì?


Selemium là gì?
Lịch sử ra đời của Selenium.
Do Selenium là một tập hợp các công cụ khác nhau nên cũng có những người phát triển
khác nhau. Dưới đây là những người chủ chốt đã có đóng góp đáng kể cho dự án Selenium. Chủ
yếu Selenium được tạo ra bởi Jason Huggins năm 2004. Ông là một kỹ sư của ThoughtWorks,
lúc đó đang làm việc trên một ứng dụng web đòi hỏi mức độ phải kiểm tra thường xuyên. Sau khi
nhận ra rằng việc kiểm tra ứng dụng một cách thủ công và lặp đi lặp lại ngày càng trở nên không
hiệu quả, ông đã tạo ra một chương trình JavaScript có thể tự động kiểm soát các hành động của
trình duyệt. Ông đặt tên cho chương trình này là "JavaScriptTestRunner." Nhìn thấy tiềm năng
trong ý tưởng này để giúp tự động hóa các ứng dụng web khác, ông đã tạo ra mã nguồn mở
JavaScriptRunner, sau này được đặt tên lại là Selenium Core.

Sự ra đời của Selenium Remote Control (Selenium RC)

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.

Sự ra đời của Selenium Grid


Selenium Grid được phát triển bởi Patrick Lightbody để giải quyết nhu cầu giảm thiểu thời gian
thực hiện thử nghiệm càng nhiều càng tốt. Lúc đầu ông gọi hệ thống là "Hosted QA.". Nó có khả
năng chụp ảnh màn hình của trình duyệt trong các giai đoạn và cũng có thể gửi ra các lệnh
Selenium cho các máy khác nhau cùng một lúc.

Sự ra đời của Selenium IDE

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.

Những tính năng nổi bật mà Selenium giới thiệu. 

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

Định nghĩa Selenium là gì?

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ể.

Ưu điểm của Selenium IDE:


- Công cụ ghi và phát lại dựa trên giao diện người dùng.
- Chạy được trên mọi trình duyệt.
- Dễ hiểu và phát triển một kịch bản thử nghiệm.
- Xuất tập lệnh kiểm tra Selenium-IDE thành mã trình điều khiển web & Selenium – RC
- Nó rất dễ cài đặt và sử dụng.
- Không yêu cầu kinh nghiệm lập trình để sử dụng Selenium IDE.
- Selenium-IDE có tính năng trợ giúp tích hợp và chúng hiển thị tài liệu về lệnh đã chọn
hoặc đã nhập.
- Nó giúp chúng tôi gỡ lỗi bằng cách hiển thị thông tin và thông báo lỗi.
- Nó cung cấp hỗ trợ tuyệt vời cho các phần mở rộng.
Nhược điểm của Selenium IDE:
- Nó không thể khởi chạy trình duyệt mới và chạy tập lệnh thử nghiệm (nó chỉ hoạt động
với trình duyệt hiện có)
- Nó chỉ hỗ trợ ngôn ngữ html.
- Không thể tham số hóa.
- Việc đọc từ tệp bên ngoài và chạy tập lệnh thử nghiệm được gọi là tham số hóa.
- Chỉ có thể được sử dụng với một ứng dụng đơn giản, không thể áp dụng để phát triển ứng
dụng Ajax.
- Nó là một khuôn khổ java không đồng bộ được sử dụng để tạo các ứng dụng động như-
facebook.com, BBC.com
- Không cho phép lặp lại các câu lệnh điều kiện và lặp lại.
- Selenium IDE không hỗ trợ xử lý lỗi và kiểm tra cơ sở dữ liệu.
- Selenium IDE không thể được sử dụng trong thử nghiệm ứng dụng iPhone và Android.
- Selenium IDE không hỗ trợ các phép lặp và các hoạt động có điều kiện.
Selenium webdriver là gì?

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

Ưu điểm của Selenium Webdriver là gì?

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.

2. Tương thích nhiều trình duyệt


Selenium WebDriver tương thích với gần như tất cả các trình duyệt web phổ biến hiện tại. Chẳng
hạn như Opera, Yandex, Firefox, Internet Explorer, Chrome. Bạn có thể dễ dàng chạy các trình
duyệt này ở bất kỳ hệ điều hành nào, dù là Windows, Mac hay Linux.

3. Hỗ trợ đa ngôn ngữ lập trình

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.

4. Thân thiện, dễ sử dụng

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.

5. Tốc độ thực thi nhanh

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.

Nhược điểm của Selenium Webdriver là gì?

1. Chỉ hỗ trợ ứng dụng web

Đú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.

2. Đòi hỏi kinh nghiệm lập trình

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 đó.

3. Khó bảo trì và mở rộng


Với Selenium Webdriver, người dùng khó thể bảo trì và mở rộng quá trình test. Các bài test của
công cụ này khá cứng nhắc khi sử dụng một identifier (mã định danh) duy nhất. Nếu có thay đổi
nào đó, đặc biệt là với các identifier này, sẽ phá hỏng cả bài test. Thiếu sót này khiến cho
Selenium Webdriver không phù hợp với những doanh nghiệp có nhu cầu test ở quy mô lớn, hoặc
muốn mở rộng cơ chế tự động hóa sau này.  

4. Không có hỗ trợ kỹ thuật

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.

5. Thiếu tính năng báo cáo tự động

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.

Cách Selenium Webdriver làm việc?

1. T E S T C RI PT V I ẾT THEO TES TCA S E


 Để Selenium 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, như đã nói
ở trên)
 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

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.

Chi tiết của direct call:


1. Với mỗi 1 hành động từ script, một HTTP request sẽ được tạo ra
2. HTTP request đó gửi đến browser driver
3. Mỗi browser driver sẽ có 1 HTTP server để nhận lấy HTTP request
4. 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.
5. HTTP server thực thi những bước ở trên như mở trang web, điền thông tin vào thẻ
input…
6. 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.

You might also like