İçeriğe geç
academia.sh

Kurs İleri

Üretim Go: Test, Araçlar ve Başarım

Yayın Güncelleme

Bu kursun sonunda

Kursa başla

01

Test ve Ölçüm

Test işlevlerinin ve yardımcılarının dilin kendi paketiyle kurulması, vaka listesiyle kapsamın artırılması, sunucu ve istemci tarafı test yardımcıları, sahtelemenin arayüz ayrımına dayanması, karşılaştırmalı ölçümün verdiği iki sayıdan yalnız birinin tekrarlanabilir olması, ve kapsam verisinin ne söyleyip ne söylemediği.

  1. 01 Test Paketi Temelleri Aynı test dosyası, kaynağın kaç test işlevi içerdiğini metinden sayarak, testin verdiği kararı ise yalnız koşturarak söylüyor: doğru bir kaynakta iki test de geçiyor, bozuk bir kaynakta test sayısı değişmeden karar tersine dönüyor. Sınırlayıcı ölçüm, hiçbir iddia taşımayan bir test işlevinin de aynı biçimde geçtiğini koşturarak gösteriyor.
  2. 02 Tablo Güdümlü Testler Beş vakalık bir tablonun vaka sayısı kaynaktan sayılıyor, koşan alt test sayısı ise yalnız go test -v ile koşturularak okunuyor ve ikisi 5'te eşleşiyor. Sınırlayıcı ölçüm, tabloya aynı satırları koşturan altıncı bir vaka eklendiğinde kapsama oranının 100.0% olarak değişmeden kaldığını gösteriyor.
  3. 03 HTTP Testleri Aynı işleyici, gerçek bir bağlantı noktası hiç açılmadan üç istekle sınanıyor: var olan bir kalem 200, olmayan bir kalem 404, parametresiz bir istek 400 döndürüyor — üçü de yalnız isleyici.ServeHTTP çağrılarak öğrenilen bir koşum bilgisi. Sınırlayıcı ölçüm, isteğin adresinin RFC 5737'nin belge amaçlı ayırdığı sabit bir adres olduğunu okuyarak testin ağı değil işleyiciyi sınadığını gösteriyor.
  4. 04 Sahteleme ve Arayüz Ayrımı Aynı StokAzalt gövdesi hem kayıtlı hem casus bir Bildirici gerçekleştirmesiyle koşturuluyor: normal bir azaltmada ikisi de aynı kararı veriyor ve casus nesnenin çağrı sayısı 1 okunuyor. Sınırlayıcı ölçüm, stoktan fazlasını azaltan bir çağrıda gerçek gerçekleştirmenin negatif kalanı reddettiğini ama casus nesnenin aynı çağrıyı sessizce kaydettiğini gösteriyor.
  5. 05 Karşılaştırmalı Ölçüm On bir bilgi bir programda toplanıyor ve üç söyleyene bölünüyor — 2'si kaynakta yazılı, 5'i araçtan koşum olmadan geliyor, 4'ü yalnız koşarak öğreniliyor. Karşılaştırmalı ölçüm aracı bu dört koşum bilgisinden birini üretiyor: aynı işin iki yazımının ayırma sayısı, beş koşumda hep aynı değeri veriyor; sınırlayıcı ölçüm bu sayının da neyi saydığını söylemeden karşılaştırılamayacağını gösteriyor.
  6. 06 Kapsam Raporlama Aynı işlev üç ayrı test kümesiyle sınandığında kapsama oranı 57.1%, 85.7% ve 100.0% olarak üç ayrı değer alıyor; kapsanmayan blok sayısı da sırasıyla 3, 1 ve 0'a düşüyor. Sınırlayıcı ölçüm, %100 kapsama veren üçüncü kümenin, dönüş değerini hiç denetlemediği bir dalda gerçek bir hatayı hiç yakalamadığını hatalı bir kaynakla koşturarak gösteriyor.

02

Başarım ve Bellek

Profil verisinin hangi sayıyı taşıdığı, derleyicinin bir değeri yığıtta mı öbekte mi ayıracağına karar verirken bunu okunabilir biçimde bildirmesi, ayırma baskısının çöp toplama davranışına etkisi, ve yürütme izlerinin olay sayısıyla çözümlenmesi.

  1. 01 Profilleme Profil bir koşum bilgisidir ve bu derste sayıyla okunur: aynı işlevin iki çağrı biçiminde kaç değer ayrıldığı. Sınırlayıcı ölçüm: profil yalnız koşan yolu görüyor — hiç çalışmayan bir dalın ayırdığı değerler profilde hiç görünmüyor, kaynakta yazılı olsalar bile.
  2. 02 Kaçış Çözümlemesi Kaçış çözümlemesi bir araç bilgisidir: derleyici bir değeri yığıtta mı öbekte mi ayıracağına karar veriyor ve bunu koşum olmadan bildiriyor. Dört işlevin üçü öbeğe taşınıyor ve aynı işlev küçük bir değişiklikle bu kararını değiştiriyor. Sınırlayıcı ölçüm: bu karar dilin bir sözü değil, derleyicinin sürümüne bağlı bir gerçekleştirim ayrıntısı.
  3. 03 Çöp Toplama Davranışı Ayırma baskısının azalması sayıyla ölçülüyor: önceden yer ayırma, arabellek yeniden kullanımı ve değer/işaretçi seçimi aynı işin ayırma sayısını dörtten bire, dörtten sıfıra, birden altmış beşe taşıyor. Sınırlayıcı ölçüm: bir sayının düşmesi her zaman bir iyileştirme değil — okunabilirliği bozan bir yazım da aynı sayıya ulaşabiliyor.
  4. 04 İzleme Yürütme izi bir koşum bilgisidir ve burada olay sayısıyla okunuyor: aynı altı kaydı işleyen iki kurulum, biri sıralı biri üç işçiyle dağıtık, aynı sayıda kayıt işleme olayı üretiyor ama farklı sayıda işçi başlangıç olayı üretiyor. Sınırlayıcı ölçüm: iz toplamak programın davranışını değiştiriyor, bu yüzden sayılar buna göre okunuyor.

