PHP Birim test?

4 Cevap php

Benim PHP / MySQL projeleri için birim testleri yazmayı düşünüyordum.

Hata beni ben form doğrulama, ajax özellikleri ve (örneğin bağlantılarla gibi) UI özellikleri gibi şeyleri test nasıl olduğunu şey. Ayrıca, testler UI bir yönü bağımlı olmak istemiyorum, bu yüzden tek link hareket ederse o zaman tüm testler kıracak.

Herkes, yaklaşık olarak ne kadar zaman birim test ve diğer herhangi bir öneri / ipuçları birim test harcanması gerektiğine kodun hangi bölümleri üzerinde herhangi bir fikir / bir öneriniz var mı?

4 Cevap

Birim testleri, en azından bir web uygulama geliştirme açısından, gerçekten arayüzü tasarımı örtemez. Ne ünite testleri can ile size yardımcı etrafında asılı olan tüm denetleyicisi yöntemleri ve / veya herhangi bir tekil / küresel fonksiyonların giriş / çıkış test etmektir. Form doğrulama üzerinde birim test kapsama almak istiyorsanız Yani, sizin uygulaması UI doğrulama işlevi bağımsız test edebilirsiniz şekilde yapılandırılmıştır emin olun.

class SomeController extends ... {
    ... function isAPhoneNumber($string){
        if(...) {
            return true;
        }
        else (...) {
            return false;
        }
    }
}

Bu denenmemiş bu yöntemle TO değerini alır tüm kodu kalkıyor. Bu test gördüm tek etkili yol Selenium gibi tarayıcı uzaktan kumanda ile doğrudan UI test etmektir. PHPUnit testing framework sizin diğer birim testleri gibi aynı test atlet kullanmak anlamına gelir selenyumun PHP sürücüsünü kullanarak için kanca vardır.

Sen% 100 masum bir değişiklik selenyum testleri Hork olmayacak emin olmak için asla konum, ama bu en aza indirmek için geliştirme sırasında atabileceğiniz adımlar vardır. Selenyum various different ways için "hedef" bir öğesi üzerine tıklayın ya da sen mümkün olduğunca spesifik hedefleme kullanmak istiyorsanız içeri girin, böylece vermeye çalışacağız sahip tüm (X) HTML benzersiz bir kimliktir eleman düğümleri . Bu selenyum olursa olsun bir sayfada biter nerede tıklayın bir bağlantı sağlar.

Benzersiz bir kimliği mümkün olmadığı durumlarda, benzersiz bir tanımlayıcı olan bazı HTML elemanı ile ortak öğeleri sarmak için deneyin ve sonra kimliği ile div bulunuyor kayıdı "" metin içeren bağlantıyı tıklayın "demek için yeteneklerini tareting selenyumun XPath'i kullanabilirsiniz "foo", ya da "foo" kimliği ile div üçüncü bağlantıyı tıklayın.

Yukarıda öğeleri bariz değilse, do not Selenyum IDE (veya diğer kaydediciler) bulacaktır hedefleme seçimlerine güveniyor. Onların amacı tam bu sayfadaki testi çalışan olarak size çok kırılgan xpath verebilir aynı sonuçları verecektir sağlamaktır. Her zaman kayıt testleri gözden ve fix-up çaput hedefleme.

Burada kolay bir cevabı vardır. Orada olsaydı, web uygulamaları çok daha az adamcağız olacaktır.

Sen documentation of SimpleTest bu kısmı başparmak gerektiği ve test için sahip oldukları yöntemler bakmak

  • sayfa içeriği
  • navigasyon
  • kurabiye
  • görüntüler
  • çerçeveler
  • Form gönderme
  • yönlendirmeleri
  • vekiller

Eğer SimpleTest kullanarak sonuna kadar bile, bir göz değer olabilir.

Bana göre, en yararlı şey sitenizin çalışması için gerekli olan her form için bir GET veya POST isteğindeki her parametresi dahil form tabanlı gönderimleri test ediyor.

Test etmek istediğiniz İster UI veya sadece küçük kilit alanlarda bir çok size kalmıştır.

Benim cevap yardımcı olacak eğer ben de aynı soru var, çünkü bilmiyorum.

Neyse, henüz bunu yapmadıysanız, hızlı-ve-kirli ve büyük tarayıcılarda çalışır, ben çok faydalı bulduğu, Windmill deneyin.

Bir link değiştirme (sanırım çoğu olguda) testi değiştirmek =) yok

SeleniumHQ.org deneyin.

Bu bir makro gibi rekor tıklama, yazarak ve fare hareketleri, vb sağlayan bir tarayıcı uzantısıdır. Makrolar testler olarak kaydedilir ve web uygulamaları test etmek için, çalınabilir.

Diğer tarayıcıları başlatarak testler gerçekleştirebilirsiniz çok ürünün diğer sürümleri var gibi görünüyor.