Regresyon Testi için En İyi Uygulamalar WordPress Web Siteleri?


22

Herkese selam,

Otomatik Regresyon Testi için kullandıkları bir platform olarak WordPress kullanan müşterilere karmaşık blog dışı çözümler sunan başkalarının ne olduğunu duymak ister misiniz ?

"Regresyon testi" terimine aşina olmayanlar için Vikipedi:

Regresyon testi, programın yeniden test edilmesiyle programdaki değişikliklerden sonra (örneğin hata düzeltmeleri veya yeni işlevler gibi) yazılım hatalarını ortaya çıkarmak isteyen her tür yazılım testidir. Regresyon testinin amacı, bugfix gibi bir değişikliğin yeni hatalar ortaya koymadığından emin olmaktır.

Daha çok şey söyleyen Vikipedi şu anda bir projede tam olarak deneyimlediğim şeyleri söylüyor:

Deneyimler, yazılım sabitlendiğinde, yeninin ortaya çıkmasının ve / veya eski hataların yeniden ortaya çıkmasının oldukça yaygın olduğunu göstermiştir. Bazen yeniden birleşme, kötü revizyon kontrolü uygulamaları (veya revizyon kontrolünde basit insan hatası) nedeniyle bir düzeltme kaybedilmesi nedeniyle oluşur. Genellikle, bir problemin çözümü, ilk gözlendiği dar durumda problemi düzelten "kırılgan" olacaktır, ancak yazılımın kullanım ömrü boyunca ortaya çıkabilecek daha genel durumlarda bu sorunu çözmeyecektir. Sıklıkla, bir alandaki bir sorunun düzeltilmesi istemeden başka bir alanda bir yazılım hatasına neden olur. Son olarak, genellikle bir özellik yeniden tasarlandığında, özelliğin orijinal uygulamasında yapılan aynı hatalardan bazılarının yeniden tasarımda yapıldığı durum söz konusudur.

Eylemlerin ve filtrelerin küresel doğasıyla, daha fazla müşteri tarafından talep edilen işlevsellikler eklediğim için karmaşıklığın hızlanmaya başladığını ve özellikle WP_Queryveritabanına çok fazla çağrı kullanıyorsa ve veritabanını çok güncellerse karmaşık bir eklentiyi elde etmek zorlaşıyor .

Aklımdaki çözüm , bir "test takımı" içerecek bir dizi "test vakası" ile regresyon testi kurmak olacaktır . Konseptte, HTTP GET isteklerinin HTML çıktısını test ederken zor değil. Ancak yönetici konsolu ile oturum açtığınızda bir şeyler test etmeniz ve / veya jQuery etkileşimlerini test etmeniz gerektiğinde biraz daha karmaşık bir hal alır.

Bunu, burada en iyi uygulamaları toplayabileceğimizi umduğum bir topluluk wiki olarak kuruyorum, ancak başka bir WordPress uzmanı kullanıyorsa, işlemleri duyma konusunda gerçekten endişeliyim.


Kendi kodunuzu test etmekten bahsettiğinizi varsayıyorum (temalar / eklentiler)? Yeni kod oluşturduğunuzda veya "ortamı" güncellediğinizde (WP, diğer eklentiler)? Ya da her ikisi de? Pro Webmaster'ların web uygulamalarını (Selenyum ve diğer şeyler) nasıl test edecekleri konusunda iyi tavsiyeler içerebileceğini düşünüyorum - belki çapraz gönderme iyi bir fikirdir?
Jan Fabry

@Jan Fabry - Evet, kendi kodumu test ediyorum. Çapraz gönderme hakkında iyi fikir, yakında bunu yapacağım.
MikeSchinkel

Yanıtlar:


10

WP test paketi çok bozuk olmasaydı ve WP gerçekten doğru bir şekilde test edilebilecek şekilde tasarlanıp yazılsaydı PHPUnit akla gelirdi. ;-)

Daha da önemlisi, eklentilerinizi, fonksiyonel açıdan, ünite testleri ve benzerleriyle test edebilirsiniz. Sorun, bu testlerin, WP yükseltmelerinin getirdiği ince şansları yakalayabileceklerini garanti etmeyeceklerini, yalnızca özelleştirilmiş bir WP kurulumuna bağlandıktan sonra çalışmaya devam edeceklerini garanti etmeyeceği yönündedir.

