Test etme ve hata ayıklama
Verdent ile test etme ve hata ayıklama iş akışları
Verdent for VS Code, çok geçişli oluştur-test-onar döngüleri, hata analizi ve otomatik test kapsamı iyileştirmeleri aracılığıyla kapsamlı testler yazmanıza ve sorunları ayıklamanıza yardımcı olur. Projenizin test çerçevesine ve tarzına uyan birim, entegrasyon ve uçtan uca testler oluşturun.
Neler öğreneceksiniz
- Uç durumları ve beklenen davranışı kapsayan birim testleri oluşturma
- Tüm büyük test çerçeveleriyle çalışma (Jest, Pytest, JUnit vb.)
- Çoklu bileşen iş akışlarını doğrulayan entegrasyon testleri oluşturma
- Test edilmeyen kod yollarını belirleyip test ederek test kapsamını iyileştirme
- Hata mesajı analizi ve yürütme izleme kullanarak sorunları ayıklama
- Yığın izlerinden, hata günlüklerinden ve beklenmeyen davranışlardan hataları teşhis etme
Ön koşullar
Verdent ile test etmeden ve hata ayıklamadan önce:
- Verdent uzantısı yüklü Visual Studio Code
- VS Code'da açık bir kod tabanı veya proje çalışma alanı
- Kullanılabilir kredileri olan etkin bir Verdent aboneliği
- Projenizde yapılandırılmış bir test çerçevesi (test oluşturma için isteğe bağlı)
Birim testleri yazma
Verdent, projenizin test çerçevesine ve tarzına uyan birim testleri oluşturur. Mevcut testleri analiz ederek kalıplarınızı anlar, ardından uygun kurulum, doğrulama ve mock'lama ile testler üretir.
Örnek:
Write unit tests for the calculateDiscount functionVerdent şunları yapar:
calculateDiscountfonksiyon uygulamasını inceler- Giriş parametrelerini ve dönüş değerlerini belirler
- Kurallarınıza uymak için mevcut testleri analiz eder (test yapısı, doğrulama stili, adlandırma kalıpları)
- Şunları kapsayan testler oluşturur:
- Mutlu yol: Beklenen çıktılarla geçerli girişler
- Uç durumlar: Sınır değerler, sıfır, negatif sayılar, maksimum değerler
- Geçersiz girişler: null, undefined, yanlış türler
- Beklenen davranış: İş mantığı doğrulaması
Oluşturulan test yapısı:
Verdent, projenizin kalıplarını izleyen testler oluşturur:
- Test paketi organizasyonu: Describe blokları, test sınıfları veya modül yapısı
- Kurulum ve sonlandırma: Mevcut testlerinize uyan before/after kancaları
- Doğrulamalar: Projenizin doğrulama kütüphanesini kullanarak (expect, assert, should vb.)
- Mock'lama: Mock'lama kalıplarınıza uyarak (jest.mock, sinon, unittest.mock)
- Adlandırma kuralları: Yerleşik tarzınızı izleyen test adları
Çok geçişli oluştur-test-onar döngüleri:
Kapsamlı test için Verdent çok geçişli döngüler kullanır:
- Oluştur: İlk test paketini oluştur
- Çalıştır: Çalıştıklarını doğrulamak için testleri yürüt
- Onar: Başarısız testleri düzelt veya kapsamı iyileştir
- Yinele: Testler geçene ve kapsam yeterli olana kadar tekrarla
Bu, testlerin yalnızca yazılmasını değil, kod tabanınızla gerçekten doğru çalışmasını sağlar.
Verdent, kurallarınıza uymak için mevcut testlerinizi analiz eder. Mevcut test kalıplarınız ne kadar tutarlı olursa, Verdent'in oluşturduğu testler projenizin tarzıyla o kadar iyi uyum sağlar.
Desteklenen test çerçeveleri
Verdent, ek yapılandırma gerektirmeden farklı programlama dilleri ve teknoloji yığınlarında tüm büyük test çerçevelerini destekler.
Birim test çerçeveleri:
test('sum returns correct result', () => {
expect(sum(2, 3)).toBe(5);
});const assert = require('assert');
describe('sum', () => {
it('returns correct result', () => {
assert.strictEqual(sum(2, 3), 5);
});
});import { describe, it, expect } from 'vitest';
it('sum returns correct result', () => {
expect(sum(2, 3)).toBe(5);
});describe('sum', () => {
it('returns correct result', () => {
expect(sum(2, 3)).toEqual(5);
});
});Çerçeveye özel test:
- React Testing Library - Kullanıcı odaklı React bileşeni testi
- Vue Test Utils - Resmi Vue.js test kütüphanesi
Uçtan uca test:
- Cypress - Uçtan uca ve bileşen testi
- Playwright - Tarayıcılar arası uçtan uca test
- Puppeteer - Başsız Chrome testi
- Pytest - En popüler Python test çerçevesi
- unittest - Yerleşik Python test çerçevesi
- nose2 - unittest'i eklentilerle genişletir
- doctest - Docstring'lere gömülü testler
Verdent, Python test tarzınıza uyan uygun fixture'lar, parametreleştirme ve doğrulama kalıplarıyla testler oluşturur.
- JUnit - Standart Java test çerçevesi (JUnit 4, JUnit 5)
- TestNG - Gelişmiş özelliklere sahip test çerçevesi
- Mockito - Java için mock'lama çerçevesi
- AssertJ - Akıcı doğrulama kütüphanesi
Verdent, Java test kurallarını izleyen ek açıklamalar, yaşam döngüsü yöntemleri ve doğrulamalarla testler oluşturur.
- RSpec (Ruby) - Davranış odaklı geliştirme çerçevesi
- PHPUnit (PHP) - PHP için birim test çerçevesi
- Go testing (Go) - Yerleşik Go test paketi
- xUnit (C#/.NET) - .NET için test çerçevesi
- Catch2 (C++) - Modern C++ test çerçevesi
Verdent, dilinizin test deyimlerine uyum sağlar ve projenizin kurallarına uyan testler oluşturur.
Verdent, test çerçevenizi proje yapılandırmanızdan ve mevcut testlerinizden tanır ve kurulumunuza uyan testleri otomatik olarak oluşturur.
Entegrasyon testleri oluşturma
Verdent, birden fazla bileşenin, hizmetin veya modülün birlikte nasıl çalıştığını doğrulayan entegrasyon testleri oluşturur. API etkileşimleri, veritabanı işlemleri, kimlik doğrulama akışları ve çok adımlı kullanıcı yolculukları dahil olmak üzere gerçek iş akışlarını simüle eden testler oluşturur.
Örnek:
Write integration tests for the user registration flowVerdent, tam akışı doğrulayan testler oluşturur:
- Form gönderimi: Kullanıcı kayıt formunu geçerli verilerle gönderir
- Doğrulama: Arka uç, e-posta formatını, parola gücünü ve veri eksiksizliğini doğrular
- Veritabanı ekleme: Veritabanında bir kullanıcı kaydı oluşturulur
- E-posta gönderme: Onay e-postası gönderilir (mock'lanmış veya gerçek)
- Başarılı oturum açma: Yeni kullanıcı kimlik bilgileriyle hemen oturum açabilir
Entegrasyon testi yapısı:
Verdent, entegrasyon testlerini şunlarla oluşturur:
- Test kurulumu: Veritabanı tohumlama, hizmet başlatma, test verisi oluşturma
- İş akışı simülasyonu: Sırayla çok adımlı işlemler
- Durum doğrulaması: Veritabanı durumunu, API yanıtlarını, yan etkileri kontrol etme
- Dış hizmetleri mock'lama: E-posta hizmetleri, ödeme API'leri, üçüncü taraf entegrasyonları
- Test sonlandırması: Test verisinin temizlenmesi, veritabanı geri alma, hizmet kapatma
Örnek test senaryoları:
Write integration tests for the checkout and payment processVerdent şunları test eder:
- Sepete öğe ekleme
- İndirim kodlarını uygulama
- Vergi ve kargo ile toplamları hesaplama
- Ödemeyi işleme (mock'lanmış ödeme ağ geçidiyle)
- Veritabanında sipariş kaydı oluşturma
- Onay e-postası gönderme
- Envanteri güncelleme
Test izolasyonu:
Verdent, entegrasyon testlerinin düzgün şekilde izole edilmesini sağlar:
- Her test temiz bir veritabanı durumuyla başlar
- Yan etkileri önlemek için dış hizmet çağrıları mock'lanır
- Testler bağımlılıklar olmadan herhangi bir sırada çalışabilir
- Testler başarısız olsa bile temizlik gerçekleşir
Entegrasyon testleri izole test ortamlarından yararlanır; Verdent, veritabanı fixture'larını ayarlamaya ve dış hizmetleri mock'lamaya yardımcı olabilir.
Entegrasyon testleri, bileşenlerin birlikte doğru çalıştığını doğrular. Birim testlerinden daha karmaşıktırlar ancak gerçek dünya iş akışlarının beklendiği gibi çalıştığına dair daha yüksek güven sağlarlar.
Test kapsamını iyileştirme
Verdent, test edilmeyen fonksiyonları, dalları ve uç durumları belirlemek için kod tabanınızı analiz eder, ardından kapsamı iyileştirmek için testler oluşturur. Mevcut test paketinizi inceler ve kod yollarının kullanılmadığı boşlukları belirler.
Örnek:
Analyze test coverage and write tests for uncovered code paths in the payment moduleVerdent şunları yapar:
- Mevcut testleri analiz et: Şu anda neyin test edildiğini incele
- Kapsam boşluklarını belirle: Test eksik olan belirli fonksiyonları, koşullu dalları, hata işleme yollarını ve uç durumları bul
- Eksik testleri oluştur: Test edilmeyen kodu hedefleyen testler oluştur
- Kapsam iyileştirmesini doğrula: Kapsamın arttığını onaylamak için testleri çalıştır
Verdent'in belirledikleri:
- Test edilmemiş fonksiyonlar: Hiç test kapsamı olmayan fonksiyonlar
- Koşullu dallar: Bir dalın test edilmediği if/else ifadeleri
- Hata işleme yolları: Başarısızlık testi olmayan try/catch blokları veya hata geri çağrıları
- Uç durumlar: Sınır değerler, null/undefined işleme, tür dönüştürme
- Entegrasyon noktaları: API çağrıları, veritabanı işlemleri, dış hizmet etkileşimleri
Örnek kapsam iyileştirmesi:
Improve test coverage for the UserService classVerdent şunları belirler:
getUserByIdgeçerli ID'ler için testleri var ancak geçersiz ID'ler için yokupdateUserdoğrulama başarısızlıkları için testleri eksikdeleteUseryetkilendirme kontrolleri için testleri eksikcreateUseriçindeki hata işleme yolları test edilmemiş
Ardından özellikle bu boşlukları hedefleyen testler oluşturarak kapsamı %65'ten %95'e çıkarır.
Kapsam metrikleri:
Verdent, daha yüksek kapsam yüzdelerine ulaşmanıza ve daha önce test edilmemiş kodlardaki olası hataları yakalamanıza yardımcı olur:
- Satır kapsamı: Testler tarafından yürütülen kod satırlarının yüzdesi
- Dal kapsamı: Test edilen koşullu dalların yüzdesi
- Fonksiyon kapsamı: En az bir teste sahip fonksiyonların yüzdesi
- İfade kapsamı: Yürütülen ifadelerin yüzdesi
Verdent ile hata ayıklama
Verdent, hata mesajlarını analiz ederek, yürütme akışını izleyerek, kök nedenleri belirleyerek ve düzeltmeler önererek hata ayıklamaya yardımcı olur. Hata günlüklerini yapıştırın, beklenmeyen davranışı tanımlayın veya Verdent'ten belirli sorunları araştırmasını isteyin.
Neyin yanlış olduğunu ve ne beklediğinizi tanımlayın:
This function returns undefined instead of the user object. Debug it.Verdent şunları yapar:
- Fonksiyon uygulamasını okur
- Yürütme akışını izler
- Kod yolunun nerede yanlış gittiğini belirler (eksik return ifadesi, hatalı koşul, async/await sorunu)
- Açıklamalı bir düzeltme önerir
- Regresyonu önlemek için test senaryoları önerir
Örnek:
The login form redirects to the home page even when credentials are invalidVerdent şunları yapar:
- Oturum açma formu gönderim mantığını inceler
- Kimlik doğrulama akışını izler
- Hatayı belirler (yönlendirme, async doğrulama tamamlanmadan önce gerçekleşir)
- Bir düzeltme önerir (yönlendirmeden önce doğrulamayı bekle)
Performans analizi isteyin:
The product search is slow when the database has 10,000+ productsVerdent şunları yapar:
- Arama sorgusu uygulamasını analiz eder
- Verimsizliği belirler (N+1 sorguları, eksik veritabanı dizini, verimsiz algoritma)
- Optimizasyon önerir (veritabanı dizini ekle, sorguları topla, sonuçları önbelleğe al)
Performans hata ayıklama, uygulamanızı yavaşlatan algoritmalardaki, veritabanı sorgularındaki veya API yanıtlarındaki darboğazları belirlemeye yardımcı olur.
Kodun nasıl yürütüldüğünü anlayın:
Why does this API endpoint return a 500 error when the email parameter is missing?Verdent şunları yapar:
- İstek işlemeyi uç noktadan doğrulamaya, oradan veritabanına izler
- Hatanın nerede oluştuğunu belirler (tanımsız bir özelliğe erişim)
- Hatanın neden oluştuğunu açıklar (özellik erişiminden önce eksik null kontrolü)
- Savunmacı bir düzeltme önerir (kullanmadan önce parametreleri doğrula)
Yürütme akışı izleme, kodunuzun izlediği yolu ve beklenen davranıştan nerede saptığını anlamanıza yardımcı olur.
Hata mesajlarını veya yığın izlerini doğrudan sohbete yapıştırın. Verdent hatayı analiz eder, sorunlu kodu bulur ve neyin yanlış gittiğini belirli dosya yolları ve satır numaralarıyla açıklar.
Hata mesajlarından ve günlüklerden teşhis
Hata mesajlarını, yığın izlerini veya günlük dosyalarını doğrudan sohbete yapıştırın. Verdent hatayı analiz eder, kaynak dosyayı ve satır numarasını belirler, nedeni açıklar ve bir düzeltme önerir.
Hata mesajlarını ve yığın izlerini yapıştırın:
TypeError: Cannot read property 'name' of undefined
at UserProfile.render (UserProfile.jsx:45)
at processComponent (react-dom.js:2103)Bunu Verdent'e yapıştırın:
I'm getting this error: [paste stack trace]Verdent şunları yapar:
- Hata türünü belirler (null/undefined erişiminden kaynaklanan TypeError)
- Tam satırı bulur (
UserProfile.jsx:45) - O konumdaki kodu okur
- Neden olduğunu açıklar (veriler yüklenmeden önce user nesnesi tanımsız)
- Düzeltmeler önerir:
- Null kontrolü ekle:
if (!user) return <Loading /> - İsteğe bağlı zincirleme kullan:
user?.name - Bileşeni render etmeden önce verilerin yüklendiğinden emin ol
- Null kontrolü ekle:
Analiz için günlük dosyalarını veya konsol çıktısını yapıştırın:
Analyze these logs and tell me why the API requests are failing:
[paste 50 lines of log output]Verdent şunları yapar:
- Günlükleri hata kalıpları için tarar
- Kimlik doğrulama başarısızlıklarını, ağ zaman aşımlarını veya veritabanı hatalarını belirler
- Başarısızlığa yol açan olay dizisini izler
- Hata kalıbına göre düzeltmeler önerir
Günlük analizi, birden fazla başarısızlık arasındaki kalıpları belirlemeye ve hatalara yol açan olay dizisini anlamaya yardımcı olur.
Karmaşık sorunlar için Verdent çok adımlı hata ayıklama kullanır:
- Hata günlüklerini analiz et ve başarısızlık noktasını belirle
- İlgili kodu oku ve uygulamayı anla
- Yürütme akışını izle ve sorunların nerede oluştuğunu bul
- Kod örnekleriyle düzeltmeler öner
- Regresyonu önlemek için testler oluştur
Örnek:
The shopping cart total is sometimes incorrect. Here are the error logs: [paste logs]Verdent şunları yapar:
- Günlükleri analiz eder ve hatanın ne zaman oluştuğunu belirler (indirim kodları uygulandığında)
- İndirim hesaplama mantığını okur
- Hatayı belirler (indirim, vergiden sonra değil önce hesaplanıyor)
- Bir düzeltme önerir (hesaplama adımlarını yeniden sırala)
- Test senaryoları önerir (indirimli sepet, vergili sepet, her ikisiyle sepet)
En iyi uygulamalar
Testleri erken oluşturun
Özellikleri geliştirirken testleri yazın, tamamlandıktan sonra değil. Verdent, yeni fonksiyonlar veya bileşenler oluşturduktan hemen sonra testler oluşturabilir.
Mevcut testleri stil rehberi olarak kullanın
Verdent, projenizin test kalıplarına uyar. Verdent'in kurallarınıza uyan testler oluşturması için tutarlı test yapısı koruyun.
Uç durumlar için testleri açıkça isteyin
Verdent'ten sınır koşullarını, hata senaryolarını ve olağandışı girişleri test etmesini isteyin: "Geçersiz girişler ve sınır değerler için uç durumlar dahil testler yaz."
Hata mesajlarını doğrudan yapıştırın
Hataları başka sözcüklerle ifade etmeyin. Doğru teşhis ve daha hızlı çözüm için tam yığın izini yapıştırın.
Beklenen ile gerçek davranışı tanımlayın
Hata ayıklarken, ne olmasını beklediğinizi ve gerçekte ne olduğunu açıkça belirtin. Bu bağlam, Verdent'in kök nedeni belirlemesine yardımcı olur.
Karmaşık özellikler için çok geçişli test kullanın
Kritik özellikler için çok geçişli döngülerle kapsamlı test oluşturma isteyin: "Ödeme modülü için kapsamlı testler oluştur ve hepsinin geçtiğini doğrula."
Yeniden düzenlemeden sonra test edin
Kodu yeniden düzenledikten sonra, işlevselliğin korunduğunu doğrulamak için testler isteyin: "Yeniden düzenlenen kimlik doğrulama modülünün doğru çalıştığını doğrulamak için testler oluştur."
Hata ayıklamayı test oluşturmayla birleştirin
Bir hatayı düzelttikten sonra, regresyonu önlemek için bir test isteyin: "Bu hatanın bir daha olmamasını sağlayan bir test yaz."