6

Chúng tôi muốn thực hiện một số thử nghiệm tích hợp tự động của quy trình yêu cầu gửi dữ liệu đến nguồn bên ngoài và sau đó xác thực rằng dữ liệu đã được hiển thị chính xác trên trang web của họ.Kiểm tra tự động .NET cho các quy trình chạy dài

Tuy nhiên, có thể mất vài giờ trước khi dữ liệu xuất hiện trên trang web.

Sự cố với NUnit hoặc MSTest truyền thống là thử nghiệm sẽ được giữ lại trong nhiều giờ chờ kết quả.

Tôi đã thấy PNUnit có thể được sử dụng - để chạy tất cả các thử nghiệm song song, nhưng nó không có vẻ là một giải pháp thanh lịch đối với tôi. Nếu có 1000 bài kiểm tra thì sao? Điều này sẽ không tạo ra vô số các tiến trình/luồng trên máy chủ? Và làm thế nào để theo dõi tất cả chúng.

Vì vậy, có ai đã giải quyết vấn đề này không? Bạn có phát triển một giải pháp hay có giải pháp nguồn mở cho điều này không?

+0

Cảm ơn các bạn đã trả lời câu hỏi. Ý tưởng hay. Tôi đã hy vọng nhận được phản hồi từ một người đã thực hiện một cái gì đó như thế này. Tôi nghĩ cách tốt nhất để tiếp cận điều này là để xay ra một số C# và tạo ra một cái gì đó từ các nguyên tố đầu tiên. Tôi không chắc chắn NUnit/MSTest vv có thể làm điều này một cách thanh lịch. –

+1

Tôi nghĩ rằng thử nghiệm của bạn nếu quá rộng trong phạm vi và bao gồm nhiều điều kiện có thể đi sai mà không nằm trong mã của bạn. Vì vậy, nó không còn là một bài kiểm tra "đơn vị", mà là một thử nghiệm "hệ thống", đó là lý do tại sao bạn thấy khó khăn để phù hợp với nó trong khuôn mẫu thử nghiệm đơn vị.Các bài kiểm tra đơn vị được coi là các phần chức năng nhỏ ("đơn vị"). Thường chạy như một phần của quá trình xây dựng. Tôi nghĩ rằng bạn đang tìm kiếm để làm nhiều hơn của một thử nghiệm hệ thống và nên tìm kiếm các công cụ như thử nghiệm tải hoặc thử nghiệm mô phỏng khách hàng, vv ... Nhiều người trong số những công cụ này được xây dựng cho các quy trình chạy dài. – BenSwayne

Trả lời

2

Sự cố này có thể được giải quyết dễ dàng bằng cách tách chèn và xác minh dữ liệu thử nghiệm. Chỉ cần tải tất cả dữ liệu thử nghiệm có sẵn vào hệ thống, đợi vài giờ cho đến khi quá trình xử lý hoàn tất và sau đó thực hiện các kiểm tra xác minh.

+0

Ý tưởng hay. Tôi không nghĩ rằng bất kỳ khuôn khổ kiểm tra cho vay mình để điều này mặc dù? Ví dụ Nunit bạn chạy các bài kiểm tra và họ vượt qua hoặc thất bại. Bạn có đề xuất liên tục chạy thử nghiệm từ một số quy trình khác sau đó sử dụng NUnit để xác thực dữ liệu trong DB được thu thập trong ngày qua không? –

+0

"Tất cả" khuôn khổ cho mình mượn kỹ thuật này! Bạn chỉ cần tải một số dữ liệu thử được xác định trước mà bạn tìm kiếm sau hoặc lưu dữ liệu thử nghiệm của bạn trong thử nghiệm "chèn/tải lên" vào hệ thống tệp, sau đó đọc tệp đó trong kiểm tra "xác minh" của bạn sau này để kiểm tra. Bí quyết là thời điểm đó là lý do tại sao tôi không nghĩ rằng đây là một thử nghiệm đơn vị thích hợp ở nơi đầu tiên, mà là một "kiểm tra hệ thống". – BenSwayne

+0

Các khung kiểm tra đơn vị thường có tính năng "Cài đặt", thường được sử dụng để chuẩn bị môi trường để thử nghiệm. Bạn có thể sử dụng nó để chèn dữ liệu thử nghiệm vào hệ thống của bạn. http://www.nunit.org/index.php?p=setupFixture&r=2.4 –

1

Có vẻ như PNUnit sẽ là một giải pháp tốt. Nếu bạn đang lo lắng về "quá nhiều quy trình/chủ đề" trên máy chủ, chỉ cần tăng tốc độ kiểm tra bao nhiêu PNUnit có thể chạy cùng một lúc (nói, Max N); khi thử nghiệm hoàn thành, hãy lên lịch kiểm tra tiếp theo. Tôi không khẳng định PNUnit biết làm thế nào để làm điều này; bạn có thể phải triển khai tùy chỉnh này.

0

Martin, trước khi tôi nhận được để giải pháp của tôi, cho đơn vị thử nghiệm nó dường như với tôi rằng bạn sẽ muốn kiểm tra chỉ những gì bạn có thể kiểm soát. Ở trên là giống như những gì tôi gọi là thử nghiệm hồi quy. Tôi giả sử trang web 'của họ' là trang web của người khác. Tôi có thể hỏi điều gì sẽ xảy ra nếu bạn tuân theo các quy tắc của giao diện/tích hợp nhưng không có gì có được trên màn hình của họ, trong khi nó có thể là một vấn đề gì hoặc bạn có thể làm gì về nó? Hơn nữa, điều gì sẽ xảy ra khi họ thay đổi trang web hoặc thuật toán của họ? Bạn sẽ cần phải viết mã dựa trên những gì họ làm mà hút.

Điều đó nói rằng, như đã đề cập ở trên, bạn có thể tách các bài kiểm tra tải và kiểm tra dữ liệu xác minh. Tôi thú nhận tôi không biết gì về PNunit, nhưng chỉ đơn giản là ném chủ đề vào nó sẽ không giải quyết độ trễ 3 giờ cho mỗi bài kiểm tra khứ hồi.

nếu bạn cần chạy đồng bộ, bạn có thể tải tất cả dữ liệu trong ClassInitialize() rồi ngủ cho đến khi đã đến lúc xác minh và chạy thử nghiệm thực tế.

Nếu đó là tôi, tôi chỉ có một dự án thử nghiệm cho các bài kiểm tra tải và sau đó là một dự án để xác minh kết quả một vài giờ sau đó. Có nó đồng bộ không có vẻ như nó sẽ mua cho bạn nhiều lợi ích khác hơn là đảm bảo điều kiện tiên quyết vượt qua trước khi kiểm tra kết quả, mà có thể được xử lý theo những cách khác là tốt.

+0

cảm ơn cho đề nghị. có vẻ như tải ngay bây giờ sau đó xác minh sau đó là phổ biến. vấn đề là không có khuôn khổ nào dường như hỗ trợ điều này vì vậy các tùy chọn chỉ là "cuộn của riêng bạn" hoặc bắt đầu một sáng kiến ​​nguồn mở. –

+0

Tôi đã cố gắng giải quyết lý do tại sao tôi không có khung làm điều này và có khả năng trang web khác là hộp đen và kiểm tra xác minh rằng hộp đen phải nằm trong giải pháp đó chứ không phải ứng dụng tiêu thụ, nhưng đó chỉ là ý kiến. dọc theo các dòng phân tách mối quan tâm –