2013-05-16 15 views
53

Mamy rozproszone środowisko testowe z robotremoteserver, które uruchamia szereg innych aplikacji i pracuje z nimi w ramach testu. Test, który próbuję uruchomić, wymaga ode mnie uruchomienia ponad miliona przypadków testowych w jednym pakiecie. Problem polega na tym, że po uruchomieniu go blokuje 8 gig pamięci i powoduje niską wydajność. Po pewnym czasie zamarza.Uruchamianie zestawu testowego z ponad milionem przypadków testowych

Aby rozwiązać ten problem, planowałem stworzyć osobne apartamenty z mniej niż 100 przypadkami w każdym. Ale w tym przypadku nie mogę używać słów kluczowych z innych serwerów zdalnych inicjowanych z innych pakietów. Jedynym sposobem, w jaki mogę go użyć, jest odłączenie się od zdalnego serwera i ponowne połączenie go w każdym pakiecie - co mogłoby zniweczyć cel testu.

Nie jestem pewien, czy ktokolwiek natknął się na ten scenariusz. Byłbym wdzięczny, gdyby ktokolwiek pomyślał o rozwiązaniu tego problemu.

Dodatkowe informacje Inną rzeczą, która pomoże rozwiązać to, czy jest możliwe, aby zadzwonić do słowa kluczowego z biblioteki (z państwa), która ma się rozpocząć w innym apartamencie?

Czy mogę użyć uzyskać instancję biblioteki podczas korzystania z RIDE? Importuję bibliotekę w jednym pakiecie, a następnie próbuję pobrać instancję biblioteki w innym pakiecie. czy to możliwe?

wciąż otrzymuję następujący błąd:

AttributeError: Remote instance has no attribute 'replace'

w apartamencie 1 to co robie:

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

W Suite 2:

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

Witam Amol, czy odniosłeś jak dotąd sukces? Szczerze mówiąc brzmi to dość głupio, że tyle testów jest połączonych w ramach zestawu testów, nie mogę sobie wyobrazić, że można zrozumieć zestaw jako jednostkę. Myślę, że radziłbym podzielić zestaw testów tak, jak robiłeś to w jednostkach logicznych, aby uniknąć problemów. Czy próbowałeś zrobić to samo z tagami? Jedną z dodatkowych sugestii jest użycie pabota po rozdzieleniu niektórych zestawów testów. Po prostu bądź ostrożny, jeśli potrzebujesz jakiegoś wspólnego zasobu dla jakichkolwiek testów – shicky

+0

Milion, poważnie? Czy są automatycznie generowane przypadki testowe? Jaki jest rozmiar pliku testowego? Czy masz jakieś sukcesy z powyższymi sugestiami? – Rao

+5

@ Chicky nie ma powodu, aby zadzwonić do kogoś głupiego ... – Monkpit

Odpowiedz

0

Ok. Po pierwsze, nie programuję w pythonie i nie mam pojęcia, z jakiego rodzaju komputera korzystasz lub ile pamięci ma komputer lub czegokolwiek na temat twojej sytuacji na komputerze. To tylko ogólne informacje zebrane z pisania programów systemowych i pracy na wielu komputerach.

Powiedziawszy to: Jeśli zamierzasz uruchamiać olbrzymie zbiory danych lub ogromną liczbę programów, będziesz musiał podzielić na partycje, co chcesz zrobić, aby zmieścił się w systemie (systemach), którego używasz. To jest pierwsza część. Druga część jest taka, że ​​jeśli chcesz rozmawiać z programami do innych programów lub systemów, musisz ustawić typ typowego użycia pamięci. Wiem, że PHP ma wbudowane coś takiego, więc muszę założyć, że Python również ma taką rzecz. Konfigurujesz wspólny obszar pamięci, a następnie przesyłasz informacje pomiędzy różnymi programami. Zwykle używa się jakiejś formy tokena do identyfikacji każdego programu i/lub systemu. W ten sposób możesz skonfigurować ustawienia, więc gdy tylko jeden zestaw testów zostanie ukończony, może powiedzieć, że następny zestaw ma się rozpocząć, a zatem nie przejąć ani nie zasypać twojego systemu.

Jeśli jesteś naprawdę dobry - możesz również utworzyć program kontrolera, który uruchomi test, obejrzy go, aż test zakończy się/zakończy, a następnie rozpocznie następny test. (Zamiast tego można to zrobić w sposób łańcuchowo-podrzędny, tak jak w relacji klient/serwer.)

Jeśli korzystasz z okna/os sugerowałbym spojrzenie na AutoIt. AutoIt może z łatwością obsługiwać oglądanie uruchomionego programu i uruchamianie nowego zadania po zakończeniu starego zadania. Pozwala również na pełną kontrolę zarówno nad systemem, jak i systemem zdalnym, i został opracowany, aby pomóc w automatyzacji zadań, takich jak ten, który próbujesz wykonać.Zauważyłem (eksperymentując), że AutoIt może być również użyty w systemach Unix/Linux, takich jak komputery Mac i inne. Chociaż masz wtedy tylko polecenia, które wysyłasz, a nie dostęp do funkcji Windows.

Jeśli jesteś bardziej biegły w Pythonie, możesz to zrobić używając go - to więcej mocy dla ciebie. Chociaż minęły dwa lata, odkąd o to poprosiłeś - mam nadzieję, że pomoże ci to w twoich wysiłkach. :-)

2

Nie znam żadnych szczegółów na temat Pythona, ale można spróbować wypróbować każdy przypadek testowy jako oddzielny proces. Umożliwi to odzyskanie pamięci z każdego procesu po jej zakończeniu i może pozwolić na bezpieczne uruchomienie miliona testów na jednym komputerze.

Ogólnie, gdy program potrzebuje więcej pamięci z systemu operacyjnego, bierze go, ale nie może go oddać, dopóki się nie zakończy. Prawdopodobnie dlatego proces się przewraca.

Szybkie procesy, które możesz rozpędzić, a następnie zabić, będą łagodzić ten problem z pamięcią ... a następnie jest to całkiem krótki krok od tego, aby uruchomić każdy z tych przypadków testowych za pośrednictwem programu rsh na innej maszynie.

Mam nadzieję, że to trochę pomaga.

Powiązane problemy