Diğer

Bobcat ile akış tabanlı specification yazımı

Jeremy D. Miller, Bobcat kütüphanesinin akış tabanlı test yaklaşımını JasperFx portalındaki deneme lisansı özelliği üzerinden anlatıyor. Mevcut xUnit ve Alba testleri, iş kurallarını düz yazı gibi okunacak şekilde yeniden yazılıyor; her adım bir helper metoda, her helper da bir Given/When/Then satırına dönüşüyor. Yazı ayrıca başarısız bir spec'i AI agent'ın okuyabileceği mesaj aktivitesi tablosuyla birlikte nasıl raporladığını gösteriyor.

Yayın tarihi
Okuma süresi
13 dk okuma
agent çalıştırması #23
agent çalıştırması #23
Orijinale git jeremydmiller.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Bir Bobcat spec'i birden fazla act içerebiliyor; Then adımları yalnızca son act'i değerlendiriyor, öncekiler precondition oluyor.
  • WhenTracked, act'i Wolverine tracked session içinde çalıştırıp ThenHandled<T>() ve ThenMessageScheduled<T>() için tüm handler'ların bitmesini bekliyor.
  • Helper içindeki Shouldly assertion'ları ayrı bir doğrulama dili gerektirmeden başarısız adımın hücresi olarak render ediliyor.
  • Başarısız spec'in altında mesaj aktivitesi tablosu basılıyor: gönderilen mesajlar, deneme sayıları, correlation ve causation id'leri.
  • SpecAssert.Gather() ile bir adımdaki tüm uyuşmazlıklar tek koşuda toplanabiliyor; düz Shouldly ilk hatada duruyor.
  • Microsoft.Testing.Platform 2 için global.json'a test runner ayarı ekleniyor ve mevcut xUnit 2 projesi xUnit v3'e taşınıyor.

Bobcat, tek bir act üzerine kurulu arrange/assert testlerinin yetmediği akışları hedefliyor: bir spec birden fazla kez act edebiliyor, önceki act'ler state hazırlıyor ve Then adımları yalnızca son act'i yargılıyor. Örnekte bir prospect formu dolduruyor, doğrulama e-postası gidiyor, linke tıklanınca hesap, contact, lisans, oturum çerezi ve bildirimler tek işlemde oluşuyor. Razor sayfalarını sürmek, fake outbox'tan token okumak gibi mekanik işler base class'taki step helper'lara taşınıyor; helper'ın attribute metni render edilen spec'te görünüyor, içindeki Shouldly assertion'ları ise başarısız adımın hücresi olarak raporlanıyor.

Cascading act'ler WhenTracked ile Wolverine tracked session içinde çalıştırılıyor, böylece ThenHandled<T>() ve ThenMessageScheduled<T>() handler'lar bitmeden değerlendirilmiyor. Başarısız bir spec, adım ağacının altında mesaj aktivitesi tablosu basıyor: hangi mesaj gönderildi, hangi handler kaç denemede bitti, correlation ve causation id'leri ne. Miller bunu AI agent'lar için kritik buluyor, çünkü agent breakpoint koyamıyor; critterstack-sdd-bobcat-troubleshooting skill'i bu çıktıyı okuyup hatayı teşhis ediyor. Yazı ayrıca pürüzleri de sayıyor: helper içindeki Shouldly ilk hatada duruyor ve Razor sayfasının commit ettiği event'ler WhenTracked tarafından görülmüyor.

Gerçek dünyada kullanımı

  • E-posta doğrulaması, hesap açma ve lisans atama gibi çok adımlı bir kayıt akışını uçtan uca spec olarak yazmak.
  • Aynı kişinin veya şirketin ikinci kez deneme alamadığı gibi red kurallarını, ikinci act'in hiçbir şey yapmadığını gösteren akışlarla test etmek.
  • CI'da kırmızıya düşen bir spec'i AI agent'a devretmek ve agent'ın adım ağacı ile mesaj aktivitesi tablosundan hipotez kurmasını sağlamak.
  • Mevcut xUnit ve Alba test paketini silmeden, iş kurallarını pull request'te okunur kılacak şekilde kademeli olarak yeniden yazmak.

Neden önemli

Akış tabanlı spec'ler iş kurallarını kod okuyarak değil, baştan sona okunan bir hikâye olarak incelenebilir hale getiriyor; hata çıktısı da insan ve agent için aynı yerden okunabiliyor.

Bu özet, Jeremy D. Miller (The Shade Tree Developer) üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü