Performance Testing - Kiểm thử hiệu năng

Tester, Performances testing, Kiểm thử hiệu năng

Kiểm thử hiệu năng là một quy trình kiểm thử phần mềm được sử dụng để kiểm tra tốc độ, thời gian phản hồi, độ ổn định, độ tin cậy, khả năng mở rộng và sử dụng tài nguyên của một ứng dụng phần mềm trong khối lượng công việc cụ thể. Kiểm thử hiệu năng không phải là loại kiểm thử tập trung vào việc tìm ra lỗi phần mềm hoặc sai sót của hệ thống mà để đo lường dựa theo các mốc và tiêu chuẩn, nhờ đó có thể giúp đội dev phỏng đoán được và loại trừ các rủi ro trong quá trình vận hành hệ thống.

Trọng tâm của kiểm thử hiệu năng là

  • Tốc độ - Xác định xem ứng dụng có phẩn hồi nhanh chóng hay không
  • Khả năng mở rộng - Xác định số người dùng tối đa mà ứng dụng phần mềm có thể xử lý
  • Tính ổn định - Xác định xem ứng dụng có ổn định trong các loại trường hợp khác nhau

Tại sao phải kiểm thử hiệu năng

Kiểm thử hiệu năng được thực hiện để cung cấp thông tin cho các bên liên quan về ứng dụng của họ liên quan đến tốc độ, tính ổn định và khả năng mở rộng. Quan trọng hơn, kiểm thử hiệu năng còn giúp phát hiện ra những gì cần cải thiện trước khi đưa sản phẩm ra thị trường. Nếu không có kiểm thử hiệu năng, phần mềm có thể gặp phải các vấn đề như: chạy chậm trong khi có một số lượng người dùng lớn sử dụng nó đồng thời, tính không nhất quán giữa các hệ điều hành khác nhau và khả năng sử dụng kém.

Kiểm thử hiệu năng sẽ xác định phần mềm của họ có đáp ứng các yêu cầu về tốc độ, khả năng mở rộng và độ ổn định trong khối lượng công việc dự kiến hay không. Các ứng dụng được đưa ra thị trường với chỉ số hiệu năng kém do không tồn tại hoặc kiểm tra hiệu năng kém có khả năng bị mang tiếng xấu và không đạt được mục tiêu khách hàng mong đợi.

Ngoài ra, các ứng dụng quan trọng như chương trình phóng vào không gian hoặc thiết bị y tế cứu sống cần được kiểm tra hiệu năng để đảm bảo rằng chúng chạy trong thời gian dài không bị sai lệch.

Các loại kiểm thử hiệu năng

Load testing ( Kiểm thử tải trọng)

Kiểm thử tải trọng để đánh giá hiệu năng hệ thống khi khối lượng công việc tăng lên (Khối lượng công việc ở đây được hiểu là khối lượng request từ phía user). Hệ thống được giám sát để tính toán thời gian phản hồi và giữ hệ thống ổn định khi khối lượng công việc tăng lên.

Stress testing

Không giống như kiểm thử tải trọng, stress được biết đến như là kiểm thử sự giới hạn của hệ thống - nó được dùng để đo lường hiệu năng của hệ thống khi vượt quá các thông số bình thường. Phần mềm có thể sẽ phải tiếp nhận nhiều người dùng hoặc nhiều luồng truy cập hơn khả năng của nó. Mục đích của stess testing là đo lường mức độ ổn định của phần mềm. Hệ thống gặp trục trặc ở phần nào và làm thế nào để phần mềm có thể khắc phục lỗi đó.

Endurance testing (Kiểm thử độ bền vững)

Kiểm thử độ bền vững - còn được gọi là soak testing - là chỉ số đánh giá phần mềm hoạt động như thế nào với khối lượng công việc thông thường trong một thời gian dài. Mục đích của loại kiểm thử này là để kiểm tra những vấn đề về bộ nhớ của hệ thống như rò rỉ bộ nhớ (memory leak) (Rò rỉ bộ nhớ thường xảy ra khi hệ thống gặp vấn đề trong việc giải phóng bộ nhớ không sử dụng nữa. Rò rỉ bộ nhớ có thể làm suy giảm hiệu năng của hệ thống hoặc khiến hệ thống ngừng hoạt động).

Spike testing

Spike testing là một loại stress testing, nó được đưa ra để đánh giá hiệu năng của phần mềm khi khối lượng công việc tăng lên nhanh chóng và thường xuyên. Khối lượng công việc thường sẽ vượt qua mức bình thường trong thời gian ngắn.

Volume testing (Kiểm thử khối lượng)

