Hướng Dẫn Tạo Test Script Recording Trên Jmeter

Ở các bài viết trước, chúng tôi đã hướng dẫn các bạn tạo test script các API trên JMeter, các bạn có thể xem các bài config API SOAP ở đây và API REST ở đây. Vậy đối với web app thì làm thế nào? Các bạn hãy đọc bài viết bên dưới nhé.

Trước khi đi vào việc viết script cho Web Application, chúng ta hãy bàn về lý thuyết một chút. Đố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 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 gửi lên server.

Ở đây chúng 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 Chrome.

Bước 1: Thực hiện mở JMeter. Ở 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. Ở đây tôi sẽ dùng trang chủ của jmeter là https://portal.cif-operator.com/ để demo, chúng ta sẽ điền thông tin trang web sẽ thực hiện vào trong popup này.

  • 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)

Tôi sẽ điền thông tin của trang https://kiemthuphanmem.com như bên dưới:


Ngay sau khi click vào button Create, JMeter sẽ tạo sẵn cho chúng ta 1 template có thể thực hiện recording như bên dưới:

Trong template của JMeter Recording đã tạo sẵn có các elements sau:

– 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 tự 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, đây là 1 element đứng giữa JMeter và Browser mà chúng ta thực hiện các thao tác để recording, 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 portal.cif-operator.com 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 portal.cif-operator.com thì sẽ điền như sau: portal.cif-operator.com.* (Các bạn có thể tìm hiểu thêm các cú pháp về Regular Expression trên Internet)
  • 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: Tạm thời chúng ta sẽ để JMeter ở lại và quay qua Browser thiết lập để có thể sử dụng JMeter Proxy ở trên Chrome (Windows):

Mở Chrome
Click Menu > Settings
Search từ khóa: proxy
Change proxy settings…

 

 

Sau khi click, xuất hiện pop-up Internet Properties, click vào tab Connection sau đó click tiếp LAN Settings:

 

Tại phần Proxy Server, tick vào checkbox Use a proxy server for your LAN… và click tiếp vào button Advanced

 

Ở 2 ô HTTP và Secure lần lượt điền thông tin localhost và Port 8888 tương ứng với bước 3 đã làm ở trên sau đó click các button OK để áp dụng thiết lập.

 

Đối với trang HTTPS các bạn sẽ cần phải làm thêm 1 số bước nữa. Khi các bạn thực hiện recording trang HTTPS, hoặc là các bạn vẫn recording được nhưng không có đầy đủ nội dung hiển thị đầy đủ, hoặc là gặp lỗi như bên dưới:

 

Nguyên nhân là do, các trang HTTPS đã được nâng cấp về chế độ bảo mật cực cao, nên khi phát hiện thấy có dấu hiệu theo dõi và bắt requests giao thức này hiển thị cảnh báo nguy hiểm. Để xử lý vấn đề này, chúng ta sẽ thực hiện làm cho giao thức này “tin cậy” những thao tác chúng ta thực hiện là an toàn. Các bạn vẫn nhớ ở bước 5, sau khi click button Start để bắt đầu thực hiện Recording, JMeter đã sinh ra cho chúng ta 1 certificate tên là ApacheJMeterTemporaryRootCA.crt, đây là chứng chỉ chứng minh rằng đây là thao tác an toàn. Vì vậy chúng ta sẽ thực hiện add chứng chỉ này vào Browser dùng để recording, cách thực hiện như sau:

Chrome trên Windows:
Mở Chrome
Click Menu > Settings
Search certificates

 

 

Click vào Manage certificate, lúc này sẽ xuất hiện màn hình Certificate
Click chọn tab Trusted Root Certification Authorities
Click button Import, xuất hiện popup, click tiếp button Next

 

Click button Browse.. sau đó chọn đến file ApacheJMeterTemporaryRootCA.crt và click button Next > Next > Finish và sau đó đồng ý cài đặt Certificate.

 

Sau khi làm xong bước thêm chứng chỉ để HTTPS tin cậy , các bạn có thể thực hiện recording các trang có giao thức HTTPS như bình thường ở trên.

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:

 

 

Đây chỉ là dòng thông báo chứ không phải báo lỗi gì cả, nên các bạn đừng lo nhé. Bên cạnh đó JMeter sẽ tự sinh ra cho chúng ta 1 Certificate có hiệu lực trong 7 ngày tên là ApacheJMeterTemporaryRootCA.crt. Các bạn cứ click vào button OK và tiếp tục recording thôi, sau khi Click OK xong sẽ xuất hiện popup như bên dưới (Từ JMeter version 5.0 bắt đầu có thêm popup này):

 

Tại popup này, mặc định sẽ hiển thị HTTP Sampler settings là Transaction name, đây là controller giúp các bạn có thể “nhóm” các request được sinh ra từ 1 click lại thành 1 Transaction. Ở đây các bạn có thể điền tên của transaction tương ứng với thao tác bạn vừa thực hiện. Ở kịch bản recording này tôi sẽ làm thứ tự các bước sau đây:

  • Vào trang chủ https://kiemthuphanmem.com
  • Click TEMPLATES > Checklist
  • Click API > API Testing với POSTMAN
  • Click PERFORMANCE > Hướng Dẫn Cài Đặt Jmeter
  • Click Serach button > Serach ‘performance’

Các bạn sẽ lần lượt thực hiện, điền tên transaction vào popup Recorder ở trên, sau đó vào Chrome thực hiện các thao tác nghiệp vụ để recording.

Sau khi kết thúc, các bạn click vào button Stop trong popup Recorder để hoàn tất. Và bây giờ các bạn quay về màn hình JMeter, click mũi tên vào Element Recording Controller sẽ thấy các request các bạn thực hiện đã được đưa vào JMeter.

 

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, như hình ảnh dưới sẽ có rất nhiều request và không thấy một vài request này xuất hiện trong test script của chúng ta, vì sao vậy? Ở bước 4 chúng ta đã thực hiện thiết lập chỉ lấy những request có domain là jmeter.apache.org nên những request này sẽ không được đưa vào test script.

 

Như vậy là chúng tôi đã hướng dẫn các bạn tạo test script cho một Web Application bằng cách sử dụng tính năng Recording của JMeter. 

Nguồn: https://www.guru99.com/how-to-use-jmeter-for-http-proxy-server-testing.html

Leave a Reply