12

Chúng tôi đã có một quá trình tích hợp liên tục trong đó chúng tôi xây dựng, chạy thử nghiệm đơn vị, thực hiện phân tích mã tĩnh và tạo tài liệu. Tuy nhiên, chúng tôi muốn mở rộng điều này để bao gồm thử nghiệm hiệu suất tự động. Trong trường hợp này, chúng tôi đang làm việc trên một ứng dụng web .NET.Thử nghiệm hiệu suất trong tích hợp liên tục?

Chúng tôi đã thực hiện một số thử nghiệm hiệu suất với JMeter (bên ngoài quy trình CI), nhưng tôi không biết đây có phải là công cụ tốt nhất để đưa vào quy trình CI không? Selenium có phải là một lựa chọn không? WAPT Pro?

Chúng tôi nên kiểm tra hiệu suất ở mức nào? Chúng ta có nên có một bộ "kiểm tra đơn vị hiệu suất" không? Chúng ta có nên chạy JMeter (hoặc một cái gì đó tương tự) trên một môi trường giống như sản xuất và thất bại nếu có yêu cầu nào mất> 1 giây? Sẽ không có cái gì như thế này có phương sai quá cao?

Vì vậy, các bạn có bao gồm kiểm tra hiệu suất tự động như một phần của CI của bạn không? Bạn thử nghiệm gì và bạn sử dụng công cụ nào? Kinh nghiệm của bạn như thế nào?

+0

Bạn đã xem plugin JMeter Maven chưa? Nó không phải là .net nhưng là maven dựa trên nó cắm vào máy chủ CI như Jenkins khá tốt. https://github.com/Ronnie76er/jmeter-maven-plugin – Ardesco

Trả lời

7

Trước hết, JMeter là một lựa chọn tốt để đưa vào CI vì nó có thể được chạy từ dòng lệnh và bạn có thể chuyển vào các biến khi bạn làm điều này. Tôi sẽ giới thiệu nó cho nhiệm vụ này.

Nói chung, tích hợp Perf. thử nghiệm vào CI là khó khăn. Bạn đã liệt kê nhiều lý do tại sao điều này là vì vậy bạn đã có một nửa cách có bởi vì bạn hiểu những hạn chế. Và đó là chà: nó có thể có Perf. xét nghiệm trong CI nhưng chỉ ở một mức độ hạn chế.

Tôi nghĩ rằng một cách tiếp cận tốt sau một số các nguyên tắc:

Bạn không thể chạy đầy tải (hoặc ngâm hoặc công suất) kiểm tra trong CI, nó không phải là thực tế. Các kết quả mang tính chủ quan và cần sự giải thích của con người và phải mất thời gian để chạy thử nghiệm. Nhưng bạn có thể chạy một bộ kiểm thử đơn giản hơn để đo thời gian phản hồi cho các yêu cầu và sau đó bạn có thể đánh giá các thời gian phản hồi này:

  • Chống lại phạm vi NFR hoặc dự kiến ​​- Tức là. Nên ít hơn 1 giây.
  • Chống lại các kết quả trước đó - Tức là. Không nên lệch nhiều hơn 10% so với lần xây dựng cuối cùng.

Bạn cũng có thể chạy tải/hoàn thiện tự động. kiểm tra - ở mức tối đa - bên ngoài quá trình xây dựng. 'Semi CI'. Vì vậy, có thể bạn có thể tự động kiểm tra để chạy qua đêm và sau đó kiểm tra kết quả vào buổi sáng?

Lặp lại. Chỉ cần bắt đầu thực hiện và nhận kết quả và tinh chỉnh các bài kiểm tra và cách bạn diễn giải chúng theo thời gian. Giữ cho nó đơn giản và tập trung vào các khu vực có vẻ hữu ích. Không khởi động với một bản phô trương, giữ cho nó yên tĩnh cho đến khi bạn tự tin với quá trình và sau đó bắt đầu không xây dựng và nói với mọi người về nó - ban đầu, bạn có khả năng nhận được rất nhiều âm bản sai.

