Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady pisania na forum Pro

Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.

> Testowanie aplikacji
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Na wniosek ActivePlayera, zakładam temat o testowaniu aplikacji. O to treść wątku:

Chciałbym porozmawiać na temat testowania aplikacji php. Czy testujecie swoje aplikacje? Jeśli tak, to jakich narzędzi używacie? Czy w firmach w których pracujecie wdrożone jest continuous integration? Jak w praktyce wygląda praca nad testowaniem aplikacji? Czy używacie testów jednostkowych? Uważam że temat testowania aplikacji to coś ciekawego, o czym stosunkowo mało w polskim internecie - mysle ze moze to byc ciekawy temat do dyskusji.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
IceManSpy
post
Post #2





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ostatnio trochę zainteresowałem się testami jednostkowymi z wykorzystaniem PHPUnit. Zastanawiam się tylko w jaki sposób mogę testować swoje aplikację. Przykładowo chcę zrobić test, który sprawdzi mi, czy poprawnie dodaje się użytkownik do bazy danych. Jak go zrobić, aby przeszedł test, ale jednocześnie nie zmienił np wartości w auto increment?? Może to zbyt ogólny test?

Tak samo np test na sprawdzanie poprawności wpisania danych w formularzu (mamy np ustawione w walidatorze, że masz przechodzić tylko tekst, ktoś zamienił, że tylko liczby, to test nie powinien tego przepuścić).

Jeśli łatwiej wykonać takie coś wykorzystując Zenda, to aplikacje piszę w Zendzie.
Go to the top of the page
+Quote Post
cepa
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 7
Dołączył: 27.01.2010

Ostrzeżenie: (0%)
-----


Cytat(IceManSpy @ 27.08.2011, 17:02:15 ) *
Ostatnio trochę zainteresowałem się testami jednostkowymi z wykorzystaniem PHPUnit. Zastanawiam się tylko w jaki sposób mogę testować swoje aplikację. Przykładowo chcę zrobić test, który sprawdzi mi, czy poprawnie dodaje się użytkownik do bazy danych. Jak go zrobić, aby przeszedł test, ale jednocześnie nie zmienił np wartości w auto increment?? Może to zbyt ogólny test?


1) inicjujesz strukture i polaczenie z baza, ewentualnie ladujesz niezbedne dane do przeprowadzenia testu
2) tworzysz model uzytkownika, wstawiasz dane testowe
3) uruchamiasz obiekt ktory testujesz, ktorego zadaniem jest wstawienie usera do bazy
4) pobierasz usera z bazy jako nowa instancja modelu
5) sprawdzasz czy podane dane zgadzaja sie z testowymi (assert)

Cytat(IceManSpy @ 27.08.2011, 17:02:15 ) *
Tak samo np test na sprawdzanie poprawności wpisania danych w formularzu (mamy np ustawione w walidatorze, że masz przechodzić tylko tekst, ktoś zamienił, że tylko liczby, to test nie powinien tego przepuścić).


- kazdy test powinien pokrywac jeden przypadek
- walidator to osobny byt, testuje sie go osobno (single responsibility)

1) tworzysz obiekt request (dostepny w Zend_Test_PHPUnit_ControllerTestCase)
2) ustawiasz typ requestu na POST i wstawiasz dane formularza
3) dispatchujesz akcje kontrolera ($this->dispatch(...))
4) sprawdzasz czy uruchomiony zostal odpowiedni modul/kontroler/akcja
5) sprawdzasz czy walidacja dziala, czyli w tym przypadku: np: nie ma zapisu do bazy danych



Cytat(LSM @ 25.09.2011, 23:37:05 ) *
Jednak gdy wspomniałem o TDD usłyszałem "nie mamy na to czasu proszę Pana tu się zarabia pieniądze". Pomyślałem - ok, całkowita racja. Ale przyszło mi wnikać w kody napisane przez mojego pracodawcę - i gdy robiłem małe poprawki w programie, jedynym sposobem na spr. czy wszystko działa OK było przeklikanie całego interfejsu. Po prostu żenada - gdyby były testy wystarczyłoby odpalić jeden link i po zabawie. Więc powstało pytanie: czy aby naprawdę na tym polega zarabianie pieniędzy ? W pojedynke może i tak, ale rozwój to praca z innymi ludźmi, a bez testów to nie robota, ale męczarnia w pracy grupowej.

