İçeriğe geç
academia.sh

Kurs Orta

Derleme, Test ve Ekosistem

Bu kursun sonunda

Kursa başla

01

Derleme Araçları

Derleme aracının yaşam döngüsü, hedef ve görev modeli; bağımlılık kapsamlarının bir tipi hangi sınıf yolunda görünür kıldığı, geçişli bağımlılığın derlemede görünmeden koşumda gerekmesi ve aynı adın iki adayı çıktığında çözümün ne belirlediği; modül sınırlarının derlemede karşılığı; paketlemenin ürettiği çalıştırılabilir çıktının koşum yolunu nasıl taşıdığı.

  1. 01 Derleme Aracı Modeli Bir bildirimden bir derleme aracının türettiği evre dizisi sabittir ve bildirimin yazılış sırasından etkilenmez: üç bildirilen ögeden dört evre çıkar, ileri sıralı ve geri sıralı aynı bildirimden aynı dört evre türer. Aynı bildirimden çıkan iki sınıf yolu — biri derlemenin, biri koşumun — kaynak düzeyinde tutulan bir açıklama tipiyle ayrılır: sınıf dosyasının sabit havuzunda hiç görünmez, koşum sınıf yolunda da hiç gerekmez.
  2. 02 Bağımlılık Yönetimi Aynı kaynak, önce bir derleme sınıf yoluna karşı derlenip sonra başka bir koşum sınıf yoluna karşı koşturulur: altı tipin 1'i yalnız derlemede, 3'ü yalnız koşumda, 2'si her ikisinde gerekli çıkar. Dört kusurun 1'i derleme hatası, 1'i koşum hatası, 2'si hiçbir şey söylemeden sessizce yanlış sonuç üretir — biri aynı arayüzün iki gerçekleştirimi arasındaki sıraya bağlı seçim, öbürü sabiti değiştirip çağıranı yeniden derlememenin bedeli.
  3. 03 Çoklu Modül Projeler Üç sınır kurulumundan biri derlemede, biri koşumda yakalanır, biri hiç yakalanmadan sınırı sessizce aşar. Sınırlayıcı ölçüm bunun neden böyle olduğunu gösterir: Genel ve Dahili aynı dizine derlenir, ve sınırı gerçekten kuran şey dizin değil bir yükleyicinin izin listesidir — aynı dizindeki iki sınıf dosyasından biri yüklenirken öbürü ClassNotFoundException ile reddedilir.
  4. 04 Paketleme ve Çalıştırılabilir Çıktı Aynı arşivleme çağrısı hem kendine yeten bir arşiv hem de dışarıdan bir sınıfa muhtaç bir arşiv üretir: birincisi koşum sınıf yolunda tek başına yeterlidir, ikincisi tek başına NoClassDefFoundError ile düşer ve yalnız eksik dizin eklendiğinde çalışır. Giriş noktası da kaynakta değil arşivin kendi bildiriminde durur: aynı sınıflardan üretilen bildirimsiz bir arşivde bu bilgi hiç yoktur.

02

Test

