GitHub Actions ile otomatik test nasıl yapılır

GitHub Actions ile otomatik test nasıl yapılır GitHub Actions ile otomatik test: İçindekilerGitHub Actions nedir ve test otomasyonundaki rolüOtomatik test için iş akışı dosyası hazırlamaTest ortamını belirleme ve yapılandırmaTestlerin tetiklenme koşullarını belirlemekTest komutlarını ve adımlarını tanımlamaParalel…

12
Paylaş
GitHub Actions ile otomatik test nasıl yapılır

GitHub Actions ile otomatik test nasıl yapılır

Yazılım projelerinde kod değişikliklerinin hatasız çalıştığından emin olmak çok önemlidir. GitHub Actions sayesinde, projelerinizdeki testleri otomatikleştirerek zamandan tasarruf edebilir, insan hatalarını azaltabilir ve yazılım kalitenizi artırabilirsiniz. Bu yazıda, GitHub Actions kullanarak otomatik testlerin nasıl kurulacağını adım adım anlatacağız. Ayrıca, doğru yapılandırma için dikkat etmeniz gereken noktaları ve bazı pratik ipuçlarını da paylaşacağız.

GitHub Actions nedir ve test otomasyonundaki rolü

GitHub Actions, GitHub üzerinde kod depolarına bağlı otomatik iş akışları oluşturmanızı sağlayan bir platformdur. Kodunuzda yapılan değişikliklere bağlı olarak belirlediğiniz komutları çalıştırabilir. Bu iş akışları sayesinde test, derleme, paketleme ve dağıtım gibi işlemleri otomatik hale getirebilirsiniz. Özellikle yazılım testlerinde, kod her güncellendiğinde otomatik testlerin çalışması, hataların erken fark edilmesini sağlar.

Test otomasyonu, manuel testlere göre çok daha hızlı sonuç verir ve sürekli entegrasyon sürecinin olmazsa olmazıdır. GitHub Actions, bu süreci kolayca kurup yönetmenize imkân verir.

Otomatik test için iş akışı dosyası hazırlama

GitHub Actions iş akışları YAML formatında yazılır ve projenizde `.github/workflows` klasöründe saklanır. Örneğin, test çalıştırmak için `test.yml` adında bir dosya oluşturabilirsiniz. Bu dosya:

  • Hangi olaylarda (push, pull_request gibi) çalışacağı,
  • Hangi ortamda (Ubuntu, Windows, macOS) çalışacağı,
  • Ve hangi komutların yürütüleceği

bilgilerini içerir.

Basit bir Node.js projesi için iş akışı örneği:

name: Node.js Test

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '16'
    - run: npm install
    - run: npm test

Bu iş akışı, kod her gönderildiğinde veya pull request açıldığında testleri çalıştırır.

Test ortamını belirleme ve yapılandırma

Projeler farklı dillerde ve farklı ortamlar üzerinde çalışabilir. Bu yüzden testlerin doğru ortamda çalışması gerekir. GitHub Actions, Ubuntu, Windows ve macOS ortamlarını destekler. Ayrıca, farklı dil sürümlerini ayarlamak da mümkündür.

Örneğin Python projelerinde:

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.9
      uses: actions/setup-python@v4
      with:
        python-version: '3.9'
    - run: pip install -r requirements.txt
    - run: pytest

Projeye uygun ortam ve sürümü doğru seçmek, testlerin güvenilirliği açısından önemlidir.

Testlerin tetiklenme koşullarını belirlemek

Testlerin ne zaman çalışacağı projenizin işleyişine göre değişir. En yaygın tetikleme olayları:

  • `push`: Koda her gönderim yapıldığında testler çalışır.
  • `pull_request`: Yeni kod birleştirilmeden önce test edilir.
  • `schedule`: Zamanlanmış görevlerle belirli aralıklarla test yapılabilir.

Birden fazla olayı aynı anda kullanarak testlerin her önemli durumda tetiklenmesini sağlayabilirsiniz.

Test komutlarını ve adımlarını tanımlama

İş akışındaki `steps` kısmında testleri çalıştıracak komutları belirtirsiniz. Bu adımlar genellikle:

  • Kodu repodan çekmek,
  • Gerekli dil ve araçları kurmak,
  • Bağımlılıkları yüklemek,
  • Test komutlarını çalıştırmak

şeklindedir.

Örnek olarak Java projelerinde Maven kullanılıyorsa:

steps:
- uses: actions/checkout@v3
- name: Setup JDK 11
  uses: actions/setup-java@v3
  with:
    java-version: '11'
- run: mvn clean test

Bu adımlar sayesinde, proje ortamı hazırlanır ve testler çalıştırılır.

Paralel test ve matris kullanımı ile hızlandırma

GitHub Actions, aynı anda birden fazla iş (job) paralel çalıştırabilir. Bu özelliği kullanarak farklı ortam veya sürümlerde test yapabilirsiniz. Buna matris (matrix) testi denir.

Örnek matris yapılandırması:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14, 16, 18]
    steps:
    - uses: actions/checkout@v3
    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install
    - run: npm test

