2013-05-16 19 views
53

Chúng tôi có một môi trường thử nghiệm phân tán với robotremoteserver bắt đầu một loạt các ứng dụng khác và làm việc với chúng như một phần của thử nghiệm. Bài kiểm tra mà tôi đang cố gắng chạy đòi hỏi tôi phải chạy hơn một triệu trường hợp thử nghiệm trong một bộ duy nhất. Vấn đề ở đây là khi pybo t bắt đầu chạy nó chặn 8 gigs ram và kết quả hoạt động chậm. Sau một lúc nó bị đóng băng.Chạy thử nghiệm với hơn một triệu trường hợp thử nghiệm

Để khắc phục sự cố này, tôi đã lên kế hoạch tạo các suite riêng biệt với ít hơn 100 trường hợp trong mỗi phòng. Nhưng trong trường hợp này, tôi không thể sử dụng các từ khóa từ các bộ điều khiển từ xa khác được khởi tạo từ các suite khác. Cách duy nhất tôi có thể sử dụng nó là ngắt kết nối từ bộ điều khiển từ xa và kết nối lại nó trong mỗi bộ - điều này sẽ đánh bại mục đích của thử nghiệm.

Tôi không chắc liệu có ai đã bắt gặp tình huống này hay không. Tôi sẽ đánh giá cao nếu có ai có thể nghĩ ra một giải pháp cho vấn đề này.

Thông tin bổ sung Một điều khác giúp giải quyết vấn đề này là nếu có thể gọi từ khóa từ thư viện (có trạng thái) được khởi tạo bởi một bộ khác?

Tôi có thể sử dụng lấy phiên bản thư viện khi sử dụng RIDE? Tôi đang nhập thư viện trong một bộ, sau đó thử lấy dụ thư viện trong bộ phần mềm khác. Điều này có thể không?

tôi tiếp tục nhận được lỗi sau:

AttributeError: Remote instance has no attribute 'replace'

Trong Suite 1 đây là những gì tôi đang làm:

Import Library Remote ${verifix_xmlrpc_url} WITH NAME Verifix 
${lib}= BuiltIn.Get Library Instance Verifix 
Set Global Variable ${lib} 

Trong Suite 2:

${lib}.remove messages ${VenueNSDQ} 
+11

Hi Amol, bạn đã có bất kỳ thành công nào cho đến nay chưa? Thành thật mà nói, có vẻ khá ngu ngốc khi có nhiều trường hợp kiểm tra được liên kết dưới một bộ kiểm tra, tôi không thể tưởng tượng rằng nó có thể hiểu được bộ phần mềm như một đơn vị. Tôi nghĩ rằng tôi sẽ khuyên bạn nên chia tách bộ thử nghiệm như bạn đã làm trong các đơn vị hợp lý để tránh các vấn đề. Bạn đã thử làm như vậy với thẻ chưa? Một gợi ý bổ sung sẽ là sử dụng pabot khi bạn đã tách ra một số bộ thử nghiệm. Chỉ cần cẩn thận nếu bạn cần một số tài nguyên được chia sẻ cho bất kỳ thử nghiệm nào chạy – shicky

+0

Một triệu, nghiêm túc? Các trường hợp thử nghiệm có được tạo tự động không? Kích thước của kích thước tệp thử nghiệm là bao nhiêu? Bạn có thành công với những đề xuất trên không? – Rao

+5

@shicky không có lý do gì để gọi cho bất kỳ ai ngu ngốc ... – Monkpit

Trả lời

0

Ok. Đầu tiên, tôi không lập trình bằng python và tôi cũng không biết bạn đang sử dụng loại máy tính nào hoặc bộ nhớ máy tính có bao nhiêu bộ nhớ hoặc bất kỳ điều gì khác về tình hình của bạn với (các) máy tính của bạn. Vì vậy, đây chỉ là thông tin chung được thu thập từ việc viết các chương trình hệ thống và làm việc trên nhiều máy tính.