Test çerçevesinin yaşam döngüsü ve iddiaları, testin gördüğü sınıf yolunun üretimin gördüğü yoldan ayrıldığı yer, sahte bağımlılıkların gerçek tipin yerine koşum yolunda geçmesi, aynı test gövdesinin veriyle çoğaltılması, dış sistemli kurulumların test yoluna eklediği yük ve senaryo dilinde yazılan sınamanın çalıştırılabilir karşılığı.

  1. 01 Birim Test Çerçevesi Kurulum, gövde ve sökme çağrılarını sırayla yapan küçük bir koşturucu elle kurulur; aynı iddia sökmeden önce ve sonra kontrol edildiğinde iki ayrı sonuç veriyor, ikisi de koştu sayılıyor. Aynı derlenmiş test sınıfı, çerçeve tipi eksik bir sınıf yoluyla çalıştırılınca test sınıf yolunun üçüncü, bağımsız bir yol olduğu ölçülüyor.
  2. 02 Sahteleme Aynı derlenmiş test, gerçek tedarikçi tipinin durduğu bir koşum sınıf yoluna karşı bir kez, aynı adı taşıyan sahte tipin durduğu başka bir koşum sınıf yoluna karşı bir daha çalıştırılır. Test yeniden derlenmeden iki ayrı sonuç veriyor, hata yok; imza ayrıldığında ise aynı kurulum koşumda düşüyor ve nedeni test metninde görünmüyor.
  3. 03 Parametreli Testler Tek bir gövde, bildirilen bir veri kümesi üzerinde üç kez çağrılıyor ve her çağrı kendi satırının başarılı ya da düştüğünü kaydediyor. Kurulum döngünün dışına taşınıp bir Depo örneği satırlar arasında paylaşıldığında ise hangi satırın geçtiği veri kümesinin sırasına bağlı hâle geliyor, aynı üç satır ters sırayla farklı bir satırı geçirtiyor.
  4. 04 Tümleşim Testleri Birim kurulumunda sahtelenen tedarikçi burada gerçek gerçekleştirimiyle, gerçek gerçekleştirimin bağlı olduğu ikinci bir tiple birlikte koşum sınıf yoluna geri konuyor; yolun içerdiği tip sayısı bir tipten ikiye çıkıyor. Aynı test gövdesi iki kurulumda koşturuluyor: birimde sınır aşımı sessizce geçiyor, tümleşimde aynı istek koşum hatası veriyor.
  5. 05 Davranış Odaklı Test Dört satırlık bir senaryo metni bir adım haritasına karşı çalıştırılıyor; haritada karşılığı olmayan adım bir koşumda sessizce atlanıyor, başka bir koşumda programı durduruyor. Aynı dört adım tam eşleştiğinde bile, kontrol adımlarının iddiası kaldırılmış bir haritayla koşturulunca yanlış bir değer üzerinden yine 'geçti' diyor.

03

Günlükleme ve Diğer JVM Dilleri

Günlükleme cephesinin çağıranın sınıf dosyasında bıraktığı iz ve gerçekleştirimin koşum yoluna bildirimle girmesi, günlük düzeylerinin ve yapılandırılmış kaydın üretimde okunabilirliğe etkisi, aynı çalışma zamanını paylaşan diğer dillerin sınıf dosyası biçimi üzerinden aynı yolda buluşması.

  1. 01 Günlükleme Cephesi ve Gerçekleştirim Çağıranın sınıf dosyasının cepheyi andığı ama gerçekleştirimi anmadığı sabit havuzdan okunarak gösterilir; gerçekleştirim koşum sınıf yoluna bir servis bildirimiyle girer ve iki gerçekleştirim bulunduğunda seçimi yolun sırası belirler. Sınırlayıcı ölçüm, gerçekleştirim hiç bulunmadığında çağıranın yine de derlenip koştuğunu ama hiçbir kayıt üretmediğini gösterir.
  2. 02 Günlük Düzeyleri ve Yapılandırılmış Günlük Aynı çağrı kümesinin iki ayrı eşikte kaç kayıt ürettiği koşturularak ölçülür ve eşiğin çağrı yerinde değil koşumda belirlendiği gösterilir; yapılandırılmış bir kaydın okunabilirliğinin alan sayısıyla değil aynı alanın her kayıtta bulunmasıyla ölçüldüğü örneklenir. Sınırlayıcı ölçüm, eşiğin altında kalan bir çağrının dizgi birleştirmeyle yazıldığında yine de değerlendirildiğini, Supplier ile yazıldığında değerlendirilmediğini gösterir.
  3. 03 JVM Üzerinde Diğer Diller Kaynak metni olmadan, doğrudan sınıf dosyası biçiminde üretilen bir sınıfın, bir arayüzü gerçekleştirdiği sürece javac ile derlenmiş bir sınıf gibi yüklenip çağrıldığı koşturularak gösterilir; çağıranın sınıf dosyası ne gerçek ne üretilen gerçekleştirimin adını anmaz. Sınırlayıcı ölçüm, üretilen sınıf dosyasının Java söz diziminde karşılığı olmayan bir üye adı taşıyabildiğini ve bunun yalnız yansıma (reflection) ile çağrılabildiğini gösterir.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat