Phân biệt Performance Testing, Load Testing và Stress Testing

Admin

12/09/2023

Share

phan biet performance testing load testing va stress testing 486041

1. Kiểm thử hiệu năng

1.1. Kiểm thử hiệu năng là gì

Test hiệu năng là một phương pháp kiểm tra đánh giá hiệu suất của hệ thống trong một tình huống cụ thể.

Sự sử dụng tài nguyên, khả năng mở rộng và độ tin cậy của sản phẩm đã được xác nhận qua bài test này. Bài test này là một phần của kỹ thuật kiểm tra hiệu năng, tập trung vào giải quyết các vấn đề hiệu năng trong thiết kế và kiến trúc của một sản phẩm phần mềm.

Kiểm thử hiệu năng là quá trình kiểm thử hiệu năng của một hệ thống, ứng dụng hoặc sản phẩm để đánh giá hiệu suất và sự ổn định của chúng trong điều kiện tải cao và thời gian thực.

Hình ảnh trên giải thích rõ ràng rằng test hiệu năng (Kiểm thử hiệu năng) là một khái niệm toàn diện, bao gồm cả Load Testing và Stress Testing. Các loại test khác trong test hiệu năng bao gồm Spike testing, Volume testing, Endurance testing và Scalability testing. Do đó, kiểm tra hiệu năng là một thuật ngữ rất rộng.

1.2. Mục đích của Kiểm thử hiệu năng

Test hiệu năng nhằm mục đích thiết lập hành vi tiêu chuẩn của hệ thống. Quá trình kiểm tra hiệu năng yêu cầu đáp ứng một số tiêu chí chuẩn đã được định nghĩa trước đó.

Việc kiểm tra hiệu năng không chỉ nhằm mục đích tìm ra lỗi trong ứng dụng mà còn có nhiệm vụ quan trọng khác là thiết lập điểm chuẩn và tiêu chuẩn cho ứng dụng. Không có khái niệm “đã vượt qua” hay “đã bị lỗi” khi chạy bài test. Điều quan trọng trong kiểm tra hiệu năng là phải thực hiện một cách chính xác và giám sát chặt chẽ hiệu năng của ứng dụng/hệ thống.

Các tiêu chuẩn và điểm chuẩn của ứng dụng nên được đặt dựa trên các thuộc tính như tốc độ, thời gian phản hồi, thông lượng, sử dụng tài nguyên và độ ổn định. Tất cả các thuộc tính này sẽ được kiểm tra trong một bài kiểm tra hiệu năng.

1.3. Ví dụ về Kiểm thử hiệu năng

Ví dụ, bạn có thể kiểm tra hiệu năng mạng của ứng dụng thông qua biểu đồ Tốc độ kết nối và độ trễ. Độ trễ là khoảng thời gian từ khi dữ liệu cần tiếp cận được gửi từ nguồn đến đích. Trang web có kích thước 70kb sẽ tải trong vòng 15 giây trên một kết nối modem 28,8kbps (độ trễ 1000 mili giây), trong khi trang có cùng kích thước sẽ xuất hiện trong 5 giây trên kết nối DSL 256kbps trung bình (độ trễ 100 mili giây). Kết nối T1 1,5mbps (độ trễ 50 mili giây) có thể đạt mục tiêu này trong 1 giây.

Xem nhiều:  Lỗi iPhone không hiển thị thông báo tin nhắn-Khắc phục ngay

Mô hình Yêu cầu – Phản hồi có thể được áp dụng như một ví dụ khác. Để thiết lập tiêu chuẩn, chúng ta xác định khoảng thời gian giữa việc tạo yêu cầu và xác nhận phản hồi phải nằm trong khoảng từ x ms đến y ms, trong đó x và y là các chữ số tiêu chuẩn.

Dự kiến, một bài test hiệu suất thành công sẽ giải quyết hầu hết các vấn đề về hiệu năng, có thể liên quan đến cơ sở dữ liệu, mạng, phần mềm, phần cứng, …

Một ví dụ về Kiểm thử hiệu năng là việc đánh giá hiệu suất của một ứng dụng hoặc hệ thống trong điều kiện tải cao, nhằm xác định khả năng chịu tải và tìm ra những vấn đề về hiệu suất để có thể cải thiện.

2. Kiểm thử tải

2.1. Khái niệm Load Testing là gì?

