Trong phần này, chúng ta sẽ tìm hiểu về Performance Testing, tại sao chúng ta cần nó, các loại Performance Testing và quy trình Performance Testing.
Các bài viết liên quan:
Sau đây là các chủ đề mà chúng ta sẽ hiểu trong phần này:
Performance Testing là gì?
Đây là phần quan trọng nhất của kiểm thử phi chức năng.
Kiểm tra hoạt động của một ứng dụng bằng cách áp dụng một số tải được gọi là Performance Testing.
Nói chung, thử nghiệm này xác định tốc độ máy chủ phản hồi yêu cầu của người dùng.
Trong khi thực hiện Performance Testing trên ứng dụng, chúng tôi sẽ tập trung vào các yếu tố khác nhau như Thời gian phản hồi, Tải và Độ ổn định của ứng dụng.
Thời gian đáp ứng: Thời gian đáp ứng là thời gian máy chủ thực hiện để đáp ứng yêu cầu của khách hàng.
Load: Ở đây, Load có nghĩa là khi N-số người dùng sử dụng ứng dụng đồng thời hoặc gửi yêu cầu đến máy chủ tại một thời điểm.
Tính ổn định: Đối với yếu tố ổn định, chúng ta có thể nói rằng, khi N-số lượng người dùng sử dụng ứng dụng đồng thời trong một thời gian cụ thể.
Khi chúng tôi sử dụng Performance Testing?
Chúng tôi sẽ thực hiện Performance Testing khi phần mềm ổn định và được chuyển sang phiên bản sản xuất và nó có thể được nhiều người dùng truy cập đồng thời, vì lý do này, một số vấn đề về hiệu suất có thể xảy ra. Để tránh những vấn đề về hiệu suất này, người thử nghiệm thực hiện một vòng Performance Testing.
Vì đây là kiểm tra phi chức năng không có nghĩa là chúng tôi luôn sử dụng Performance Testing, chúng tôi chỉ tiến hành Performance Testing khi ứng dụng ổn định về mặt chức năng.
Lưu ý: Không thể thực hiện Performance Testing theo cách thủ công vì không thể duy trì kết quả chính xác và tốn kém.
Các loại Performance Testing
Sau đây là các loại Performance Testing:
- Load testing
- Stress testing
- Scalability testing
- Stability testing
Hãy để chúng tôi thảo luận từng người một để cung cấp cho bạn sự hiểu biết đầy đủ về thử nghiệm hiệu suất Tải, Ứng suất, Khả năng mở rộng và Độ ổn định.
Load testing
Thử nghiệm tải được sử dụng để Performance Testing của ứng dụng bằng cách áp dụng một số tải nhỏ hơn hoặc bằng tải mong muốn được gọi là thử nghiệm tải.
Ví dụ: Trong hình ảnh dưới đây, 1000 người dùng là tải mong muốn do khách hàng đưa ra và 3 / giây là mục tiêu mà chúng tôi muốn đạt được khi thực hiện kiểm tra tải.
Stress Testing
Thử nghiệm căng thẳng là thử nghiệm, kiểm tra hành vi của một ứng dụng bằng cách áp dụng tải lớn hơn tải mong muốn.
Ví dụ: Nếu chúng tôi lấy ví dụ trên và tăng tải mong muốn 1000 lên 1100 người dùng và mục tiêu là 4 / giây. Trong khi thực hiện kiểm tra ứng suất trong trường hợp này, nó sẽ vượt qua vì tải lớn hơn (100 trở lên) so với tải mong muốn thực tế.
Scalability Testing
Performance Testing của một ứng dụng bằng cách tăng hoặc giảm tải trong các quy mô cụ thể (không phải của người dùng) được gọi là kiểm tra khả năng mở rộng. Kiểm tra khả năng mở rộng trở lên và kiểm tra khả năng mở rộng xuống được gọi là kiểm tra khả năng mở rộng.
Kiểm tra khả năng mở rộng được chia thành hai phần như sau:
- Kiểm tra khả năng mở rộng trở lên
- Kiểm tra khả năng mở rộng giảm xuống
- Kiểm tra khả năng mở rộng trở lên
Nó đang thử nghiệm trong đó chúng tôi tăng số lượng người dùng trên một quy mô cụ thể cho đến khi chúng tôi gặp sự cố. Chúng tôi sẽ sử dụng thử nghiệm khả năng mở rộng trở lên để tìm dung lượng tối đa của một ứng dụng.
Kiểm tra khả năng mở rộng giảm xuống
Thử nghiệm khả năng mở rộng giảm xuống được sử dụng khi thử nghiệm tải không được vượt qua, sau đó bắt đầu giảm số không. của người dùng trong một khoảng thời gian cụ thể cho đến khi đạt được mục tiêu. Nhờ đó có thể dễ dàng xác định được điểm nghẽn (lỗi).
Stability Testing
Performance Testing của một ứng dụng bằng cách áp dụng tải trong một khoảng thời gian cụ thể được gọi là Kiểm tra độ ổn định.
Ví dụ về Performance Testing
Hãy để chúng tôi lấy một ví dụ trong đó chúng tôi sẽ kiểm tra hành vi của một ứng dụng trong đó tải mong muốn nhỏ hơn 1000 hoặc bằng 1000 người dùng.
Trong hình ảnh dưới đây, chúng ta có thể thấy rằng 100 người dùng trở lên được tăng lên liên tục để kiểm tra tải tối đa, điều này còn được gọi là kiểm tra khả năng mở rộng trở lên.
Kịch bản 1: Khi chúng tôi có 1000 người dùng như tải mong muốn và 2,7 / giây là thời gian mục tiêu, các kịch bản này sẽ vượt qua trong khi thực hiện kiểm tra tải vì trong kiểm tra tải, chúng tôi sẽ tập trung vào không. của người dùng, và theo yêu cầu, nó tương đương với 1000 người dùng.
Kịch bản 2: Trong tình huống tiếp theo, chúng tôi sẽ tăng 100 người dùng tải mong muốn và thời gian mục tiêu sẽ tăng lên đến 3,5 \ giây. Kịch bản này sẽ vượt qua nếu chúng ta thực hiện kiểm tra ứng suất vì ở đây, tải thực tế lớn hơn (1100) tải mong muốn (1000).
Tình huống 3: Trong trường hợp này, nếu chúng tôi tăng tải mong muốn lên ba lần như
1200 → 3,5 \ giây: [nó không nhỏ hơn hoặc bằng tải mong muốn, đó là lý do tại sao nó sẽ không thành công]
1300 → 4 \ sec: [nó không nhỏ hơn hoặc bằng tải mong muốn. tức là không đạt]
1400 → Crashed
Lưu ý 1: Thử nghiệm thể tích và ngâm nước là một loại thử nghiệm nhưng không phải là thử nghiệm hiệu suất.
Volume testing
Kiểm tra khối lượng là kiểm tra, giúp chúng tôi kiểm tra hành vi
Đối với một ứng dụng bằng cách chèn một khối lượng lớn tải về mặt dữ liệu được gọi là kiểm tra khối lượng và ở đây, chúng tôi sẽ tập trung vào số lượng tốc độ dữ liệu hơn là số lượng người dùng.
Lưu ý 2:
Khối lượng là dung lượng trong khi Tải là đại lượng, tức là thử tải nghĩa là không. của người dùng và kiểm tra khối lượng có nghĩa là lượng dữ liệu.
Soak testing
Trong loại thử nghiệm này, chúng tôi sẽ kiểm tra hành vi của một ứng dụng trên môi trường, hành vi không được hỗ trợ trong một thời gian dài được gọi là thử nghiệm ngâm.
Nói chung, thử nghiệm ngâm là một loại thử nghiệm tiêu cực vì chúng ta đã biết rằng máy chủ hoặc môi trường không hỗ trợ.
Quy trình Performance Testing
Performance Testing không thể được thực hiện theo cách thủ công vì:
- Chúng tôi cần rất nhiều tài nguyên và nó đã trở thành một cách tiếp cận tốn kém hơn.
- Và độ chính xác không thể duy trì khi chúng tôi theo dõi thời gian phản hồi theo cách thủ công.
Quá trình Performance Testing sẽ được hoàn thành theo các bước sau:
- Xác định các tình huống hiệu suất
- Lập kế hoạch và thiết kế kịch bản Performance Testing
- Định cấu hình môi trường thử nghiệm và phân phối tải
- Thực thi các tập lệnh thử nghiệm
- Kết quả
- Kết quả phân tích
- Xác định nút cổ chai
- Chạy lại kiểm tra
Nếu chúng tôi thực hiện một quy trình tích cực của quy trình Performance Testing, quy trình đó có thể tuân theo quy trình dưới đây:
Xác định các tình huống hiệu suất
Đầu tiên, chúng tôi sẽ xác định các tình huống hiệu suất dựa trên các yếu tố sau:
Các tình huống phổ biến nhất: Có nghĩa là chúng ta có thể tìm thấy các tình huống hoạt động dựa trên các tình huống thường được sử dụng như trong ứng dụng Gmail; chúng tôi sẽ thực hiện đăng nhập, hộp thư đến, gửi các mục, soạn thư và đăng xuất.
Các tình huống quan trọng nhất: Các tình huống quan trọng có nghĩa là được sử dụng thường xuyên và quan trọng đối với doanh nghiệp như đăng nhập, soạn thư, hộp thư đến và đăng xuất ứng dụng Gmail.
Giao dịch dữ liệu khổng lồ: Nếu chúng ta có dữ liệu khổng lồ có nghĩa là số lượng n người dùng sử dụng ứng dụng cùng một lúc.
Khi chúng tôi xác định được các tình huống hiệu suất, chúng tôi sẽ chuyển sang bước tiếp theo.
Lập kế hoạch và thiết kế kịch bản Performance Testing
Trong bước này, chúng tôi sẽ cài đặt các công cụ trong Máy kỹ sư thử nghiệm và truy cập vào máy chủ thử nghiệm, sau đó chúng tôi viết một số tập lệnh theo các kịch bản thử nghiệm và chạy công cụ.
Sau khi viết xong script, chúng ta sẽ chuyển sang bước tiếp theo.
Định cấu hình môi trường thử nghiệm và phân phối tải
Sau khi viết các kịch bản thử nghiệm, chúng tôi sẽ sắp xếp môi trường thử nghiệm trước khi thực thi. Ngoài ra, quản lý các công cụ, tài nguyên khác và phân phối tải theo “Mô hình sử dụng” hoặc đề cập đến thời lượng và độ ổn định.
Thực thi các tập lệnh thử nghiệm
Khi chúng tôi hoàn tất việc phân phối tải, chúng tôi sẽ thực thi, xác thực và giám sát các tập lệnh thử nghiệm.
Kết quả
Sau khi thực hiện các kịch bản kiểm tra, chúng tôi sẽ nhận được kết quả kiểm tra. Và kiểm tra xem kết quả có đáp ứng mục tiêu trong thời gian phản hồi đã cho hay không và thời gian phản hồi có thể là tối đa, trung bình và tối thiểu.
Nếu phản hồi không đáp ứng thời gian phản hồi cần thiết, thì chúng tôi sẽ chuyển sang luồng tiêu cực, nơi sẽ thực hiện các bước dưới đây:
Kết quả phân tích
Đầu tiên, chúng tôi sẽ phân tích kết quả kiểm tra xem nó có đáp ứng với thời gian phản hồi hay không.
Xác định nút cổ chai
Sau đó, chúng tôi sẽ xác định nút cổ chai (lỗi hoặc vấn đề hiệu suất). Và nút cổ chai có thể xảy ra do những khía cạnh này như vấn đề trong mã, vấn đề phần cứng (đĩa cứng, Bộ xử lý RAM), vấn đề mạng và vấn đề phần mềm (hệ điều hành). Và sau khi tìm ra điểm nghẽn, chúng ta sẽ thực hiện chỉnh (sửa hoặc điều chỉnh) để giải quyết điểm nghẽn này.
Chạy lại kiểm tra
Sau khi chúng tôi khắc phục các nút thắt cổ chai, hãy chạy lại các tập lệnh thử nghiệm và kiểm tra kết quả xem nó có đáp ứng được mục tiêu yêu cầu hay không.
Sự cố xảy ra trong Performance Testing
Trong khi thực hiện Performance Testing trên ứng dụng, một số sự cố có thể xảy ra và những sự cố này còn được gọi là sự cố hiệu suất.
Các vấn đề về hiệu suất như sau:
- Vấn đề về thời gian phản hồi
- Vấn đề về khả năng mở rộng
- Nút cổ chai
- Vấn đề tốc độ
- Vấn đề về thời gian phản hồi
Thời gian phản hồi có nghĩa là máy chủ phản hồi yêu cầu của khách hàng nhanh như thế nào. Nếu yêu cầu của người dùng không hoàn thành trong thời gian phản hồi đã cho, có thể người dùng sẽ mất hứng thú với phần mềm hoặc ứng dụng cụ thể. Đó là lý do tại sao ứng dụng hoặc phần mềm phải có thời gian phản hồi hoàn hảo để đáp ứng yêu cầu của người dùng một cách nhanh chóng.
Vấn đề về khả năng mở rộng
Các vấn đề về khả năng mở rộng xảy ra khi ứng dụng không thể nhận n-số người dùng và yêu cầu của người dùng mong đợi cùng một lúc. Đó là lý do tại sao chúng tôi sẽ thực hiện kiểm tra khả năng mở rộng trở lên (kiểm tra dung lượng tối đa của ứng dụng) và kiểm tra khả năng mở rộng hướng xuống (khi thời gian dự kiến không khớp với thời gian thực).
Nút cổ chai
Nút chai là tên không chính thức của lỗi, xảy ra khi ứng dụng bị giới hạn bởi một thành phần duy nhất và tạo ra tác động xấu đến hiệu suất hệ thống.
Nguyên nhân chính gây ra tắc nghẽn là các vấn đề phần mềm (vấn đề liên quan đến hệ điều hành), vấn đề phần cứng (vấn đề liên quan đến đĩa cứng, RAM và bộ xử lý) và vấn đề mã hóa, v.v.
Sau đây là những tắc nghẽn hiệu suất phổ biến nhất:
- Sử dụng bộ nhớ
- Sử dụng đĩa
- Sử dụng CPU
- Giới hạn hệ điều hành
- Sử dụng mạng
Các vấn đề về tốc độ
Khi chúng ta thực hiện Performance Testing trên ứng dụng, ứng dụng đó nên có tốc độ nhanh hơn để thu hút sự quan tâm và chú ý của người dùng vì nếu tốc độ ứng dụng chậm có thể làm mất hứng thú của người dùng đối với ứng dụng.
Các công cụ Performance Testing
Chúng tôi có nhiều loại công cụ Performance Testing khác nhau có sẵn trên thị trường, trong đó một số là công cụ thương mại và công cụ mã nguồn mở.
Công cụ thương mại: LoadRunner [HP], WebLOAD, NeoLoad
Công cụ mã nguồn mở: JMeter
- LoadRunner
Đây là một trong những công cụ mạnh mẽ nhất của Performance Testing, được sử dụng để hỗ trợ Performance Testing cho nhiều loại giao thức, số lượng công nghệ và môi trường ứng dụng.
Nó nhanh chóng xác định các nguyên nhân phổ biến nhất của các vấn đề về hiệu suất. Và cũng dự đoán chính xác khả năng mở rộng và dung lượng của ứng dụng.
- JMeter
Phần mềm Apache JMeter là một công cụ mã nguồn mở, hoàn toàn là một ứng dụng Java được thiết kế để tải hành vi kiểm tra chức năng và đo lường hiệu suất.
Nói chung, nó được thiết kế để kiểm tra các Ứng dụng Web nhưng giờ đây cũng được mở rộng sang các chức năng kiểm tra khác.
Apache JMeter được sử dụng để Performance Testing cho cả tài nguyên tĩnh và động cũng như các ứng dụng web động.
Nó có thể được sử dụng để tái tạo tải nặng trên máy chủ, mạng hoặc đối tượng, nhóm máy chủ để kiểm tra sức mạnh của nó hoặc để phân tích hiệu suất tổng thể dưới các loại tải khác nhau.
- WebLOAD
Công cụ kiểm tra WebLOAD được sử dụng để kiểm tra các ứng dụng web kiểm tra tải, Performance Testing và kiểm tra căng thẳng.
Công cụ WebLOAD kết hợp hiệu suất, khả năng mở rộng và tính toàn vẹn như một quy trình duy nhất để xác minh các ứng dụng web và di động.
- NeoLoad
Neotys phát triển một công cụ kiểm tra được gọi là NeoLoad. NeoLoad được sử dụng để kiểm tra các kịch bản Performance Testing. Với sự trợ giúp của NeoLoad, chúng tôi có thể tìm thấy các khu vực tắc nghẽn trong web và quá trình phát triển ứng dụng dành cho thiết bị di động.
Công cụ kiểm tra NeoLoad nhanh hơn so với các công cụ truyền thống.
Ngoài chúng, một số công cụ khác là Electric load, web stress tool, LoadUI Pro, StresStimulus, LoadView, LoadNinja và RedLine13, giúp Performance Testing của phần mềm hoặc ứng dụng.
Xem thêm System Testing – kiểm thử hệ thống