Jak test webového kódu?

hlasů
11

Má někdo nějaké dobré rady pro psaní testovací kód pro vývoj databází backend tam, kde je těžký závislost na státu?

Konkrétně chci psát testy pro kód, který vyhledá záznamy z databáze, ale odpovědi se bude odvíjet od data v databázi (které se mohou v průběhu času měnit).

Lidé obvykle dělají samostatný vývojový systém s ‚zmrazené‘ databáze, takže jakákoliv daná funkce by měl vždy vrátit přesně stejnou sadu výsledků?

Jsem si naprosto jistý, že to není nový problém, tak bych byl velký zájem poučit se ze zkušeností jiných lidí.

Existují dobré výrobky tam, že diskutovat o této problematice webový vývoj obecně?

Obvykle jsem psát PHP kód, ale očekával bych všechny tyto otázky jsou do značné míry jazyk a rámec agnostik.

Položena 05/08/2008 v 22:58
zdroj uživatelem
V jiných jazycích...                            


10 odpovědí

hlasů
5

Měli byste se podívat do DBUnit, nebo se snaží najít odpovídající PHP (tam musí být jeden venku). Můžete ji použít k přípravě databáze se specifickou sadou dat, která reprezentuje své testovací data, a tak každý test již nebude záviset na databázi a některé stávajícího stavu. Tímto způsobem, každý test je soběstačný a nezlomí během dalšího využití databáze.

Aktualizace: vyhledávání google rychle ukázala prodloužení DB jednotky pro PHPUnit.

Odpovězeno 05/08/2008 v 23:03
zdroj uživatelem

hlasů
1

Mám přesně stejný problém s mojí práci a zjistil jsem, že nejlepší nápad je mít PHP skript znovu vytvořit databázi a poté samostatný skript, kde jsem hodit bláznivé údaje na to, aby zjistil, jestli ho to zlomí.

Jsem nikdy použit jakýkoliv testovací zařízení nebo podobný, takže nelze říci, jestli to funguje, nebo ne líto.

Odpovězeno 05/08/2008 v 23:03
zdroj uživatelem

hlasů
1

Pokud můžete nastavit databázi se známým množstvím před spuštěním testů a strhnout na konci, pak budete vědět, jaká data budete pracovat s.

Pak můžete použít něco jako selen snadno testovat ze svého uživatelského rozhraní (za předpokladu, že webový tady, ale existuje spousta testování UI nástroje tam pro ostatní UI příchutí) a zjišťovat přítomnost určitých záznamů stáhl z databáze.

Je to rozhodně stojí za zřízení buď testovací verzi databáze - nebo vaše testovací skripty naplnit databázi s údaji známými jako součást testů.

Odpovězeno 05/08/2008 v 23:08
zdroj uživatelem

hlasů
3

Pokud jste většinou zabývají testováním datové vrstvy, možná budete chtít podívat na tuto knihu: xUnit testovací vzory: Refactoring testovací kód . Vždycky jsem byl nejistý o tom sám, ale tato kniha dělá skvělou práci na pomoc výčet problémů, jako je výkon, reprodukovatelnost, atd.

Odpovězeno 06/08/2008 v 05:14
zdroj uživatelem

hlasů
1

Mohli byste zkusit http://selenium.openqa.org/ to je více pro testování GUI, spíše než testování aplikace datové vrstvy ale zaznamenávat své akce, které pak lze přehrávat automatizovat testy napříč různými platformami.

Odpovězeno 06/08/2008 v 13:06
zdroj uživatelem

hlasů
2

Myslím, že to záleží, co databáze, který používáte, ale Red Gate (www.red-gate.com) vytvořit nástroj s názvem SQL generátor dat. To může být nakonfigurován tak, aby naplnit databázi s rozumnými hledají testovacích dat. Můžete také říct, že vždy používat stejný semeno ve svém generátoru náhodných čísel, takže vaše ‚náhodné‘ dat je pokaždé stejný.

Pak můžete psát unit testy, aby se používání tohoto spolehlivé a opakovatelné dat.

Pokud jde o testování webových stránku věci, já jsem v současné době hledá do Selen (selenium.openqa.org). To se jeví jako cross-browser schopný testovací sada, která vám pomůže testovací funkce. Nicméně, stejně jako u všech těchto zkušebních webových stránek nástroje, není tam žádný skutečný způsob, jak otestovat, jak dobře tyto věci vypadají ve všech prohlížečích aniž by casting lidské oko nad nimi!

Odpovězeno 06/08/2008 v 14:44
zdroj uživatelem

hlasů
1

Tady je moje strategie (I používat JUnit, ale jsem si jistý, že je to způsob, jak dělat ekvivalent v PHP):

Mám metodu, která běží před všemi unit testů pro konkrétní DAO třídy. Klade databázi dev do původního stavu (dodává veškeré údaje ze zkoušek, atd.) Jak jsem spuštění testů, jsem sledovat jakýchkoliv dat přidaných do známého stavu. Tato data jsou vyčistit na konci každé zkoušky. Poté, co všechny zkoušky pro třídu narazit jiná metoda odstraní všechny testovací data v databázi dev, takže ho ve stavu, v jakém byl před byly provedeny testy. Je to trochu práce, aby to všechno, ale já obvykle psát metody v třídě DBTestCommon kde všechny mé DAO testovacích tříd lze se k nim dostat.

Odpovězeno 11/08/2008 v 14:30
zdroj uživatelem

hlasů
1

Navrhoval bych používat tři databáze. Jedna databáze produkce, jeden vývoj databáze (naplněný některými smysluplných údajů pro každý vývojář) a jeden testovací databáze (s prázdnými stoly a možná pár řádků, které jsou vždy potřeba).

Způsob, jak testovat kód databáze je:

  1. Vložte několik řádků (pomocí SQL) pro inicializaci stavu
  2. Spustit funkci, kterou chcete testovat
  3. Porovnat Očekává se skutečnými výsledky. Zde můžete použít své obvyklé testovací jednotka rámec
  4. Vyčistit řádky, které byly změněny (takže další běh nebude viz předchozí běh)

Vyčištění lze provést standardním způsobem (samozřejmě jen v testovací databázi), s DELETE * FROM table.

Odpovězeno 19/08/2008 v 19:40
zdroj uživatelem

hlasů
1

Obecně souhlasím s Peterem, ale pro vytváření a mazání údajů o zkoušce, bych použít SQL přímo. Nejraději bych použít nějaký crud API, který se používá v produktu, který má vytvořit údaje byly podobné produkce jak je to možné ...

Odpovězeno 10/09/2008 v 12:31
zdroj uživatelem

hlasů
2

Používáme v paměti databáze (HSQL: http://hsqldb.org/ ). Hibernace ( http://www.hibernate.org/ ) usnadňuje pro nás upozornit naše unit testy na zkušebním db, s extra bonusem, že běží tak rychle jako blesk ..

Odpovězeno 10/09/2008 v 13:02
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more