Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Testowanie swoich aplikacji
Forum PHP.pl > Forum > PHP
IceManSpy
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ł tongue.gif ).
I czy jest możliwość testowania aplikacji tak, aby przechodziła krok po kroku np proces rejestracji?
Zyx
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 smile.gif.

Ad. 2 -> tak, jest. Są to tak zwane testy funkcjonalne. Można je przeprowadzać automatyczne przy pomocy kombinacji systemów PHPUnit + Selenium.
IceManSpy
A w jaki sposób testować wydajność? Może jakiś przykład?
Grand93
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
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? winksmiley.jpg

  1. $start = microtime(true);
  2.  
  3. // cały kod php któy testujesz
  4.  
  5. $end = microtime(true);
  6.  
  7. //wyświetlenie różnicy w mikrosekundach
  8.  
  9. echo $end-$start;

Grand93
Jak zrobi na klasie to nie będzie musiał pamiętać o daniu echo na koniec smile.gif

Twój sposób( Luneth ) jest prostszy i szybszy.
IceManSpy
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
Musiałbyś mieć naprawdę baaaardzo mocny sprzęt by uzyskać 0 w wyniku odejmowania wartości zwróconych przez dwa wywołania tej funkcji:
  1. $a = microtime(true);
  2. $b = microtime(erue);
  3.  
  4. echo $b - $a;
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.
Grand93
Jest możliwość testowania bezpieczeństwa pod względem ataków XSS.
Było o tym ostatnio na niebezpieczniku : http://niebezpiecznik.pl/post/xsser-sprawd...podatna-na-xss/
piotr94
w testowaniu pod względem ataków pomoże nieco:
http://www.uw-team.org/videoarty_security.html
niektóre porady są banalne, ale niektóre wiele mi pomogły
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.