Bu örnekte, testler Node.js’in üç farklı sürümünde paralel olarak çalışır. Böylece uyumluluk kontrolü kolaylaşır.

GitHub Actions ile otomatik test

Test sonuçlarının izlenmesi ve hata yönetimi

Testler tamamlandığında GitHub Actions, sonuçları Actions sekmesinde gösterir. Başarısız olan testler için detaylı hata mesajları ve loglar mevcuttur. Bu sayede sorunlar hızlıca tespit edilir ve çözüm için adımlar atılır.

Ayrıca, test başarısız olduğunda e-posta veya Slack gibi bildirim araçlarıyla ekip bilgilendirilebilir. Bu bildirimlerin kurulumu için GitHub Actions içinde ilgili eklentiler kullanılabilir.

Güvenlik ve gizli bilgilerin yönetimi

Testler sırasında API anahtarı, kullanıcı adı veya şifre gibi gizli bilgiler kullanılabilir. Bunların güvenli şekilde saklanması gerekir. GitHub Secrets özelliği sayesinde bu bilgiler şifreli olarak depolanır ve iş akışında kullanılır.

Örnek kullanım:

- name: Run tests with secret
  env:
    API_KEY: ${{ secrets.API_KEY }}
  run: ./run_tests.sh

Bu sayede gizli bilgiler dışarı sızmaz, testler güvenle çalışır.

GitHub Actions ile otomatik test

Test süresini optimize etmek için önbellekleme kullanımı

Bağımlılıkların her test çalıştırmada tekrar indirilmesi zaman kaybına yol açar. GitHub Actions, cache özelliği ile bağımlılıkları önbelleğe almayı destekler.

Node.js örneği:

- name: Cache node modules
  uses: actions/cache@v3
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

Bu yöntem test süresini kısaltır ve kaynak kullanımını azaltır.

Pratik ipuçları ve yaygın hatalar

  • İş akışlarını önce küçük ve basit tutarak başlayın. Sonra ihtiyaçlarınıza göre adım adım geliştirin.
  • GitHub Marketplace’te hazır test iş akışı şablonları bulunur, bunları kullanarak hızlıca başlayabilirsiniz.
  • Test kapsamını artırmak için kod kapsamı ölçüm araçlarını entegre edin.
  • Çok uzun süren testleri modüllere bölerek iş akışını hızlandırın.
  • Paralel testlerde kaynak sınırlarını göz önünde tutun; çok fazla job paralel çalıştırmak kaynak yetersizliğine sebep olabilir.
  • Test ortamında doğru sürüm ve bağımlılıkların kurulu olduğundan emin olun.
  • İş akışı dosyalarınızı düzenli kontrol edin, hata yapan veya gereksiz adımları kaldırın.

GitHub Actions ile farklı programlama dillerinde test örnekleri

DilTest Çalıştırma KomutuOrtam Kurulum Örneği
Node.js`npm test``actions/setup-node` ile Node.js kurulumu
Python`pytest``actions/setup-python` ile Python kurulumu
Java`mvn test``actions/setup-java` ile JDK kurulumu
Ruby`bundle exec rspec`Ruby ve bundler kurulumu
.NET Core`dotnet test``actions/setup-dotnet` ile .NET SDK kurulumu

Her dil için uygun ortam ayarlarını yapıp test komutlarını belirtmek önemlidir.

GitHub Actions otomatik test ile ilgili sık sorulan sorular

  • GitHub Actions ücretsiz mi?

Açık kaynak ve kamu projeleri için ücretsizdir. Özel projelerde aylık belirli dakikaya kadar ücretsiz kullanım sağlar.

  • Birden fazla dili nasıl test ederim?

İş akışında farklı joblar veya matris kullanarak farklı diller ve ortamlar için testler kurulabilir.

  • Testler başarısız olursa ne olur?

İş akışı durur, hata mesajları gösterilir. Böylece hatalar erken fark edilir.

  • Otomatik test ne kadar güvenilir?

Kodunuzu doğru testlerle kapsarsanız çok güvenilir sonuçlar verir. Ancak manuel testlerle desteklenmesi önerilir.

  • GitHub Actions dokümantasyonu nereden takip edilir?

En güncel ve resmi bilgi için GitHub Actions Resmi Dokümantasyonu sayfasını ziyaret edebilirsiniz.

Ek okuma / Kaynak

İlgili albubilgiyi.com yazıları

Editörün Notu

GitHub Actions ile otomatik test kurmak, projelerinizde sürekli kalite kontrolü sağlar ve manuel test yükünü azaltır. İş akışlarını basit tutup zamanla geliştirmek, süreci daha verimli hale getirir.

Emre Demir
Yazar

Yazılım Editörü

Yazılım editörü ve full-stack geliştirici. Uygulama incelemeleri, kodlama rehberleri ve verimlilik araçları üzerine yazıyor. Açık kaynak projelere katkıda bulunuyor; karmaşık konuları yeni başlayanların anlayacağı şekilde anlatmaya özen gösteriyor.

Tüm yazıları gör →