![]() |
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.
![]() |
![]()
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. |
|
|
![]() |
![]()
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. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 7 Dołączył: 27.01.2010 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? 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) 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 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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 10:45 |