9 Bästa automatiserade testramar för PHP
Har du någonsin spenderat långa timmar att felsöka din PHP-kod? Tja, för de flesta programmerare är det förmodligen inte den mest fascinerande utmaningen, men det finns en lösning som kan hjälpa oss att förkorta denna tråkiga uppgift. Automatiserad testning kan avsevärt förbättra arbetsflödet för PHP utveckling genom möjliggör förskrivna tester för att driva utvecklingsprocessen.
I det här inlägget försöker vi förstå varför automatiserad testning är så cool, hur det fungerar, och vad är det de bästa testramarna du kan börja med.
Varför testning är viktigt
Nybörjare PHP-utvecklare tenderar inte att skriva tester för deras kod. De flesta av oss började vår karriär genom att testa nya funktioner och funktioner som vi just skrivit i webbläsarfönstret en efter en, och när något gick fel var vi clueless om vad vi skulle göra.
Skrivartester för vår kod kan spara dyrbar debuggingstid och timmar med huvudvärk. När otestad kod går i produktion kommer de recensioner vi får förmodligen inte att vara så trevligt. Så vad kan vi göra?
Förmodligen är den bästa idén att upprätta ett produktivt testningsflöde där vi måste skriva vår egen testkod som kontrollerar om vår programkod fungerar korrekt.
Tricket är det testkoden måste skrivas före programkoden. På det här sättet kan vi från och med början säkerställa att koden vi skriver fungerar korrekt. Testkoden kommer att gå in i separata filer. Om vi senare stöter på några fel i vår PHP-app behöver vi inte göra något annat, bara kör våra test som förhoppningsvis kommer ge oss riktiga tips om problemen.
Förutom att spara tid och korrekt förbereda vår app för produktion, har testningen många andra fördelar, till exempel:
- mer underhållbar kod
- underlättad refaktoring
- mindre säkerhetsproblem
- mindre uppblåst kodbas (anpassning av programkoden till den förskrivna testkoden kommer att göra att vi släpper ut överflödiga delar)
- bättre prestanda
Vad är automatiserad testning?
Naturligtvis kan vi skriva våra test manuellt, men efter ett tag kan det vara tråkigt och tidskrävande med många upprepade uppgifter. Manuell testning kan ersättas med automatiserad testning där vi använder specifika program som gör det tröttsamma arbetet för oss, och vi kan spendera mer tid med att skapa logiken i testkoden.
PHP är lyckligtvis ett ganska populärt programmeringsspråk, så det finns många automatiserade testramar vi kan välja mellan.
Testdriven utveckling (TDD) vs beteendedriven utveckling (BDD)
De två huvudsakliga tillvägagångssätt som automatiska testramar använder är testdriven utveckling (TDD) och beteendedriven utveckling (BDD). I båda utvecklingsprocessen drivs testning, vilket innebär att tester skrivs före applikationskoden.
Huvudskillnaden mellan testdriven och beteendestyrd testning finns i testkodens syntax: TDD använder korrekt PHP-kod i testfilerna, medan BDD använder läsbar meningar som beskriver beteendet hos varje funktion och kan också förstås av icke-tekniska intressenter.
Ett TDD-test ser ut så här i kodredigeraren, det är bara vanlig objektorienterad PHP-kod:
Ett BDD-test liknar detta, men icke-programmerare kan också få mening om det:
10 PHP automatiserade testramar
Med det i åtanke, låt oss ta en titt på 10 kraftfulla automatiska testramar För PHP kan du använda.
1. PHPUnit
PHPUnit är det mest kända testramverket för att skriva Unit Tests för PHP-appar. Enhetstester tar små delar av kod som heter enheter och testar dem en efter en. Med hjälp av PHPUnit kan vi genomföra testdriven utveckling.
Den kan användas via kommandorad, och det ger oss en praktisk TestCase-klass att vi kan förlänga efter våra behov. PHPUnit tillåter även utvecklare att använda förskrivna påståenden för att hävda att appen beter sig på ett visst sätt.
2. Codeception
Codeception gör det inte bara möjligt för oss att skriva Unit Tests, men även Functional and Acceptance Tests. Dessa två senare testar PHP-appen som helhet med alla funktioner bundna, inte som enheter. Codeception tillåter oss att aktivera och konfigurera olika moduler enligt våra utvecklingsbehov.
Det är integrerat med många PHP-utvecklingsramar som Symfony2, Laravel4, Yii, Phalcon och Zend Framework. Det innebär att vi kan använda en PHP-automationstestrama och en PHP-utvecklingsram tillsammans för att skapa en effektivare arbetsflödesutveckling.
3. Behat
Behat är ett populärt beteendestyrt PHP-testramverk. De tester vi kan skriva med Behat ser ganska ut som historier än kod. Behat använder undertexten StoryBDD av beteendestyrd utveckling (den andra undertypen är SpecBDD).
Ramverket inspirerades av gurka-projektet som är ett testramverk för Ruby-programmeringsspråket.
4. PHPSpec
PHPSpec följer också det beteendestyrda testmetoden, men dess andra subtyp kallas SpecBDD. Med PHPSpec behöver vi skriv specifikationerna först som beskriver hur ansökningskoden kommer att fungera. Det var också inspirerat av en Ruby testning ram kallad RSpec.
5. Storyplayer
Storyplayer är en full stack testning ram som gör det möjligt att skriv end-to-end test för en hel plattform. Storyplayer har stöd för skapa och förstöra testmiljöer på begäran. Det följer TDD-testmetoden, och låter oss skriva funktionella tester som kan kontrollera en applikation som helhet.
6. Peridot
Peridot är en lätt, utökad testram för PHP. Den har en händelsesdriven arkitektur som tillåter testare enkelt anpassa ramverket via plugins och reportrar.
Peridot använder Beskriv det syntax för att skapa ett klart och läsbart testningsspråk som tydligt beskriver hur vår programkod ska fungera.
7. Atoum
Atoum är ett intuitivt och modernt PHP-testramverk som gör det möjligt för oss att köra enhetstester. Det förenklar testutvecklingen, och eftersom det är en ung ram använder den sig av några nyare funktioner som introducerades i PHP 5.3 (det kan't användas med äldre PHP-versioner) för att ge oss en snabb och lättförståelig testprocess.
Atoum garanterar a hög säkerhetsnivå under testutförande, eftersom det isolerar varje testmetod i sin egen PHP-process.
8. Kahlan
Kahlan är en komplett BDD testram som gör det möjligt att skriva Unit Tests med Beskriv det syntax. Det omfattar KISS (Keep It Simple, Dumb) designprincipen. Kahlan kräver minst PHP 5.5.
Den har en liten kodbas, det sägs vara ungefär 10 gånger mindre än PHPUnit, och den har massor av funktioner som ger oss ett utökat och anpassningsbart testningsflöde.
9. Selen
Selen är ett sofistikerat testramverk som automatiserar webbläsare. Det betyder att det är möjligt att skriva User Acceptance Tests som granska hela appen som helhet.
Selen är ett robust verktyg som har sitt eget WebDriver API som kan driva en webbläsare som även om en riktig användare skulle använda den antingen lokalt eller på en fjärrmaskin. Selen är ett utmärkt verktyg för att testa mer mogna webbapplikationer.
Slutgiltiga tankar
Automatiserade testramar ger oss möjlighet att skriva högkvalitativ PHP-kod, och på grund av språkets popularitet har vi många val, så vi kan välja den som möter vår utveckling behöver bäst.
Det är viktigt men vi måste alltid komma ihåg det. Automatiserad testning kan vara kraftfull, men det kan ersätt aldrig beta-testning - tester gjorda av riktiga människor som kommer att bli framtida användare av ansökan.