Kiểm thử khối lượng xác định phần mềm hoạt động hiệu quả như thế nào với khối lượng lớn dữ liệu. Nó còn được biết đến như flood testing bởi nó kiểm thử hệ thống với một khối lượng lớn dữ liệu.

Scalability testing (Kiểm thử khả năng mở rộng)

Kiểm thử khả năng mở rộng được dùng để xác định xem phần mềm có hoạt động hiệu quả khi khối lượng công việc tăng hay không. Nó được thực hiện bằng cách thêm khối lượng user truy cập hoặc khối lượng data đồng thời theo dõi hoạt động của hệ thống. Khối lượng công việc có thể không thay đổi trong khi các tài nguyên như CPUs hay dung lượng bộ nhớ thay đổi.

Các vấn đề phổ biến về hiệu năng

Hầu hết các vấn đề về hiệu năng đều xoay quanh tốc độ, thời gian phản hồi, thời gian tải và khả năng mở rộng kém. Tốc độ thường là một trong những thuộc tính quan trọng nhất của một ứng dụng. Một ứng dụng chạy chậm sẽ mất đi những người dùng tiềm năng. Kiểm thử hiệu năng được thực hiện để đảm bảo một ứng dụng chạy đủ nhanh để thu hút sự chú ý và quan tâm của người dùng. Hãy xem danh sách các vấn đề phổ biến về hiệu năng phổ biến sau đây và lưu ý tốc độ là một yếu tố phổ biến trong nhiều vấn đề trong số đó:

  1. Thời gian tải lâu - Thời gian tải lâu thường là thời gian ban đầu để ứng dụng khởi động. Điều này thường được giữ ở mức tối thiểu. Trong khi một số ứng dụng không thể tải trong vòng dưới 1 phút, thời gian tải nên được giữ dưới vài giây nếu có thể.
  2. Thời gian phản hồi kém - Thời gian phản hồi là thời gian cần từ khi người dùng nhập dữ liệu vào ứng dụng cho đến khi ứng dụng xuất ra phản hồi cho đầu vào đó. Nói chung, điều này sẽ rất nhanh chóng. Một lần nữa, nếu người dùng phải đợi quá lâu, họ sẽ mất hứng thú.
  3. Khả năng mở rộng kém - Một sản phẩm phần mềm có khả năng mở rộng kém khi nó không thể xử lý số lượng người dùng dự kiến hoặc khi nó không đáp ứng đủ nhiều phạm vi người dùng. Kiểm tra tải nên được thực hiện để chắc chắn rằng ứng dụng có thể xử lý số lượng người dùng dự kiến.
  4. Bottlenecking - Thường xảy ra khi luồng dữ liệu bị ngắt hoặc ngừng vì không đủ bộ nhớ khi khối lượng request tăng lên. Một số bottlenecking hiệu suất phổ biến là:

    • CPU utilization (Khối lượng sử dụng CPU)
    • Memory utilization (Rò rỉ bộ nhớ)
    • Network utilization (Cấu hình mạng kém)
    • Operating System limitations (Giới hạn của hệ thống)
    • Disk usage (Khối lượng sử dụng ổ đĩa) 

Quy trình kiểm thử hiệu năng

Phương pháp được áp dụng để kiểm thử hiệu năng có thể rất khác nhau nhưng mục tiêu của các bài kiểm tra vẫn giống nhau. Nó có thể giúp chứng minh rằng hệ thống phần mềm của bạn đáp ứng một số tiêu chí hiệu năng được xác định trước. Hoặc có thể giúp so sánh hiệu năng của hai hệ thống phần mềm. Nó cũng có thể giúp xác định các phần của hệ thống phần mềm của bạn làm giảm hiệu năng của nó.

Dưới đây là quy trình chung về các thực hiện kiểm thử hiệu năng

Step 1: Xác định môi trường kiểm thử - Xác định phần cứng, phần mềm, cấu hình mạng và công cụ sẵn có cho phép đội kiểm thử thiết kế kịch bản kiểm thử sớm. Nó cũng sẽ giúp xác định những thách thức có thể xảy ra mà người kiểm tra có thể gặp phải trong quá trình kiểm thử hiệu năng. Môi trường kiểm thử hiệu năng có thể bao gồm: 

  • Một phần của production với ít server và cấu hình nhỏ hơn.
  • Một phần của production với ít server và cùng cấu hình.
  • Bản sao của production
  • Production thực tế

