WordPress Eklentileri için 10 PHP Test Aracı
Yayınlanan: 2022-08-05Hiçbir yazılım hatasız değildir. Bu, her programlama dili ve her uygulama için geçerli olan bir aksiyomdur.
Bu hatalar üretim aşamasında web sitenize yerleştirildiğinde, değişen önem derecelerinde olumsuz sonuçlara maruz kalabilirsiniz. Bunlar, can sıkıcı olandan ekonomik olarak zarar verene kadar değişen bazı örneklerdir:
- Hafif: Kullanıcının bozuk bir bağlantıya tıklayamaması.
- Ciddi: Bir iletişim formunun “Gönder” düğmesi çalışmıyor, kullanıcı bunu ancak mesajını oluşturduktan sonra fark ediyor.
- Şiddetli: Düzgün yapılandırılmamış bir ödeme ağ geçidi, kullanıcıların e-ticaret mağazanızdan ürün satın alamamasına ve dolayısıyla siteyi terk etmesine neden oluyor.
Bir uygulamayı tüm farklı olası açılardan test etmenin tüm yönlerini ele almak için tek bir araç yeterli değildir. Gerçekten de, hataları bulmaya ek olarak, uygulamanın diğer işlevlerini doğrulamak için ek testler yürütmek hayati önem taşır, örneğin:
- Erişilebilirlik ve kullanılabilirlik
- Kabul edilebilir performans
- Trafik ve yük taşıma
Bu makalede, WordPress eklentilerinde PHP kodunu test etmek için bir yığın oluşturmaya yardımcı olabilecek açık kaynak topluluğu tarafından oluşturulan 10 aracı inceleyeceğiz. Bu araçlardan bazıları, PHP kodunu test etmek için özel olarak tasarlanmıştır; diğerleri WordPress kodunu test etmek içindir; ve test için yararlı olan bazı genel işlevleri işlemek için birkaç başka araç oluşturuldu.
1. DevKinsta
DevKinsta, WordPress siteleri için yerel bir geliştirme paketidir. Yalnızca bazı temel ayrıntıları sağlayarak, bir WordPress sitesinin yerel bir örneği hemen yüklenir ve daha kolay sorun giderme için e-posta gelen kutusu, veritabanı yöneticisi ve günlük kaydı gibi birkaç yararlı geliştirme aracıyla birlikte gelir.
DevKinsta, normalde geliştiriciler ve tasarımcılar tarafından WordPress temalarını ve eklentilerini oluştururken kullanılır. Ancak entegrasyon ve işlevsellik testleri yürütmek için yerel bir web sunucusu olarak da kullanılabilir. Bu, yanıt içeriğinizin ve başlıklarınızın doğru olduğunu doğrulamanıza yardımcı olan bir HTTP aracıyla birlikte gerçekleştirilir.
DevKinsta'nın en önemli özellikleri şunlardır:
- Yeni bir WordPress ortamını döndürmek ve artık gerekmediğinde silmek kolay
- PHP ve WordPress'in desteklenen herhangi bir sürümüne ve bunların herhangi bir kombinasyonuna karşı test yapılmasına izin verir
- Kullanıcıların sitelerinin ve verilerinin harici bir yedeğini oluşturabilecekleri MyKinsta ile sorunsuz bir şekilde bütünleşir
2. PHPBirimi
PHPUnit, PHP için programcı odaklı bir test çerçevesidir. Tek tek kaynak kodu birimlerini doğrulamak amacıyla PHP kodunda birim testleri yürütmek için en popüler çerçevedir.
PHPUnit testleri, geliştiricilerin geliştirme döngüsü içinde sorunları olabildiğince erken bulmalarına olanak tanır ve hiçbir kod gerilemesinin uygulanmadığından emin olmaya yardımcı olur (yani, bazı kod parçalarında yapılan değişiklikler başka bir yerde sorunlara neden olmamıştır).
PHPUnit'in en önemli özellikleri şunlardır:
- Yeni özellik testi
- Yeni yeniden düzenlenmiş kod doğrulama
- Tam otomatikleştirilebilir ve tercih edilen Sürekli Entegrasyon süreci içinde yürütülebilir
- hata ayıklama
- İşlevsellik çağırma ve kısıtlamalar aracılığıyla beklenen kullanıma ilişkin otomatik belgeler
- Geliştiricilerin önce testleri, ardından işlevselliği oluşturduğu Test Odaklı Geliştirme (TDD) yaklaşımına izin verir
3. Beyin Maymunu
Brain Monkey, PHP ve WordPress için bir test aracıdır. PHP yöntemlerini yeniden tanımlamanıza ve herhangi bir PHP uygulamasının davranışını test etmenize olanak tanıyan çerçeveden bağımsız araçlar sağlar. Ayrıca WordPress kodunu test etmeye özel araçlar sağlar.
Brain Monkey'in en önemli özellikleri şunlardır:
- Birim testlerinin harici, yüklenmemiş kitaplıklarla etkileşime girmesine izin verir
- WordPress ortamını yüklemeye gerek kalmadan WordPress işlevlerinin çağrılmasına izin verir
- WordPress işlevlerinin (
add_filter
veyado_action
gibi) beklendiği gibi işlevsellik çağırdığını iddia edebilir
4. Beyin Sahtekarı
Brain Faker, test etmeniz için sahte WordPress nesnelerinin ve ilgili işlevlerin kolay oluşturulmasını sağlamak için Faker (sahte veri oluşturmak için popüler bir PHP kitaplığı) ve Brain Monkey'i kullanır:
-
WP_Post
örnekleri veget_post
veget_post_field
gibi ilgili işlevlerle alay etme -
WP_User
örnekleri veget_userdata
,get_user_by
,user_can
ve daha fazlası gibi ilgili işlevlerle alay etme -
WP_Term
örnekleri veget_term
veget_term_by
gibi ilgili işlevlerle alay etme -
WP_Comment
örnekleri -
WP_Site
örnekleri veget_site
gibi ilgili işlevlerle alay etme -
WP_Post_Type
örnekleri veget_post_type_object
vepost_type_exists
gibi ilgili işlevlerle alay etme -
WP_Taxonomy
örnekleri veget_taxonomy
vetaxonomy_exists
gibi ilgili işlevlerle alay etme -
WP_Error
örnekleri
Brain Faker'ın en önemli özellikleri şunlardır:
- Birim testine sahte ama gerçekçi WordPress verilerini enjekte eder — sahte bir gönderinin değiştirilme tarihine erişmek bir tarih gibi davranır (ör
2022-04-17T13:06:58+00:00
), kullanıcının adı uygun olacaktır (ör."John Smith"
), sahte bir gönderi örneği, sahte bir kullanıcı örneği tarafından yazıldı vb. - Sahte veriler önceden sağlanabilir veya rastgele oluşturulabilir
- Genişletilebilir — geliştiriciler, kendi WordPress eklentilerinden sınıfları ve işlevleri taklit edebilir
5. alay
Mockery, PHPUnit, PHPSpec veya diğer herhangi bir birim test çerçevesi ile birlikte kullanılması amaçlanan basit ama esnek bir PHP sahte nesne çerçevesidir. İnsan tarafından okunabilen bir Etki Alanına Özgü Dil (DSL) kullanarak olası tüm nesne işlemlerini ve etkileşimlerini tanımlayabilen bir test çift çerçevesi sunar.
Mockery'nin en önemli özellikleri şunlardır:
- Sahte nesnelerin ve taslakların esnek bir şekilde oluşturulmasını sağlar (testler sırasında yapılan belirli çağrılara önceden tanımlanmış hazır yanıtlar sağlar)
- PHPUnit'in test izolasyon yeteneklerini geliştirir
- Mümkün olduğunca doğal bir dil açıklamasını taklit ederek alaycı beklentileri ifade etmek için esnek API (örn
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - Daha yavaş sistemlere (veritabanları, dosya sistemleri veya harici hizmetler gibi) erişme ihtiyacını önlemek için bellek içi sahte nesneler kullanan birim testleri
- Hem deterministik hem de deterministik olmayan davranışlarla alay edebilir
6. WordPress Yerel Dışa Aktarma Aracı
WordPress'in yerel dışa aktarma aracı, sitenin WordPress verilerini, gönderiler, sayfalar, özel gönderi türleri, yorumlar, özel alanlar, kategoriler, etiketler, özel sınıflandırmalar, kullanıcılar ve medya dahil olmak üzere bir XML dosyası olarak cihazınıza indirir. XML dosyası, herhangi bir WordPress sitesine aktarılabilen özel bir biçime (WordPress eXtended RSS veya WXR dosyası denir) sahiptir.
Bu araç, test için özel olarak tasarlanmamıştır. Bununla birlikte, kullanışlılığı, daha sonra test için kullanılabilecek uygun bir veri kümesi içeren WordPress veritabanının anlık görüntülerini oluşturabilmesinden gelir. Bu, gerçek verileri içeren üretimdeki WordPress sitesinin yeni işlevleri test etmek için bir geliştirme veya hazırlama örneğine dışa aktarılabileceği ve içe aktarılabileceği anlamına gelir.
WordPress dışa aktarma aracının en önemli özellikleri şunlardır:
- Gerçek bir WordPress sitesi kullanarak test verilerinin oluşturulması
- Tüm veritabanının paylaşılabilir dışa aktarma dosyası
- Hem entegrasyon hem de birim testi için kullanışlıdır
7. Ağızlık
Guzzle, HTTP istekleri göndermeyi ve web servisleriyle bütünleşmeyi kolaylaştıran bir PHP HTTP istemcisidir.
Guzzle genel bir araçtır, bu nedenle test, olası kullanım durumlarından sadece biridir. DevKinsta gibi yerel bir web sunucusuyla birlikte Guzzle, entegrasyon testlerinin yürütülmesini mümkün kılar: Geliştirme web sunucusuna bir HTTP isteği göndermek için Guzzle'ı kullanabilir, ardından yanıtı PHPUnit'te içeriği ve başlıkları doğrulayan bir birim testine geçirebilirsiniz. beklendiği gibi ayarlanır.
Guzzle'ın en önemli özellikleri şunlardır:
- Satıcıya kilitlenmeyi ortadan kaldırarak PHP Standart Tavsiyesi “PSR-7”yi (HTTP mesaj arayüzleri için) karşılar
- Basit ve hızlı
- Testler gerçek bir WordPress sitesine karşı yürütülür ve güvenilirliği artırır
- Kolaylık ve hız için PHPUnit içinden çalıştırılabilir
- Entegrasyon testleri otomatikleştirilebilir ve Sürekli Entegrasyon sürecine eklenebilir
8. WP-CLI
WP-CLI, WordPress için komut satırı arayüzüdür. Bununla, bir web tarayıcısı kullanmadan eklentileri güncelleyebilir, çoklu site kurulumlarını yapılandırabilir ve çok daha fazlasını yapabilirsiniz.
WP-CLI özel olarak bir test aracı değildir, ancak test etme birçok kullanım durumu arasındadır. Örneğin, yeni bir geliştirme web sunucusunu çalıştırdıktan sonra, test verilerini WordPress sitesine aktarmak için WP-CLI komutlarını içeren bir bash betiği çalıştırabilir, uygun rol ve yeteneklere sahip kullanıcılar oluşturabilir, gerekli üçüncü taraf eklentileri yükleyebilir ve benzeri diğer görevler.
WP-CLI komutlarını içeren komut dosyası Git deponuzda depolanabildiğinden, entegrasyon testlerini yürütme süreci daha sonra otomatikleştirilebilir ve Sürekli Entegrasyon sürecinize entegre edilebilir:
- Gerçek test verileri oluşturmak için WordPress dışa aktarma aracını kullanın ve bunları Git deposunda saklayın.
- Yeni bir WordPress örneğiyle bir web sunucusu başlatmak için DevKinsta'yı kullanın.
- Test verilerini WordPress sitesine aktarmak için WP-CLI kullanın (DevKinsta, WP-CLI aracılığıyla çalıştırılabilir).
- Yanıt içeriğinizi ve başlıklarınızı doğrulamak için Guzzle'ın web sunucusuna karşı bir HTTP isteği yürütmesini sağlayan PHPUnit'te bir birim testi oluşturun.
WP-CLI'nin en önemli özellikleri şunlardır:
- Komut satırı arabirimi aracılığıyla WordPress örneğine karşı komutların uzaktan yürütülmesine izin verir
- Diğer araçlarla genişletilebilir
- Test yığınının yeteneklerini geliştirir
- Sürecin tam otomasyonunu sağlar
9. XHata Ayıklama
XDebug, hata ayıklama, PHP'nin hata raporlamasında iyileştirmeler, izleme, profil oluşturma ve kod kapsamı analizi dahil olmak üzere PHP geliştirme deneyimini geliştirmek için bir dizi özellik sağlayan bir PHP uzantısıdır.
XDebug, kodunuzu test etmenize yardımcı olmaz, ancak hatanın nerede olduğunu bulmanıza yardımcı olur. XDebug'u PHPUnit ile birleştirmek özellikle etkilidir: Bir test başarısız olursa ve sorunun kaynağını bulamazsanız, birim test koduna kesme noktaları eklemek için XDebug'u kullanabilirsiniz. Birim testini yeniden çalıştırırken, PHP betiği bu kesme noktalarının her birinde duraklatılarak, yürütmenin mevcut durumunu (çağrı yığını, özellik ve nesne değerleri, vb.) incelemenize ve neyin yanlış olduğunu keşfetmeye çalışmanıza olanak tanır.
XDebug'ın en önemli özellikleri şunlardır:
- VS Code, PHPStorm ve Sublime dahil olmak üzere popüler PHP editörleri için entegrasyonlar sunar
- Her işlev çağrısında ne kadar zaman harcandığını ve ne kadar bellek tükettiğini profiller
- Kodda hata ayıklamak için
var_dump
kullanmaktan çok daha güçlü - Kesme noktalarında duraklatırken anında değişken değerlerin değiştirilmesine izin verir
10. PHPStan
PHPStan, testler yazmadan önce bile koddaki hataları bulmak için tasarlanmış PHP için statik bir analiz aracıdır.
PHPStan'in amacı, geliştiricilerin yazması gereken testlerin sayısını azaltmaktır. Bu araç, test yığınında yürütülen ilk araçtır ve mümkün olduğu kadar çok hatayı önceden yakalar. Yalnızca statik analizden çıkarılamayan hatalar (örn. kusurlu mantığa sahip olanlar) birim testleri yoluyla doğrulanmalıdır.
PHPStan, tüm kod tabanını tarayarak ve uyumsuzlukları arayarak çalışır. Örneğin, bir kayan nokta döndüren bir işlevden gelen yanıt değeri, tamsayı türündeki bir işlev parametresine atanamaz. Kod böyle bir olay içerdiğinde, bu potansiyel bir hatadır ve PHPStan, geliştirme aşamasında, uygulama kodunu yazarken sizi uyaracaktır.
PHPStan'in en önemli özellikleri şunlardır:
- Mevcut Sürekli Entegrasyon süreciniz dahilinde otomasyon ve entegrasyon
- Tür uyumsuzlukları gibi birçok zor hatayı bulur
- Tüm kod tabanını tarar, nadiren yürütülen kod bölümlerinde hatalar bulur
- Kademeli entegrasyona izin vermek için artan karmaşıklık seviyelerinde organize edilmiştir
- Symfony, Laravel, Doctrine, Nette ve WordPress dahil olmak üzere en popüler PHP çerçeveleri ve CMS'ler için uzantılar içerir
Özet
Hataların üretim aşamasında uygulamanıza fark edilmeden girmesinin maliyeti itibarınıza ve gelirinize zarar verebilir, bu nedenle kullanıcılarınızı etkilemeden önce bunları ortadan kaldırmaya çalışmalısınız.
Karmaşık uygulamalarda, hiçbir hata içermeyeceğinden %100 emin olmak neredeyse imkansızdır. Bu nedenle, ilk geliştirme döngüsü sırasında mümkün olduğunca çok hatayı bulup kaldırmak için bir süreç oluşturmalısınız.
İyi tasarlanmış bir test araç seti ile uygulamanızın beklenmedik şekillerde davranma olasılığını büyük ölçüde azaltabilirsiniz. Açık kaynak topluluğu, bir uygulamanın farklı yönlerini test etmek için yapabileceğiniz ve yapmanız gereken birçok araç oluşturmuş ve kullanıma sunmuştur! - kapsamlı bir test yığını oluşturmak için kullanın.
Bu makalede, bir WordPress eklentisinde PHP kodunu test etme hedeflerinizi gerçekleştirmenize yardımcı olacak 10 aracı inceledik.
En son projeniz için bu araçlardan hangisini kullandınız? Aşağıdaki yorumlar bölümünde onunla ne inşa ettiğinizi bize bildirin!