Kiểm tra tải API với Locust

Kiểm tra tải API với Locust

Kiểm tra tải API với Locust: Giới thiệu

Có thể bạn đã từng ở trong tình huống này: bạn viết mã để làm một việc gì đó, ví dụ như một điểm cuối. Bạn kiểm tra điểm cuối của mình bằng Postman hoặc Insomnia và mọi thứ đều hoạt động tốt. Bạn chuyển điểm cuối cho nhà phát triển phía máy khách, người sau đó sẽ sử dụng API và triển khai ứng dụng. Nhưng sau đó, API không thành công khi người dùng sử dụng ứng dụng.

Đây có thể là một tình huống cực kỳ khó chịu, chưa kể đến việc tốn kém cho một doanh nghiệp. Đó là lý do tại sao các nhà phát triển phần mềm thực hiện nhiều thử nghiệm trên hệ thống phần mềm để đảm bảo chúng hoạt động như mong đợi. API không khác nhau. Trước khi triển khai, bạn nên thực hiện ít nhất các bài kiểm tra hiệu suất và kiểm tra bảo mật.

Kiểm thử hiệu năng có thể được nhóm thành kiểm thử chức năng và kiểm thử tải. Các bài kiểm tra chức năng là những gì bạn thường sử dụng Postman hoặc Insomnia. Họ đảm bảo rằng API của bạn hoạt động như bạn mong đợi. Mặt khác, kiểm tra tải quan tâm nhiều hơn đến cách API của bạn hoạt động với mức sử dụng trong thế giới thực và tải tối đa, và đó là nội dung của bài viết này. Hãy xem xét các bài kiểm tra tải chi tiết hơn.

Thử nghiệm tải API là gì?

Thử nghiệm tải API là một loại thử nghiệm mà các nhà phát triển sử dụng để mô phỏng tải bình thường và tải cao nhất trên các điểm cuối. Loại thử nghiệm này cho phép các nhà phát triển đánh giá hiệu suất trong thế giới thực của API trước khi triển khai. Nó giúp họ xác định công suất hoạt động tối đa của một hệ thống, các điểm tắc nghẽn nếu có và sự suy giảm hiệu suất. Kiểm tra tải API thường được thực hiện bằng cách tạo người dùng ảo và sau đó sử dụng họ để kiểm tra đồng thời chức năng của API. 

Kiểm tra tải API đo lường các chỉ số như thời gian phản hồi, người dùng đồng thời, tốc độ thông lượng, mức sử dụng tài nguyên, Thời gian trung bình giữa các lần thất bại (MTBF), Thời gian trung bình dẫn đến thất bại (MTTF), v.v. Tất cả các chỉ số này có thể được sử dụng để xác định API đang hoạt động tốt như thế nào.

Các loại thử tải

Có một số loại kiểm thử tải, mỗi loại có các trường hợp sử dụng riêng. Chúng ta hãy nhìn vào một số trong số họ.

Tải thử nghiệm: Đây là hình thức cơ bản của thử tải. Nó được sử dụng để đánh giá hiệu suất của hệ thống (trong trường hợp này là API) dưới tải bình thường và tải cao điểm dự kiến.

Bài kiểm tra về áp lực: Điều này được sử dụng để đánh giá hiệu suất của một hệ thống dưới tải rất nặng. Mục tiêu của thử nghiệm này là để xem liệu một hệ thống có phục hồi sau sự cố hay không và mất bao lâu để làm như vậy. Tải thường được tăng dần lên từ từ cho đến khi vượt quá khả năng của hệ thống.

Thử nghiệm tăng đột biến: Điều này hơi giống với thử nghiệm căng thẳng, ngoại trừ tải nặng được áp dụng đột ngột, trái ngược với việc tăng dần lên. Loại thử nghiệm này cho biết điều gì sẽ xảy ra khi số lượng người dùng hoặc khách truy cập trung bình của bạn tăng đột biến hoặc khi có một cuộc tấn công DDOS vào hệ thống của bạn.

Kiểm tra ngâm: Bài kiểm tra này không giống như những bài kiểm tra khác ở trên. Nó đặt hệ thống của bạn dưới 80% (hoặc khoảng đó) tải bình thường và để hệ thống chạy trong một thời gian dài, chẳng hạn như 12 đến 14 giờ. Loại thử nghiệm này xác định mức độ đáng tin cậy của một hệ thống theo thời gian.

Tải Kiểm tra API của bạn với Locust

Các nhà phát triển có quyền truy cập vào nhiều tùy chọn để kiểm tra tải API của họ. Một số công cụ kiểm tra tải phổ biến là Gatling, JMeter và Locust. Chúng tôi sẽ tập trung vào Locust trong bài viết này.

Locust là công cụ kiểm tra tải mã nguồn mở dựa trên python được các công ty hàng đầu như Google, Microsoft và Riot Games sử dụng để kiểm tra API của họ. Trong bài viết này, chúng tôi sẽ trình bày cách tải thử nghiệm một API. 

