Bats Testing Patterns

Kabuk için TAP uyumlu çerçeve olan Bats (Bash Automated Testing System) ile kabuk betiklerini test etmenin eksiksiz rehberi.

Kurulum/yıkım kullanan izole, tekrarlanabilir testleri, Düzenle-Uygula-Doğrula yapısını, komut taklidi ve sahteleme, fikstür yönetimi ve kabuklar arası taşınabilirliği öğretir: böylece Bash araçlarınız ve CI/CD betikleriniz umuda göre değil, gerçek yazılım gibi doğrulanır.

₺369 tek seferlik
Bir kit içine ekle →

Fiyatlara KDV (%20) dahildir. · Gerçek ajans işinden çıkarıldı · tek seferlik, kilit yok

  • Tür Skill
  • Kategori Geliştirme
  • Teslimat E-posta · anında
  • Lisans Tek seferlik
Çalışma önizlemesi
forgehouse, bats-testing-patterns

Çalışmanın içinden · kara kutu yok

Satın almadan önce işin kendisini gör.

Skill, izolasyon, stub'lama ve CI disiplinini dayatarak shell script'leri Bats ile test edilebilir kılar. Kara kutu yok, yaptığı iş tam olarak şu:

  1. Her .bats dosyasına izolasyon iskeletini kurar: setup() mktemp -d ile çalışma dizini oluşturur, teardown() siler ve test içinde export edilen her env değişkeni sonrasında unset edilir, testler arasında hiçbir şey sızmaz.
  2. Her testi Arrange-Act-Assert olarak yapılandırır: fixture'lar ve ortam hazırlanır, run my_function $status ve $output'u otomatik yakalar, assertion'lar exit kodunu, çıktı string'lerini, lines dizisini, dosya varlığını ve izinleri kontrol eder.
  3. Dış komutları stub'layarak testleri çevrimdışı koşturur: PATH'in başına stubs dizini eklenir, create_stub kontrollü çıktı ve exit koduyla sahte curl, git veya sqlite3 script'i yazar; gerçek ağa ve araçlara hiç dokunulmaz.
  4. Hata yollarını birinci sınıf vatandaş olarak test eder: eksik dosya, boş girdi, izin reddi, usage mesajıyla geçersiz seçenek; her biri hem exit kodu hem hata çıktısı üzerinden doğrulanır.
  5. Platform taşınabilirliğini açıkça ele alır: shell veya araç yoksa skip, macOS BSD ile Linux GNU stat sözdizimi için ayrı dallar ve suite'i hem ubuntu hem macos üzerinde koşturan CI matrisi.
  6. CI'a bağlar: TAP çıktılı bats her PR'da çalışır, statik katman olarak yanında shellcheck durur ve pre-commit hook, değişen her .sh dosyasına ait Bats testlerini tetikler.
Kullanım senaryoları · taktığında neler oluyor

Tek güç kaynağı. 6 hat dışarı.

bats-testing-patterns · çekirdek

çekirdek aktif · 6 hat

  1. Kabuk betikleri ve araçları için birim testleri yazma

    ✓ kabuk betikleri ve araçl…
  2. Bash araçlarının test güdümlü geliştirilmesi

    ✓ bash araçlarının test gü…
  3. Kabuk testlerini CI/CD hatlarına bağlama

    ✓ kabuk testlerini ci/cd h…
  4. Yalnızca mutlu yolu değil, hata durumlarını ve uç durumları test etme

    ✓ yalnızca mutlu yolu değil
  5. Ağ gerektirmeyen testler için dış komutları (curl, git, jq) taklit etme

    ✓ ağ gerektirmeyen testler
  6. bash, sh ve dash arasında taşınabilirliği doğrulama

    ✓ bash, sh ve dash arasında
Kazanımlar · elinde kalanlar

Aldıkların sende kalır.

Zamanı ileri sar. Ne kaldığını izle.

Sonsuza dek

Sahip olmak tam olarak bu.

Kiralık yığın

yapay zekâ yazım aracı: abonelik

