Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHPUnity testy funkcjonalne bazy danych
drezer
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.02.2012

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


Wiam

Chce przetestowac baze danych, klient testowy wypenia formularz przesyla go i dane sa zapisywane do bazy sprawdzane jest przekierowanie.
Jak moge przywrocic pierwotny stan bazy danych sprzed testow, nie bardzo ogarniam testy prosze o jakis kierunek poszukiwan, podpowiedz lub cokolwiek

Ten post edytował drezer 26.01.2015, 22:38:22
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. To już testy integracyjne, nie funkcjonalnie, niemniej jednak nadal możesz wykorzystać do nich PHPUnita.
2. Testy powinieneś wykonywać na osobnej bazie danych, która jest czyszczona i odpowiednio przygotowywana przed każdym uruchomieniem testów.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Co do pytania to możesz zrobić transakcję, i po testach zrobić rollBack
Ale jak @Crozin napisał najlepiej testować na czystej bazie.

Ten post edytował Pyton_000 27.01.2015, 09:48:58
Go to the top of the page
+Quote Post
Forti
post
Post #4





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Dla bardziej wtajemniczonych:

można użyć mockery. Dobrą praktyką jest nie testować baz danych (IMG:style_emoticons/default/wink.gif) pytanie co ów testy mają sprawdzać? Twój kod / metody / funkcje czy faktycznie zapis / odczyt z bazy danych. Wszystko można zasymulować za pomocą mockerów.
Go to the top of the page
+Quote Post
drezer
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.02.2012

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


Testy raczej mają na celu sprawdzić czy kontroler i szablon działają prawidłowo, nie zapisuje w nich bezpośrednich odwołań do bazy. w testach tworze klienta on wypełnia formularz z danymi i nastepuje przekierowanie/wysłanie do akcji
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Forti @ 27.01.2015, 10:54:59 ) *
Dobrą praktyką jest nie testować baz danych (IMG:style_emoticons/default/wink.gif) (...) Wszystko można zasymulować za pomocą mockerów.

Co jeśli podczas zapisywania danych do bazy odpalane są jakieś triggery, które wykonują dodatkową robotę? Ponadto czy w ten sposób jesteś w stanie sprawdzić czy np. więzy integralności nie zostaną naruszone?
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. public function setUp()
  2. {
  3. //create database
  4. //create table
  5. }
  6.  
  7. // tests
  8.  
  9. public function tearDown()
  10. {
  11. //drop database
  12. }


+ jakies dane testowe powinny byc wrzucane do bazy danych (jezeli sa potrzebne)
Go to the top of the page
+Quote Post
Forti
post
Post #8





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Cytat(phpion @ 28.01.2015, 10:44:36 ) *
Co jeśli podczas zapisywania danych do bazy odpalane są jakieś triggery, które wykonują dodatkową robotę? Ponadto czy w ten sposób jesteś w stanie sprawdzić czy np. więzy integralności nie zostaną naruszone?



Triggery w bazie = słaby kod.

Mam testować PDO / ORM czy moją klasę? Są powody dla których w dokumentacji choćby symfony piszę jasno, że testowanie na bazie danych to zła praktyka.


edit:

Można zrobić tak jak kolega wyżej zaprezentował, zamiast mockerów.

Ten post edytował Forti 28.01.2015, 13:19:23
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@Forti:
1. Masz chyba na myśli mocki, a nie żadne mockery?
2. W testach integracyjnych jak najbardziej może być użyta baza danych.
3. Stwierdzenie, że wykorzystanie triggerów w bazie danych to słaby kod, bez poparcia tego żadnym argumentem?

@drezer: Chcesz sprawdzić czy całość strony działa czy jedynie, osobno(!) działanie samego kontrolera i samego szablonu?
Go to the top of the page
+Quote Post
Forti
post
Post #10





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Ta, literówka, mocki a nie mockery (IMG:style_emoticons/default/wink.gif)

Ja jestem zdania, że triggery w bazie są po prostu nie potrzebną abstrakcją. Tak mnie zreszą nauczono.
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Forti @ 28.01.2015, 13:49:01 ) *
Ja jestem zdania, że triggery w bazie są po prostu nie potrzebną abstrakcją. Tak mnie zreszą nauczono.

Podaj proszę jakiś konkretny powód takiej tezy. Czy uczono Cię również, że to samo tyczy kluczy obcych?

Osobiście jestem zupełnie innego zdania - im więcej triggerów tym lepiej. Po co aplikacja ma robić coś, co może zrobić baza danych? Jestem ciekaw jak ugryzłbyś taki temat bez triggerów: dodając lub aktualizując wartość pola liczbowego w tabeli A zaktualizuj średnią ze wszystkich wartości zapisując ją do tabeli B. W PHP osobne zapytanie? Fajnie, a teraz wprowadź liczbę do tabeli A z poziomu konsoli czy phpMyAdmina. Spójność danych leży i kwiczy.
Go to the top of the page
+Quote Post

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: 24.09.2025 - 22:54