Kết quả của bạn Thực hiện việc này. Rất nhiều. CI là tất cả về thất bại sớm vì vậy nếu bạn đi mà như bạn kết thúc mục tiêu thì cách tốt nhất để đạt được nó là chạy thử nghiệm sớm và thường xuyên nhưng vấn đề với đó là bạn có nguy cơ bị chôn vùi trong dữ liệu. Vì vậy, một phương pháp hiệu quả để khủng hoảng dữ liệu và trình bày các thông tin có liên quan sẽ giúp đáng kể.

Bạn không thể tự động hóa toàn bộ quá trình xuống Cờ xanh lá cờ đỏ - nhưng bạn nên cố gắng đi xa con đường đó càng tốt.

Cuối cùng, đã có a very good talk do Perf dẫn đầu. thử nghiệm tại Google bao gồm chủ đề này. Bây giờ nó đã hơi cũ nhưng các nguyên tắc vẫn đứng vững. Ngoài ra, trong một vài tuần, tôi sẽ đến một số meetup nơi Channel4, một công ty truyền thông của Anh, sẽ nói về cách họ tiếp cận điều này - có thể bạn có thể yêu cầu một số trang trình bày.

1

Cả JMeter lẫn Selenium đều không phải là công cụ cho CI. JMeter là công cụ kiểm tra hiệu suất, Selenium là công cụ để kiểm tra chức năng tự động. Vì vậy, đã thử nghiệm hiệu suất tích hợp vào quá trình xây dựng, bạn có thể sử dụng JMeter với bất kỳ máy chủ CI: Jenkins, Bamdoo vv

AFAIK, có hai giải pháp chung của việc sử dụng JMeter với Jenkins hiện nay:

  1. Sử dụng Jenkins/Hudson với plugin JMeter cho nó, cho phép để bắt đầu nhiệm vụ kiểm tra hiệu suất sau khi hoàn thành quá trình xây dựng. Trong trường hợp này, bạn cần có số máy phát tải phù hợp với JMeter được cấu hình trên nó.

  2. Cách khác - sử dụng JMeter testing cloud. Dịch vụ này cung cấp Jenkins plugin, cho phép bắt đầu kiểm tra từ xa sau khi xây dựng ứng dụng. Trong trường hợp này, bạn không cần quan tâm đến việc cấu hình các máy chủ thử nghiệm.

P.S. Trong khi tôi đang làm việc cho Blazemeter, tôi muốn cung cấp thông tin khách quan. Hy vọng, nó rất hữu ích.

+0

Selenium thực sự là một công cụ cho CI, đó là cách tốt nhất để thực hiện kiểm tra chức năng trình duyệt chéo ngay bây giờ. JMeter có thể được thiết lập trên một máy chủ CI khá dễ dàng nhưng tôi sẽ không có các kiểm tra JMeter được kích hoạt trên mọi công trình, bạn nên làm một bài kiểm tra hàng tuần hoặc hàng tuần. – Ardesco

0

Trong câu hỏi bạn đã hỏi - Có phải là tùy chọn selen không?

Nếu bạn đang chạy từ CI sử dụng mạng nội bộ của máy tính hoặc đám mây công cộng thì bạn nên xem xét thử nghiệm hiệu suất bằng cách sử dụng Selenium WebDriver với trình điều khiển trình duyệt không đầu.

Trên một máy ảo Amazon nhỏ (ami), tôi có khoảng 25 Người dùng ảo được mô phỏng bằng cách sử dụng phương pháp này. Vì vậy, nếu nhu cầu của bạn theo thứ tự 500 VU, thì tôi sẽ điều tra điều này vì lợi ích bao gồm: -

Không còn 'tương quan' để viết lại URL, v.v.

Các bài kiểm tra chức năng của bạn được bổ sung lại như các bài kiểm tra Hiệu suất để một công cụ trở thành chuyên gia và không cần phải làm lại.

