• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak napisać testerkę kodu?

Object Storage Arubacloud
0 głosów
460 wizyt
pytanie zadane 20 października 2015 w C i C++ przez Porcupine Nałogowiec (31,560 p.)

Hej!

Powiedzmy, że mam program, którego działanie chcę sprawdzić i drugi program np. jakiś BruteForce, który wiem, że daje dobre wyniki. W jaki sposób najprościej mogę napisać testerkę, która dla jakichś konkretnych danych wejściowych porówna output obu kodów i wypisze jakiś komunikat jeśli dla którychś danych wyniki będą się różnić?

Pozdrawiam,

:)

2 odpowiedzi

+1 głos
odpowiedź 20 października 2015 przez furas Maniak (53,800 p.)
Jeśli są to programy tekstowe - czyli uruchamia się je z lini komend (z podanymi parametrami) i czytają dane z klawiatury a wyniki wypisują na ekran to można zrobić skrypt w Perl/Python/Ruby/PHP/Bash/itp.

Jeśli program jest okienkowy to dużo więcej roboty - chyba, że znajdziesz program, który potrafi kontrolować widgety w innym programie okienkowym.

---

Przykładowo przy testowaniu stron internetowych stosuje się program Selenium, który potrafi kontrolować przeglądarkę Firefox i Chrome - potrafi także symulować przeglądakę w pamięci bez wyświetlania na ekranie.
komentarz 20 października 2015 przez Porcupine Nałogowiec (31,560 p.)
Chodziło mi o zwykłe tekstowe, a jak mniej więcej taki skrypt miałby wyglądać / jak miałby działać? Znam trochę Python'a ale nigdy czegoś takiego nie pisałem.
komentarz 20 października 2015 przez furas Maniak (53,800 p.)
edycja 20 października 2015 przez furas

W Pythonie jest moduł subprocess a w nim kilka funkcji do uruchamiania zewnętrznych programów i wraca to co program wypisał na ekran. Trzeba o nich poczytać i wybrać właściwą.

Przykładowo wylistowanie katalogu wywołanie w Windows
(nie używam Windows więc dokładnie nie sprawdzę)

import subprocess

wynik = subprocess.call( ['dir', 'c:\\'] )
print(wynik)

To samo w Linux (to mogłem sprawdzić)

import subprocess

wynik = subprocess.call( ['ls', '-al', '/'] )
print(wynik)

Jeśli program czeka na wpisanie czegoś z klawiatury to powinna być możliwość przesłania tego z pliku lub ze zmiennej Pythona (tak aby program myślał, że to idzie z klawiatury) ale to musiał byś poszukać już w internecie.
 

---

Istnieje też taki prosty sposób na proste testy - np. w pliku klawiatura.txt umieszcza się to co normalnie trzeba by było wpisywac z klawiatury a wynik można zapisać w pliky wynik.txt

testowy_program < klawiatura.txt  > wynik.txt

W ten sposób można wielokrotnie wywoływać bez potrzeby wpisywania ręcznie na klawiaturze tych samych danych a wynik zapisac do pliku i porównać z innym za pomoca programów do porównywania zawartości plików - pod Linux jest np. diff

+1 głos
odpowiedź 20 października 2015 przez Radfler VIP (101,030 p.)

Dobra mam taki pomysł (na testerkę w C++):

Stwórz tą aplikację, która wywoła program z użyciem np. funkcji std::system. Przygotuj też sobie dwa pliki: jeden będzie przechowywał wyjście, a drugi wejście (np. input.txt, output.txt). W pliku input.txt przygouj dane wejściowe dla Twojego programu. Wywołując program z użyciem std::system przekierujesz strumienie stdout i stdin z "ekranu" do tych plików (stdout -> output.txt, stdin -> input.txt). Na Windows, taki program wywołasz tak:

std::system("TWOJA_APLIKACJA < input.txt > output.txt");

U mnie to zadziałało. Dodatkowo możesz też przekierować stderr  dopisując "2>&1 errors.log".

Potem Twój program testujący pobierze output z odpowidniego pliku i będzie robił z nim co chce.

To tyle. Testowałem to u siebie na kompie i działało :)

Tu masz jeszcze o przekierowywaniu: https://en.wikipedia.org/wiki/Redirection_%28computing%29

Podobne pytania

0 głosów
0 odpowiedzi 229 wizyt
0 głosów
0 odpowiedzi 151 wizyt
pytanie zadane 20 marca 2020 w C# przez dawid2002 Mądrala (5,190 p.)
+1 głos
3 odpowiedzi 378 wizyt
pytanie zadane 6 stycznia 2022 w C i C++ przez BListwan Nowicjusz (150 p.)

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...