Thứ Sáu, 26 tháng 9, 2014

Tạo test script cho chức năng đăng nhập vào hệ thống bằng Selenium IDE

Ở bài trước mình có giới thiệu về công cụ kiểm thử tự động Selenium IDE (cài đặt cho 

browser và tính năng có sẵn trên công cụ). Hôm nay, mình có ví dụ nhỏ để thực hành đó là Tạo 

kịch bản test (test script) tự động cho chức năng đăng nhập. Bước đầu đơn giản thế sau các 

bạn học và hiểu cú pháp Xpath là có thể làm rộng hơn 1 số bài tập lớn hơn.

 Bước 1: vào trình duyệt khởi động Selenium IDE. Ở đây mình dùng trên firefox browser


tao-script-bang-selenium

Bước 2: Nhập tên đường dẫn URL tại base URL trên cửa sổ Selenium IDE
ví dụ: http://viegrid.com/Login.aspx

Bước 3: Bạn tiến hành tạo mới 1 testcase đặt tên tùy ý (mình đặt là login_test)
sau khi tạo file TC xong bạn chú ý đến các thông số sau đây:

Command, Target và Value các trường thông số này yêu cầu bạn nhập vào cú pháp để thực hiện lệnh request. Selenium hỗ trợ bạn các kiểu định vị dưới đây:
1. id
2. name
3. xpath
4. dom
5. identifier
6. link
7. css
id and name:
Khi bạn mở một trang web bất kỳ, kích chuột phải vào đối tượng xem mã nguồn. Bạn sẽ thấy được id hoặc name của đối tượng web đó. Các đối tượng web: textbox, listbox, radio button…đều có id và name riêng của nó.
xpath:
XML Path (Xpath) là ngôn ngữ đóng một vai trò quan trọng trong công tác trao đổi dữ liệu giữa các computer hay giữa các chương trình ứng dụng vì nó cho phép ta lựa chọn hay sàng lọc ra những dữ liệu nào mình muốn để trao đổi hay hiển thị. bạn tìm hiểu thêm tại http://www.w3schools.com/xpath/xpath_syntax.asp
Phần trên mình giải thích một số từ khóa và cú pháp của nó, giờ mình tiến hành viết kịch bản như sau: 
selenium-tao-kich-ban-test

Tại Command: mình selected  lệnh senKeys để bắt đầu thực hiện 1 request đến đường dẫn username, để lấy tên đường dẫn đến input nhập tên đăng nhập bạn chọn xem nguồn trang web đó và chọn đến thẻ html & css lấy thẻ input id="txtUser" => //input[@id='txtUser'] (cú pháp tại sao viết như vậy thì bạn đọc lại Xpath syntax tại w3cschool :3 vì ở bài trước mình có nói rùi). Tiếp đến ghi giá trị value ="tên người dùng đăng nhập". Sau khi hoàn thành thao tác nhập username bạn làm tương tự với password
tim-hieu-selenium-ide

Hoàn thành xong request cho 2 trường input textUser và txtPass tiếp đến là click submit đăng nhập. thực hiện thao tác request data đến server để login vào hệ thống (website). Tại command bạn selected lệnh clickAndWait hoặc ClickAtAndWait, Click....bạn nên chọn ClickAndWait (lệnh này có ý nghĩ thực hiện thao tác nhấp chuột và chờ đợi nạp 1 trang mới). tương tự dò đến phần tử html & css bạn xem tại thẻ  <input type ="submit" id='Button1'/>  họ đặt tên Button1 => //input[@id='Button1']
Lưu ý: tên biến id bạn phải nhập chính xác, tránh nhầm lẫn mình toàn dùng copy paste. =D

huong-dan-cai-dat-selenium

Hoàn tất quá trình nạp keyword bạn click vào run để test quá trình đăng nhập theo dõi kết quả. 
Chúc các bạn học tập vui :3

Thứ Hai, 15 tháng 9, 2014

Ví dụ test hiệu năng website với công cụ JMeter

>>> Bài tập ví dụ Test hiệu năng website với 1 user truy cập web (Không đăng nhập)
Đầu tiên chạy file jmeter lên có giao diện ban đầu như sau,

Tạo Thread Group cho Test Plan bằng cách đúp chuột phải vào Test Plan => Chọn Add => Click Thread Group option