süresi doldu · erişim gitti

analiz paketi: abonelik

süresi doldu · erişim gitti

tasarım platformu: abonelik

süresi doldu · erişim gitti

(geriye bir şey kalmadı)

Senin ocağın

  1. Her test izole bir geçici dizinde çalışır, böylece sıra sonucu asla değiştirmez

    lisans: kalıcı
  2. Komut sahteleme, birim testlerini ağdan ve dış bağımlılıklardan ayırır

    lisans: kalıcı
  3. Sola kaydırma testi, kabuk gerilemelerini üretime ulaşmadan her PR'da yakalar

    lisans: kalıcı
  4. TAP çıktısı doğrudan GitHub Actions, Makefile ve paralel çalıştırıcılara girer

    lisans: kalıcı

abonelikler biter · tapular bitmez

Ne içerir · eksiksiz manifest

Kutudaki her şey.

Bir parçayı eline al. Çalışırken izle.

Bats kurulumu ve proje dosya yapısı kuralları

parça 01 / 06 · kutuda

6 parça · tek çalışan sistem · e-postayla anında teslim

Kimler için

Bu herkes için dövülmedi.

  • Araç kiralamayı sahip olmaya tercih ediyorsan, sana göre değil.
  • Yığınını senin yerine başkası yönetsin istiyorsan, sana göre değil.
  • Tahmin etmekten memnunsan, sana göre değil.
Hâlâ burada mısın? Güzel.

Bash kodları için test güdümlü güven ve CI kapsamı isteyen, kabuk betiklerini sürdüren mühendisler için.

o zaman bu senin için dövüldü.

Hangi AI ile çalışır

Tasarımı gereği evrensel: her yapay zekada çalışır. Açık Agent Skills + MCP biçiminde gelir (Claude’da yerleşik); ChatGPT, Gemini, Cursor ve Copilot aynı dosyaları kendine uyarlar.

  • Claude Yerleşik biçim
  • ChatGPT Açık standartla uyarlanır
  • Gemini Açık standartla uyarlanır
  • Cursor Açık standartla uyarlanır
  • Copilot Açık standartla uyarlanır
Sorular · hâlâ havada

Aklındakini yakala.

hava temizlendi. seninle ocak arasında hiçbir şey kalmadı.
bir kıvılcım yakala: ocak cevaplar

  1. curl, aws gibi dış komutları çağıran scriptleri onları gerçekten çalıştırmadan test edebilir miyim?

    Evet. Komut stub'lama ve mock'lama buranın çekirdeği, yani o çağrıları kontrollü taklitlerle değiştirirsiniz. Testleriniz gerçek servislere gitmek yerine hızlı ve tekrarlanabilir kalır.

  2. Bir kabuk scriptini bir kez çalıştırmak yerine unit test yazmak gerçekten değer mi?

    Tek kullanımlık bir satır için hayır. Başka scriptlerin veya hatların bağımlı olduğu araçlar içinse setup/teardown ve Arrange-Act-Assert yapısı, tek bir manuel çalıştırmanın sessizce kaçırdığı bozulmaları yakalar.

  3. Bu testler deploy scriptimin gerçek ortamda çalıştığını doğrular mı?

    Hayır. Bats, bağımlılıkları stub'lanmış birimleri doğrular, gerçek sunucularınıza karşı canlı entegrasyonu değil. Mantığınızın izole halde doğru olduğunu kanıtlar, gerçek sistemlere karşı uçtan uca doğrulama ayrı bir katmandır.

  4. Nasıl teslim edilir?

    Satın alımdan hemen sonra e-posta ile iletilir, kuruluma hazır, anında indirilir; bekleme yok.

  5. Tek seferlik mi, abonelik mi?

    Tek seferlik alımdır; abonelik veya gizli ücret yoktur. Fiyata KDV (%20) dahildir.

  6. İade alabilir miyim?

    Dijital ürün olduğu için indirildikten sonra iade yapılmaz. Bu yüzden ne içerdiğini ve kime uygun olduğunu burada açıkça paylaşıyoruz.