2011-10-26 25 views
9

Tôi đang nghĩ đến việc tự động hóa các thử nghiệm hiệu năng, giống như cách chúng ta hiện có với các bài kiểm tra đơn vị.Làm thế nào để tự động hóa các bài kiểm tra hiệu năng và tích hợp với CI?

Tôi biết cách chạy thử nghiệm hiệu suất bằng các công cụ như jMeter hoặc bằng cách viết mã của riêng tôi để kích hoạt các phần cụ thể của ứng dụng. Tôi biết cách sử dụng thời gian, jvisualvm, nmon hoặc những người khác để thu thập thông tin về các tài nguyên đang được sử dụng.

Tôi muốn tiếp tục và viết kiểm tra hiệu suất, điều đó sẽ thất bại nếu nó vượt qua các dòng nhất định (thời gian thực hiện, bộ nhớ hoặc CPU đã tiêu thụ ...). Sau đó tôi sẽ có máy chủ CI của tôi (Jenkins) chạy thử nghiệm thường xuyên để đảm bảo hiệu suất vẫn tốt. Điều này phức tạp bởi vì hiệu suất phụ thuộc vào phần cứng, và theo cách hiện tại tôi làm điều đó, nó đòi hỏi con người phải giải thích kết quả để quyết định xem điều này có thoả mãn hay không.

Bạn có biết bất kỳ công cụ hoặc khung công tác nào (nếu có thể dựa trên Java) giúp tự động hóa các thử nghiệm hiệu suất theo cách đó không? Nếu không, bạn có một số thực hành tốt để tư vấn?

Cảm ơn.

+0

nơi bạn muốn đặt cảm biến của mình ... Máy chủ hoặc Máy khách. Dù bằng cách nào bạn cũng phải đặt mục tiêu cụ thể của mình để đạt được trong bài kiểm tra. Nếu bạn làm cho kết quả thử nghiệm của bạn có thể diễn giải như thời gian phản hồi, bạn có thể dễ dàng quyết định xem chúng có vượt qua hay không tự động ... vui lòng viết mã – jpse

+0

Cả hai và đôi khi cả hai cùng một lúc. Ví dụ, tôi có một trường hợp mà chúng ta có một máy khách Windows giao tiếp với máy chủ. Tôi muốn đảm bảo rằng nó không đặt quá nhiều tải trên máy chủ. Vì vậy, điều đó sẽ ngụ ý bắt đầu nhiều trường hợp của máy khách và đo lường các thứ bên máy chủ như mức tiêu thụ CPU, bộ nhớ ... –

Trả lời

2

Trong quá khứ, tôi đã sử dụng JUnit để thực hiện một số thử nghiệm hiệu suất. Tuy nhiên, nó không cần sự giải thích của con người - thuật toán hoặc mất quá nhiều thời gian hoặc nó đã đủ nhanh. Theo một cách nào đó, đó là một thử nghiệm vượt qua/thất bại, dựa trên một ngưỡng thời gian.

Nếu bạn cần thử nghiệm hiệu suất chủ quan được thực hiện tự động, tôi e rằng nó sẽ khó xây dựng.

+0

Vì vậy, tôi đoán bạn đo thời gian được thực hiện bởi đoạn mã để thực thi và gọi "fail()" nếu nó ở trên một số giá trị. Điều gì về mức tiêu thụ bộ nhớ? –

+0

Đó là chính xác. Chúng tôi không cần theo dõi mức tiêu thụ bộ nhớ. –

0

bạn có thể sử dụng jmeter với kiến ​​để tự động chạy thử nghiệm perf trên máy chủ CI. Tôi không chắc chắn nếu bạn có thể bẫy thời gian đáp ứng vượt quá một ngưỡng, nhưng tôi đoán rằng nên được đơn giản để làm thông qua XSL/shell scripting. Bạn chắc chắn có thể xuất bản báo cáo hiệu suất mặc dù có thể được xem xét thủ công.

3

Nếu thử nghiệm của bạn là chủ quan, sau đó để tự động hóa nó, bạn cần phải mất một số tính chủ quan "ra". Ý tôi là, đặt một số ngưỡng mà bạn cho là chấp nhận được và không được chấp nhận. Xem có cách nào để ném cờ hay thứ gì đó mà Jenkins có thể nhận được hay không. Nếu bạn có các ngưỡng này, bạn có cơ hội tốt hơn để nhận được tự động hóa mà bạn mong muốn.

+0

Tôi đồng ý với điều đó. Tôi đoán một phần của bài tập này là để làm rõ những giới hạn mà tôi muốn đặt ra là gì. –

2

Jenkins có một "Plugin hiệu suất" Chụp kết quả từ JMeter và JUnit. Tìm kiếm nó trong "plugin có sẵn" trong "Plugin" dưới "Quản lý Jenkins" trong "Manage Jenkins"

+0

Cảm ơn. Có vẻ như nó cho phép các ngưỡng. Đó sẽ là một khởi đầu tốt cho tôi. –

1

Để vượt qua hoặc không tự động kiểm tra, bạn phải có khả năng xác định tiêu chí vượt qua/thất bại về số lượng boolean. Đây có thể là thời gian phản hồi trung bình hoặc phân tích thống kê nâng cao hơn một chút, ví dụ: chức năng xu hướng hoặc độ lệch chuẩn.

Tôi không biết bất kỳ công cụ nào làm việc này cho cả khách hàng và phía máy chủ.

Có một số công cụ hạn chế có thể làm điều đó cho kết quả phía máy khách.

Với Jenkins Performance Plugin bạn sẽ có thể truyền/hỏng một bản dựng, sử dụng ngưỡng lỗi được định cấu hình. Đây là xác minh tự động rất cơ bản về kết quả kiểm tra và một cách để vượt qua hoặc thất bại trong quá trình xây dựng.

Khi tôi bắt gặp thử thách tương tự, tôi đã đánh giá Plugin hiệu suất và không hoàn toàn hài lòng với các chức năng mà nó cung cấp. Bằng cách này, tôi bắt đầu làm việc trên dự án Lightning dựa trên Java. Nó cung cấp cho bạn khả năng phân tích kết quả JMeter và vượt qua đường ray xây dựng tự động, dựa trên ví dụ:thời gian phản hồi trung bình cho loại giao dịch cụ thể hoặc độ lệch chuẩn.

Các vấn đề liên quan