Sau khi chọn Thread Group option, màn hình hiển thị các yếu tố thành phần dưới đây:
+ Name: Tên của Thread, có thể tạo tên bất kỳ để dễ phân biệt
+ Number of Thread: Số các thread được giả lập, mỗi thread tương đương với 1 user. Ví dụ có 5 thread thì tương đương với việc giả lập 5 user để gửi request
+ Ram up - Period: Cho biết thời gian JMeter tạo ra cần thiết cho thread (user). Ví dụ khai báo cho Ram up - Period là 10 thì trong khoảng thời gian 10s sẽ thực hiện số thread (user) ở trường Number of Thread, còn nếu set bằng 0 thì số thread (user) đó sẽ thực hiện cùng 1 lúc (xảy ra đồng thời cùng 1 lúc)
+ Loop count: Số lần lặp của việc kiểm thử. Nếu dòng checkbox của Forever được chọn thì việc lặp xảy ra liên tục cho đến khi người dùng dừng lại bàng tay.
+ Scheduler: Được dùng để lập lịch cho hành động kiểm thử
=> Xong bước tạo 1 Thread, tiếp đến ta tạo 1 Sampler như sau:


Click đúp chuột phải vào Thread Group => Chọn Add => Sampler
Hiển thị mục option có rất nhiều lựa chọn cho Sampler với các mục đích test khác nhau. Ở đây, đang viết VD về test web nên mình sẽ chọn HTTP Request => Hiển thị ra 1 giao diện HTTP Request như hình vẽ sau:


Các thông số trong form HTTP Request:
+ Name: Đặt tên Request
+ Server name of IP: Điền vào Domain hoặc IP trang web mà mình đang cần test
+ Port Number: Chỉ ra port của web, nếu để trống thì sẽ default là 80
+ Protocol: Giao thức được sử dụng là HTTP hoặc HTTPs
+ Method: Phương thức để các HTTP request. có các method: GET, POST, HEAD, PUSH..
+ Path: Đường dẫn các nguồn để xử lý các request
+ Parameter: Biểu diễn danh sách các tham số để gửi cùng request. (có thể thêm hoặc xoá thông số này)
+ Send files with the request: Giả lập việc upload file
+ Retrieve All embedded Resources: Dùng để download các trang java applet được nhúng trên trang web đang test.

Ngoài ra, còn có các thông số cấu hình cho Timeout, respon,....
Sau khi giải đáp các thông số trên form HTTP Request, tiếp đến mình sử dụng đến Listener

Sau khi cài đặt xong các thông số cho HTTP request, Sampler và Listener, bạn chọn RUN hoặc tổ hợp phím Ctrl + R để thực thi kịch bản test, sau đó vào các Listener để xem kết quả.

Trên đây, mình hoàn tất ví dụ về test hiệu năng với 1 user truy cập website không đăng nhập. Phần kế tiếp sẽ là test với 10 user đăng nhập và thực hiện các chức năng 

Đối với trường hợp test số lượng thread nhiều hơn 1 user: Làm theo các bước trên và khai báo thêm thông số theo thứ tự dưới đây:
+ HTTP Cache Manager
+ HTTP Cookie Manager
+ CSV Data Set Config
VỚi HTTP Request để login vào trang web cần chú ý đến các Parameters. Các Parameters này cần điền giống như trang login thật của web (Các Parameters này có thể dùng addon Firebug trên firefox browser để tim)

Với CSV Data Set Config trong Login HTTP Request ta khai báo đến file .CVS chứa các tài khoản dùng để login vào web


  



Giới thiệu công cụ test hiệu năng Website - Apache Jmeter

Sơ lược qua về công cụ kiểm thử hiệu năng JMeter

Phần mềm kiểm thử tự động mã nguồn mở Jmeter
Jmeter được xây dựng và phát triển bởi Stefano Mazzocchi để kiểm thử hiệu năng FTP Server, máy chủ CSDL, Java servlet và các đối tượng.
Phạm vi ứng dụng của Jmeter:
Nổi trội hơn JMeter là công cụ LoadRuner nhưng bị hạn chế LoadRuner chỉ sử dụng được trên Windows, có phí và chỉ hỗ trợ giao thứ nền HTTP
JMeter thì nổi trội hơn do hỗ trợ nhiều giao thức và sử dụng trên nhiều môi trường khác nhau: Web - HTTP, HTTPS sites 'web 1.0' web 2.0
(ajax, flex and flex-ws-amf);  Web Services - SOAP/ XML-RPC; Database - JDBC; Directory - LDAP; TCP; MongoDB (noSQL)
Đặc trưng của JMeter:
>Sử dụng để kiểm thử hiệu suất cả về tài nguyên tĩnh và tài nguyên động như các tập tin tĩnh, Java Services, CGI script, đối tượng của ngôn ngữ Java, CSDL, FTP Server,....JMeter cung cấp 1 giao diện người dùng thân thiện dễ sử dụng.
Các thông số quan trọng trong JMeter: Thread Groups, Listeners, Assertiong, Sample Generating Controller,, Logic Controllers,...Cụ thể chi tiết dưới đây.

