Tak jak w temacie. Jak testować napisaną aplikację w PHP + z jakąś bazą w MySQL. Głównie mi chodzi o mierzenie wydajności (a jeśli się da też w jakiś sposób bezpieczeństwo, to też bezpieczeństwo). Czy robić to na localhostcie czy już na serwerze? (pewno na serwerze, gdzie skrypt będzie siedział ). I czy jest możliwość testowania aplikacji tak, aby przechodziła krok po kroku np proces rejestracji?
Zyx
15.08.2010, 09:14:42
Jeśli chcesz zmierzyć wydajność samej aplikacji do celów porównawczych, wystarczy Ci domowy komputer, bylebyś miał testowany w identycznych warunkach jakiś skrypt będący punktem odniesienia. Na serwerze też oczywiście można, choć tu trzeba uważać na ograniczenia hostingu .
Ad. 2 -> tak, jest. Są to tak zwane testy funkcjonalne. Można je przeprowadzać automatyczne przy pomocy kombinacji systemów PHPUnit + Selenium.
IceManSpy
15.08.2010, 09:54:11
A w jaki sposób testować wydajność? Może jakiś przykład?
Grand93
15.08.2010, 15:37:55
Jeżeli chcesz zmierzyć tylko czas wykonywania skryptu, to zrób sobie klasę: class Test{ private $time; public function __construct(){ $this -> time = microtime(); } public function __destruct(){ echo 'skrypt wykonany w ciągu '.(microtime()-$this -> time).' ms'; } } $test = new Test(); daj ją na początku skryptu.
Luneth
15.08.2010, 17:13:35
Grand93 - powinno być tam chyba microtime(true) inaczej mu wywali string z sekundami i mikrosekundami jako ułamek dziesiętny, ale osobno po spacji. Swoją droga warto z czegoś tak prostego robić klasę i obiekt?
Jak zrobi na klasie to nie będzie musiał pamiętać o daniu echo na koniec
Twój sposób( Luneth ) jest prostszy i szybszy.
IceManSpy
15.08.2010, 19:27:34
Tak właśnie robiłem, np dla zapytań MySQl , ale czasem zdarzały mi się wartości ujemne tego odejmowania. Ale może dlatego, że dawałem microtime bez true?
Crozin
15.08.2010, 19:38:54
Musiałbyś mieć naprawdę baaaardzo mocny sprzęt by uzyskać 0 w wyniku odejmowania wartości zwróconych przez dwa wywołania tej funkcji:
Wynik ujemny jest niemożliwy. I tak... powodem było brak owego TRUE.
Do testowania wydajności aplikacji dużo lepiej jest wybrać narzędzia typu Apache Benchmark, które pozwalają na dużo bardziej realne odwzorowanie obciążenia.
Jakiś automatycznych/magicznych testów bezpieczeństwa nie ma, z tego co mi wiadomo - tutaj musisz zadbać sam.