Step 2: Xác định tiêu chí chấp nhận hiệu năng - Điều này bao gồm các mục tiêu và ràng buộc đối với thông lượng, thời gian phản hồi và phân bổ tài nguyên. Cũng cần xác định các tiêu chí thành công của dự án ngoài các mục tiêu và ràng buộc này. Người kiểm thử nên được trao quyền để đặt ra các tiêu chí và mục tiêu về hiệu năng bởi vì thông thường các thông số kỹ thuật của dự án sẽ không bao gồm nhiều loại chuẩn hiệu năng. Đôi khi có thể không có gì cả. Khi có thể, tìm một ứng dụng tương tự để so sánh là một cách tốt nhất để đặt mục tiêu hiệu năng.

Step 3: Lập kế hoạch & thiết kế các bài kiểm tra hiệu năng - Xác định mức độ sử dụng có thể khác nhau giữa những người dùng cuối và xác định các tình huống chính để kiểm tra cho tất cả các trường hợp sử dụng có thể xảy ra. Cần mô phỏng nhiều loại người dùng cuối, lập kế hoạch dữ liệu kiểm tra hiệu năng và phác thảo những số liệu sẽ được thu thập.

Step 4: Cấu hình môi trường kiểm thử - Hãy chuẩn bị đủ tất cả các nhân tố trong môi trường kiểm thử và các công cụ cần thiết để theo dõi các nguồn tài nguyên.

Step 5: Triển khai thiết kế kiểm thử của bạn và phát triển các bài kiểm thử

Step 6: Thực hiện các bài kiểm tra - Ngoài việc cho chạy các bài kiểm thử hiệu năng, bạn còn phải giám sát và nắm rõ lượng dữ liệu được sản sinh.

Step 7: Phân tích, điều chỉnh và kiểm tra lại - Củng cố, phân tích và chia sẻ kết quả kiểm tra. Sau đó tinh chỉnh và kiểm tra lại xem có cải thiện hay giảm hiệu năng hay không. Vì các cải tiến thường nhỏ hơn với mỗi lần kiểm tra lại, hãy dừng lại khi CPUs bị tắc nghẽn. Sau đó, bạn có thể có tùy chọn xem xét tăng sức mạnh CPUs.

Các chỉ số kiểm tra hiệu năng: Các thông số được theo dõi

Các thông số cơ bản được giám sát trong quá trình kiểm tra hiệu năng bao gồm:

  • Mức sử dụng bộ sử lý - Lượng thời gian bộ xử lý dành để thực hiện các luồng không hoạt động.
  • Wait time - Còn được biết đến với cái tên thời gian chờ đợi hay thời gian xử lý request trung bình. Thông số này cho các dev biết thời gian nhận được byte đầu tiên sau khi request được gửi.
  • Average load time (Thời gian tải trung bình) - Nếu xét theo góc độ nhìn của người dùng, thời gian trung bình để truyền tải mỗi request là một thông số quan trọng về chất lượng.
  • Reak response time (Thời gian hồi đáp dài nhất) - Đây là thông số về quãng thời gian lâu nhất để hoàn thành một request. Nếu thông số này vượt trội so với thời gian trung bình thì rất có thể xuất hiện lỗi.
  • Error rate (Tỉ lệ lỗi) - Phép tính này cho ra số phần trăm request dẫn đến lỗi so với tổng số request. Các lỗi này thường được xuất hiện khi lượng công việc vượt quá dung lượng bộ nhớ.
  • Concurrent user (Số người dùng đồng thời) - Đây là cách thông dụng nhất để đo lượng công việc, số lượng người dùng đang hoạt động ở bất kỳ thời điểm nào. Thông số này được gọi là load size (kích cỡ công việc).
  • Requests per second (Số request mỗi giây) - Số lượng requst được xử lý.
  • Transactions passed/failed (Số lượng giao diện thành công/thất bại) - Tổng số request thành công hoặc thất bại.
  • Throughput (Thông lượng) - Thông lượng, được tính toán bằng đơn vị kilobyte/s, cho biết số lượng băng thông được sử dụng khi kiểm tra.
  • CPU utilization (Hiệu suất CPU) - Thời gian CPU cần để xử lý request.
  • Memory utilization (Hiệu suất bộ nhớ) - Dung lượng cần có để xử lý request.

Một vài test case ví dụ về kiểm thử hiệu năng

  • Xác minh thời gian phản hồi không quá 4 giây khi 1000 người dùng truy cập trang web đồng thời.
  • Xác minh thời gian phản hồi của ứng dụng đang tải nằm trong phạm vi có kết nối mạng chậm.
  • Kiểm tra số lượng người dùng tối đa mà ứng dụng có thể xử lý trước khi gặp sự cố.
  • Kiểm tra thời gian thực thi cơ sở dữ liệu khi 500 bản ghi được đọc/ ghi đồng thời,
  • Kiểm tra việc sử dụng CPU và bộ nhớ của ứng dụng và máy chủ cơ sở dữ liệu trong điều kiện tải cao điểm
  • Xác minh thời gian phản hồi của ứng dụng trong các điều kiện tải thấp, bình thường, trung bình và nặng.

