Ja (re) piszę program, który wykonuje jednostkę ogólnąplanowanie testów. Obecny program jest mono-gwintowanym programem perlowym, ale jestem skłonny do jego modularyzacji i zrównoleglenia testów, a także rozważam przepisanie go w Pythonie.
Oto, co muszę zrobić:
- Mam listę testów z następującymi atrybutami:
- uri: identyfikator URI do testowania (może to być HTTP / HTTPS / SSH / local);
- zależy: tablica asocjacyjna testów / wartości, od których zależy to badanie;
- join: lista połączeń DB dodawana podczas wybierania elementów do przetworzenia w tym teście;
- depends_db: dodatkowe warunki do dodania do zapytania DB podczas wybierania elementów do przetworzenia w tym teście.
- Program buduje drzewo zależności, zaczynając od testów, które nie mają zależności;
- dla każdego testu:
- lista pozycji jest wybierana z bazy danych przy użyciu warunków (wyniki zależnych testów, połączeń i zależy_db);
- lista pozycji jest wysyłana do URI (przy użyciu POST lub stdin);
- wynik jest zapisywany jako plik YAML zawierający listę stanu i komentarze do testu dla każdego testowanego przedmiotu;
- wyniki są przechowywane w DB;
- test powraca, umożliwiając wykonanie testów zależnych.
- program generuje raporty (CSV, DB, graphviz) z wykonanych testów.
Głównym zastosowaniem tego programu jest obecnieprzetestuj flotę maszyn przeciwko usługom takim jak tworzenie kopii zapasowych, DNS itp. Testami mogą być: - kopia zapasowa: hostowana na maszynach zapasowych, zwanych przez HTTP, sprawdza, czy kopie zapasowe maszyn poszły dobrze; - DNS: hostowany na komputerze lokalnym, wywoływany przez stdin, sprawdza, czy komputery "fqdn mają prawidłowy wpis DNS.
Czy takie narzędzie / moduł już istnieje? Jaka byłaby najlepsza implementacja, aby to osiągnąć (używając Perla lub Pythona)?
Odpowiedzi:
4 dla odpowiedzi № 1Tego rodzaju testowanie nie jest testowaniem jednostkowym.
Jeśli zdecydujesz się nie stosować do rad RJH, aby zachować większość kodu, który już napisałeś, zamień testy, aby użyć standardowego narzędzia testowego.
- Posługiwać się Test :: Class i przyjaciele do emisji KRAN.
- Posługiwać się okazać się"s
-j
opcja lub Test :: Aggregate aby równolegle wykonywać testy. - Użyj dowodu "s"
-a
opcja lub App :: Prove :: Historia nagrywać wyniki. - Posługiwać się TAP :: Formatter :: HTML do raportowania graficznego.