Đối với hướng dẫn này, tôi sẽ tạo một API đơn giản với Flask. Bạn có thể làm theo cùng tôi hoặc chỉ cần tạo API của mình bằng Node hoặc bất kỳ khuôn khổ nào mà bạn cảm thấy thoải mái.

Yêu cầu

Python 3

Thiết lập & Cài đặt

Trước tiên, bạn cần thiết lập một môi trường ảo trên PC để không làm xáo trộn môi trường Python chung của mình. Để làm điều đó, hãy chạy các lệnh sau. Lưu ý rằng các lệnh này áp dụng cho thiết bị đầu cuối Windows.

dự án $ mkdir

$ cd /d đường dẫn\đến\dự án

$ trăn -m venv venv

$ venv\Scripts\kích hoạt

 

Đầu tiên, chúng tôi tạo ra một dự án danh mục. Sau đó, chúng tôi đã thay đổi thư mục hiện tại của mình thành dự án. Sau đó, chúng tôi đã tạo và kích hoạt một môi trường ảo cho Python bên trong thư mục đó. 

Bây giờ, chúng ta sẽ chuyển sang cài đặt bình(chúng tôi sẽ sử dụng nó để tạo các điểm cuối được kiểm tra tải) và giống châu chấu chính nó. 

 

Để cài đặt Flask, hãy chạy. Hãy chắc chắn rằng bạn đang ở trong dự án nơi bạn đã tạo một môi trường ảo.

$ pip cài đặt bình

 

Để cài đặt Locust, hãy chạy

$ pip cài đặt châu chấu

 

Khi đã xong, hãy gõ các lệnh sau. Hãy chắc chắn rằng bạn đang ở trong dự án thư mục khi bạn làm điều này.

$ sao chép nul __init__.py

ứng dụng $ mkdir

$ sao chép ứng dụng nul\app.py

$ sao chép ứng dụng nul\__init__.py

 

Lệnh này tạo một số tệp mà chúng tôi sẽ sử dụng để tạo các điểm cuối của mình bằng Flask. Nhân tiện, bạn cũng có thể tạo các tệp này bằng trình khám phá tệp của mình. Nhưng niềm vui trong đó là gì? Khi bạn đã hoàn thành việc đó, hãy sao chép mã bên dưới vào ứng dụng

từ bình nhập Flask, jsonify, yêu cầu

ứng dụng = Bình (__ tên__)

xe_models = [

  { 'thương hiệu': 'Tesla', 'model': 'Model S' }

]

 

máy bay_mô hình = [

  { 'thương hiệu': 'Boeing', 'model': '747' }

]

 

@app.route('/cars')

chắc chắn get_cars():

  trả lại jsonify (car_models)

@app.route('/planes')

chắc chắn get_planes():

  trả lại jsonify (plane_models)

nếu __name__ == '__main__':

    app.run (gỡ lỗi = True)  

 

Đoạn mã trên chứa một phương thức get_cars được sử dụng để lấy danh sách các thương hiệu xe hơi và kiểu dáng của chúng, và get_planes được sử dụng để lấy danh sách các nhãn hiệu máy bay và mẫu mã của chúng. Để chúng tôi tải thử nghiệm điểm cuối này, chúng tôi cần chạy app.py. Để làm điều đó chạy lệnh dưới đây.

$ đường dẫn python\đến\app.py

Khi bạn chạy nó, bạn sẽ thấy một cái gì đó như thế này:

Kiểm tra tải API 1

Nếu bạn sao chép URL từ thiết bị đầu cuối và gõ xe ô tô or máy bay sau /, bạn sẽ có thể xem dữ liệu ở đó. Tuy nhiên, mục tiêu của chúng tôi là kiểm tra điểm cuối bằng locust chứ không phải bằng trình duyệt. Vì vậy, chúng ta hãy làm điều đó. Chạy lệnh sau trong thư mục gốc của bạn dự án thư mục.

 

$ sao chép nul locust_test.py

 

Thao tác này tạo tệp 'locust_test.py' trong thư mục gốc của bạn dự án danh mục. Khi bạn đã hoàn thành việc đó, hãy mở tệp và dán mã bên dưới vào. Chúng tôi sẽ giải thích nó ngay sau đây.

 

thời gian nhập khẩu

từ châu chấu nhập HttpUser, tác vụ, giữa

 

lớp Hành vi người dùng (HttpUser):

    wait_time = giữa (5, 10)

 

    @nhiệm vụ

    def get_cars(bản thân):

        self.client.get('/cars')

    

    @nhiệm vụ

    def get_planes(bản thân):

        self.client.get('/planes')

 

