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…

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.

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.

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
| Dil | Test Çalıştırma Komutu | Ortam 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ı
İlgili yazılar
- Docker konteyner yönetimi nasıl yapılır: 7 adımda pratik rehber
- 2026’da şehir parklarında güvenli yürüyüş nasıl yapılır
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.
