Test odaklı geliştirme ve beyaz kutu test becerilerini geliştirme


9

Ben doğrudan okula giriş seviyesi Java Programcısıyım. J2SE ile ilgili iyi bilgi ve deneyime sahibim. Biri bana Java beyaz kutu test cihazı olma becerilerimi nasıl geliştirebileceğimi veya ayarlayabileceğimi önerebilir mi? Çok çeşitli girişler kabul edilir.

Test Odaklı Geliştirme nedir?


Kara kutu testi neden olmasın?
Martijn Verburg

@Martijn, büyük olasılıkla beyaz kutu testinin teknik zorlukları nedeniyle arka planı düşünüyor. Ayrıca, kara kutu teknikleri geliştiriciler için çok yararlı olsa da, bir geliştirici için iyi niteliklere sahip insanlar iyi kara kutu testçileri yapmazlar, çok merak ediyoruz ve sabırsız olabiliriz. Yaptığımı biliyorum.
StuperUser

Yanıtlar:


9

Test Odaklı Geliştirme (TDD) ve genişletilmiş kuzenleri, Kabul TDD (ATDD) ve Davranış Odaklı Geliştirme (BDD), Java ekosisteminde bir test cihazı olarak öğrenmenin faydalı teknikleridir. Beyaz kutu testi ararken TDD'ye odaklanacağım.

TDD nedir? - Kalbinde, başarısız bir test (kırmızı) yazma uygulamasıdır, bu testi bir uygulama (yeşil) yazarak ve sonra yeniden çarpanlarına ayırma işlemiyle yapılır. Vikipedi Makale fazla bilgi edinmek için başlamak için yeterli bir yerdir. Ancak konu çok geniş, bu alandaki iyi bilinen bazı kitapların Örnek Test ile Geliştirilmesi ve Eski Kodla Etkin Çalışma gibi bazı kitapların okunmasını öneriyorum . Ayrıca , İyi Topraklanmış Java Geliştirici TDD bölümü için utanmaz bir fiş de atacağım

Java ekosisteminde bu, öğrenmek istediğiniz anlamına gelir:

  1. JUnit kütüphane ve / veya TestNG kütüphanesi.
  2. Mockito veya JMock gibi alaycı bir kütüphane
  3. Koda saldırmak için bir yük test aracı - JMeter
  4. Bağımlılık Enjeksiyonu kavramı (bir çeşit Konversiyon Kontrol)

Ve sonra pratik yapın, pratik yapın, pratik yapın, pratik yapın. İyi Java beyaz kutu test cihazları çok nadirdir, en iyisi çok çeşitli kod tabanlarına karşı yazılı testlere sahiptir.

HTH başlasın!


Ayrıca Java ekosisteminde bir geliştirici olarak öğrenmek için yararlı tekniklerdir. Anladığım kadarıyla, test kullanıcıları kara kutu testi yapmalıdır.
Tom

1

Junit, Java programlama dili için en iyi birim test çerçevelerinden biridir. Tekrarlanabilir testler yazmak ve çalıştırmak için açık kaynaklı bir çerçevedir.


1

Normalde Wikipedia'ya alıntı yapmaktan hoşlanmam ama bu makaledeki bilgiler yeterince güvenli görünüyor ...

http://en.wikipedia.org/wiki/Test-driven_development

Temelde, yatma terimleriyle, ilk olarak vaka testleri için birim testleri tasarlanmış ve yazılmış, daha sonra bu birim testlerinin geçmesine yardımcı olmak için daha sonra sert geliştirme gerçekleşir.


0

Benim önerimin beyaz kutu testi için araçlar olarak kabul edilip edilmeyeceğinden emin değilim, ancak veritabanı odaklı projeler için dbUnit'e ve web testi için Selenium'a da bakabilirsiniz (örneğin, bazı sonuçlara dayanarak bulunması gereken öğelerin incelenmesi).


0

Soru özellikle "beyaz kutu testi" ne atıfta bulunuyor. Bu, testlerinizin kodun iç yapısı hakkında derinlemesine bilgi sahibi olduğu ve sadece giriş / çıkış / yan etki (kara kutu testi) yerine her adımda iddia iddialarıdır. JUnit her ikisini de yapmak için mükemmel olsa da, bunu bir birim test bağlamında yapmak için daha fazla ek çerçeveye ihtiyacınız vardır.

EasyMock ve JMock bunu yapmak için iyi çerçevelerdir. JMock'u tercih etme eğilimindeyim.

Bir OT tartışması başlatma riski altında, beyaz kutu testinin sonuçları hakkında dikkatlice düşünmelisiniz. Beyaz kutu testleri kodunuza sıkı sıkıya bağlıdır (açık bir şekilde) ve dikkatle kullanılmazsa, alaycı çerçeveler testlerinizin oldukça karmaşık olmasına, okunması zor olmasına ve yeniden düzenleme yaparken daha kırılgan olma eğilimine neden olabilir.

Her ikisinin bir karışımına bağlı kalıyorum. Kara kutu testleri mümkün olan her yerde, beyaz kutu testleri ise daha riskli / daha karmaşık koda uygulanmaktadır.

Tabii ki yukarıda listelenen çerçeveler, katkıda bulunan (enjekte edilen) sınıfların sayısının fazla olduğu ve basit stubbing'in avantajsız hale geldiği kara kutu testlerinde de kullanılabilir.

TDD ile ilgili olarak - bu, sadece bir test yazma yöntemi yerine, kod yazma konusunda tasarım geliştiren bir yaklaşımdır. Sonunda yaptığınız testler önemli bir çıktıdır, ancak dahası yaklaşım, uygulamanızın tasarımını ve yapısını geliştirmeyi amaçlamaktadır.

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.