Đây là một ví dụ cơ bản về việc sử dụng Locust để tải thử nghiệm một API. Đầu tiên, chúng ta tạo một lớp hành vi người dùng, có thể được đặt bất kỳ tên thích hợp nào nhưng phải mở rộng Người dùng http. Người dùng http là lớp đảm nhiệm việc khởi tạo nhiều người dùng ảo để thực hiện các tác vụ mà chúng tôi chỉ định trong hành vi người dùng lớp học. 

Một nhiệm vụ được chỉ định bằng cách trang trí một phương pháp với @nhiệm vụ người trang trí. Chúng tôi cũng có một chức năng gọi là giữa() cho phép chúng tôi chỉ định một phạm vi giây để đợi trước khi thực hiện tác vụ tiếp theo. Bạn có thể thấy rằng chúng tôi đã chỉ định phạm vi từ 5 đến 10 giây cho điều đó trong mã của chúng tôi. 

Để chạy mã, hãy đảm bảo rằng bạn vẫn đang ở trong môi trường ảo của mình. Nếu cái bạn đã tạo đang được sử dụng bởi máy chủ phục vụ API, hãy mở một thiết bị đầu cuối mới, thay đổi thư mục của bạn thành dự án thư mục và kích hoạt môi trường ảo mà bạn đã tạo. Bạn có thể tìm thấy lệnh kích hoạt môi trường ảo ở trên. Bây giờ, nhập lệnh dưới đây vào thiết bị đầu cuối của bạn.

 

$ châu chấu -f locust_test.py

 

Bạn sẽ thấy một cái gì đó như thế này:

Kiểm tra tải API 2

Theo mặc định, giao diện web của locust được đặt tại http://localhost/8089. Nếu bạn truy cập trang web, bạn sẽ thấy một giao diện như thế này:

Kiểm tra tải API 3

Từ giao diện, chúng tôi có thể chỉ định số lượng người dùng, tỷ lệ sinh sản (người dùng được tạo mỗi giây) và Máy chủ lưu trữ. Bạn có thể lấy địa chỉ máy chủ của mình bằng cách kiểm tra thiết bị đầu cuối nơi máy chủ đang chạy. Trong trường hợp của chúng tôi, nó ở cổng 5000. Khi bạn nhấp vào Bắt đầu bầy đàn, bạn sẽ thấy giao diện bên dưới.

Kiểm tra tải API 4

Điều này cho bạn thấy các số liệu hữu ích khác nhau, chẳng hạn như số lượng yêu cầu không thành công, thời gian trung bình cho một yêu cầu, thời gian tối thiểu cho một yêu cầu, số yêu cầu mỗi giây, v.v. Khi bạn hài lòng với những gì mình thấy, bạn có thể nhấp vào nút dừng. 


Bên cạnh những Thống kê học tab, có một Bảng xếp hạng tab hiển thị nhiều hơn thông tin dưới dạng đồ thị, như hình bên dưới.

Có một tổng số yêu cầu mỗi biểu đồ thứ hai, biểu đồ thời gian đáp ứng,biểu đồ số lượng người dùng, tất cả âm mưu chống lại thời gian. Bằng cách sử dụng biểu đồ, bạn có thể xác định số lượng người dùng được chấp nhận với thời gian phản hồi cố định hoặc bạn có thể quan sát biểu đồ của mình để biết thời gian phản hồi không đổi mặc dù số lượng người dùng ngày càng tăng và các thông tin chi tiết khác tương tự. Nếu bạn muốn chia sẻ những số liệu thống kê với người khác, bạn có thể tải báo cáo xuống từ Tải dữ liệu tab.

Để kết luận...

Tải thử nghiệm API của bạn là một hoạt động quan trọng trong quá trình phát triển của bạn, vì vậy hãy đảm bảo rằng nó được kết hợp trong chu kỳ thiết kế của bạn. Nhân tiện, bạn cũng có thể thực hiện các loại thử nghiệm tải khác bằng cách thay đổi các giá trị cho số lượng người dùng và tỷ lệ xuất hiện. 

Nếu bạn muốn thực hiện kiểm tra mức tăng đột biến, hãy chỉ định một giá trị lớn (giả sử là 2000) cho số lượng người dùng và sau đó là một giá trị lớn tương đương cho tỷ lệ xuất hiện của bạn (ví dụ: 500). Điều này có nghĩa là trong 4 giây, bạn sẽ có tất cả 2000 người dùng được tạo và truy cập các điểm cuối của mình. Một bài kiểm tra căng thẳng sẽ tương tự, nhưng với giá trị tỷ lệ sinh sản thấp hơn nhiều. Để tìm hiểu tất cả những gì bạn có thể làm, hãy xem Locust tài liệu hướng dẫn

Vượt qua kiểm duyệt TOR

Vượt qua kiểm duyệt Internet với TOR

Vượt qua kiểm duyệt Internet bằng giới thiệu TOR Trong một thế giới nơi việc truy cập thông tin ngày càng được quản lý chặt chẽ, các công cụ như mạng Tor đã trở nên quan trọng đối với

Đọc thêm "