HomeOur Team
[Performance testing với Jmeter - Phần 1] Performance testing overview

[Performance testing với Jmeter - Phần 1] Performance testing overview

By phuong.nguyen
Published in Testing
October 22, 2022
4 min read

Hiện nay, khi mà các sản phẩm phần mềm ra đời ngày càng nhiều, thì tính năng của sản phẩm không còn là mối quan tâm duy nhất nữa. Người ta còn quan tâm đến nhiều khía cạnh khác như performance (hiệu năng), security (bảo mật), usability (tính khả dụng),… Giữa hàng loạt sản phẩm có tính năng tương tự nhau, sản phẩm nào đẹp hơn, dễ sử dụng hơn, nhanh hơn, an toàn hơn,.. thì sẽ thu hút được nhiều người dùng. Để đảm bảo performance cho các hệ thống, tester cần thực hiện performance testing (kiểm thử hiệu năng). Vậy performance testing là gì, thực hiện như thế nào?

1. Performance testing là gì?

Performance testing là một test type, thuộc non-functional testing. image Performance testing được thực hiện nhằm xác định mức độ đáp ứng về tốc độ, độ ổn định, độ tin cậy và khả năng mở rộng của hệ thống. Mục tiêu của performance testing không phải tìm ra lỗi, cũng không có khái niệm Pass/Fail. Performance testing tập trung vào việc tìm ra các vấn đề liên quan đến hiệu năng (bottleneck) của hệ thống, từ đó có các phương án để cải thiện. Chỉ thực hiện performance testing sau khi đã hoàn thành functional testing, tức là các chức năng của hệ thống đã hoạt động đúng như mong đợi. Hai thông số cần quan tâm nhất khi thực hiện performance testing là response time và throughput.

  • Response time: Thời gian phản hồi. Response time càng thấp càng tốt.
  • Throughput: Số request mà server có thể xử lý được trong một đơn vị thời gian (request/s, rps). Throughput càng cao càng tốt.

2. Performance test types

Performance testing gồm 6 types:

  • Load testing
  • Stress testing
  • Spike testing
  • Endurance testing (Soak testing)
  • Scalability testing
  • Volume testing Screenshot_40.png

a. Load testing

Load testing được thực hiện để đánh giá hành vi của hệ thống khi tăng tải (số người dùng đồng thời - concurrent users/CCU, số lượng transaction/request/…), để xác định mức tải tối đa (maximum load/ngưỡng) mà hệ thống có thể xử lý. image Tip để tìm ra ngưỡng nhanh nhất là qua mỗi lần test thì tăng gấp đôi số lượng request đồng thời đẩy vào hệ thống. Ví dụ:

  • Lần 1 đẩy 3000 request đồng thời
  • Lần 2 đẩy 6000 request đồng thời
  • Lần 3 đẩy 12000 request đồng thời

Nếu ở lần 3 mà hệ thống bị overload thì lần 4 sẽ giảm một nửa số lượng request đã tăng ở lần 3, tức là:

  • Lần 4 đẩy 9000 request đồng thời

b. Stress testing

Stress testing được thực hiện để đánh giá hành vi của hệ thống khi tải vượt ngưỡng, tìm ra điểm chết và đánh giá khả năng phục hồi lại của hệ thống. image

c. Spike testing

Spike testing được thực hiện để đánh giá hành vi của hệ thống khi tải tăng cao đột ngột trong thời gian ngắn. Một số trường hợp trong thực tế cần thực hiện spike testing:

  • Các sàn thương mại điện tử như Shopee, Lazada,.. có nhiều đợt flash sale lớn vào các ngày lễ, ngày đặc biệt.
  • Hệ thống đăng ký tín chỉ cho sinh viên các trường đại học.
  • Hệ thống bán vé bóng đá, vé concert,…
  • Hệ thống phát trực tiếp, livestream,.. image

d. Endurance testing (Soak testing)

Endurance testing được thực hiện trong thời gian dài để đánh giá việc sử dụng tài nguyên (memory) của hệ thống. Thông thường, sẽ chạy với 70-80% ngưỡng của hệ thống trong thời gian nhiều hơn 8h. image

e. Scalability testing

Scalability testing được thực hiện để đánh giá khả năng mở rộng của hệ thống. Khả năng mở rộng của hệ thống là khả năng hệ thống đáp ứng được việc tăng tải theo lịch trình. Đánh giá khả năng mở rộng của hệ thống là xác định thời điểm hệ thống không thể mở rộng được nữa và nguyên nhân, để có các phương án cải thiện, nâng cấp. Ví dụ: Hệ thống X có thể đáp ứng tối đa cho 3000 users. Theo lịch trình dự kiến:

  • Năm đầu tiên, số lượng user là 1000
  • Năm thứ 2, số lượng user là 2000
  • Năm thứ 3, số lượng user là 4000 -> hệ thống bị overload

Vậy thì cần có phương án cải thiện hệ thống trước năm thứ 3. Nếu tối ưu phần mềm vẫn không thể đáp ứng được thì cần nâng cấp server, nhưng nâng cấp như thế nào để hiệu quả và tối ưu chi phí? Có hai loại nâng cấp (scaling):

  • Vertical scalability (scaling up): Nâng cấp server (memory, CPU, disk,…)
  • Horizontal scalability (scaling out): Thêm server

Về bản chất thì đây vẫn là Load testing, xác định ngưỡng của hệ thống hiện tại và hệ thống sau khi tối ưu phần mềm, nâng cấp server.

f. Volume testing

Volume testing được thực hiện với lượng data trong database rất lớn để đánh giá tốc độ xử lý, load data của hệ thống, tìm ra điểm có thể xảy ra sự cố. Ví dụ:

  • Table A có 100 records, 1000 user thực hiện search đồng thời thì hệ thống vẫn hoạt động bình thường.
  • Khi tăng lên 1 triệu records, 1000 user thực hiện search đồng thời thì hệ thống bị overload.

3. Quy trình thực hiện performance testing

Screen Shot 2022-10-27 at 01.22.56.png

  • Identify Test Environment: Xác định môi trường thực hiện test (dev, staging, product), nắm rõ được cấu hình server, version phần mềm, network,…
  • Identify Performance Acceptance Criteria: Xác định mục tiêu performance tối thiểu mà hệ thống cần đạt được (response time, throughput,…)
  • Plan & Design Test: Lập kế hoạch test, thực hiện test types nào, khi nào thực hiện test, test trong bao lâu, rủi ro có thể gặp phải,… Thông thường sẽ đưa các luồng chính của hệ thống vào để test.
  • Configure Test Environment: Thông thường sẽ follow config của đội dev, tester chỉ verify lại các tính năng của hệ thống chạy đúng như mong đợi.
  • Implement Test Design: Thực hiện viết test script theo test design.
  • Execute Test: Thực hiện chạy test script.
  • Analysis & Report: Phân tích các thông số xem hệ thống có đáp ứng được mong đợi không, tính năng nào không đáp ứng được. Báo cáo cho các bên liên quan để có phương án cải thiện.

Vậy là chúng ta đã có cái nhìn tổng quan về performance testing. Phần tiếp theo sẽ bắt đầu trải nghiệm performance testing với tool Jmeter nhé =))


Tags

Performance testing

Share

phuong.nguyen

phuong.nguyen

Tester

Expertise

Related Posts

[Performance testing with Jmeter - phần 2] Jmeter overview
Testing
[Performance testing with Jmeter - phần 2] Jmeter overview
October 26, 2022
5 min
© 2023, All Rights Reserved.
Powered By

Quick Links

HomeOur Team

Social Media