Kiểm tra tải là quá trình kiểm tra hiệu suất hệ thống bằng cách tăng cường tải lên hệ thống một cách liên tục và đều đặn cho đến khi đạt đến giới hạn ngưỡng. Nó là một phần của kiểm tra hiệu năng.

Có thể dễ dàng kiểm tra tải bằng cách sử dụng các công cụ tự động hóa phù hợp có sẵn trên thị trường. WAPT và LoadRunner là hai công cụ nổi tiếng được sử dụng để hỗ trợ kiểm tra tải. Load Testing cũng được biết đến với các tên gọi như Kiểm tra khối lượng và Kiểm tra độ bền.

Kiểm tra chủ yếu trong hoạt động tập trung vào cơ sở dữ liệu, trong khi đó, kiểm tra độ bền thực hiện bằng cách đặt hệ thống dưới một tải trọng đáng kể trong một thời gian duy trì.

Mục tiêu duy nhất của kiểm tra tải là đặt hệ thống vào công việc lớn nhất có thể để đánh giá độ bền và theo dõi kết quả. Một điều thú vị là đôi khi hệ thống sẽ được đưa vào tình huống không tải để xem hành vi của nó.

Trong quá trình kiểm tra tải, chúng ta sẽ theo dõi các thuộc tính sau: hiệu suất cao nhất, thông lượng của máy chủ, thời gian đáp ứng dưới các mức tải khác nhau (dưới ngưỡng ngắt), tính thỏa đáng của môi trường phần cứng và số lượng ứng dụng người dùng có thể xử lý mà không ảnh hưởng đến hiệu suất.

Load Testing là quá trình kiểm tra hiệu suất của một hệ thống thông qua việc đưa ra các tải trọng và đánh giá khả năng của hệ thống đối với tải trọng đó, nhằm đảm bảo rằng hệ thống hoạt động ổn định và đáp ứng được yêu cầu của người dùng.

2.2. Mục tiêu của Kiểm tra Tải

