Testy jednostkowe oraz Leak memory

0

Witam

Jakiś czas temu rozpocząłem swoją przygodę z Delphi.
Pisałem małej oraz średniej wielkości aplikacje. Natrafiłem na problem pisania testów. Do tej pory tworzyłem osobnego unita, do testowania ... unita i w wynikowej aplikacji wyłączałem lub załączałem odpowiednie pliki w uses, aby wygenerować kod testowy oraz aplikację. Jak wiadomo takie rozwiązanie lekko mówiąc, jest mało wygodne. Dlatego powstało pytanie:
Z jakich frameworków korzystacie lub narzędzi do pisania testów jednostkowych i ogólnie testów? Jakie są wygodne i odzielają całkowicie implementację programu od testów? Czy można jakoś testować w wygodny sposób GUI? (tak jak np w QT).

Drugi problem na jaki natrafiłem to są wycieki pamięci. Ogólnie nie ma z tym problemu, ale wiadomo, że przy zmęczeniu można coś nie tak chlapnąć.
Jakie narzędzia wykorzystujecie do sprawdzania poprawności pamięci? Czy jest coś podobnego do np. valgrinda?

Z jakich innych narzędzi korzystacie jeśli chodzi o testowanie aplikacji, połączeń z bazami danych? Pomijam tutaj debugger co jest oczywistością.

Z góry dziękuję za jakiekolwiek sugestie i pomysły.

1

Odnośnie wycieków pamięci można skorzystać z Eurekalog (komercyjny) albo MadExcept (komercyjny ale dla użytku prywatnego bezpłatny). Poza wyciekami pamięci pomogą one w wyłapaniu wielu błędów aplikacji i przyspieszą ich naprawę.
Co do testów jednostkowych to pewnie DUnit i np. TestInsight

2

Do wycieków wystarcza standardowe raportowanie z fastmm wbudowanego w delphi, w szczególnych przypadkach odpalam raportowanie w madexcept (chociaż on raportuje też wycieki, które nie są wyciekami - trzeba wiedzieć co się robi).
Co do testów to DUnit. Co do GUI to ja cały czas testuję je organoleptycznie - tu kliknę to patrzę co się zmieni :). Jak zwykle najwięcej problemów sprawia testowanie interakcji z BD, na którą średnio mam pomysł.

0
[abrakadaber napisał(a)] Co do GUI to ja cały czas testuję je organoleptycznie - tu kliknę to patrzę co się zmieni :)

Czyli Delphi tylko tyle ma do zaoferowania w kwestii testowania gui?

1
Czoczo napisał(a):

Czyli Delphi tylko tyle ma do zaoferowania w kwestii testowania gui?

Widzę, że czytanie ze zrozumieniem to dla ciebie czarna magia, już nie wspominając o zdolności wyszukiwania informacji w sieci.

1

Zasadniczo na jednej z konferencji Delphi 10.2 Tokyo Pan Głowacki wspomniał, że oni sami testują GUI (oczywiście mowa o GUI środowiska) specjalnie napisaną aplikacją o nazwie "Zombi", która robi to co @abrakadaber organoleptycznie :)

1

Do testowania gui TestComplete - SmartBear

1
abrakadaber napisał(a):

Co do testów to DUnit.

Jednak wolę DUnitX
https://github.com/VSoftTechnologies/DUnitX

Co do GUI to ja cały czas testuję je organoleptycznie - tu kliknę to patrzę co się zmieni :). Jak zwykle najwięcej problemów sprawia testowanie interakcji z BD, na którą średnio mam pomysł.

Dlaczego z bazą jest problem?
I co dokładnie masz na myśli pisząc o testowaniu interakcji z BD?

1
Andy Misio napisał(a):

Witam

Jakiś czas temu rozpocząłem swoją przygodę z Delphi.
Pisałem małej oraz średniej wielkości aplikacje. Natrafiłem na problem pisania testów. Do tej pory tworzyłem osobnego unita, do testowania ... unita i w wynikowej aplikacji wyłączałem lub załączałem odpowiednie pliki w uses, aby wygenerować kod testowy oraz aplikację. Jak wiadomo takie rozwiązanie lekko mówiąc, jest mało wygodne. Dlatego powstało pytanie:
Z jakich frameworków korzystacie lub narzędzi do pisania testów jednostkowych i ogólnie testów?

DUnitX jako testy jednostkowe.
TestComplete do ich uruchamiania.
CodeSite + EurekaLog do logowania wieeeelu rzeczy. Przydaje się też do szukania baboli, wycieków, trybu debug i tak dalej.

Jakie są wygodne i odzielają całkowicie implementację programu od testów? Czy można jakoś testować w wygodny sposób GUI? (tak jak np w QT).
Nie ma takich narzędzi w postaci gotowca.
Żeby w ogóle coś móc testować w desktopowej aplikacji, to trzeba się napracować nad jej architekturą.
Jeśli klepiesz TQuery na DataMomdule, a potem pracowicie łączysz to z wyklikanymi formatkami to słabo to widzę...

Co do testowania UI,to podało tu TestComplete. Lepsze pewnie nie istnieje, a cena zabija.
Oczywiście można bawić się w jakieś AutoIT i podobne, ale efekty są różne...

Najłatwiej napisać podstawowe, ogólne testy dymne. Taki smoke test - np. dla aplikacji bazodanowej może polegać, na sekwencyjnym otwarciu wszystkich formatek i zalogowaniu czy się poprawnie otworzyły. Oczywiście nie jest to ideał, ale już coś tam pozwoli sprawdzić, zwłaszcza jak takich formatek są setki...
Ale i tak w aplikacji wyklikanej to prawie niemożliwe.

Drugi problem na jaki natrafiłem to są wycieki pamięci. Ogólnie nie ma z tym problemu, ale wiadomo, że przy zmęczeniu można coś nie tak chlapnąć.
Jakie narzędzia wykorzystujecie do sprawdzania poprawności pamięci? Czy jest coś podobnego do np. valgrinda?

Tu rozwiązań jest od metra - padło już EurekaLog, MadExcept, FastMM.
Dodam jeszcze DDDEbug (http://ddobjects.de/dddebug używam, bywa pomocne), ale największe babole w skomplikowanym kodzie (wielowątkowy serwer aplikacyjny z ogromną dynamiką zmian; dość powiedzieć, ze w ciągu 12h pracy taki serwer może utworzyć i zwolnić ponad milion obiektów. I to tylko jednego typu - taki lajf :/) znalazłem przy pomocy własnego patentu opartym na logowaniu cyklu życia obiektów przy pomocy CodeSite + Eureka (CallStack z niej pobieram).

Z jakich innych narzędzi korzystacie jeśli chodzi o testowanie aplikacji, połączeń z bazami danych? Pomijam tutaj debugger co jest oczywistością.

Tu nie rozumiem pytania, bo nie rozumiem co tu może nie działać :)

Z góry dziękuję za jakiekolwiek sugestie i pomysły.

Proszę :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1