03

Derleme ve Dağıtım

Derleme etiketlerinin hangi dosyaların derlemeye gireceğini belirlemesi, tek komutla başka platformlara çıktı üretilmesi, bağlayıcı seçenekleriyle sürüm bilgisinin ikiliye gömülmesi, modül yayımlamanın taşıdığı uyumluluk sözü, kural denetimi ile bilinen açık taramasının ne bulup ne bulamadığı, ve yerel kütüphane çağırmanın maliyeti.

  1. 01 Derleme Etiketleri Aynı dizindeki altı kaynak dosyadan hangisinin derlemeye gireceği, çalıştırılan bir programa değil araca sorularak öğrenilir; dört etiket senaryosunda dosya sayısı bu şekilde okunur. Sınırlayıcı ölçüm, etiketiyle dışarıda kalan bir dosyanın diskten silinmediğini ama hiçbir aracın onu incelemediğini — dosyadaki bir kusurun yalnızca etiket etkinleşince görünür hale geldiğini — koşturarak gösteriyor.
  2. 02 Çapraz Derleme Aynı taşınabilir kaynağın üç ayrı hedef için, o hedeflerin hiçbiri kurulu olmadan tek bir komutla derlenip derlenmediği ölçülür; derlenebilirlik burada da koşum gerektirmeyen bir araç bilgisidir. İkinci ölçüm aynı üç hedefte platforma bağlı bir çağrının derlenebilirliğinin değiştiğini gösterir. Sınırlayıcı ölçüm, derlenmiş olmanın hedefte çalışacağı anlamına gelmediğini — aynı adı taşıyan bir varsayımın bir hedef ailesinde geçerli, ötekinde geçersiz kalabileceğini — modelleyerek ortaya koyar.
  3. 03 Bağlayıcı Seçenekleri Kaynakta hiçbir yerde yazılı olmayan bir dizgi değerinin, üç ayrı derleme çağrısında üç ayrı biçimde ikiliye gömüldüğü ölçülür; kaynak metin üçünde de birebir aynı kalır. Sınırlayıcı ölçüm, gömülen değerin bağlayıcı tarafından hiç doğrulanmadığını — biçimsiz bir dizginin de sessizce kabul edildiğini — ve ayrı bir bağlayıcı seçeneğinin sembol tablosunu silerken programın çıktısını değiştirmediğini koşturarak gösteriyor.
  4. 04 Modül Yayımlama Bir sürüm numarası kaynakta açıkça bildirilir, ama o sürümün taşıdığı uyumluluk sözünü kaynağın kendisi değil bir araç denetler: dışa aktarılan işlevlerin imzası karşılaştırılarak eklenen, değişen ve silinen adlar sayılır. Statik karar aynı kaynağı gerçekten derleyerek doğrulanıyor. Sınırlayıcı ölçüm, sözün imzalar üzerine kurulu olduğunu — aynı imzayı taşıyan iki gerçekleştirimin tamamen farklı bir sonuç verebildiğini ve aracın bunu hiç göremediğini — koşturarak gösteriyor.
  5. 05 Statik Çözümleme ve Güvenlik Denetimi Aynı iki kaynaktan biri temiz, öteki kusurlu; derleyicinin ikisini de aynı şekilde kabul ettiği, ama bir çözümleyicinin aralarındaki farkı çıkış koduyla bildirdiği ölçülür. Üç kalıptan derleyicinin hiçbirini yakalamadığı, çözümleyicinin ikisini yakaladığı sayılıyor. Sınırlayıcı ölçüm, çözümlemenin temiz çıkmasının kusursuz olmak anlamına gelmediğini — yakalanmayan üçüncü kalıbın koşum sırasında gerçekten çöktüğünü — koşturarak gösteriyor. Son ölçüm, bir bağımlılığın bildirilen sürümünü modellenmiş bir eşik listesiyle karşılaştırıyor.
  6. 06 C ile Birlikte Çalışma Aynı iş iki yazımla karşılaştırılıyor — dilin kendi kodu ve cgo ile çağrılan bir C işlevi — ve ikisi de aynı ayırma sayısını (1) veriyor. Yerel çağrı içeren paket CGO_ENABLED=0 ile derlenmiyor, çapraz derlenmiyor ve kaçış çözümlemesinin C işlevinin gövdesine dair hiçbir bildirimi yok (0/21 satır). Sınırlayıcı ölçüm: C tarafında serbest bırakılmayan bir bellek ne çözümleyicide ne ayırma sayısında görünüyor — bedel çağrının kendisinde değil, aracın söyleyebildiklerinde. Kurs ve M09 Go müfredatı bu dersle, 16 satırlık bir tabloyla kapanıyor.

Bitirme sınavı

Üretim Go: Test, Araçlar ve Başarım — Bitirme Sınavı

Hazırlanıyor

Bu kursun soru bankası henüz tamamlanmadı. Yeterli soru eklendiğinde sınav burada otomatik olarak açılır.

Aramak için yazmaya başlayın.

↑↓ ↵ Esc gezin · aç · kapat