Inna sprawa, że testy niejako wymuszają pisanie dobrego kodu który można łatwo potem dzielić na moduły itp. W tej firmie w ogóle nie było żadnych prywatnych bibliotek czy modułów, a firma ta działa już 15 lat na rynku. Zonk. (IMG:style_emoticons/default/nerdsmiley.png)



imho to jest troche zalezne od profilu firmy, wiekszosc firm poprostu nie potrzebuje TDD bo tworzy krotko zyjace projekty, w ktorych ryzyko bledu jest wzglednie tolerowane.
Ale sa takze firmy w ktorych jakosc to podstawa i za to klienci placa ciezkie pieniadze, np: uruchamianie tych samych testow z automatu na 40 srodowiskach.
Poprostu wszystko wedlug potrzeb.

Robie z TDD i CI juz troche czasu i moja obserwacja jest taka, ze jak nie masz testow to w pozniejszym zyciu projektu mase czasu marnujesz na testowanie tego samego wkolko a bledy nadal sie pojawiaja, druga strona medalu jest taka, ze malo firm jest ktore maja dlugo zyjace projekty (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- nospor   Testowanie aplikacji   26.04.2011, 08:44:53
- - wookieb   W świecie PHP mało kto używa CI (a nawet jeśli to ...   26.04.2011, 09:02:10
- - batman   Z testowaniem aplikacji PHP jest jeden problem. PH...   26.04.2011, 09:21:57
- - wookieb   Serwery CI możesz skonfigurować naprawdę na duży l...   26.04.2011, 09:26:58
- - batman   Konfiguracja konfiguracją, nie zapominaj jednak, ż...   26.04.2011, 10:02:42
- - wookieb   Nie wiem o jakiej formie builda mówisz ale można p...   26.04.2011, 10:05:29
- - pejott   Wreszcie jakiś nowy i ciekawy wątek w PRO, ale czy...   27.04.2011, 18:49:40
- - wookieb   A cóż takiego daje behat czego nie ma PHPUnit? (po...   27.04.2011, 19:06:02
- - pejott   Nie jestem ekspertem BDD, szczerze to dla mnie lek...   27.04.2011, 19:11:35
- - wookieb   Aha. Musiałbym sprawdzić czy wnosi coś nowego co j...   27.04.2011, 21:41:25
- - Zyx   Jeśli chodzi o zapotrzebowanie PHPUnit na pamięć, ...   30.04.2011, 07:36:25
- - .radex   Niestety nie testuję swoich aplikacji w takim stop...   30.04.2011, 20:51:20
|- - em1X   Cytat(.radex @ 30.04.2011, 21:51:20 )...   19.10.2013, 00:15:54
- - ActivePlayer   U mnie za każdym razem wygląda to podobnie:) Piękn...   1.06.2011, 09:22:28
- - cepa   ja uzywam CI, zarowno w domu jak i w pracy: - roz...   8.06.2011, 22:49:40
- - Ormin   Do swoich projektów w Symfony 1.4, używam wbudowan...   28.06.2011, 14:31:38
- - Hellz   Obecnie w konfiguracji: + jednostkowe - PHPUnit + ...   29.06.2011, 18:16:35
- - IceManSpy   Ostatnio trochę zainteresowałem się testami jednos...   27.08.2011, 16:02:15
|- - cepa   Cytat(IceManSpy @ 27.08.2011, 17:02:1...   27.10.2011, 08:15:46
- - LSM   Ostatnio pisałem klasę kompozytową dla "drzew...   25.09.2011, 22:37:05
- - cojack   Nie piszę testów jednostkowych jak mnie nikt do te...   4.11.2011, 16:07:32
|- - nasty   Cytat(cojack @ 4.11.2011, 17:07:32 ) ...   23.12.2011, 02:51:10
- - LSM   Ok, ale hermetyczność nie jest w stanie uchronić p...   4.12.2011, 15:36:32
- - zordon   Nikt chyba jeszcze nie wspomniał, że testy to rodz...   26.05.2014, 13:24:04
- - Matrix12   A czy BDD to nie rozszerzenie dla TDD ? Według mni...   3.08.2015, 20:42:52
- - Xelah   Bo testy jednostkowe a integracyjne czy funkcjonal...   4.08.2015, 08:13:50


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 10:45