Trong kiểm thử hiệu suất (Performance Testing), việc phân tích và đánh giá kết quả sau khi thực hiện test là một trong những bước quan trọng nhất trong toàn bộ quy trình test. Tất cả các công cụ sử dụng cho việc thực hiện test đều hỗ trợ xuất ra dữ liệu kết quả thô (raw result data) và summary report với định dạng html. Tuy nhiên tuỳ vào chỉ số (metrics) mà công ty hay dự án lựa chọn mà chúng ta sẽ cần có thêm các đánh giá khác. Vậy ngoài những chỉ số thường sử dụng như số người dùng ảo (Virtual User), giá trị trung bình (Average), Percentiles, thì Độ Lệch Chuẩn (Standard Deviation) cũng là một trong những chỉ số chính (key metric) được sử dụng trong việc phân tích kết quả test performance.
KHÁI NIỆM
Độ lệch chuẩn (standard deviation) là một đại lượng thống kê được sử dụng để đo độ biến đổi của một tập dữ liệu. Nó phản ánh mức độ phân tán của các giá trị trong tập dữ liệu so với giá trị trung bình.
Độ lệch chuẩn càng lớn, tập dữ liệu càng phân tán rộng hơn và các giá trị cách xa giá trị trung bình. Ngược lại, độ lệch chuẩn nhỏ hơn cho thấy tập dữ liệu gần nhau hơn và các giá trị gần với giá trị trung bình hơn.
TẦM QUAN TRỌNG
Độ lệch chuẩn trong performance test cho biết thời gian phản hồi (response time) của một transaction / request cụ thể có nhất quán trong suốt quá trình test hay không?
Độ lệch chuẩn càng nhỏ ➡️ thời gian phản hồi càng nhất quán ➡️ bạn sẽ tự tin hơn về transaction / request đó và ngược lại.
Ví dụ dưới đây thể hiện tầm quan trong của độ lệch chuẩn trong phân tích dữ liệu:
Transaction | I1 | I2 | I3 | I4 | I5 | AVG | 90% | SD |
---|---|---|---|---|---|---|---|---|
Login | 4 | 6 | 3 | 4 | 8 | 5 | 6 | 2 |
Search | 3 | 2 | 15 | 1 | 4 | 5 | 4 | 5.7 |
Logout | 5 | 5 | 6 | 4 | 5 | 5 | 5 | 0.7 |
Thời gian phản hồi của 3 transaction Login, Search và Logout trong 5 lần thực thi
Trong ví dụ trên, ta thấy:
- Với metric AVG: Thời gian phản hồi trung bình của tất cả transaction là như nhau. Nếu chúng ta chỉ sử dụng 1 metric là giá trị trung bình để đưa ra nhận định về kết quả performance test thì trong trường hợp này ta có thể nói là cả 3 transaction này phản hồi tốt như nhau. Liệu có thật sự như vậy hay không?
- Với metric 90%(có thể hiểu một cách đơn giản thì metric này được diễn đạt như sau: 90% thời gian phản hồi của transaction A là x giây): Theo số liệu trong bảng, ta có thể thấy khi sử dụng metric này, thời gian phản hồi của transaction Search là tốt nhất và của Login là tệ nhất.
- Với metric Độ Lệch Chuẩn (SD): Hãy để ý vào giá trị thời gian phản hồi của transaction Search, chúng ta có thể nhận ra rằng, độ biến thiên của những giá trị này rất cao (có thời điểm, thời gian phản hồi chỉ 1s nhưng có lúc thì lên đến 15s). Áp dụng công thức tính ra Độ lệch chuẩn, ta có giá trị của transaction Search là cao nhất.
Rõ ràng kết hợp thêm metric Độ lệch chuẩn, chúng ta có thể đưa ra kết luận:
- Transaction có performance tốt nhất: Logout
- Transaction có performance tệ nhất: Search
CÔNG THỨC TÍNH
Để tính giá trị độ lệch chuẩn của một tập dữ liệu, chúng ta sẽ thực hiện theo các bước sau:
- Tính giá trị trung bình của tập dữ liệu: Tính tổng của tất cả các giá trị trong tập dữ liệu và chia cho số lượng giá trị.
- Tính sai số cho mỗi giá trị: Lấy mỗi giá trị trong tập dữ liệu trừ đi giá trị trung bình
- Bình phương sai số cho từng giá trị: Bình phương sai số bằng cách lấy mỗi sai số và bình phương nó
- Tính tổng của tất cả các bình phương sai số: Cộng tất cả các bình phương sai số lại với nhau.
- Chia tổng bình phương sai số cho số lượng giá trị: Chia tổng bình phương sai số cho số lượng giá trị trong tập dữ liệu. Kết quả sẽ là phương sai (variance) của dữ liệu.
- Lấy căn bậc hai của phương sai: Tính căn bậc hai của phương sai để tính toán giá trị độ lệch chuẩn. Kết quả này chính là giá trị độ lệch chuẩn của tập dữ liệu.
Thử áp dụng công thức vào ví dụ trên cho transaction Search:
-
Tính giá trị trung bình:
(3 + 2 + 15 + 1 + 4)/5 = 5
-
Tính sai số từng giá trị:
3 – 5 = -2 2 – 5 = -3 15 – 5 = 10 1 – 5 = -4 4 – 5 = -1
-
Bình phương từng sai số:
(-2) * (-2) = 4 (-3) * (-3) = 9 10 * 10 = 100 (-4) * (-4) = 16 (-1) * (-1) = 1
-
Tính phương sai:
(4 + 9 + 100 + 16 + 1)/(5 – 1) = 130 / 4 = 32.5
-
Tính độ lệch chuẩn:
√32.5 = 5.7
ÁP DỤNG TRONG CYBOZU
Sau khi thực hiện test performance, chúng ta sẽ tính toán Độ Lệch Chuẩn của tất cả các request
Căn cứ vào chart này, chúng ta sẽ xác định được top 5 request có độ ổn định nhất và sẽ có được bảng so sánh giữa 2 lần thực thi như bên dưới:
Với bảng kết quả này, chúng ta sẽ có được một góc nhìn tổng quan về những request có độ ổn định kém nhất, điều này sẽ giúp ích một phần cho đội ngũ phát triển có thể tập trung vào những request này trong trường hợp có vấn đề về performance xảy ra.
KẾT
Thông qua các ví dụ trên, hy vọng sẽ giúp các bạn đánh giá được tầm quan trọng của Độ Lệch Chuẩn trong việc phân tích kết quả test performance, cũng như việc có thể cân nhắc sử dụng Độ Lệch Chuẩn như là một metric chính thức khi thực hiện performance test.