Đối với Web Application, khi vào 1 trang web, mặc dù trên giao diện người dùng chúng ta chỉ nhìn thấy vào bằng 1 đường link tuy nhiên bên trong nó thực chất gửi rất nhiều request lên server, request thì yêu cầu server trả về nội dung của link vừa gửi, request yêu cầu trả về hình ảnh, icon, màu sắc… và tất cả những yêu cầu này server sẽ phải làm việc và trả về cho client (ở đây chính là browser mà chúng ta đang vào web) từ đó hiển thị nên một trang web hoàn chỉnh. Các bạn có thể kiểm chứng bằng cách ở trên browser (ví dụ như Chrome, Firefox…) các bạn ấn F12 hoặc vào Options mở Developer Tools, ấn vào tab Network, sau đó vào một đường dẫn sẽ thấy sẽ có rất nhiều request được bắn ra mặc dù chúng ta chỉ vào 1 đường dẫn.
Như vậy, để tạo test script cho Web Application trên JMeter, chúng ta sẽ phải mô phỏng các request được bắn ra như trên để gửi lên server.
Ở đây tôi sẽ hướng dẫn cho các bạn sử dụng tính năng Recording trong JMeter để thực hiện kết hợp với Firefox hoặc Chrome.
- Bước 1: Thực hiện mở JMeter (ở thời điểm bài viết này tôi đang sử dụng JMeter version 5.1.1). Ở trên thanh toolbar của JMeter, các bạn click vào Templates (icons 2 quyển sách nằm ở phía góc trên cùng bên trái của màn hình):
- Bước 2: Sau khi bạn click vào button Templates sẽ có 1 pop-up hiển thị, ở trên select box Select Template các bạn click vào và chọn đến Recording, sau đó click vào button Create.
- Bước 3: Sau khi click vào button Create, sẽ xuất hiện thêm 1 popup nữa để bạn điền các thông tin về trang web chuẩn bị thực hiện tạo test script.
- hostToRecord: là domain của trang web cần viết script
- recordingOutputFile: là tên của file log ghi lại thông tin request, response khi chúng ta thực hiện recording, có thể đặt tên tuỳ ý bạn.
- schemeToRecord: Protocol của trang web thực hiện viết script (HTTP/HTTPS)
Meter sẽ tạo sẵn cho chúng ta 1 template có thể thực hiện recording như bên dưới:
-
Test Plan: Bất cứ test script nào trong JMeter đều được nằm trong Test Plan
-
User Defined Variables: Chứa các biến do người dùng define, trong đây sau khi tạo xong JMeter đã đưa thông tin chúng ta đã điền ở bước 3 vào đây với 2 biến là host và scheme.
- HTTP Request Default: Element này giúp chúng ta đưa các thông tin của đường dẫn như protocol, domain, port của trang web, nếu có thay đổi chỉ cần thay đổi 1 lần ở đây mà không cần phải vào từng request (với điều kiện các request con phải trống). Ở trong template recording của JMeter cũng đã điền cho chúng ta thông tin đã điền ở bước 3.
-
HTTP Cookie Manager: Giúp người dùng mô phỏng tương như như Cookie của Browser.
-
Thread Group: tương tự như là 1 test suite, sẽ control kịch bản test trong JMeter.
-
Recording Controller: là 1 Controller Element của JMeter, default các request sau khi được recording sẽ nằm bên trong Element này.
-
View Result Tree: là 1 Listener chứa kết quả khi chạy các request trong script.
-
HTTP(S) Test Script Recorder: Tác nhân chính để thực hiện recording. Chúng ta sẽ tìm hiểu chi tiết vào element này sau các bạn nhé.
-
View Result Tree nằm bên dưới HTTP(S) Test Script Recorder: là nơi chứa thông tin của các request trong quá trình thực hiện recording.
-
Bước 4: Để bắt đầu thực hiện Recording Web Application, chúng ta click vào HTTP(S) Test Script Recorder, nó sẽ làm nhiệm vụ “bắt” các request được bắn ra từ browser và đẩy vào JMeter. Bên trong element này có rất nhiều thuộc tính nhưng các bạn chỉ cần tập trung vào 1 vài options sau:
-
Port: Mặc định JMeter điền sẵn cho ta port 8888, đây là port để định nghĩa Proxy giữa Browser và JMeter, chỉ đi qua những port này mới được recording và đưa vào JMeter. Các bạn có thể sửa port này, miễn là nó nằm trong dải 4000 < port number < 65535 (lưu ý nên tránh các port khác đã được sử dụng trong hệ điều hành hoặc server sẽ test). Hiện tại tôi sẽ dùng port mặc định là 8888.
-
Click vào tab Request Filtering > URL Patterns to Include: cho phép chúng ta sử dụng Regular Expression để lọc những request cần thiết (ví dụ là chỉ những request đến từ domain jmeter.apache.org mới đưa vào test plan)
Click button Add bên trong URL Pattern to Include để thêm 1 điều kiện lọc
Sau đó điền cú pháp Regular Expression để thực hiện lọc theo điều kiện. Ở đây ví dụ tôi cần lọc chỉ lấy những request đến từ trang jmeter.apache.org thì sẽ điền như sau: redmine.org.* -
URL Patterns to Exclude: Ngược lại với URL Patterns to Include, thuộc tính này để loại bỏ những request bạn không nên đưa vào, nó cũng sử dụng Regular Expression. Mặc định, JMeter đã thêm cho chúng ta 1 vài lựa chọn không cần thiết như không lấy các request css, js, gif, ico… nếu các bạn không cần các thuộc tính như JMeter gợi ý, có thể để default như họ.
- Bước 5: Browser thiết lập để có thể sử dụng JMeter Proxy ở trên.
- Firefox:
- Mở firefox
- Click vào Menu > Preference (Trên MacOS) hoặc Menu > Options (Trên Windows)
- Tiếp tục chọn General > Kéo xuống dưới tìm đến Network Settings > Settings
-Tiếp tục chọn radio button Manual proxy configuration
- Điền localhost vào trong HTTP Proxy
- Điền Port là 8888 (Port này trùng với port chúng ta đã thiết lập ở trên JMeter tại bước 4.
- Tick vào checkbox Use this proxy server for all protocols
- Click OK.
- Bước 6: Sau khi thiết lập xong các bước, các bạn quay về HTTP(S) Test Script Recorder, click vào button Start để bắt đầu recording, sau khi click xong sẽ hiển thị thông báo như bên dưới:
Click OK xong sẽ xuất hiện popup như bên dưới
Tại popup này, mặc định sẽ hiển thị HTTP Sampler settings là Transaction name
Sau khi kết thúc, các bạn click vào button Stop trong popup Recorder để hoàn tất
Click vào View Result Tree bên dưới HTTP(S) Test Script Recorder các bạn sẽ thấy toàn bộ các request được sinh ra trong quá trình bạn thực hiện recording