6

Rozwijam narzędzie wiersza poleceń, które ma wiele flag. Typowa komenda wygląda tak:Czy istnieje ustalony standard testowania argumentów wiersza poleceń?

mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E 

W większości przypadków, komunikat „sukces” jest drukowany, ale nadal chcą zweryfikować przed innych źródeł, takich jak zewnętrznej bazy danych, aby zapewnić rzeczywisty sukces.

Zaczynam tworzyć testy integracyjne i nie mam pewności, jak najlepiej to zrobić. Moje główne problemy to:

  1. Istnieje wiele kombinacji wielu flag, skąd mam wiedzieć, które kombinacje należy przetestować? Jeśli wykonasz matematykę dla flag 10+, które mogą być używane razem ...
  2. Czy konieczne jest przetestowanie permutacji flag?
  3. Jak zbudować framework umożliwiający automatyzację testów, a następnie weryfikację wyników.
  4. Jak śledzić dużą liczbę flag i dostarczać zamówienia, aby łatwo było stwierdzić, jakie kombinacje zostały zaimplementowane, a co nie.

Myśl o ręcznym pisaniu pojedynczych przypadków i weryfikowaniu wyników w formie testu jednostkowego, jest zniechęcająca.

Czy ktoś wie o schemacie, który może być użyty do zautomatyzowania tego typu testu? Być może nawet oprogramowanie, które próbuje rozwiązać ten problem? W jaki sposób ludzie pracujący na narzędziach wiersza GNU testują swoje oprogramowanie?

Odpowiedz

2

Myślę, że jest to bardzo specyficzne dla twojej aplikacji.

Po pierwsze, w jaki sposób ustalasz sukces realizacji twojego wniosku? Czy to kod wyniku? Czy coś jest wydrukowane na konsoli?

W przypadku pytania 2 zależy to od tego, jak analizować te flagi w aplikacji. W większości przypadków kolejność flag nie jest ważna, ale są przypadki, w których jest. Mam nadzieję, że nie musisz testować permutacji flag, ponieważ dodawałoby to wiele przypadków do testowania.

W ogólnym przypadku należy przeanalizować wpływ każdej flagi. Możliwe, że flaga nie koliduje z innymi, a następnie wystarczy przetestować jeden raz. Dotyczy to również flag, które mają być używane samodzielnie (na przykład - - pomoc lub --version). Musisz także przeanalizować, jakie wartości należy przetestować dla każdej flagi. Zwykle chcesz wypróbować każdy rodzaj możliwej poprawnej wartości i każdego rodzaju możliwych nieprawidłowych wartości.

Myślę, że można napisać prosty skrypt bash, aby wykonać testy lub dowolny język skryptowy, taki jak Python. Używając zagnieżdżonych pętli, możesz wypróbować, dla każdej flagi, możliwe wartości, w tym testy dla nieprawidłowych wartości i przypadek, w którym flaga nie jest ustawiona. Wytworzę wielowymiarową matrycę wyników, którą należy przeanalizować, aby sprawdzić, czy wyniki są zgodne z oczekiwaniami.

+0

Dziękujemy za opinię. W większości przypadków polecenia generują komunikat "sukces", ale manipuluje się podmiotem zewnętrznym względem polecenia. Muszę więc wykonać dodatkową pracę do weryfikacji (np. Zapytanie do bazy danych). Będę się bawił z myślą o zagnieżdżonych pętlach, ale wydaje się, że trudno byłoby zorganizować test w ten sposób. – trinth

1

Kiedy piszę aplikacje (w językach skryptowych), mam funkcję, która analizuje ciąg wiersza poleceń. Pozyskuję plik, który rozwijam, i test jednostki, który działa bezpośrednio, a nie z udziałem powłoki.

Powiązane problemy