Các mục tiêu của việc kiểm tra tải bao gồm:

  • Phân tích các lỗi và vấn đề liên quan đến ứng dụng gặp phải như tràn bộ đệm, rò rỉ bộ nhớ và quản lý sai bộ nhớ. Các vấn đề cuối cùng có thể phát sinh từ việc thử nghiệm tải, bao gồm cân bằng tải, vấn đề về băng thông và công suất của hệ thống hiện tại, …
  • Để định rõ giới hạn cao nhất của các thành phần trong ứng dụng như cơ sở dữ liệu, phần cứng, mạng, … Để ứng dụng có khả năng xử lý được tải trọng dự đoán trong tương lai.
  • Để xác định mức độ cam kết dịch vụ cho ứng dụng.
  • Xem nhiều:  T-SQL là gì? Sự khác biệt giữa T-SQL, PL/SQL và SQL

    2.3. Ví dụ về Kiểm tra Tải

    Hãy cùng xem xét việc kiểm tra chức năng email của một ứng dụng, có thể đối mặt với tình trạng tràn ngập từ 1000 người dùng cùng một lúc. Hiện nay, 1000 người dùng có thể sử dụng các chức năng email (đọc, gửi, xóa, chuyển tiếp, trả lời) theo nhiều phương thức khác nhau.

    Nếu chúng ta thực hiện một giao dịch cho mỗi người dùng mỗi giờ, chúng ta sẽ có 1000 giao dịch mỗi giờ. Bằng cách mô phỏng 10 giao dịch cho mỗi người dùng, chúng ta có thể tải thử nghiệm máy chủ email bằng cách thực hiện 10000 giao dịch mỗi giờ.

    Một ví dụ khác về kiểm tra tải được hiển thị trong hình bên dưới:.

    3. Ví dụ về Load Testing là khi một website hoặc ứng dụng web được kiểm tra bằng cách đưa vào một tải trọng cao để xem liệu nó có thể xử lý được số lượng người dùng lớn hay không.

    Hình ảnh trên miêu tả quá trình kiểm tra tải được thực hiện bằng công cụ JMeter. Bài test này nhằm mục đích xác định khả năng xử lý của hệ thống với số lượng người dùng khác nhau. Trong quá trình thử nghiệm, mỗi 30 giây, 100 người dùng được thêm vào cho đến khi số lượng người dùng đạt đến 1000. Mỗi bước thêm người dùng mất 30 giây để hoàn thành và JMeter đợi 30 giây trước khi tiến hành bước tiếp theo.

    Khi đạt 1000 luồng, tất cả chúng sẽ tiếp tục hoạt động trong 300 giây (5 phút) cùng nhau và sau đó dừng 10 luồng sau mỗi 3 giây.

    3. Kiểm tra độ bền

    3.1. Stress Testing là gì?

    Dưới Stress Testing, các hoạt động khác nhau nhằm quá tải các tài nguyên hiện có với các công việc dư thừa khác nhau sẽ được thực hiện trong nỗ lực phá vỡ hệ thống. Thử nghiệm tiêu cực (negative testing), bao gồm loại bỏ các thành phần khỏi hệ thống cũng được thực hiện như một phần của Stress Testing.

    Stress Testing hay còn được gọi là kiểm tra độ mỏi (fatigue testing), là một phương pháp kiểm tra ứng dụng để đánh giá tính ổn định của nó. Phương pháp này sẽ kiểm tra khả năng của ứng dụng bằng cách đưa nó vượt quá giới hạn băng thông của nó.

    Stress Testing là quá trình đánh giá hành vi của một ứng dụng khi vượt quá tải tối đa và trong các điều kiện bình thường.

    Xem nhiều:  Ký tự khoảng trống Dấu cách - Kí hiệu tàn hình FF BUBG

    Stress Testing là một phương pháp đánh giá hiệu suất và ổn định của một hệ thống hoặc ứng dụng trong điều kiện tải cao, nhằm xác định khả năng chịu đựng và giới hạn của hệ thống trong các tình huống căng thẳng.

    Mục tiêu của Stress Testing là đánh giá sự cố trong hệ thống và theo dõi quá trình phục hồi của nó. Tuy nhiên, thách thức ở đây là thiết lập một môi trường kiểm soát trước khi tiến hành thử nghiệm, nhằm hiểu rõ hành vi của hệ thống trong các tình huống khó lường.

    Các vấn đề cuối cùng mà Stress Testing có thể gây ra có thể liên quan đến vấn đề đồng bộ hóa, rò rỉ bộ nhớ, …

    Nếu Stress Testing kiểm tra khả năng xử lý của hệ thống trong tình huống có sự tăng đột ngột về số lượng người dùng, thì nó được gọi là bài kiểm tra tăng đột biến.

    Nếu Stress Testing được sử dụng để đánh giá sự ổn định của hệ thống trong một khoảng thời gian bằng cách tăng số lượng người dùng một cách chậm rãi, thì nó có thể được gọi là bài test ngâm.

    3.2. Mục tiêu của Stress Testing

    Stress Testing nhằm phân tích các báo cáo sau sự cố để xác định hành vi của ứng dụng sau khi gặp lỗi.

    Thách thức lớn nhất trong việc đảm bảo an toàn dữ liệu nhạy cảm sau sự cố là đảm bảo hệ thống không bị ảnh hưởng. Trong một bài stress testing thành công, hệ thống sẽ tự động phục hồi và trở về trạng thái bình thường ngay cả sau sự cố nghiêm trọng nhất.

    3.3. Ví dụ về Kiểm tra tải căng thẳng

    Một cách để stress test trình xử lý văn bản Writer 1.1.0 của OpenOffice.Org là tải nó với các ký tự thừa. Chúng ta có thể làm điều này bằng cách liên tục paste (dán) một dòng dữ liệu cho đến khi nó đạt đến giới hạn ngưỡng của nó, tức là 65.535 ký tự. Khi đạt đến giới hạn này, trình xử lý sẽ từ chối chấp nhận thêm dữ liệu.

    Kết quả kiểm tra căng thẳng trên phiên bản Writer 1.1.0 cho thấy rằng ứng dụng không bị sập dưới áp lực và xử lý tình huống một cách nhẹ nhàng, đảm bảo hoạt động chính xác ngay cả trong các điều kiện căng thẳng nghiêm ngặt.

    Dưới đây là một ví dụ khác về stress test, mô tả việc tăng đột biến bằng cách đột ngột tăng số lượng người dùng lên 7000.

    Một ví dụ về Stress Testing là việc kiểm tra khả năng chịu tải của một hệ thống hoặc ứng dụng trong điều kiện tải cao và áp lực lớn, nhằm đánh giá tính ổn định và hiệu suất của nó.

    4. Những câu hỏi thường được đặt

    Có nhiều cuộc thảo luận đã diễn ra về Kiểm thử hiệu năng, Stress Testing và Load Testing. Bây giờ, hãy xem xét một số câu hỏi phổ biến mà các tester thường tìm kiếm câu trả lời.

    Xem nhiều:  HẾT PIN TIẾNG ANH LÀ GÌ? CÁCH XỬ LÝ KHI ĐIỆN THOẠI SẮP HẾT PIN

    Câu hỏi #1) Kiểm tra tải và kiểm tra hiệu suất có tương đương không?

    Trả lời: Câu trả lời cho việc này là “Không”. Chúng không tương tự nhau.

    Hiện tại, bạn đã nắm rõ sự khác biệt giữa kiểm tra hiệu năng và kiểm tra tải. Dưới đây là một bảng tóm tắt, giúp bạn có cái nhìn tổng quan về các mục tiêu, thuộc tính phạm vi và các vấn đề cần tìm hiểu trong quá trình nghiên cứu của cả hai loại kiểm tra.

    Câu hỏi #2: Có phải việc thực hiện Kiểm tra căng thẳng và Kiểm tra tải cùng một lúc là không hợp lý?

    Đây cũng là một câu hỏi phổ biến trong nhiều cuộc phỏng vấn test phần mềm và kiểm tra chứng chỉ vì có không hợp lý khi thực hiện kiểm tra căng thẳng và kiểm tra tải một cách song song hay không? Câu trả lời cho điều này là “Không”. Không phải là không hợp lý khi thực hiện stress testing cùng một lúc khi bạn đang thực hiện kiểm tra tải.

    Không có bài kiểm tra nào là không cần thiết. Với vai trò là một tester, nhiệm vụ của bạn là tìm ra các vấn đề tồn tại. Tuy nhiên, trong thực tế của việc kiểm thử phần mềm, có thể không thể áp dụng và khắc phục được mọi vấn đề bạn phát hiện trong tình huống này.

    Câu hỏi #3) Kiểm tra phục hồi (Recovery Testing) có phải là một phần của kiểm tra hiệu năng (Kiểm thử hiệu năng) không?

    Có thể kiểm tra phục hồi bằng cách đánh giá hiệu năng và đôi khi cũng có thể thực hiện kiểm tra tải. Trong việc kiểm tra khôi phục, ứng dụng được đánh giá về khả năng phục hồi từ các lỗi, sự cố, lỗi phần cứng và các vấn đề tương tự.

    Trong quá trình này, phần mềm sẽ được đẩy vào tình trạng thất bại và sau đó được kiểm tra xem nó có thể khôi phục lại một cách chính xác hay không. Ví dụ, khi một ứng dụng đang chạy, hệ thống bị khởi động lại đột ngột và sau đó kiểm tra tính toàn vẹn dữ liệu của ứng dụng.

    Câu hỏi #4) Kiểm tra hiệu suất có yêu cầu có kiến thức lập trình không?

    Kiểm thử hiệu năng không đòi hỏi kiến thức lập trình cao cấp. Tuy nhiên, kiến thức cơ bản về lập trình sẽ là một lợi thế bổ sung.

    Xem nhiều:  Mã Swift là gì? Danh sách Swift Code các ngân hàng tại Việt Nam

    Nếu bạn đang sử dụng JMeter, thì nên hiểu rõ các nguyên tắc cơ bản của Java để có thể gỡ lỗi và viết kịch bản riêng khi cần thiết.

    Câu hỏi #5) Bài kiểm tra tăng đột biến (Spike Testing) trong kiểm tra hiệu năng là gì?

    Trong quá trình thử nghiệm tăng đột biến (Spike Testing), tải được tăng hoặc giảm đột ngột bởi một số lượng lớn người dùng và sau đó hành vi của hệ thống được quan sát. Mục đích chính của Spike Testing là kiểm tra khả năng xử lý các thay đổi đột ngột về tải của hệ thống.


    5. Sự khác biệt giữa Kiểm thử hiệu năng, Load Testing và Stress Testing

    Trong bảng dưới đây, chúng ta sẽ xem sự khác biệt chính giữa kiểm tra tải (Load Testing), kiểm tra căng thẳng, sức chịu (Stress Testing) và kiểm tra hiệu năng (Kiểm thử hiệu năng).

    Kiểm thử hiệu năng Load testing Stress Testing
    Miền Bao hàm của Load testing và Stress testing Nằm trong performance testing Nằm trong performance testing
    Phạm vi Phạm vi rất rộng. Bao gồm – Kiểm tra tải, Kiểm tra căng thẳng, kiểm tra năng lực, kiểm tra khối lượng, kiểm tra độ bền, kiểm tra tăng đột biến, kiểm tra khả năng mở rộng và kiểm tra độ tin cậy, … Phạm vi hẹp hơn so với thử nghiệm hiệu năng. Bao gồm kiểm tra khối lượng và kiểm tra độ bền. Phạm vi hẹp hơn so với thử nghiệm hiệu năng. Bao gồm kiểm tra ngâm và kiểm tra tăng đột biến.
    Mục đích chính Để thiết lập điểm chuẩn và tiêu chuẩn cho ứng dụng. Để xác định giới hạn trên của hệ thống, hãy đặt SLA của ứng dụng và xem cách hệ thống xử lý khối lượng tải nặng. Để xác định cách hệ thống hoạt động dưới tải trọng lớn và cách nó phục hồi từ thất bại. Về cơ bản, để chuẩn bị ứng dụng của bạn cho lưu lượng truy cập tăng đột biến.
    Giới hạn tải Cả hai – cả ngưỡng dưới và trên ngưỡng nghỉ ngơi.ngưỡng trên của điểm break. Từ dưới đến điểm break. Trên điểm break.
    Những thuộc tính được thực thi Sử dụng tài nguyên, độ tin cậy, khả năng mở rộng, thời gian đáp ứng, thông lượng, tốc độ, … Hiệu suất cao nhất, thông lượng máy chủ, thời gian đáp ứng dưới các mức tải khác nhau (dưới ngưỡng ngắt), tính thỏa đáng của môi trường H/W, số lượng ứng dụng người dùng có thể xử lý, yêu cầu cân bằng tải, … Tính ổn định vượt quá dung lượng băng thông, thời gian đáp ứng (trên ngưỡng ngắt), …
    Những vấn đề được chỉ ra sau bài test này Tất cả các lỗi về hiệu năng bao gồm thời gian chạy, phạm vi để tối ưu hóa, các vấn đề liên quan đến tốc độ, độ trễ, thông lượng, … Về cơ bản – mọi thứ liên quan đến hiệu năng! Vấn đề cân bằng tải, vấn đề băng thông, vấn đề dung lượng hệ thống, thời gian đáp ứng kém, vấn đề thông lượng, … Các lỗ hổng bảo mật với tình trạng quá tải, vấn đề dò ghỉ dữ liệu ở tình trạng quá tải, chậm, rò rỉ bộ nhớ, …
    Xem nhiều:  P/S là gì? P/S thường dùng khi nào?

    6. Sự khác biệt giữa Load Testing, Stress Testing và Volume Testing

    Cho đến thời điểm hiện tại, chúng ta đã nắm được về load testing và stress testing cùng với sự khác biệt giữa hai loại kiểm tra này. Bây giờ, hãy tìm hiểu về volume testing là gì và cách nó khác biệt so với load testing và stress testing. Volume testing, cũng được gọi là kiểm tra khối lượng, là một dạng kiểm tra hiệu năng tập trung chủ yếu vào cơ sở dữ liệu.

    Trong quá trình kiểm tra khối lượng, chúng ta xem xét cách hệ thống hoạt động với một khối lượng dữ liệu cụ thể. Điều này gồm việc đảm bảo rằng cơ sở dữ liệu được lưu trữ với dung lượng tối đa và hiệu suất của chúng, bao gồm thời gian phản hồi và thông lượng máy chủ, được theo dõi.

    Để dễ hiểu, sự khác biệt giữa kiểm tra tải, căng thẳng và trọng lượng được hiển thị dưới đây:.

    Volume testing Load testing Stress testing
    Một khối lượng lớn của dữ liệu. Một số lượng lớn của người dùng. Quá nhiều dữ liệu, quá nhiều người dùng dẫn đến hệ thống quá tải.

    7. Tổng kết

    Trong hướng dẫn này, chúng ta đã được làm quen và nắm bắt thông qua các ví dụ về cách thực hiện kiểm tra hiệu năng, kiểm tra tải và kiểm tra căng thẳng khác nhau cũng như phạm vi mà mỗi loại test bao gồm.

    Chúng ta đã có cái nhìn tổng quan về nhiều danh mục kiểm tra hiệu năng như kiểm tra tăng đột biến, kiểm tra khôi phục, kiểm tra khối lượng, … Và hiểu được sự khác biệt giữa mỗi loại này.

    Tài liệu tham chiếu

  • Https://www.Softwaretestinghelp.Com/what-is-performance-testing-load-testing-stress-testing/.