Trong quá trình thực hiện kiểm thử hiệu năng thực tế, các thuật ngữ mơ hồ như phạm vi chấp nhận được, tải nặng , v.v. được thay thế bằng số cụ thể. Các kỹ sư hiệu năng đặt những con số này theo yêu cầu kinh doanh và bối cảnh kỹ thuật của ứng dụng.

Công cụ kiểm tra hiệu năng

Có rất nhiều công cụ kiểm tra hiệu năng có sẵn trên thị trường. Công cụ bạn chọn để kiểm tra sẽ phụ thuộc vào nhiều yếu tố như loại giao thức được hỗ trợ, chi phí giấy phép, yêu cầu phần cứng, hỗ trợ nền tảng, v.v. Dưới đây là danh sách các công cụ kiểm tra hiệu năng đang được sử dụng phổ biến.

  • LoadNinja - Là công cụ kiểm tra tải dựa trên đám mây này cho phép các nhóm ghi lại và phát lại ngay lập tức các bài kiểm tra tải toàn diện, không có mối tương quan động phức tập & chạy các bài kiểm tra tải này trong các trình duyệt khác nhau. Các nhóm có thể tăng phạm vi kiểm tra & cắt giảm thời gian kiểm tra tải hơn 60%
  • HP LoadRunner - Là công cụ kiểm tra hiệu năng phổ biến nhất trên thị trường hiện nay. Công cụ này có khả năng mô phỏng hàng trăm nghìn người dùng, với giải pháp kiểm tra tải, phát hiện và đưa ra giải pháp cải tiến. LoadRunner có tính năng tạo người dùng ảo mô phỏng hành động của người dùng trực tiếp.
  • Jmeter - Là một trong những công cụ hàng đầu được sử dụng để kiểm tra tải của máy chủ web và ứng dụng.

Chúng ta nên kiểm tra hiệu năng cho ứng dụng nào?

Kiểm tra hiệu năng luôn chỉ được thực hiện cho các hệ thống dựa trên máy chủ - máy khách. Điều này có nghĩa là bất kỳ ứng dụng nào không phải là kiến trúc dựa trên máy chủ - máy khách thì sẽ không được yêu cầu kiểm tra hiệu năng.

Ví dụ: Microsoft Calculator không dựa trên máy khách và không chạy trên nhiều người dùng, do đó nó không phải là ứng cử viên cho kiểm tra hiệu năng.

Sự khác biệt giữa kiểm thử hiệu năng & Kỹ thuật hiệu năng là gì?

Điều quan trọng là phải hiểu sự khác biệt giữa kiểm thử hiệu năng và phát triển hiệu năng. Một sự hiểu biết được chia sẻ dưới đây:

  • Kiểm thử hiệu năng là một kỹ thuật liên quan đến kiểm tra và báo cáo hiệu năng hiện tại của một ứng dụng phần mềm dưới nhiều tham số khác nhau.
  • Phát triển hiệu năng là quá trình phần mềm được kiểm tra và điều chỉnh với mục đích đạt được hiệu năng cần thiết. Quá trình này nhằm mục đích tối ưu hóa đặc điểm hiệu năng ứng dụng quan trọng nhất, tức là trải nghiệm người dùng.

Trong lịch sử, kiểm tra và điều chỉnh là hai lĩnh vực riêng biệt và thường cạnh tranh. Tuy nhiên, trong một vài năm gần đây, một số nhóm người kiểm thử và nhà phát triển đã hợp tác độc lập để tạo ra các nhóm điều chỉnh. Bởi vì các nhóm này đã đạt được thành công đáng kể, khái niệm về kết hợp kiểm thử hiệu năng với điều chỉnh hiệu năng đã bắt đầu trở nên phổ biến và bây giờ chúng tôi gọi nó là phát triển hiệu năng.

Tổng kết

Trong phát triển phần mềm, kiểm thử hiệu năng là cần thiết trước khi tiếp thị bất kỳ sản phẩm phần mềm nào. Nó đảm bảo sự hài lòng của khách hàng và bảo vệ khoản đầu tư trước sự thất bại của sản phẩm. Chi phí kiểm thử hiệu năng thường thấp hơn bù đắp cho việc cải thiện sự hài lòng, lòng trung thành và khả năng giữ chân khách hàng.

https://www.guru99.com/performance-testing.html