Główna » zestaw narzędzi » 9 najlepszych zautomatyzowanych ram testowych dla PHP

    9 najlepszych zautomatyzowanych ram testowych dla PHP

    Czy spędziłeś długie godziny na debugowaniu kodu PHP? Dla większości programistów prawdopodobnie nie jest to najbardziej fascynujące wyzwanie, ale istnieje rozwiązanie, które może pomóc nam skrócić to żmudne zadanie. Automatyczne testowanie może znacznie usprawnić przepływ pracy PHP pozwalając na testy pisemne napędzające proces rozwoju.

    W tym poście postaramy się zrozumieć dlaczego automatyczne testowanie jest tak fajne, jak to działa i co jest najlepsze ramy testowe możesz zacząć od.

    Dlaczego testowanie jest ważne

    Początkujący programiści PHP zwykle nie testują kodu. Większość z nas rozpoczęła karierę, testując nowe funkcje i funkcje, które przed chwilą napisaliśmy w oknie przeglądarki, a kiedy coś poszło nie tak, nie mieliśmy pojęcia, co robić.

    Pisanie testów dla naszego kodu może zaoszczędzić cenny czas na debugowanie i godziny bólu głowy. Kiedy nieprzetestowany kod trafi do produkcji, recenzje, które otrzymamy, prawdopodobnie nie będą takie miłe. Więc co możemy zrobić?

    Prawdopodobnie najlepszym pomysłem jest ustanowić produktywny przepływ pracy testowej w którym musimy napisać nasz własny kod testowy, który sprawdza, czy nasz kod aplikacji działa poprawnie.

    Sztuka polega na tym kod testowy musi być napisany przed kodem aplikacji. W ten sposób możemy zapewnić od samego początku, że kod, który piszemy działa poprawnie. Kod testowy trafi do osobnych plików. Jeśli później wpadniemy na jakieś błędy w naszej aplikacji PHP, nie musimy robić nic innego, po prostu uruchom nasze testy, które, miejmy nadzieję, będą daj nam właściwe wskazówki na temat problemów.

    Poza oszczędnością czasu i właściwym przygotowaniem naszej aplikacji do produkcji, testowanie ma również wiele innych zalet, takich jak:

    • bardziej utrzymywalny kod
    • ułatwiło refaktoryzację
    • mniej problemów z bezpieczeństwem
    • mniej rozbudowana podstawa kodu (dostosowanie kodu aplikacji do wcześniej napisanego kodu testowego spowoduje, że pominiemy zbędne części)
    • lepsza wydajność

    Co to jest automatyczne testowanie?

    Oczywiście możemy pisać nasze testy ręcznie, ale po pewnym czasie może to być żmudne i czasochłonne przy wielu powtarzalnych zadaniach. Testowanie ręczne można zastąpić testami automatycznymi, w których używamy konkretnych programów, które wykonają dla nas męczącą pracę, i możemy poświęcić więcej czasu na tworzenie logiki kodu testowego.

    PHP jest na szczęście dość popularnym językiem programowania, więc możemy wybierać spośród wielu zautomatyzowanych frameworków testowych.

    Rozwój sterowany testami (TDD) a programowanie oparte na zachowaniu (BDD)

    Dwoma głównymi podejściami, z których korzystają zautomatyzowane środowiska testowe, są: programowanie oparte na testach (TDD) i programowanie oparte na zachowaniu (BDD). W obu przypadkach proces rozwoju napędzany jest testowaniem, co oznacza, że ​​testy są zapisywane przed kodem aplikacji.

    Główna różnica między testowaniem opartym na testach a testowaniem opartym na zachowaniu polega na składni kodu testowego: TDD używa właściwego kodu PHP w plikach testowych, podczas BDD używa zdań czytelnych dla człowieka które opisują zachowanie każdej cechy i mogą być zrozumiane również przez interesariuszy nie-technicznych.

    Test TDD wygląda tak w edytorze kodu, jest to zwykły obiektowy kod PHP:

    IMAGE: Codeception.com

    Test BDD jest podobny do tego, nie-programiści również mogą to zrozumieć:

    IMAGE: Behat.org

    10 PHP Automated Testing Frameworks

    Mając to na uwadze, przyjrzyjmy się 10 potężnym, zautomatyzowanym frameworkom testowym dla PHP, których możesz użyć.

    1. PHPUnit

    PHPUnit to najbardziej znany framework do testowania testów jednostkowych dla aplikacji PHP. Testy jednostkowe pobierają małe części kodu zwane jednostkami i testują je pojedynczo. Z pomocą PHPUnit możemy prowadzić rozwój oparty na testach.

    Może być używany przez wiersz poleceń, i zapewnia nam poręczna klasa TestCase że możemy rozszerzyć zgodnie z naszymi potrzebami. PHPUnit pozwala także programistom na korzystanie wstępnie napisane metody asercji, aby stwierdzić, że aplikacja zachowuje się w określony sposób.

    2. Przyjmowanie kodeksu

    Odbieranie kodów nie tylko pozwala nam pisać testy jednostkowe, ale także testy funkcjonalne i testy akceptacyjne. Te dwie ostatnie testują aplikację PHP jako całość, a wszystkie funkcje są ze sobą powiązane, a nie jako jednostki. Odbiór Codec pozwala nam włączyć i skonfigurować różne moduły zgodnie z naszymi potrzebami rozwojowymi.

    Jest zintegrowany z wieloma platformami programistycznymi PHP, takimi jak Symfony2, Laravel4, Yii, Phalcon i Zend Framework. Oznacza to, że możemy razem użyć frameworka do testowania automatyzacji PHP i frameworka programistycznego PHP, aby ustanowić superwydajny przepływ pracy programistycznej.

    3. Behat

    Behat to popularna struktura testowania PHP oparta na zachowaniu. Testy, które możemy napisać z Behat wyglądają raczej jak historie niż kod. Behat używa podtypu StoryBDD rozwoju opartego na zachowaniu (drugim podtypem jest SpecBDD).

    Ramy te zostały zainspirowane projektem Cucumber, który jest środowiskiem testowym dla języka programowania Ruby.

    4. PHPSpec

    PHPSpec stosuje również podejście testowe oparte na zachowaniu, ale jego inny podtyp nazywa się SpecBDD. Z PHPSpec musimy napisz najpierw specyfikacje, które opisują zachowanie kodu aplikacji. Zainspirowała go również platforma testowa Ruby o nazwie RSpec.

    5. Storyplayer

    Storyplayer to framework do testowania pełnego stosu, który umożliwia pisać kompleksowe testy dla całej platformy. Storyplayer ma wsparcie dla tworzenie i niszczenie środowisk testowych na żądanie. Jest zgodny z podejściem testowania TDD i pozwala nam pisać testy funkcjonalne, które mogą sprawdzać aplikację jako całość.

    6. Peridot

    Peridot to lekki, rozszerzalny framework do testowania PHP. Zawiera architektura sterowana zdarzeniami który pozwala testerom łatwo dostosuj strukturę za pomocą wtyczek i reporterów.

    Peridot używa Opisz to składnia w celu ustalenia jasnego i czytelnego języka testowego, który jasno opisuje, jak powinien zachowywać się nasz kod aplikacji.

    7. Atoum

    Atoum to intuicyjny i nowoczesny framework do testowania PHP, który pozwala nam uruchamiać testy jednostkowe. Upraszcza to tworzenie testów, a ponieważ jest to młoda platforma, korzysta z niektórych nowszych możliwości, które zostały wprowadzone w PHP 5.3 (możenie może być używany ze starszymi wersjami PHP) aby zapewnić nam szybki i łatwy do zrozumienia proces testowania.

    Atoum zapewnia a wysoki poziom bezpieczeństwa podczas wykonywania testu, ponieważ izoluje każdą metodę testową w swoim własnym procesie PHP.

    8. Kahlan

    Kahlan to w pełni funkcjonalny framework do testowania BDD, który umożliwia pisanie testów jednostkowych za pomocą Opisz to składnia. Obejmuje zasadę projektowania KISS (Keep It Simple, Stupid). Kahlan wymaga co najmniej PHP 5.5.

    Ma małą bazę kodu, mówi się, że jest około 10 razy mniejsza niż PHPUnit i ma mnóstwo funkcji, które zapewniają nam rozszerzalny i dostosowywalny przepływ pracy testowej.

    9. Selen

    Selenium to zaawansowany framework do testowania, który automatyzuje przeglądarki. Oznacza to, że możliwe jest napisanie testów akceptacji użytkowników zbadaj całą aplikację jako całość.

    Selenium to solidne narzędzie, które ma własne API WebDriver, które może prowadzić przeglądarkę natywnie chociaż prawdziwy użytkownik używałby go lokalnie lub na zdalnej maszynie. Selen jest doskonałym narzędziem do testowania bardziej dojrzałych aplikacji internetowych.

    Końcowe przemyślenia

    Zautomatyzowane ramy testowe umożliwiają nam pisanie kodu PHP wyższej jakości, a ze względu na popularność tego języka mamy wiele możliwości wyboru, więc możemy wybrać ten, który spełnia nasze potrzeby rozwojowe najlepiej.

    Jest jednak ważna rzecz, o której zawsze musimy pamiętać. Automatyczne testowanie może być potężne, ale może nigdy nie zastępuj testów beta - testy wykonywane przez prawdziwych ludzi, którzy będą przyszłymi użytkownikami aplikacji.