Với điều đó cho biết: Nếu bạn định chạy bộ dữ liệu khổng lồ hoặc một số lượng lớn chương trình, bạn sẽ phải phân vùng những gì bạn muốn làm sao cho nó phù hợp với (các) hệ thống bạn đang sử dụng. Đó là phần đầu tiên. Phần thứ hai là nếu bạn muốn nói chuyện qua các chương trình với các chương trình hoặc hệ thống khác thì bạn cần phải thiết lập một số loại sử dụng bộ nhớ chung. Tôi biết rằng PHP có một thứ như vậy được xây dựng trong nó vì vậy tôi phải giả định rằng Python cũng có một thứ như vậy. Bạn thiết lập khu vực bộ nhớ chung và sau đó gửi thông tin qua lại giữa các chương trình khác nhau. Thường sử dụng một số hình thức mã thông báo để xác định từng chương trình và/hoặc hệ thống. Bằng cách này, bạn có thể thiết lập mọi thứ cho nên khi một bộ kiểm thử hoàn thành, nó có thể báo cho bộ tiếp theo bắt đầu và do đó không tiếp quản hoặc làm hỏng hệ thống của bạn.

Nếu bạn thực sự tốt - bạn cũng có thể tạo một số loại chương trình điều khiển khởi động kiểm tra, xem nó cho đến khi kiểm tra kết thúc/thoát, và sau đó bắt đầu kiểm tra tiếp theo. (Vì vậy, thay vì một chuỗi chuỗi daisy để làm điều này bạn có một cách chủ/nô lệ để làm điều này giống như một mối quan hệ khách hàng/máy chủ.)

Nếu bạn đang sử dụng một hộp windows/os Tôi sẽ đề nghị xem AutoIt. AutoIt có thể dễ dàng xử lý việc xem một chương trình chạy và khởi động một nhiệm vụ mới khi một tác vụ cũ đã hoàn thành. Nó cũng cho phép bạn kiểm soát toàn bộ hệ thống của bạn cũng như hệ thống từ xa và được phát triển để giúp tự động hóa các tác vụ như công việc bạn đang cố gắng thực hiện.Tôi tìm thấy (bằng cách thử nghiệm) rằng AutoIt cũng có thể được sử dụng với các hộp Unix/Linux như Mac và các máy khác. Mặc dù bạn chỉ sau đó có các lệnh bạn gửi hơn là truy cập vào các tính năng của Windows.

Nếu bạn thông thạo hơn với Python, bạn có thể thực hiện ở trên bằng cách sử dụng nó - sau đó có thêm sức mạnh cho bạn. Mặc dù đã hai năm kể từ khi bạn hỏi điều này - tôi hy vọng điều này sẽ giúp bạn trong nỗ lực của bạn. :-)

2

Tôi không biết bất kỳ chi tiết cụ thể nào về python, nhưng những gì bạn có thể muốn thử xoay vòng từng trường hợp thử nghiệm dưới dạng một quy trình riêng biệt. Điều này sẽ cho phép bạn khôi phục bộ nhớ từ mỗi quá trình khi nó hoàn tất và có thể cho phép bạn chạy hàng triệu trường hợp thử nghiệm của mình một cách an toàn trên một máy.

Nói chung, khi một chương trình cần nhiều bộ nhớ hơn từ hệ điều hành, phải mất nó, nhưng nó không thể trả lại cho đến khi nó thoát. Đây có thể là lý do tại sao quá trình của bạn rơi xuống.

Quy trình nhanh mà bạn có thể quay lên và sau đó giết, sẽ làm giảm bớt vấn đề bộ nhớ này .... và sau đó là một bước khá ngắn từ đó để chạy từng trường hợp thử nghiệm này thông qua rsh trên một máy hoàn toàn khác.

Tôi hy vọng điều đó sẽ giúp ích một chút.