Samples                     Những phần tử này gửi các yêu cầu tới server. Có những samplers cho những kiểu request HTTP/HTTPS, FTP, SOAP, JDBC, LDAP, MongoDB, TCP,...
Listeners Timers        Tập các kết quả của việc run test, cung cấp cho người dùng các công cụ hiển thị một cách trực quan, dễ hiểu
Logic Controllers          Nếu những request được định nghĩa trong các test plan của bạn được thực thi dựa phụ thuộc vào 1 vài logic, lúc đó sẽ cần đến Logic Controllers. Thích hợp với cấu trúc if-then-else và loop trong Java hoặc ngôn ngữ khác.
Assertions                      Cho phép bạn kiểm tra nếu responses bạn lấy dữ liệu mong đợi hay nhận trong phạm vi thời gian đã định sẵn
Điều lưu ý: Mọi TestPlan đều cần ít nhất 1 Thread Groups, vì mỗi Thread Groups sẽ tạo ra được các yêu cầu để request tới server, nếu không có thì không có yêu cầu được request tới server và dẫn đến không thể tiến hành việc test.
Mỗi TestPlan thường có 2 thành phần chính trong Thread Groups đó là 1 Sampler để tạo ra request và 1 Listeners để hiển thị kết quả cho người dùng.
Và điều cần quan tâm nữa là: Tuỳ vào mục đích kiểm thử khác nhau thì sẽ xây dựng TestPlan khác nhau, tránh tình trạng chúng ta thêm tất cả các thành phần vào TestPlan => sẽ làm Rối và có những thành phần không sử dụng đến gây lãng phí tài nguyên.
>Cài đặt
Trước khi vào cài đặt máy tính bạn cần có Java hỗ trợ. Dưới đây mình hướng dẫn cài đặt cho HĐH Windows
tải JMeter tại địa chỉ sau: http://jmeter.apache.org/download_jmeter.cgi
Chạy file jmeter.bat

Sau khi chạy thành công giao diện màn hình hiển thị như sau:

jmeter


 Trên đây là kết thúc phần Sơ lược công cụ và cài đặt JMeter, các thông số cần lưu ý. Ở bài viết sau mình có 1 số bài tập nhỏ tạo kịch bản script test hiệu năng website đó là:
 + Test 1 hoặc nhiều user truy cập ( chưa đăng nhập vào hệ thống)
 + Test 10 user đăng nhập đồng thời và thực hiện các hành động: Đăng nhập, liệt kê các danh mục, văn bản (số lượng 10 user có thể thay đổi tuỳ ý nhiều hơn hoặc ít hơn)

Tham khảo thêm tại:
http://www.tutorialspoint.com/jmeter/jmeter_overview.htm




Thứ Năm, 11 tháng 9, 2014

Hướng dẫn cài đặt Selenium IDE

Selenium IDE chạy tốt trên nhiều trình duyệt khác nhau, ở đây mình sẽ hướng dẫn cách cài đặt trên trình duyệt firefox
Bước 1: Khởi động firefox browser, kiểm tra trên menu bar nhấp chuột vào thanh công cụ tools kiểm tra xem có selenium IDE chưa? nếu chưa có bạn truy nhập vào trang http://www.seleniumhq.org/download/
chọn phiên bản download
tuttorial-setup-selenium

Bước 2: Sau khi chọn download phiên bản selenium, firefox browser sẽ tự động cập nhật, bạn chọn Allow cho phép tải về và Click Install
download-addon-selenium-ide-cho-firefox

cai-dat-selenium-ide-khong-thanh-cong

Trình duyệt sẽ tự động restart lại và hiển thị như sau
thac-mac-ve-selenium-ide




Bước 3: Khởi động Selenium 

cong-cu-selenium-ide-cho-tester

- Mình giải thích 1 số ký hiệu trên cửa sổ Selenium IDE
 Thanh trượt Fast - Slow tuỳ chọn tốc độ chạy testcase
 Chọn chạy tất cả các testcase sẵn có
 Chạy từng testcase một
 Record lại các thao tác bạn tạo script trên url (đường dẫn website) bạn cần test
 Cho phép bạn dừng test tại 1 điểm bất kỳ bạn muốn
 Bỏ qua 1 testcase khi nó đang bị tạm dừng
 Nơi chưá đường dẫn web mà bạn muốn test
Textbox command: Dòng lệnh
Textbox target: Kết quả mong đợi của dòng lệnh
Textbox Value: Giá trị đầu vào của dòng lệnh

Hoàn thành thao tác cài đặt Selenium IDE, bài viết sau mình sẽ trình bày thao tác với Selenium (Tạo kịch bản test đơn giản với Selenium IDE). Nhưng trước khi đến với Tạo Script với Selenium IDE mình có bài viết hướng dẫn qua các lệnh cú pháp của Selenium đó là Xpath.