it-swarm-eu.dev

Jak provést testem řízený vývoj (TDD) v Drupalu?

  • Jaké jsou nástroje používané TDD v Drupal (PHP moduly, Drupal moduly atd.)?)
  • Jak vypadá váš pracovní postup odevzdání/testování/nasazení? Používáte pro správu tohoto pracovního postupu Phing, PHPUnderControl, Hudson?
  • Jakým způsobem zvyšuje testování jednotek spolehlivost kódu?
  • Potřebujete samostatný, drahý, samostatný testovací server jednotek, nebo to můžete udělat z notebooku?

Vím, že Robert napsal vynikající technický příspěvek zde o testování jednotky v Drupal s SimpleTest; mám větší zájem o pokrytí části pracovního postupu a konfigurace. V současné době mám vývojový stroj, pracovní a produkční server. Produkční i fázové servery běží na 300MB RAM/300MHz CPU Dreamhost VPS.

30
amateur barista

Ve světě Ruby) je TDD podporovány nástroji zabudovanými do rámce. Factory Girl, Mocha, rSpec a další umožňují vývojářům snadno a dynamicky vytvářet testy, které se zabývají potřebnými testovacími případy.

Také jsem byl frustrován nedostatkem nástrojů TDD v Drupalu. Můj největší problém s nimi je množství času, které je potřeba na provedení jediného testu. Vývojové cykly nelze zpomalit jednotlivými testy trvajícími 60–90 sekund každou iteraci. Kompletní testovací sady by narazily na vícehodinový časový rámec, pokud se obtěžujete psát testy vůbec.

Mám podezření, že to má co do činění s kopírováním plné db pokaždé, když je test spuštěn, ale není pravděpodobné, že by se to v blízké budoucnosti změnilo z toho, co mohu říct, zvláště pokud k tomu potřebujete DrupalWebTestCase.

Hackuji společně řešení pomocí Phactory a phpunit, které bootstraps Drupal ručně). Zjevně se dostávám do některých problémů a nedokončil jsem to, ale je to tam.

Naštěstí je většina mé práce v zadní vrstvě, takže můžu zůstat na úrovni DRUPAL_BOOTSTRAP_DATABASE. Ale běžím do více situací, kdy budu potřebovat plný stack.

Nakonec TDD v Drupal není dobře podporován), takže můžete napsat svůj vlastní, aby to fungovalo mimo rámec testů drupal testovací rámec), nebo vydržet slabý výkon.

-- AKTUALIZACE --

Úspěšně jsem nastavil úplnou integraci Drupal s Phactory) a nyní testuji přes phpunit namísto Drupal Web Test Case. Takže je to možné).

Doufám, že se dostanu do bodu, kdy to můžu uvolnit a může se začlenit do Phactory doc.

- UPDATE 2 -

Dokument o tom, jak nastavím Phactory, je https://github.com/trimbletodd/phactory .

8
trimbletodd

Protože Markův blog je offline, zmíním se o některých nástrojích, které jeho tým implementoval:

Funkční testování: selen
Testování jednotky: Nejjednodušší
Sestavte server: Jenkins
Výkonnostní srovnávání: XDebug + Cachegrind

Za dva roky, co jsem položil tuto otázku, jsem viděl některé další nástroje, které získaly na TDD scéně popularitu. V dnešní době, když hovoříte o vývoji řízeném testováním (samozřejmě v kontextu Drupal)), existují dvě strany téže mince - testování front-end a back-end.

Zde jsou dvě prezentace, které vyčnívají z nejnovějšího Drupalcon Portland 2013 představujícího tuto záležitost:

Vývoj, podle čísel , backend testování.
Automatické testování s Jasmine a PhantomJS , frontendové testování.

První prezentace nesouvisí s jednotkovým nebo funkčním testováním (přesně řečeno), jde spíše o nástroje pro měření kvality kódu. Přesto mám pocit, že to trochu souvisí s tématem.

12
amateur barista

Jedinou věcí, o které vím, je to, že u přispěných modulů můžete povolit automatické testování opravných položek a ve frontě vydání, viz - http://drupal.org/node/68999 . Je stále poněkud nestabilní, zejména pokud máte závislosti.

Většina projektů pravděpodobně dělá něco více v souladu s vývojem bugů, což v podstatě sestává z psaní testu, když byla nalezena chyba, a poté je opravena. Pokud vůbec;)

Z mé osobní zkušenosti je TDD v Drupalu dost těžké, protože často nepíšete (pouze) unit testy s Simpletest, ale integrační testy, kde si prohlížíte stránky a odesíláte formuláře. Takže může být docela obtížné napsat dobré testy předem. Ale možná na to prostě nejsem zvyklý :)

5
Berdir