2

> Bạn không thể chạy thử nghiệm tải đầy đủ (hoặc ngâm hoặc dung lượng) trong CI, không thực tế.

Sau TISQA conference tại Hoa Kỳ tuần này, tôi có khuynh hướng nói rằng chúng tôi tự tin nên tự động hóa ngày càng nhiều thử nghiệm tải phức tạp hơn với tự động hóa CI.

Bạn thậm chí có thể xem xét có một cá thể CI riêng biệt chạy trong phòng thí nghiệm kiểm tra tải lớn hơn, được cấu hình với cơ sở hạ tầng thực tế hơn để hỗ trợ kết quả kiểm tra có ý nghĩa. Quá trình thử nghiệm tải chính nó không phải là không giống như một quá trình phát triển phần mềm riêng biệt (thiết kế, xây dựng, triển khai, thực hiện, phân tích, lặp lại). Hầu hết mọi công cụ hiệu suất giờ đây đều hỗ trợ tích hợp thanh lịch và mạnh mẽ hơn cho các giải pháp CI bao gồm SOASTA, LoadRunner/PC, JMeter, Neotys, Blazemeter, Flood.io.Tuy nhiên, đây là ba điều cần lưu ý - tương tự như bình luận của Oliver: - có nhiều sắc thái hơn cho kết quả hiệu suất ... không chỉ rõ ràng PASS hoặc FAIL - đừng quên bảo trì tập lệnh để đồng bộ hóa với thay đổi ứng dụng - đồng bộ hóa/mở rộng phòng thử nghiệm tải của bạn với sản xuất cũng có thể được tự động

Nếu bạn muốn - xem xét một số trang trình bày từ bản trình bày TISQA của riêng tôi here. Đó có thể là một khởi đầu về cách sử dụng CI + Hiệu suất trong toàn bộ vòng đời. Chẳng hạn như, tại sao không có một cá thể CI chỉ "xem cấu hình" vì nó được thay đổi trong PROD và đồng bộ hóa những thay đổi đó trở lại môi trường kiểm tra tải của bạn?

+0

Một số chi tiết khác của dấu vết của Mark trong CI: http://www.perfbytes.com/continuous-performance-testing –

0

Bạn không phải là người duy nhất xem xét tích hợp thử nghiệm hiệu suất với tích hợp liên tục. Nói chung, thử nghiệm phi chức năng được sử dụng để bị bỏ qua hoặc bỏ lại cho đến cuối quá trình phân phối phần mềm bởi rất nhiều ogranisations. Tôi có thể thấy sự thay đổi tích cực trong thái độ và quan tâm nhiều hơn đến việc xác minh tự động các yêu cầu phi chức năng trong CI/CD. Điều này bao gồm hiệu suất, khả năng truy cập và bảo mật, ở mức độ khác nhau. Bạn đã đề cập đến việc sử dụng Selenium để kiểm tra hiệu suất. Tôi biết một số người (cố gắng) làm điều đó, và thậm chí thấy việc thất bại là một trong những nỗ lực như thế. Tôi hoàn toàn hiểu lý do tại sao mọi người xem xét làm điều đó, mặc dù tôi muốn đề nghị tránh xa điều này. Trừ khi bạn có một lý do rất tốt để làm điều ngược lại. Nói chung, khó đạt được hơn người ta có thể nghĩ. Selenium là một công cụ tuyệt vời để bao gồm trong CI cho các mục đích thử nghiệm GUI, nhưng sự kết hợp của nó trong thử nghiệm hiệu suất là hơi rắc rối.

Hiện nay, một công cụ mới, có thể giúp bạn tích hợp JMeter với máy chủ CI của sự lựa chọn của bạn, với một số tính năng dành riêng cho TeamCity và Jenkins:

https://github.com/automatictester/lightning

yêu cầu tính năng đều được chào đón.

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