Başarılı Veri Bilim Çalışmaları İçin Test Odaklı Geliştirme Yaklaşımı

SİNEM BATMACA | TEST UZMANI

 

Günümüzde veri bilim çalışmaları birçok uygulamanın belkemiğini oluşturmaktadır.

Uygulamaların temel yapı taşını oluşturan bu çalışmaların, her zaman istenen sonucu verdiğinden emin olmamız gerekmektedir.

Ancak geçmişten günümüze yapılan veri bilim çalışmalarını incelediğimizde; süreçte hatalara rastlanabildiği gibi uygulamada ve uygulama aşamalarında da hatalara rastlanabilmektedir.

Veri bilim çalışmalarında rastlanabilecek hataların nelere yol açabileceğine  yönelik  perakende  sektöründen bir örnek vermek gerekirse;
Çeşitli KPI (“Anahtar Performans Göstergesi”)’lara göre bir akıllı stok yönetimi uygulaması geliştirilirken, stok değerlerinin negatif olabileceği ihtimalinin göz ardı edildiğini varsayalım. Böyle bir durumda optimizasyon algoritmasının hatalı çalışması ve buna bağlı olarak dağıtım sırasında kaos çıkması kaçınılmaz olur. Peki uygulamanın her zaman istediğimiz gibi çalışacağından ve optimize dağıtımı yapacağından nasıl emin olabiliriz?

Bu noktada, test odaklı geliştirme yaklaşımı devreye girmektedir. Test odaklı geliştirme yaklaşımı, bug (“hata”) oluşma ihtimalini %90’a varan oranlarda azaltma yeteneğine sahiptir. Ayrıca, uygulamada elde etmek istediğimiz  amaç  ve olası ters gidebilecek senaryolar üzerinde daha fazla düşünmeye fırsat tanıyarak, geliştirdiğimiz uygulamadan daha emin olmamızı sağlar.

Peki test odaklı geliştirme yaklaşımı nedir ve veri bilim çalışmalarında nasıl uygulanabilir?

Test odaklı geliştirme; herhangi bir kod geliştirmeden test senaryolarının yazıldığı, bu senaryolara bağlı olarak da testi geçecek kodun geliştirildiği ve kodun yeniden düzenlenip optimize edildiği döngüsel bir yazılım geliştirme tekniğidir. Test odaklı geliştirme yaklaşımı,   ”kırmızı-yeşil-refactor (“kod düzenleme”)” çevrimi olarak da adlandırılmaktadır.

Gözetimli öğrenme problemi için bu çevrimin adımlarını inceleyelim.

Kırmızı: Test senaryolarının hazırlandığı, amacın açıklandığı ancak uygulanan testlerin çalışmadığı adımdır. Bu adımda uygulama için geliştirilen algoritmalar, problem doğruluğunu test etmek için uygun olan değerlendirme metrikleri ve uygulamanın geliştirileceği platform belirlenir.

Yeşil: Testlerin çalışması için kodda değişikliklerin yapıldığı ve testlerin hepsinin hatasız çalıştığı adımdır. Bu adımda, eğitim verisi incelenerek geliştirilen algoritmalar ile modeller oluşturulur.

Refactor: Orijinal kodun düzenlendiği, olabildiğince basitleştirildiği, kod optimizasyonunun gerçekleştirildiği ve böylelikle kod tasarımından tatmin olunduğu adımdır. Bu adımda, modelin robust (“sağlam”) ve test verisi için doğruluk değerinin kabul edilen değer aralığında çıktığından emin olunur.

Test odaklı geliştirme yaklaşımının veri bilim çalışmalarında kazandıracaklarına detaylı değinmek gerekirse;

-Test odaklı geliştirme yaklaşımı, %15-35 oranlarında daha fazla zamanın aktif geliştirme  modunda geçmesini sağlar.*

-İstatistiksel analizlerde önemli düzeyde hatalardan kaçınılmasını sağlar.

-Test odaklı geliştirme yaklaşımı karmaşık kod tasarımını basitleştirir ve kodun daha anlaşılır olmasını sağlar.

-Ekibe katılan yeni geliştiricinin codereview (“kod gözden geçirme”)  ile uyumu kolaylaştırılır. Kodda yapılan değişikliklerle ya da yeni eklenen kodlarla mevcut yapının işlevlerinin bozulması engellenmiş olunur.

-Bu yaklaşım; geliştiricilerin kod yazımından önce geliştirilen özelliğe ve sonuca odaklanmasını teşvik eder, ortaya çıkan yazılımın kalitesini arttırır.

-Geliştirme sonrası uzun süren test süreleri kısalır, bug fix (“hata düzeltme”) oranlarını azalıryeniden geliştirme gerektirmediğinden toplam proje süreleri ve geliştirme maliyetleri düşer.

-Kodun, debug (“hata yakalama”) edilmesine harcanan sürede problemin çözümü ile ilgilenildiği için veri bilim çalışmalarını daha eğlenceli hale getirir.

Sonuç olarak test odaklı geliştirme yaklaşımının; veri bilim çalışmalarının gerektirdiklerinden ödün vermeden, oluşabilecek hataların önlemesini yada önceden fark edilmesini sağlayan umut verici bir yaklaşım olduğuna inanıyoruz.

Kaynak:

(*) Matthew, K., “Thoughtful Machine Learning with Python: A Test-Driven Approach”, O’Reilly, 2017.

 

Please follow and like us:

Bir Cevap Yazın