Gördüğüm renkli şeyler arasında:

  • WP API'sindeki ince bir değişiklik, eklentinizin işlevselliğini etkiler, örneğin bir terim kimliği almak için kullandığınız kanca ve şimdi bir terim taksonomi kimliği alıyor. (Test terimlerinizin uygun olarak her ikisi için de aynı kimliğe sahip olma ihtimali yüksektir).

  • WP API'sindeki ince bir değişiklik WP_Error, daha önce falsehatalı girdi olarak beklenen değer yerine bir nesneyi almanıza neden olur .

  • Eklentiniz mu-plugins klasöründen eklenir ve incelikle farklı bir kod akışı elde edilir.

  • Eklentiniz memcached veya başka bir kalıcı mağaza etkinleştirilinceye kadar iyi çalıştı.

  • Eklentiniz, tanımlanmamış switch_to_blog () çağrılana kadar düzgün çalıştı.

  • Bir eklenti çağrıldığında üzerinde bulunduğu kancayı değiştirir ve bilmeden yan etkisi olarak onu keser.

  • Bir eklenti (un?), Giriş veya çıkış verilerinizi, hatalı olmasanız bile, kırılmış görünen noktaya bilerek karıştırır.

Listeyi genişletip açabilirim, ancak bunlar kendi eklentilerimi kıran önemli öğelerdi. İki madde, birim testleriyle tartışılabilir bir şekilde ele alınabilir. Bir sonraki ikisi de, eğer yeterince sabırlıysanız, ama WP’nin işlerin gerçekleştiği zaman işleyiş şeklini değiştirmemesi gerektiğini savunuyorum. Switch_to_blog () 'un buggy uygulaması etrafında herhangi bir test çalışması yapılmayacaktır. Ve son ikisi umutsuzca denenemez.

Oh, ve ... beni ekler, otomatik taslaklar, revizyonlar, menü öğeleri ve yazı masasında depolanan şeyler hakkında başlatmaya bile zorlama.

İyi şanslar... :-)


2
Güzel cevap, işlediğiniz tüm detaylar için teşekkürler. FWIW "birim" testinden çok " regresyon" testi için arıyorum . Çok fazla çakışma olduğunu biliyorum ama şu anki en büyük sorunum, web sitesinin bozulmadığını doğrulamak. Evet, bir eklentiyi test etmek çoğu sorunu çözebilir ancak ünite testlerinde tam kapsama almak için daha fazla zaman ve çaba harcar (bu, muhtemelen tam kapsama elde edemeyeceğim anlamına gelir) ;
MikeSchinkel

1
Aslında, belli çerçevelerde (Symfony2 ve Li3'ü adlandırmak ama iki tane olmak üzere) kurgusal bir tarayıcı kullanarak gerçek bir siteyi test etmeyi sağlayan araçlar olduğunu unutmayın. Söz konusu bileşenler başka şeyler için tekrar kullanılabilir. Böylece, sitenizin yönetici ekranlarını gerçekten değiştirebilir ve yaptığınız şeyin beklenen sonuçlara sahip olduğunu doğrulayabilirsiniz.
Denis de Bernardy

7

Selenyum'u şiddetle düşünmelisiniz .

Eylemleri kaydetmenize olanak sağlar (örneğin, bir forma veri girmek, bir bağlantıyı tıklatarak) ve sonra iddialarda bulunabilirsiniz. Ayrıca PHPUnit ile bütünleşir. İki dakikalık demoya göz atmanızı şiddetle tavsiye ederim.


Öneri için teşekkürler, daha önce duymuştum. Gerçekten WordPress projeleri için kullandınız mı? Sadece merak.
MikeSchinkel

Evet. Üzerinde çalıştığım bir eklentiyi test etmek için kullandım. Daha önceki bir hayatta, EDC uygulamalarını klinik araştırmalar için test etmek için kullandık.
Ethan Seifert

1

Selenyum muhtemelen kullanışlıdır, ancak modern zamanlarda Codeception'ı daha iyi ve kullanımı daha kolay bulacağınızı düşünüyorum . En basit görsel regresyon testi için ekran görüntüsü alacak ve bunları sizin için otomatik olarak karşılaştıracak bir uzantı bile var .

Tabii ki, Codeception WebDriver testleri daha ileri gidebilir ve fonksiyonel regresyon testleri gerçekleştirebilir . Formları doldurabilir, gönderebilir, sitedeki düğmeleri ve bağlantıları tıklayabilir, herhangi bir JS çalıştırabilir, vb. Testlerde Firefox veya Chrome gibi gerçek bir tarayıcı kullanabilir veya PhantomJS ile başsız bir test yapabilirsiniz . Bu, eklenti için WebDriver testlerini hatta Travis CI'deki oluşturma işleminin bir parçası olarak çalıştırabileceğiniz anlamına gelir .

Başlamanıza yardımcı olacak birkaç WordPress'e özel kitaplık bile vardır:


1
Selenyum ve Kodekepsiyon özel değildir. WP-Tarayıcı'yı Selenium [Chrome gibi gerçek bir tarayıcı kullanan], Phantom [JS desteği olan gui olmayan bir tarayıcı] ve hatta aptal bir kıvrık tarayıcı olan PHPBrowser [çok hızlı ama JS olmayan bir sürücüyü sürmek için kullanabilirsiniz. yani API testleri]. WP-Browser bunlardan herhangi birini sürebilir.
Jim Maguire
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.