Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi (1 - 10)
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 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.


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
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 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)


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
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


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
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 wink.gif

Ja jestem zdania, że triggery w bazie są po prostu nie potrzebną abstrakcją. Tak mnie zreszą nauczono.


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:36